Created
April 8, 2025 10:28
-
-
Save lowlevel01/2bec5c0b28ec9ac7da4f1a8d48fd98b8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
undefined4 __cdecl resolve_api(ushort *param_1,uint probably_hash) | |
{ | |
char *pcVar1; | |
ushort uVar2; | |
byte bVar3; | |
int iVar4; | |
int iVar5; | |
uint uVar6; | |
uint uVar7; | |
uint *puVar8; | |
byte bVar9; | |
byte abStack_62 [33]; | |
uint local_41; | |
byte local_3d; | |
uint local_3c; | |
undefined4 local_38; | |
uint local_34; | |
int local_30; | |
uint local_2c; | |
uint local_28; | |
int ptr_function; | |
int ptr_ordinal; | |
uint local_1c; | |
uint ptr_exported_names; | |
int ptr_name; | |
uVar2 = *param_1; | |
local_41 = 0x2621feee; | |
iVar4 = 0x1e; | |
iVar5 = 0x21; | |
do { | |
bVar9 = ~abStack_62[iVar5]; | |
abStack_62[iVar5] = | |
(((byte)iVar5 & 0x22 | (byte)iVar4 & 0x15) ^ | |
(abStack_62[iVar5] + (bVar9 | 0x2a) + 1 | bVar9 & 0xd5)) + 0x3e; | |
iVar4 = iVar4 + -1; | |
iVar5 = iVar5 + 1; | |
} while (iVar4 != 0x1a); | |
switch(local_41 != uVar2) { | |
case false: | |
iVar4 = *(int *)(param_1 + 0x1e); | |
local_3c = *(uint *)((int)param_1 + iVar4); | |
local_41 = 0xcfce889c; | |
uVar6 = 0; | |
do { | |
bVar9 = ((byte)uVar6 | 0x44) & *(byte *)((int)&local_41 + uVar6); | |
bVar9 = ((bVar9 & 0x45) * ((bVar9 | 0xfd) + 1) - (bVar9 | 2) * (bVar9 & 2)) + | |
*(byte *)((int)&local_41 + uVar6) + (byte)uVar6 + 0x44; | |
*(byte *)((int)&local_41 + uVar6) = (bVar9 & 0x77) - (~bVar9 & 0x88); | |
uVar6 = (uVar6 ^ 1) + (uVar6 & 1) * 2; | |
} while (uVar6 < 4); | |
switch(local_3c != local_41) { | |
case false: | |
local_1c = *(uint *)((int)param_1 + iVar4 + 0x78); | |
local_28 = *(uint *)((int)param_1 + iVar4 + 0x7c); | |
switch(local_1c == 0 || local_28 == 0) { | |
case false: | |
ptr_name = *(int *)((int)param_1 + local_1c + 0x20) + (int)param_1; | |
ptr_ordinal = *(int *)((int)param_1 + local_1c + 0x24) + (int)param_1; | |
ptr_function = *(int *)((int)param_1 + local_1c + 0x1c) + (int)param_1; | |
ptr_exported_names = *(uint *)((int)param_1 + local_1c + 0x18); | |
local_2c = 0; | |
local_38 = 2; | |
switch(ptr_exported_names != 0) { | |
case false: | |
switchD_004471fd_caseD_0: | |
break; | |
case true: | |
do { | |
local_34 = 0x9c62001b; | |
iVar4 = 0x26deb730; | |
do { | |
bVar9 = (&stack0xd921489c)[iVar4] ^ (byte)iVar4; | |
(&stack0xd921489c)[iVar4] = (bVar9 & 0x9f) - (~bVar9 & 0x60); | |
iVar4 = iVar4 + 1; | |
} while (iVar4 != 0x26deb734); | |
local_30 = *(int *)(ptr_name + local_2c * 4) + (int)param_1; | |
local_3c = 0xffffffff; | |
bVar9 = 0; | |
do { | |
local_3d = bVar9; | |
pcVar1 = (char *)(local_30 + 1 + local_3c); | |
local_3c = local_3c + 1; | |
bVar9 = local_3d + 1; | |
} while (*pcVar1 != '\0'); | |
local_41 = 0x1f1919ac; | |
iVar4 = 0xf6; | |
puVar8 = &local_41; | |
do { | |
bVar9 = (byte)*puVar8; | |
bVar3 = bVar9 & (byte)iVar4; | |
bVar3 = ~(bVar3 * '\x02') + bVar3; | |
bVar9 = ~((byte)iVar4 | | |
((bVar9 | 2) * (bVar9 & 2) - bVar9) + (bVar9 & 0xd) * (bVar9 & 2 ^ 2) & bVar 9 | |
); | |
bVar3 = bVar9 + bVar3 + (bVar3 & bVar9) * -2 & bVar3; | |
*(byte *)puVar8 = (~bVar3 & 0x6d) * '\x02' - (bVar3 ^ 0xed); | |
iVar4 = iVar4 + -1; | |
puVar8 = (uint *)((int)puVar8 + 1); | |
} while (iVar4 != 0xf2); | |
if (local_3c != 0) { | |
uVar6 = local_3c; | |
if ((local_3c & 3) != 0) { | |
uVar6 = 0; | |
do { | |
local_34 = (local_34 ^ (int)*(char *)(local_30 + uVar6)) * local_41; | |
uVar6 = uVar6 + 1; | |
} while ((local_3d & 3) != uVar6); | |
local_30 = local_30 + uVar6; | |
uVar6 = local_3c - uVar6; | |
} | |
if (3 < local_3c) { | |
uVar7 = 0; | |
do { | |
local_34 = ((int)*(char *)(local_30 + 3 + uVar7) ^ | |
((int)*(char *)(local_30 + 2 + uVar7) ^ | |
((int)*(char *)(local_30 + 1 + uVar7) ^ | |
((int)*(char *)(local_30 + uVar7) ^ local_34) * local_41) * local_41) * | |
local_41) * local_41; | |
uVar7 = uVar7 + 4; | |
} while (uVar6 != uVar7); | |
} | |
} | |
switch(local_34 != probably_hash) { | |
case false: | |
uVar6 = *(uint *)(ptr_function + (uint)*(ushort *)(ptr_ordinal + local_2c * 2) * 4); | |
switch(local_1c <= uVar6) { | |
case true: | |
switch(uVar6 - local_1c < local_28) { | |
case true: | |
goto switchD_004471fd_caseD_0; | |
} | |
} | |
goto switchD_004471fd_caseD_0; | |
} | |
local_2c = local_2c + 1; | |
switch(local_2c < ptr_exported_names) { | |
case false: | |
goto switchD_004471fd_caseD_0; | |
} | |
} while( true ); | |
} | |
} | |
} | |
} | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment