GCSDK::CRecordInfo::CompareFKs
0x00092c20 · 442 bytes · __thiscall
_ZN5GCSDK11CRecordInfo10CompareFKsEPS0_
Decompiled
undefined (2 params)
/* GCSDK::CRecordInfo::CompareFKs(GCSDK::CRecordInfo*) */
undefined4 __thiscall GCSDK::CRecordInfo::CompareFKs(CRecordInfo *this,CRecordInfo *param_1)
{
char *pcVar1;
int iVar2;
int iVar3;
char *pcVar4;
char *pcVar5;
int iVar6;
int local_3c;
int local_34;
int local_30;
int local_24;
iVar2 = *(int *)(param_1 + 0x110);
if (iVar2 != *(int *)(this + 0x110)) {
return 0;
}
local_3c = 0;
if (iVar2 < 1) {
return 1;
}
LAB_00092c56:
pcVar1 = (char *)(local_3c * 0x124 + *(int *)(this + 0x104));
if (iVar2 < 1) {
return 0;
}
local_24 = 0;
do {
pcVar4 = (char *)(local_24 * 0x124 + *(int *)(param_1 + 0x104));
iVar2 = _V_stricmp(pcVar1,pcVar4);
if ((((iVar2 == 0) && (iVar2 = _V_stricmp(pcVar1 + 0x81,pcVar4 + 0x81), iVar2 == 0)) &&
(*(int *)(pcVar1 + 0x11c) == *(int *)(pcVar4 + 0x11c))) &&
(*(int *)(pcVar1 + 0x120) == *(int *)(pcVar4 + 0x120))) {
if (*(int *)(pcVar1 + 0x114) < 1) break;
local_34 = 0;
local_30 = 0;
while (iVar2 = *(int *)(pcVar1 + 0x108), 0 < *(int *)(pcVar4 + 0x114)) {
iVar6 = 0;
while( true ) {
pcVar5 = (char *)(iVar6 * 0x102 + *(int *)(pcVar4 + 0x108));
iVar3 = _V_stricmp((char *)(local_34 + iVar2),pcVar5);
if ((iVar3 == 0) &&
(iVar3 = _V_stricmp((char *)(local_34 + iVar2) + 0x81,pcVar5 + 0x81), iVar3 == 0))
break;
iVar6 = iVar6 + 1;
if (*(int *)(pcVar4 + 0x114) <= iVar6) goto LAB_00092c90;
}
local_30 = local_30 + 1;
local_34 = local_34 + 0x102;
if (*(int *)(pcVar1 + 0x114) <= local_30) goto LAB_00092dc6;
}
}
LAB_00092c90:
local_24 = local_24 + 1;
if (*(int *)(param_1 + 0x110) <= local_24) {
return 0;
}
} while( true );
LAB_00092dc6:
local_3c = local_3c + 1;
if (*(int *)(this + 0x110) <= local_3c) {
return 1;
}
iVar2 = *(int *)(param_1 + 0x110);
goto LAB_00092c56;
}
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.