CSheet::CSheet
0x00bdd720 · 3832 bytes · __thiscall
_ZN6CSheetC1ER10CUtlBuffer
Decompiled
undefined (2 params)
/* WARNING: Type propagation algorithm not settling */
/* CSheet::CSheet(CUtlBuffer&) */
void __thiscall CSheet::CSheet(CSheet *this,CUtlBuffer *param_1)
{
CUtlBuffer CVar1;
char cVar2;
void *pvVar3;
int iVar4;
undefined4 *puVar5;
int iVar6;
int *piVar7;
int iVar8;
undefined4 *puVar9;
undefined4 *puVar10;
undefined4 *puVar11;
CSheet *pCVar12;
float *pfVar13;
uint *puVar14;
CSheet *pCVar15;
CSheet CVar16;
float fVar17;
CSheet *pCVar18;
int iVar19;
byte bVar20;
undefined4 uVar21;
int local_991c;
uint local_9918;
float *local_9910;
float *local_990c;
float local_9904;
float local_9900;
undefined4 *local_98fc;
float local_98f8;
float local_98f4;
int local_98f0;
int local_98e8;
int local_98e4;
uint local_98e0;
float local_98dc;
float local_98d8;
undefined4 local_98d4;
undefined4 local_98d0;
undefined4 local_98cc;
undefined4 local_98c8;
undefined4 local_98c4;
undefined4 local_98c0;
undefined4 local_98bc;
undefined4 local_98b8;
undefined4 local_98b4;
undefined4 local_98b0;
undefined4 local_98ac;
undefined4 local_98a8;
undefined4 local_98a4;
undefined4 local_9864;
undefined4 local_9860;
undefined4 local_985c [16];
undefined4 local_981c;
undefined4 local_901c;
undefined4 local_881c;
bVar20 = 0;
*(undefined4 *)this = 0;
pCVar12 = this + 4;
pCVar15 = pCVar12;
for (iVar8 = 0x40; iVar8 != 0; iVar8 = iVar8 + -1) {
*(int *)pCVar15 = 0;
pCVar15 = pCVar15 + 4;
}
pCVar18 = this + 0x104;
pCVar15 = pCVar18;
for (iVar8 = 0x10; iVar8 != 0; iVar8 = iVar8 + -1) {
*(int *)pCVar15 = 0;
pCVar15 = pCVar15 + 4;
}
pCVar15 = this + 0x144;
for (iVar8 = 0x10; iVar8 != 0; iVar8 = iVar8 + -1) {
*(undefined4 *)pCVar15 = 0;
pCVar15 = pCVar15 + 4;
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar8 = *(int *)(param_1 + 0xc);
iVar6 = *(int *)(*(int *)param_1 + (iVar8 - *(int *)(param_1 + 0x20)));
}
else {
piVar7 = (int *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (piVar7 == (int *)0x0) {
piVar7 = &local_98e8;
}
local_98bc = local_98e8;
local_98bc = CONCAT31((int3)((uint)local_98e8 >> 8),*(undefined1 *)((int)piVar7 + 3));
local_98bc._2_2_ = (undefined2)((uint)local_98e8 >> 0x10);
local_98bc._0_2_ =
CONCAT11(*(undefined1 *)((int)piVar7 + 2),*(undefined1 *)((int)piVar7 + 3));
local_98bc._3_1_ = (undefined1)((uint)local_98e8 >> 0x18);
local_98bc._0_3_ = CONCAT12(*(undefined1 *)((int)piVar7 + 1),(undefined2)local_98bc);
local_98bc = CONCAT13((char)*piVar7,(undefined3)local_98bc);
/* try { // try from 00bde677 to 00bde67b has its CatchHandler @ 00bde5af */
_V_memcpy(&local_98e8,&local_98bc,4);
iVar8 = *(int *)(param_1 + 0xc);
iVar6 = local_98e8;
}
*(int *)(param_1 + 0xc) = iVar8 + 4;
goto LAB_00bdd7a0;
}
LAB_00bdd7ae:
local_98f0 = 1;
}
else {
local_98e8 = 0;
/* try { // try from 00bdd795 to 00bde5e5 has its CatchHandler @ 00bde5af */
CUtlBuffer::Scanf(param_1,"%d",&local_98e8);
iVar6 = local_98e8;
LAB_00bdd7a0:
local_98f0 = 4;
if (iVar6 == 0) goto LAB_00bdd7ae;
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') goto LAB_00bde06a;
if (((byte)param_1[0x34] & 1) == 0) {
iVar8 = *(int *)(param_1 + 0xc);
iVar6 = *(int *)(*(int *)param_1 + (iVar8 - *(int *)(param_1 + 0x20)));
}
else {
piVar7 = (int *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (piVar7 == (int *)0x0) {
piVar7 = &local_98e4;
}
local_98b8 = local_98e4;
local_98b8 = CONCAT31((int3)((uint)local_98e4 >> 8),*(undefined1 *)((int)piVar7 + 3));
local_98b8._2_2_ = (undefined2)((uint)local_98e4 >> 0x10);
local_98b8._0_2_ = CONCAT11(*(undefined1 *)((int)piVar7 + 2),*(undefined1 *)((int)piVar7 + 3))
;
local_98b8._3_1_ = (undefined1)((uint)local_98e4 >> 0x18);
local_98b8._0_3_ = CONCAT12(*(undefined1 *)((int)piVar7 + 1),(undefined2)local_98b8);
local_98b8 = CONCAT13((char)*piVar7,(undefined3)local_98b8);
_V_memcpy(&local_98e4,&local_98b8,4);
iVar8 = *(int *)(param_1 + 0xc);
iVar6 = local_98e4;
}
*(int *)(param_1 + 0xc) = iVar8 + 4;
}
else {
local_98e4 = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_98e4);
iVar6 = local_98e4;
}
for (; iVar6 != 0; iVar6 = iVar6 + -1) {
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar8 = *(int *)(param_1 + 0xc);
local_9918 = *(uint *)(*(int *)param_1 + (iVar8 - *(int *)(param_1 + 0x20)));
}
else {
puVar14 = (uint *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1)
;
if (puVar14 == (uint *)0x0) {
puVar14 = &local_98e0;
}
local_98b4 = local_98e0;
local_98b4 = CONCAT31((int3)(local_98e0 >> 8),*(undefined1 *)((int)puVar14 + 3));
local_98b4._2_2_ = (undefined2)(local_98e0 >> 0x10);
local_98b4._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar14 + 2),*(undefined1 *)((int)puVar14 + 3));
local_98b4._3_1_ = (undefined1)(local_98e0 >> 0x18);
local_98b4._0_3_ = CONCAT12(*(undefined1 *)((int)puVar14 + 1),(undefined2)local_98b4);
local_98b4 = CONCAT13((char)*puVar14,(undefined3)local_98b4);
_V_memcpy(&local_98e0,&local_98b4,4);
iVar8 = *(int *)(param_1 + 0xc);
local_9918 = local_98e0;
}
*(int *)(param_1 + 0xc) = iVar8 + 4;
goto joined_r0x00bde456;
}
local_9918 = 0;
}
else {
local_98e0 = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_98e0);
local_9918 = local_98e0;
joined_r0x00bde456:
if (0x3f < local_9918) {
Warning("sequence number %d too high in sheet file!!!\n",local_9918);
return;
}
}
CVar16 = (CSheet)((byte)param_1[0x15] & 1);
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar8 = *(int *)(param_1 + 0xc);
fVar17 = *(float *)(*(int *)param_1 + (iVar8 - *(int *)(param_1 + 0x20)));
}
else {
pfVar13 = (float *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1
);
if (pfVar13 == (float *)0x0) {
pfVar13 = &local_98dc;
}
local_981c = local_98dc;
local_981c = (float)CONCAT31((int3)((uint)local_98dc >> 8),
*(undefined1 *)((int)pfVar13 + 3));
local_981c._2_2_ = (undefined2)((uint)local_98dc >> 0x10);
local_981c._0_2_ =
CONCAT11(*(undefined1 *)((int)pfVar13 + 2),*(undefined1 *)((int)pfVar13 + 3));
local_981c._3_1_ = (undefined1)((uint)local_98dc >> 0x18);
local_981c._0_3_ = CONCAT12(*(undefined1 *)((int)pfVar13 + 1),(undefined2)local_981c);
local_981c = (float)CONCAT13(*(undefined1 *)pfVar13,(undefined3)local_981c);
_V_memcpy(&local_98dc,&local_981c,4);
iVar8 = *(int *)(param_1 + 0xc);
fVar17 = local_98dc;
}
CVar16 = SUB41(fVar17,0);
*(int *)(param_1 + 0xc) = iVar8 + 4;
}
}
else {
local_98dc = 0.0;
CUtlBuffer::Scanf(param_1,"%d",&local_98dc);
CVar16 = SUB41(local_98dc,0);
}
this[local_9918 + 0x104] = CVar16;
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar8 = *(int *)(param_1 + 0xc);
local_9904 = *(float *)(*(int *)param_1 + (iVar8 - *(int *)(param_1 + 0x20)));
}
else {
pfVar13 = (float *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1
);
if (pfVar13 == (float *)0x0) {
pfVar13 = &local_98d8;
}
local_901c = local_98d8;
local_901c = (float)CONCAT31((int3)((uint)local_98d8 >> 8),
*(undefined1 *)((int)pfVar13 + 3));
local_901c._2_2_ = (undefined2)((uint)local_98d8 >> 0x10);
local_901c._0_2_ =
CONCAT11(*(undefined1 *)((int)pfVar13 + 2),*(undefined1 *)((int)pfVar13 + 3));
local_901c._3_1_ = (undefined1)((uint)local_98d8 >> 0x18);
local_901c._0_3_ = CONCAT12(*(undefined1 *)((int)pfVar13 + 1),(undefined2)local_901c);
local_901c = (float)CONCAT13(*(undefined1 *)pfVar13,(undefined3)local_901c);
_V_memcpy(&local_98d8,&local_901c,4);
iVar8 = *(int *)(param_1 + 0xc);
local_9904 = local_98d8;
}
*(int *)(param_1 + 0xc) = iVar8 + 4;
goto LAB_00bdd8c5;
}
local_9904 = 0.0;
local_991c = 0x200;
*(undefined4 *)(this + local_9918 * 4 + 0x184) = 0;
}
else {
local_98d8 = 0.0;
CUtlBuffer::Scanf(param_1,"%d",&local_98d8);
local_9904 = local_98d8;
LAB_00bdd8c5:
*(float *)(this + local_9918 * 4 + 0x184) = local_9904;
local_991c = 0x200;
if (local_9904 == 1.4013e-45) {
local_991c = 1;
}
}
if (*(int *)(this + local_9918 * 4 + 4) != 0) {
Warning("Duplicate sequence %d in sheet file\n",local_9918);
if (*(void **)(this + local_9918 * 4 + 4) != (void *)0x0) {
operator_delete__(*(void **)(this + local_9918 * 4 + 4));
}
}
pvVar3 = operator_new__(local_991c * 0x44);
*(void **)(this + local_9918 * 4 + 4) = pvVar3;
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') {
iVar8 = 0;
}
else {
iVar19 = *(int *)(param_1 + 0xc);
fVar17 = *(float *)(*(int *)param_1 + (iVar19 - *(int *)(param_1 + 0x20)));
local_98d4 = fVar17;
if (((byte)param_1[0x34] & 1) != 0) {
local_98d4._3_1_ = (undefined1)((uint)fVar17 >> 0x18);
local_881c._0_1_ = local_98d4._3_1_;
local_98d4._2_1_ = (undefined1)((uint)fVar17 >> 0x10);
local_881c._1_1_ = local_98d4._2_1_;
local_98d4._1_1_ = (undefined1)((uint)fVar17 >> 8);
local_881c._2_1_ = local_98d4._1_1_;
local_98d4._0_1_ = SUB41(fVar17,0);
local_881c._3_1_ = (undefined1)local_98d4;
_V_memcpy(&local_98d4,&local_881c,4);
iVar19 = *(int *)(param_1 + 0xc);
}
iVar8 = (int)local_98d4;
*(int *)(param_1 + 0xc) = iVar19 + 4;
}
}
else {
local_98d4 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_98d4);
iVar8 = (int)local_98d4;
}
if (0 < (int)local_9904) {
local_98fc = &local_881c;
local_98f8 = 0.0;
local_98f4 = 0.0;
do {
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') {
local_9900 = 0.0;
}
else {
iVar19 = *(int *)(param_1 + 0xc);
fVar17 = *(float *)(*(int *)param_1 + (iVar19 - *(int *)(param_1 + 0x20)));
local_98d0 = fVar17;
if (((byte)param_1[0x34] & 1) != 0) {
local_98d0._3_1_ = (undefined1)((uint)fVar17 >> 0x18);
local_98d0._2_1_ = (undefined1)((uint)fVar17 >> 0x10);
local_98d0._1_1_ = (undefined1)((uint)fVar17 >> 8);
local_98d0._0_1_ = SUB41(fVar17,0);
local_98b0 = (float)CONCAT13((undefined1)local_98d0,
CONCAT12(local_98d0._1_1_,
CONCAT11(local_98d0._2_1_,local_98d0._3_1_)));
_V_memcpy(&local_98d0,&local_98b0,4);
iVar19 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar19 + 4;
local_9900 = local_98d0;
}
}
else {
local_98d0 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_98d0);
local_9900 = local_98d0;
}
iVar19 = 0;
(&local_901c)[(int)local_98f8] = (float)(int)local_98f8;
(&local_981c)[(int)local_98f8] = (1.0 / (float)iVar8) * 512.0 * local_98f4;
local_98fc[0x10] = 0;
puVar5 = local_98fc;
do {
if (((byte)param_1[0x15] & 1) == 0) {
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') {
uVar21 = 0;
goto LAB_00bdda9c;
}
iVar4 = *(int *)(param_1 + 0xc);
uVar21 = *(undefined4 *)(*(int *)param_1 + (iVar4 - *(int *)(param_1 + 0x20)));
local_98cc = uVar21;
if (((byte)param_1[0x34] & 1) != 0) {
local_98cc._3_1_ = (undefined1)((uint)uVar21 >> 0x18);
local_98cc._2_1_ = (undefined1)((uint)uVar21 >> 0x10);
local_98cc._1_1_ = (undefined1)((uint)uVar21 >> 8);
local_98cc._0_1_ = (undefined1)uVar21;
local_98ac = (float)CONCAT13((undefined1)local_98cc,
CONCAT12(local_98cc._1_1_,
CONCAT11(local_98cc._2_1_,local_98cc._3_1_)));
_V_memcpy(&local_98cc,&local_98ac,4);
iVar4 = *(int *)(param_1 + 0xc);
}
CVar1 = param_1[0x15];
*puVar5 = local_98cc;
*(int *)(param_1 + 0xc) = iVar4 + 4;
if (((byte)CVar1 & 1) != 0) goto LAB_00bddaaa;
LAB_00bddbc0:
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') {
uVar21 = 0;
goto LAB_00bddad6;
}
iVar4 = *(int *)(param_1 + 0xc);
uVar21 = *(undefined4 *)(*(int *)param_1 + (iVar4 - *(int *)(param_1 + 0x20)));
local_98c8 = uVar21;
if (((byte)param_1[0x34] & 1) != 0) {
local_98c8._3_1_ = (undefined1)((uint)uVar21 >> 0x18);
local_98c8._2_1_ = (undefined1)((uint)uVar21 >> 0x10);
local_98c8._1_1_ = (undefined1)((uint)uVar21 >> 8);
local_98c8._0_1_ = (undefined1)uVar21;
local_98a8 = (float)CONCAT13((undefined1)local_98c8,
CONCAT12(local_98c8._1_1_,
CONCAT11(local_98c8._2_1_,local_98c8._3_1_)));
_V_memcpy(&local_98c8,&local_98a8,4);
iVar4 = *(int *)(param_1 + 0xc);
}
CVar1 = param_1[0x15];
puVar5[1] = local_98c8;
*(int *)(param_1 + 0xc) = iVar4 + 4;
if (((byte)CVar1 & 1) != 0) goto LAB_00bddae5;
LAB_00bddc10:
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') {
uVar21 = 0;
goto LAB_00bddb11;
}
iVar4 = *(int *)(param_1 + 0xc);
uVar21 = *(undefined4 *)(*(int *)param_1 + (iVar4 - *(int *)(param_1 + 0x20)));
local_98c4 = uVar21;
if (((byte)param_1[0x34] & 1) != 0) {
local_98c4._3_1_ = (undefined1)((uint)uVar21 >> 0x18);
local_98a4._0_1_ = local_98c4._3_1_;
local_98c4._2_1_ = (undefined1)((uint)uVar21 >> 0x10);
local_98a4._1_1_ = local_98c4._2_1_;
local_98c4._1_1_ = (undefined1)((uint)uVar21 >> 8);
local_98a4._2_1_ = local_98c4._1_1_;
local_98c4._0_1_ = (undefined1)uVar21;
local_98a4._3_1_ = (undefined1)local_98c4;
_V_memcpy(&local_98c4,&local_98a4,4);
iVar4 = *(int *)(param_1 + 0xc);
}
CVar1 = param_1[0x15];
puVar5[2] = local_98c4;
*(int *)(param_1 + 0xc) = iVar4 + 4;
if (((byte)CVar1 & 1) != 0) goto LAB_00bddb20;
LAB_00bddc60:
cVar2 = CUtlBuffer::CheckGet(param_1,4);
if (cVar2 == '\0') {
uVar21 = 0;
}
else {
iVar4 = *(int *)(param_1 + 0xc);
uVar21 = *(undefined4 *)(*(int *)param_1 + (iVar4 - *(int *)(param_1 + 0x20)));
local_98c0 = uVar21;
if (((byte)param_1[0x34] & 1) != 0) {
local_98c0._3_1_ = (undefined1)((uint)uVar21 >> 0x18);
local_9860._0_1_ = local_98c0._3_1_;
local_98c0._2_1_ = (undefined1)((uint)uVar21 >> 0x10);
local_9860._1_1_ = local_98c0._2_1_;
local_98c0._1_1_ = (undefined1)((uint)uVar21 >> 8);
local_9860._2_1_ = local_98c0._1_1_;
local_98c0._0_1_ = (undefined1)uVar21;
local_9860._3_1_ = (undefined1)local_98c0;
_V_memcpy(&local_98c0,&local_9860,4);
iVar4 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar4 + 4;
uVar21 = local_98c0;
}
}
else {
local_98cc = 0;
CUtlBuffer::Scanf(param_1,"%f",&local_98cc);
uVar21 = local_98cc;
LAB_00bdda9c:
CVar1 = param_1[0x15];
*puVar5 = uVar21;
if (((byte)CVar1 & 1) == 0) goto LAB_00bddbc0;
LAB_00bddaaa:
local_98c8 = 0;
CUtlBuffer::Scanf(param_1,"%f",&local_98c8);
uVar21 = local_98c8;
LAB_00bddad6:
CVar1 = param_1[0x15];
puVar5[1] = uVar21;
if (((byte)CVar1 & 1) == 0) goto LAB_00bddc10;
LAB_00bddae5:
local_98c4 = 0;
CUtlBuffer::Scanf(param_1,"%f",&local_98c4);
uVar21 = local_98c4;
LAB_00bddb11:
CVar1 = param_1[0x15];
puVar5[2] = uVar21;
if (((byte)CVar1 & 1) == 0) goto LAB_00bddc60;
LAB_00bddb20:
local_98c0 = 0;
CUtlBuffer::Scanf(param_1,"%f",&local_98c0);
uVar21 = local_98c0;
}
iVar19 = iVar19 + 1;
puVar5[3] = uVar21;
puVar5 = puVar5 + 8;
} while (iVar19 < local_98f0);
if (local_98f0 == 1) {
local_98fc[8] = *local_98fc;
local_98fc[9] = local_98fc[1];
local_98fc[10] = local_98fc[2];
local_98fc[0xb] = local_98fc[3];
local_98fc[0xc] = local_98fc[4];
local_98fc[0xd] = local_98fc[5];
local_98fc[0xe] = local_98fc[6];
local_98fc[0xf] = local_98fc[7];
}
local_98f4 = local_98f4 + local_9900;
local_98f8 = (float)((int)local_98f8 + 1);
local_98fc = local_98fc + 0x11;
*(float *)(this + local_9918 * 4 + 0x284) = local_98f4;
} while (local_98f8 != local_9904);
}
local_990c = (float *)&local_901c;
local_9910 = (float *)&local_981c;
local_98f4 = 0.0;
do {
GetInterpolationData
(local_9910,local_990c,(int)local_9904,0x200,(float)(int)local_98f4,
(bool)(~(byte)this[local_9918 + 0x104] & 1),(float *)&local_98b0,
(float *)&local_98ac,(float *)&local_98a8);
puVar5 = &local_881c + (int)local_98b0 * 0x11;
puVar9 = &local_98a4;
for (iVar8 = 0x11; iVar8 != 0; iVar8 = iVar8 + -1) {
*puVar9 = *puVar5;
puVar5 = puVar5 + (uint)bVar20 * -2 + 1;
puVar9 = puVar9 + (uint)bVar20 * -2 + 1;
}
puVar5 = &local_881c + (int)local_98ac * 0x11;
puVar9 = &local_9860;
for (iVar8 = 0x11; iVar8 != 0; iVar8 = iVar8 + -1) {
*puVar9 = *puVar5;
puVar5 = puVar5 + (uint)bVar20 * -2 + 1;
puVar9 = puVar9 + (uint)bVar20 * -2 + 1;
}
puVar5 = (undefined4 *)((int)local_98f4 * 0x44 + *(int *)(this + local_9918 * 4 + 4));
puVar5[0x10] = local_98a8;
puVar9 = &local_9860;
puVar10 = &local_98a4;
do {
puVar11 = puVar10 + 8;
*puVar5 = *puVar10;
puVar5[1] = puVar10[1];
puVar5[2] = puVar10[2];
puVar5[3] = puVar10[3];
puVar5[4] = *puVar9;
puVar5[5] = puVar9[1];
puVar5[6] = puVar9[2];
puVar5[7] = puVar9[3];
puVar5 = puVar5 + 8;
puVar9 = puVar9 + 8;
puVar10 = puVar11;
} while (puVar11 != &local_9864);
local_98f4 = (float)((int)local_98f4 + 1);
} while ((int)local_98f4 < local_991c);
}
LAB_00bde06a:
iVar8 = 0;
do {
pCVar15 = pCVar18;
if (*(int *)(this + iVar8 * 4 + 4) != 0) {
do {
if (*(int *)pCVar12 == 0) {
*(int *)pCVar12 = *(int *)(this + iVar8 * 4 + 4);
*pCVar15 = this[iVar8 + 0x104];
*(int *)(pCVar12 + 0x180) = *(int *)(this + iVar8 * 4 + 0x184);
pCVar15[0x40] = (CSheet)0x1;
}
pCVar12 = pCVar12 + 4;
pCVar15 = pCVar15 + 1;
} while (pCVar12 != pCVar18);
return;
}
iVar8 = iVar8 + 1;
} while (iVar8 != 0x40);
return;
}
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.