CNavArea::Save
0x0071a3a0 · 3941 bytes · __cdecl
_ZNK8CNavArea4SaveER10CUtlBufferj
Decompiled
undefined (2 params)
/* CNavArea::Save(CUtlBuffer&, unsigned int) const */
void CNavArea::Save(CUtlBuffer *param_1,uint param_2)
{
float *pfVar1;
float fVar2;
char cVar3;
int *piVar4;
int iVar5;
undefined4 uVar6;
void *pvVar7;
byte bVar8;
int iVar9;
uint uVar10;
uint uVar11;
int iVar12;
int local_7c;
short local_5e;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined1 local_20;
undefined1 local_1f;
undefined1 local_1e;
undefined1 local_1d;
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_5c = *(undefined4 *)(param_1 + 0x8c);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_5c;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_5c._3_1_;
local_1f = local_5c._2_1_;
local_1e = local_5c._1_1_;
local_1d = (undefined1)local_5c;
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",*(undefined4 *)(param_1 + 0x8c));
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_58 = *(uint *)(param_1 + 0x54) & 0x67ffffff;
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(uint *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_58;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_58._3_1_;
local_1f = local_58._2_1_;
local_1e = local_58._1_1_;
local_1d = (undefined1)local_58;
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%d",*(uint *)(param_1 + 0x54) & 0x67ffffff);
}
CUtlBuffer::Put((CUtlBuffer *)param_2,param_1 + 4,0xc);
CUtlBuffer::Put((CUtlBuffer *)param_2,param_1 + 0x10,0xc);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_54 = *(float *)(param_1 + 0x24);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(float *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_54;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_54._3_1_;
local_1f = local_54._2_1_;
local_1e = local_54._1_1_;
local_1d = (undefined1)local_54;
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%f",(double)*(float *)(param_1 + 0x24));
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_50 = *(float *)(param_1 + 0x28);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(float *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_50;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_50._3_1_;
local_1f = local_50._2_1_;
local_1e = local_50._1_1_;
local_1d = (undefined1)local_50;
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%f",(double)*(float *)(param_1 + 0x28));
}
iVar9 = 0;
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_4c = **(undefined4 **)(param_1 + iVar9 * 4 + 0x58);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_4c;
iVar12 = *(int *)(param_2 + 0x10);
}
else {
iVar12 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar12 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_4c._3_1_;
local_1f = local_4c._2_1_;
local_1e = local_4c._1_1_;
local_1d = (undefined1)local_4c;
_V_memcpy(pvVar7,&local_20,4);
iVar12 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar12 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",**(undefined4 **)(param_1 + iVar9 * 4 + 0x58));
}
iVar12 = 0;
piVar4 = *(int **)(param_1 + iVar9 * 4 + 0x58);
if (0 < *piVar4) {
LAB_0071a4f2:
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_48 = *(undefined4 *)(piVar4[iVar12 * 2 + 1] + 0x8c);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)
(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = local_48;
iVar5 = *(int *)(param_2 + 0x10);
}
else {
iVar5 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar5 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_48._3_1_;
local_1f = local_48._2_1_;
local_1e = local_48._1_1_;
local_1d = (undefined1)local_48;
_V_memcpy(pvVar7,&local_20,4);
iVar5 = *(int *)(param_2 + 0x10);
}
}
iVar12 = iVar12 + 1;
*(int *)(param_2 + 0x10) = iVar5 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
piVar4 = *(int **)(param_1 + iVar9 * 4 + 0x58);
if (*piVar4 <= iVar12) break;
goto LAB_0071a4f2;
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",
*(undefined4 *)(piVar4[iVar12 * 2 + 1] + 0x8c));
}
iVar12 = iVar12 + 1;
piVar4 = *(int **)(param_1 + iVar9 * 4 + 0x58);
} while (iVar12 < *piVar4);
}
iVar9 = iVar9 + 1;
} while (iVar9 != 4);
uVar10 = **(uint **)(param_1 + 0xcc) & 0xff;
if (0xff < (int)**(uint **)(param_1 + 0xcc)) {
uVar10 = 0xff;
Warning("Warning: NavArea #%d: Truncated hiding spot list to 255\n",
*(undefined4 *)(param_1 + 0x8c));
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
(char)uVar10;
*(int *)(param_2 + 0x10) = *(int *)(param_2 + 0x10) + 1;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",uVar10);
}
piVar4 = *(int **)(param_1 + 0xcc);
if (0 < *piVar4) {
iVar9 = 0;
do {
HidingSpot::Save((CUtlBuffer *)piVar4[iVar9 + 1],param_2);
if (iVar9 == uVar10 - 1) break;
iVar9 = iVar9 + 1;
piVar4 = *(int **)(param_1 + 0xcc);
} while (iVar9 < *piVar4);
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_44 = **(undefined4 **)(param_1 + 0xd0);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_44;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_44._3_1_;
local_1f = local_44._2_1_;
local_1e = local_44._1_1_;
local_1d = (undefined1)local_44;
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",**(undefined4 **)(param_1 + 0xd0));
}
local_7c = 0;
piVar4 = *(int **)(param_1 + 0xd0);
if (0 < *piVar4) {
do {
piVar4 = (int *)piVar4[local_7c + 1];
if (*piVar4 == 0) {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_3c = 0;
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)
(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = local_3c;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_3c._3_1_;
local_1f = local_3c._2_1_;
local_1e = local_3c._1_1_;
local_1d = (undefined1)local_3c;
goto LAB_0071acf8;
}
}
goto LAB_0071abee;
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",0);
}
}
else {
uVar6 = *(undefined4 *)(*piVar4 + 0x8c);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_40 = uVar6;
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)
(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = local_40;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_40._3_1_;
local_1f = local_40._2_1_;
local_1e = local_40._1_1_;
local_1d = (undefined1)local_40;
LAB_0071acf8:
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
LAB_0071abee:
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",uVar6);
}
}
bVar8 = *(byte *)(piVar4 + 2);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,1);
if (cVar3 == '\0') goto LAB_0071a67f;
*(byte *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = bVar8;
*(int *)(param_2 + 0x10) = *(int *)(param_2 + 0x10) + 1;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
iVar9 = piVar4[3];
if (iVar9 == 0) goto LAB_0071ab20;
LAB_0071a68a:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_38 = *(undefined4 *)(iVar9 + 0x8c);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)
(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = local_38;
iVar9 = *(int *)(param_2 + 0x10);
}
else {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_38._3_1_;
local_1f = local_38._2_1_;
local_1e = local_38._1_1_;
local_1d = (undefined1)local_38;
LAB_0071ad43:
_V_memcpy(pvVar7,&local_20,4);
iVar9 = *(int *)(param_2 + 0x10);
}
}
LAB_0071ac3e:
*(int *)(param_2 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",*(undefined4 *)(iVar9 + 0x8c));
}
LAB_0071a6ae:
bVar8 = *(byte *)(piVar4 + 5);
if ((*(byte *)(param_2 + 0x15) & 1) != 0) goto LAB_0071a6bc;
LAB_0071ab50:
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,1);
if (cVar3 == '\0') goto LAB_0071a6d0;
*(byte *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = bVar8;
*(int *)(param_2 + 0x10) = *(int *)(param_2 + 0x10) + 1;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
uVar10 = piVar4[0xf];
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",(uint)bVar8);
LAB_0071a67f:
iVar9 = piVar4[3];
if (iVar9 != 0) goto LAB_0071a68a;
LAB_0071ab20:
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_34 = 0;
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) != 0) {
iVar9 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar9 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 == (void *)0x0) goto LAB_0071ac3e;
local_20 = local_34._3_1_;
local_1f = local_34._2_1_;
local_1e = local_34._1_1_;
local_1d = (undefined1)local_34;
goto LAB_0071ad43;
}
*(undefined4 *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20)))
= local_34;
iVar9 = *(int *)(param_2 + 0x10);
goto LAB_0071ac3e;
}
goto LAB_0071a6ae;
}
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",0);
bVar8 = *(byte *)(piVar4 + 5);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) goto LAB_0071ab50;
LAB_0071a6bc:
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",(uint)bVar8);
LAB_0071a6d0:
uVar10 = piVar4[0xf];
}
uVar11 = uVar10 & 0xff;
if (0xff < (int)uVar10) {
uVar11 = 0xff;
Warning("Warning: NavArea #%d: Truncated encounter spot list to 255\n",
*(undefined4 *)(param_1 + 0x8c));
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
(char)uVar11;
*(int *)(param_2 + 0x10) = *(int *)(param_2 + 0x10) + 1;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",uVar11);
}
iVar9 = 0;
if (0 < piVar4[0xf]) {
do {
pfVar1 = (float *)(piVar4[0xc] + iVar9 * 8);
fVar2 = pfVar1[1];
if (fVar2 == 0.0) {
uVar6 = 0;
}
else {
uVar6 = *(undefined4 *)((int)fVar2 + 0x10);
}
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_30 = uVar6;
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)
(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_30;
iVar12 = *(int *)(param_2 + 0x10);
}
else {
iVar12 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar12 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_30._3_1_;
local_1f = local_30._2_1_;
local_1e = local_30._1_1_;
local_1d = (undefined1)local_30;
_V_memcpy(pvVar7,&local_20,4);
iVar12 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar12 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",uVar6);
}
uVar10 = (uint)(*pfVar1 * 255.0);
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
(char)uVar10;
*(int *)(param_2 + 0x10) = *(int *)(param_2 + 0x10) + 1;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",uVar10 & 0xff);
}
} while ((iVar9 != uVar11 - 1) && (iVar9 = iVar9 + 1, iVar9 < piVar4[0xf]));
}
local_7c = local_7c + 1;
piVar4 = *(int **)(param_1 + 0xd0);
} while (local_7c < *piVar4);
}
iVar9 = *(int *)(param_1 + 0x94);
local_5e = 0;
if ((iVar9 != 0) && (0 < DAT_00fe6b50)) {
if (iVar9 == *placeDirectory) {
local_5e = 1;
}
else {
iVar12 = 0;
do {
iVar5 = iVar12;
iVar12 = iVar5 + 1;
if (iVar12 == DAT_00fe6b50) goto LAB_0071a8e8;
} while (iVar9 != placeDirectory[iVar12]);
if (iVar12 < 0) {
LAB_0071a8e8:
local_5e = 0;
}
else {
local_5e = (short)iVar5 + 2;
}
}
}
iVar9 = 0;
CUtlBuffer::Put((CUtlBuffer *)param_2,&local_5e,2);
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_2c = **(undefined4 **)(param_1 + iVar9 * 4 + 0x68);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_2c;
iVar12 = *(int *)(param_2 + 0x10);
}
else {
iVar12 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar12 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_2c._3_1_;
local_1f = local_2c._2_1_;
local_1e = local_2c._1_1_;
local_1d = (undefined1)local_2c;
_V_memcpy(pvVar7,&local_20,4);
iVar12 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar12 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",**(undefined4 **)(param_1 + iVar9 * 4 + 0x68));
}
iVar12 = 0;
piVar4 = *(int **)(param_1 + iVar9 * 4 + 0x68);
if (0 < *piVar4) {
LAB_0071a962:
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_28 = *(undefined4 *)(piVar4[iVar12 + 1] + 0x4c);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(undefined4 *)
(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) = local_28;
iVar5 = *(int *)(param_2 + 0x10);
}
else {
iVar5 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar5 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_28._3_1_;
local_1f = local_28._2_1_;
local_1e = local_28._1_1_;
local_1d = (undefined1)local_28;
_V_memcpy(pvVar7,&local_20,4);
iVar5 = *(int *)(param_2 + 0x10);
}
}
iVar12 = iVar12 + 1;
*(int *)(param_2 + 0x10) = iVar5 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
piVar4 = *(int **)(param_1 + iVar9 * 4 + 0x68);
if (*piVar4 <= iVar12) break;
goto LAB_0071a962;
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%u",*(undefined4 *)(piVar4[iVar12 + 1] + 0x4c));
}
iVar12 = iVar12 + 1;
piVar4 = *(int **)(param_1 + iVar9 * 4 + 0x68);
} while (iVar12 < *piVar4);
}
iVar9 = iVar9 + 1;
if (iVar9 == 2) {
iVar9 = 0;
CUtlBuffer::Put((CUtlBuffer *)param_2,param_1 + 0xd4,4);
CUtlBuffer::Put((CUtlBuffer *)param_2,param_1 + 0xd8,4);
do {
if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
local_24 = *(float *)(param_1 + iVar9 * 4 + 0xdc);
cVar3 = CUtlBuffer::CheckPut((CUtlBuffer *)param_2,4);
if (cVar3 != '\0') {
if ((*(byte *)(param_2 + 0x34) & 1) == 0) {
*(float *)(*(int *)param_2 + (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0x20))) =
local_24;
iVar12 = *(int *)(param_2 + 0x10);
}
else {
iVar12 = *(int *)(param_2 + 0x10);
pvVar7 = (void *)((iVar12 - *(int *)(param_2 + 0x20)) + *(int *)param_2);
if (pvVar7 != (void *)0x0) {
local_20 = local_24._3_1_;
local_1f = local_24._2_1_;
local_1e = local_24._1_1_;
local_1d = (undefined1)local_24;
_V_memcpy(pvVar7,&local_20,4);
iVar12 = *(int *)(param_2 + 0x10);
}
}
*(int *)(param_2 + 0x10) = iVar12 + 4;
CUtlBuffer::AddNullTermination((CUtlBuffer *)param_2);
}
}
else {
CUtlBuffer::Printf((CUtlBuffer *)param_2,"%f",
(double)*(float *)(param_1 + iVar9 * 4 + 0xdc));
}
iVar9 = iVar9 + 1;
} while (iVar9 != 4);
return;
}
} while( true );
}
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.