Skip to content

Instantly share code, notes, and snippets.

@lowlevel01
Created April 8, 2025 10:28
Show Gist options
  • Save lowlevel01/2bec5c0b28ec9ac7da4f1a8d48fd98b8 to your computer and use it in GitHub Desktop.
Save lowlevel01/2bec5c0b28ec9ac7da4f1a8d48fd98b8 to your computer and use it in GitHub Desktop.
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