CSentence::CacheSaveToBuffer
0x000dba50 · 5522 bytes · __thiscall
_ZN9CSentence17CacheSaveToBufferER10CUtlBufferi
Decompiled
undefined (3 params)
/* CSentence::CacheSaveToBuffer(CUtlBuffer&, int) */
void __thiscall CSentence::CacheSaveToBuffer(CSentence *this,CUtlBuffer *param_1,int param_2)
{
CUtlBuffer CVar1;
ushort uVar2;
float *pfVar3;
char cVar4;
byte bVar5;
uint uVar6;
int iVar7;
void *pvVar8;
int iVar9;
short sVar10;
uint uVar11;
int iVar12;
int iVar13;
CSentence CVar14;
float fVar15;
short local_7c;
float local_78;
short local_74;
float local_70;
undefined1 local_5e;
undefined1 uStack_5d;
undefined1 local_5c;
undefined1 uStack_5b;
undefined1 local_5a;
undefined1 uStack_59;
undefined1 local_58;
undefined1 uStack_57;
undefined1 local_56;
undefined1 uStack_55;
undefined1 local_54;
undefined1 uStack_53;
undefined1 local_52;
undefined1 uStack_51;
undefined1 local_50;
undefined1 uStack_4f;
undefined1 local_4e;
undefined1 uStack_4d;
undefined1 local_4c;
undefined1 uStack_4b;
undefined1 local_48;
undefined1 uStack_47;
undefined1 local_44;
undefined1 uStack_43;
undefined1 uStack_42;
undefined1 uStack_41;
undefined1 local_40;
undefined1 uStack_3f;
undefined1 uStack_3e;
undefined1 uStack_3d;
undefined1 local_3c;
undefined1 uStack_3b;
undefined1 uStack_3a;
undefined1 uStack_39;
undefined1 local_38;
undefined1 uStack_37;
undefined1 uStack_36;
undefined1 uStack_35;
undefined1 local_34;
undefined1 uStack_33;
undefined1 uStack_32;
undefined1 uStack_31;
undefined1 local_30;
undefined1 uStack_2f;
undefined1 uStack_2e;
undefined1 uStack_2d;
undefined1 local_2c;
undefined1 uStack_2b;
undefined1 uStack_2a;
undefined1 uStack_29;
undefined1 local_28;
undefined1 local_24;
undefined1 uStack_23;
undefined1 uStack_22;
undefined1 uStack_21;
undefined1 local_20;
undefined1 local_1f;
undefined1 local_1e;
undefined1 local_1d;
uVar6 = *(uint *)(this + 0x24);
CVar1 = param_1[0x15];
if (param_2 == 4) {
if (((((byte)CVar1 & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)CVar1 & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
while (cVar4 = CUtlBuffer::CheckPut(param_1,1), cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
iVar13 = iVar13 + -1;
if (iVar13 < 0) goto LAB_000dc4e0;
}
}
}
LAB_000dc4e0:
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 == '\0') {
CVar1 = param_1[0x15];
}
else {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = 4;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
CVar1 = param_1[0x15];
}
if (((((byte)CVar1 & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)CVar1 & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
while (cVar4 = CUtlBuffer::CheckPut(param_1,1), cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
iVar13 = iVar13 + -1;
if (iVar13 < 0) goto LAB_000dc560;
}
}
}
LAB_000dc560:
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 == '\0') {
CVar1 = param_1[0x15];
}
else {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = 0;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
CVar1 = param_1[0x15];
}
if (((((byte)CVar1 & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)CVar1 & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
while (cVar4 = CUtlBuffer::CheckPut(param_1,1), cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
iVar13 = iVar13 + -1;
if (iVar13 < 0) goto LAB_000dc5e0;
}
}
}
LAB_000dc5e0:
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 == '\0') {
CVar1 = param_1[0x15];
}
else {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = 0;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
CVar1 = param_1[0x15];
}
if (((((byte)CVar1 & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)CVar1 & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
while (cVar4 = CUtlBuffer::CheckPut(param_1,1), cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
iVar13 = iVar13 + -1;
if (iVar13 < 0) goto LAB_000dc660;
}
}
}
LAB_000dc660:
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 == '\0') {
CVar1 = param_1[0x15];
}
else {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = 0;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
CVar1 = param_1[0x15];
}
if (((byte)CVar1 & 1) == 0) {
uVar11 = uVar6 & 0xffff;
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(uint *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
uVar11;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
local_20 = 0;
local_1f = 0;
uStack_4b = (undefined1)(uVar11 >> 8);
local_1e = uStack_4b;
local_4c = (undefined1)uVar11;
local_1d = local_4c;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
local_70 = (float)(uVar6 & 0xffff);
CUtlBuffer::Printf(param_1,"%d",local_70);
}
local_70 = (float)(uVar6 & 0xffff);
if (local_70 != 0.0) {
uVar6 = 0;
do {
while( true ) {
pfVar3 = *(float **)(*(int *)(this + 0x18) + uVar6 * 4);
uVar2 = *(ushort *)(pfVar3 + 2);
if (((byte)param_1[0x15] & 1) != 0) break;
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dc6c4;
if (((byte)param_1[0x34] & 1) == 0) {
*(uint *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(uint)uVar2;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
local_20 = 0;
local_1f = 0;
uStack_47 = (undefined1)(uVar2 >> 8);
local_1e = uStack_47;
local_48 = (undefined1)uVar2;
local_1d = local_48;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
fVar15 = *pfVar3;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dc6d2;
LAB_000dc791:
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dc6ee;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
fVar15;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_41 = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_41;
uStack_42 = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_42;
uStack_43 = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_43;
local_44 = SUB41(fVar15,0);
local_1d = local_44;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
fVar15 = pfVar3[1];
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dc7ef;
LAB_000dc6fd:
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
LAB_000dc719:
uVar6 = uVar6 + 1;
if ((float)uVar6 == local_70) goto LAB_000dc84a;
}
CUtlBuffer::Printf(param_1,"%d",(uint)uVar2);
LAB_000dc6c4:
fVar15 = *pfVar3;
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dc791;
LAB_000dc6d2:
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
LAB_000dc6ee:
fVar15 = pfVar3[1];
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dc6fd;
LAB_000dc7ef:
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dc719;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
fVar15;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_3d = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_3d;
uStack_3e = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_3e;
uStack_3f = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_3f;
local_40 = SUB41(fVar15,0);
local_1d = local_40;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
uVar6 = uVar6 + 1;
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
} while ((float)uVar6 != local_70);
}
LAB_000dc84a:
iVar13 = *(int *)(this + 0x3c);
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(int *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = iVar13
;
iVar12 = *(int *)(param_1 + 0x10);
}
else {
iVar12 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar12 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_31 = (undefined1)((uint)iVar13 >> 0x18);
local_20 = uStack_31;
uStack_32 = (undefined1)((uint)iVar13 >> 0x10);
local_1f = uStack_32;
uStack_33 = (undefined1)((uint)iVar13 >> 8);
local_1e = uStack_33;
local_34 = (undefined1)iVar13;
local_1d = local_34;
_V_memcpy(pvVar8,&local_20,4);
iVar12 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar12 + 4;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%d",iVar13);
}
iVar12 = 0;
if (0 < iVar13) {
do {
while( true ) {
pfVar3 = (float *)(*(int *)(this + 0x30) + iVar12 * 0xc);
fVar15 = *pfVar3;
if (((byte)param_1[0x15] & 1) != 0) break;
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dc8a4;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
fVar15;
iVar9 = *(int *)(param_1 + 0x10);
}
else {
iVar9 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar9 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_2d = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_2d;
uStack_2e = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_2e;
uStack_2f = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_2f;
local_30 = SUB41(fVar15,0);
local_1d = local_30;
_V_memcpy(pvVar8,&local_20,4);
iVar9 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination(param_1);
fVar15 = pfVar3[1];
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dc94b;
LAB_000dc8b3:
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
LAB_000dc8cf:
iVar12 = iVar12 + 1;
if (iVar12 == iVar13) goto LAB_000dc9a6;
}
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
LAB_000dc8a4:
fVar15 = pfVar3[1];
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dc8b3;
LAB_000dc94b:
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dc8cf;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
fVar15;
iVar9 = *(int *)(param_1 + 0x10);
}
else {
iVar9 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar9 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_29 = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_29;
uStack_2a = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_2a;
uStack_2b = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_2b;
local_2c = SUB41(fVar15,0);
local_1d = local_2c;
_V_memcpy(pvVar8,&local_20,4);
iVar9 = *(int *)(param_1 + 0x10);
}
}
iVar12 = iVar12 + 1;
*(int *)(param_1 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination(param_1);
} while (iVar12 != iVar13);
}
LAB_000dc9a6:
uVar6 = (byte)this[0x4a] & 1;
if (((byte)param_1[0x15] & 1) != 0) {
CUtlBuffer::Printf(param_1,"%d",uVar6);
return;
}
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') {
return;
}
if (((byte)param_1[0x34] & 1) == 0) {
*(uint *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = uVar6;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
local_20 = 0;
local_1f = 0;
local_1e = 0;
local_28 = (undefined1)uVar6;
local_1d = local_28;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
return;
}
if (((((byte)CVar1 & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)CVar1 & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = 9
;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
}
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(undefined1)param_2;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(short)uVar6;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_5d = (undefined1)(uVar6 >> 8);
local_20 = uStack_5d;
local_5e = (undefined1)uVar6;
local_1f = local_5e;
_V_memcpy(pvVar8,&local_20,2);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 2;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%d",(int)(short)uVar6);
}
if (param_2 == 5) {
uVar6 = uVar6 & 0xffff;
if (uVar6 != 0) {
uVar11 = 0;
local_78 = -32768.0;
local_70 = 32767.0;
do {
while( true ) {
pfVar3 = *(float **)(*(int *)(this + 0x18) + uVar11 * 4);
bVar5 = CodeToByteCode((uint)*(ushort *)(pfVar3 + 2));
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 != '\0') {
*(byte *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
bVar5;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%u",(uint)bVar5);
}
fVar15 = *pfVar3 * 200.0;
if (*pfVar3 * 200.0 <= -32768.0) {
fVar15 = local_78;
}
if (32767.0 <= fVar15) {
fVar15 = local_70;
}
iVar13 = (int)fVar15;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20)))
= (short)iVar13;
iVar12 = *(int *)(param_1 + 0x10);
}
else {
iVar12 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar12 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_5b = (undefined1)((uint)iVar13 >> 8);
local_20 = uStack_5b;
local_5c = (undefined1)iVar13;
local_1f = local_5c;
_V_memcpy(pvVar8,&local_20,2);
iVar12 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar12 + 2;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%d",(int)(short)iVar13);
}
fVar15 = pfVar3[1] * 200.0;
if (pfVar3[1] * 200.0 <= -32768.0) {
fVar15 = local_78;
}
if (32767.0 <= fVar15) {
fVar15 = local_70;
}
iVar13 = (int)fVar15;
if (((byte)param_1[0x15] & 1) == 0) break;
CUtlBuffer::Printf(param_1,"%d",(int)(short)iVar13);
LAB_000dbf35:
uVar11 = uVar11 + 1;
if (uVar11 == uVar6) goto LAB_000dc25f;
}
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 == '\0') goto LAB_000dbf35;
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(short)iVar13;
iVar12 = *(int *)(param_1 + 0x10);
}
else {
iVar12 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar12 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_59 = (undefined1)((uint)iVar13 >> 8);
local_20 = uStack_59;
local_5a = (undefined1)iVar13;
local_1f = local_5a;
_V_memcpy(pvVar8,&local_20,2);
iVar12 = *(int *)(param_1 + 0x10);
}
}
uVar11 = uVar11 + 1;
*(int *)(param_1 + 0x10) = iVar12 + 2;
CUtlBuffer::AddNullTermination(param_1);
} while (uVar11 != uVar6);
}
LAB_000dc25f:
iVar13 = *(int *)(this + 0x3c);
local_7c = (short)iVar13;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
local_7c;
iVar12 = *(int *)(param_1 + 0x10);
}
else {
iVar12 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar12 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_55 = (undefined1)((uint)iVar13 >> 8);
local_20 = uStack_55;
local_56 = (undefined1)iVar13;
local_1f = local_56;
_V_memcpy(pvVar8,&local_20,2);
iVar12 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar12 + 2;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%d",(int)local_7c);
}
if (0 < iVar13) {
iVar12 = 0;
local_78 = -32768.0;
local_70 = 32767.0;
do {
while( true ) {
pfVar3 = (float *)(*(int *)(this + 0x30) + iVar12 * 0xc);
fVar15 = *pfVar3 * 200.0;
if (fVar15 <= -32768.0) {
fVar15 = local_78;
}
if (32767.0 <= fVar15) {
fVar15 = local_70;
}
iVar9 = (int)fVar15;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20)))
= (short)iVar9;
iVar7 = *(int *)(param_1 + 0x10);
}
else {
iVar7 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar7 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_53 = (undefined1)((uint)iVar9 >> 8);
local_20 = uStack_53;
local_54 = (undefined1)iVar9;
local_1f = local_54;
_V_memcpy(pvVar8,&local_20,2);
iVar7 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar7 + 2;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%d",(int)(short)iVar9);
}
sVar10 = 0x7fff;
fVar15 = pfVar3[1] * 32767.0;
if (fVar15 <= 32767.0) {
if (fVar15 <= 0.0) {
fVar15 = 0.0;
}
sVar10 = (short)(int)fVar15;
}
if (((byte)param_1[0x15] & 1) == 0) break;
CUtlBuffer::Printf(param_1,"%d",(int)sVar10);
LAB_000dc31b:
iVar12 = iVar12 + 1;
if (iVar12 == iVar13) goto LAB_000dcbdf;
}
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 == '\0') goto LAB_000dc31b;
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar10;
iVar9 = *(int *)(param_1 + 0x10);
}
else {
iVar9 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar9 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_51 = (undefined1)((ushort)sVar10 >> 8);
local_20 = uStack_51;
local_52 = (undefined1)sVar10;
local_1f = local_52;
_V_memcpy(pvVar8,&local_20,2);
iVar9 = *(int *)(param_1 + 0x10);
}
}
iVar12 = iVar12 + 1;
*(int *)(param_1 + 0x10) = iVar9 + 2;
CUtlBuffer::AddNullTermination(param_1);
} while (iVar12 != iVar13);
}
LAB_000dcbdf:
CVar14 = this[0x4a];
if (((((byte)param_1[0x15] & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)param_1[0x15] & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
}
}
else {
uVar6 = uVar6 & 0xffff;
if (uVar6 != 0) {
uVar11 = 0;
do {
while( true ) {
pfVar3 = *(float **)(*(int *)(this + 0x18) + uVar11 * 4);
sVar10 = *(short *)(pfVar3 + 2);
if (((byte)param_1[0x15] & 1) != 0) break;
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 == '\0') goto LAB_000dbb04;
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar10;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_57 = (undefined1)((ushort)sVar10 >> 8);
local_20 = uStack_57;
local_58 = (undefined1)sVar10;
local_1f = local_58;
_V_memcpy(pvVar8,&local_20,2);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 2;
CUtlBuffer::AddNullTermination(param_1);
fVar15 = *pfVar3;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dbb12;
LAB_000dbbd3:
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dbb2e;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
fVar15;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_39 = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_39;
uStack_3a = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_3a;
uStack_3b = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_3b;
local_3c = SUB41(fVar15,0);
local_1d = local_3c;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
fVar15 = pfVar3[1];
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dbc31;
LAB_000dbb3d:
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
LAB_000dbb59:
uVar11 = uVar11 + 1;
if (uVar11 == uVar6) goto LAB_000dbc8c;
}
CUtlBuffer::Printf(param_1,"%d",(int)sVar10);
LAB_000dbb04:
fVar15 = *pfVar3;
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dbbd3;
LAB_000dbb12:
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
LAB_000dbb2e:
fVar15 = pfVar3[1];
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dbb3d;
LAB_000dbc31:
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 == '\0') goto LAB_000dbb59;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
fVar15;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_35 = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_35;
uStack_36 = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_36;
uStack_37 = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_37;
local_38 = SUB41(fVar15,0);
local_1d = local_38;
_V_memcpy(pvVar8,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
uVar11 = uVar11 + 1;
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
} while (uVar11 != uVar6);
}
LAB_000dbc8c:
iVar13 = *(int *)(this + 0x3c);
local_74 = (short)iVar13;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
local_74;
iVar12 = *(int *)(param_1 + 0x10);
}
else {
iVar12 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar12 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_4f = (undefined1)((uint)iVar13 >> 8);
local_20 = uStack_4f;
local_50 = (undefined1)iVar13;
local_1f = local_50;
_V_memcpy(pvVar8,&local_20,2);
iVar12 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar12 + 2;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%d",(int)local_74);
}
iVar12 = 0;
if (0 < iVar13) {
do {
while( true ) {
pfVar3 = (float *)(*(int *)(this + 0x30) + iVar12 * 0xc);
fVar15 = *pfVar3;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckPut(param_1,4);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20)))
= fVar15;
iVar9 = *(int *)(param_1 + 0x10);
}
else {
iVar9 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar9 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_21 = (undefined1)((uint)fVar15 >> 0x18);
local_20 = uStack_21;
uStack_22 = (undefined1)((uint)fVar15 >> 0x10);
local_1f = uStack_22;
uStack_23 = (undefined1)((uint)fVar15 >> 8);
local_1e = uStack_23;
local_24 = SUB41(fVar15,0);
local_1d = local_24;
_V_memcpy(pvVar8,&local_20,4);
iVar9 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar9 + 4;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%f",(double)fVar15);
}
sVar10 = 0x7fff;
fVar15 = pfVar3[1] * 32767.0;
if (fVar15 <= 32767.0) {
if (fVar15 <= 0.0) {
fVar15 = 0.0;
}
sVar10 = (short)(int)fVar15;
}
if (((byte)param_1[0x15] & 1) == 0) break;
CUtlBuffer::Printf(param_1,"%d",(int)sVar10);
LAB_000dbd39:
iVar12 = iVar12 + 1;
if (iVar12 == iVar13) goto LAB_000dc0d5;
}
cVar4 = CUtlBuffer::CheckPut(param_1,2);
if (cVar4 == '\0') goto LAB_000dbd39;
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar10;
iVar9 = *(int *)(param_1 + 0x10);
}
else {
iVar9 = *(int *)(param_1 + 0x10);
pvVar8 = (void *)((iVar9 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar8 != (void *)0x0) {
uStack_4d = (undefined1)((ushort)sVar10 >> 8);
local_20 = uStack_4d;
local_4e = (undefined1)sVar10;
local_1f = local_4e;
_V_memcpy(pvVar8,&local_20,2);
iVar9 = *(int *)(param_1 + 0x10);
}
}
iVar12 = iVar12 + 1;
*(int *)(param_1 + 0x10) = iVar9 + 2;
CUtlBuffer::AddNullTermination(param_1);
} while (iVar12 != iVar13);
}
LAB_000dc0d5:
CVar14 = this[0x4a];
if (((((byte)param_1[0x15] & 1) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
(*(char *)(*(int *)param_1 + ((*(int *)(param_1 + 0x10) + -1) - *(int *)(param_1 + 0x20))) ==
'\n')) {
iVar13 = 0;
if (((byte)param_1[0x15] & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
while (cVar4 = CUtlBuffer::CheckPut(param_1,1), cVar4 != '\0') {
*(undefined1 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
iVar13 = iVar13 + -1;
if (iVar13 < 0) goto LAB_000dc140;
}
}
}
}
LAB_000dc140:
cVar4 = CUtlBuffer::CheckPut(param_1,1);
if (cVar4 != '\0') {
*(byte *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(byte)CVar14 & 1;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
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.