mainGtU
0x00091850 · 361 bytes · processEntry
_ZL7mainGtUjjPhPtjPi.part.0
Decompiled
undefined (6 params)
/* mainGtU(unsigned int, unsigned int, unsigned char*, unsigned short*, unsigned int, int*) [clone
.part.0] */
bool processEntry
mainGtU(uint param_1,uint param_2,uchar *param_3,ushort *param_4,uint param_5,int *param_6)
{
byte bVar1;
byte bVar2;
int iVar3;
int iVar4;
int in_EAX;
ushort *puVar5;
int in_ECX;
ushort *puVar6;
bool bVar7;
bool bVar8;
ushort *local_18;
bVar1 = *(byte *)(in_ECX + 0xb + param_1);
bVar2 = *(byte *)(in_ECX + 0xb + in_EAX);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (bVar8) {
puVar5 = (ushort *)(in_EAX + 0xc);
puVar6 = (ushort *)(param_1 + 0xc);
local_18 = param_4 + 4;
do {
bVar7 = *(byte *)(in_ECX + (int)puVar5) < *(byte *)(in_ECX + (int)puVar6);
bVar8 = *(byte *)(in_ECX + (int)puVar5) == *(byte *)(in_ECX + (int)puVar6);
if (!bVar8) goto LAB_00091980;
iVar3 = (int)puVar6 * 2;
iVar4 = (int)puVar5 * 2;
bVar7 = *(ushort *)(param_3 + iVar4) < *(ushort *)(param_3 + iVar3);
bVar8 = *(ushort *)(param_3 + iVar4) == *(ushort *)(param_3 + iVar3);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 1 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 1 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 2) < *(ushort *)(param_3 + iVar3 + 2);
bVar8 = *(ushort *)(param_3 + iVar4 + 2) == *(ushort *)(param_3 + iVar3 + 2);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 2 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 2 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 4) < *(ushort *)(param_3 + iVar3 + 4);
bVar8 = *(ushort *)(param_3 + iVar4 + 4) == *(ushort *)(param_3 + iVar3 + 4);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 3 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 3 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 6) < *(ushort *)(param_3 + iVar3 + 6);
bVar8 = *(ushort *)(param_3 + iVar4 + 6) == *(ushort *)(param_3 + iVar3 + 6);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 4 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 4 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 8) < *(ushort *)(param_3 + iVar3 + 8);
bVar8 = *(ushort *)(param_3 + iVar4 + 8) == *(ushort *)(param_3 + iVar3 + 8);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 5 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 5 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 10) < *(ushort *)(param_3 + iVar3 + 10);
bVar8 = *(ushort *)(param_3 + iVar4 + 10) == *(ushort *)(param_3 + iVar3 + 10);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 6 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 6 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 0xc) < *(ushort *)(param_3 + iVar3 + 0xc);
bVar8 = *(ushort *)(param_3 + iVar4 + 0xc) == *(ushort *)(param_3 + iVar3 + 0xc);
if (!bVar8) goto LAB_00091980;
bVar1 = *(byte *)(in_ECX + 7 + (int)puVar6);
bVar2 = *(byte *)(in_ECX + 7 + (int)puVar5);
bVar7 = bVar2 < bVar1;
bVar8 = bVar2 == bVar1;
if (!bVar8) goto LAB_00091980;
bVar7 = *(ushort *)(param_3 + iVar4 + 0xe) < *(ushort *)(param_3 + iVar3 + 0xe);
bVar8 = *(ushort *)(param_3 + iVar4 + 0xe) == *(ushort *)(param_3 + iVar3 + 0xe);
if (!bVar8) goto LAB_00091980;
puVar5 = puVar5 + 4;
puVar6 = puVar6 + 4;
if (param_4 <= puVar5) {
puVar5 = (ushort *)((int)puVar5 - (int)param_4);
}
if (param_4 <= puVar6) {
puVar6 = (ushort *)((int)puVar6 - (int)param_4);
}
*(int *)param_5 = *(int *)param_5 + -1;
local_18 = local_18 + -4;
} while (-1 < (int)local_18);
bVar7 = false;
}
else {
LAB_00091980:
bVar7 = !bVar7 && !bVar8;
}
return bVar7;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.