CChoreoEvent::SaveToBuffer
0x00ba7bc0 · 5087 bytes · __thiscall
_ZN12CChoreoEvent12SaveToBufferER10CUtlBufferP12CChoreoSceneP17IChoreoStringPool
Decompiled
undefined (4 params)
/* CChoreoEvent::SaveToBuffer(CUtlBuffer&, CChoreoScene*, IChoreoStringPool*) */
void __thiscall
CChoreoEvent::SaveToBuffer
(CChoreoEvent *this,CUtlBuffer *param_1,CChoreoScene *param_2,IChoreoStringPool *param_3)
{
CChoreoEvent CVar1;
code *pcVar2;
char cVar3;
CChoreoEvent CVar4;
short sVar5;
undefined4 uVar6;
void *pvVar7;
byte bVar8;
uint uVar9;
uint uVar10;
uint uVar11;
CUtlString *pCVar12;
int iVar13;
float fVar14;
int local_5c;
CChoreoEvent *local_54;
undefined1 local_46;
undefined1 uStack_45;
undefined1 local_44;
undefined1 uStack_43;
undefined1 local_42;
undefined1 uStack_41;
undefined1 local_40;
undefined1 uStack_3f;
undefined1 local_3e;
undefined1 uStack_3d;
undefined1 local_3c;
undefined1 uStack_3b;
undefined1 local_3a;
undefined1 uStack_39;
undefined1 local_38;
undefined1 uStack_37;
undefined1 local_36;
undefined1 uStack_35;
undefined1 local_34;
undefined1 uStack_33;
undefined1 local_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 uStack_27;
undefined1 uStack_26;
undefined1 uStack_25;
undefined1 local_24;
undefined1 uStack_23;
undefined1 uStack_22;
undefined1 uStack_21;
undefined1 local_20;
undefined1 local_1f;
undefined1 local_1e;
undefined1 local_1d;
CVar4 = this[4];
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) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\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);
}
}
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(CChoreoEvent *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
CVar4;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 8));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 == '\0') goto LAB_00ba7c55;
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_45 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_45;
local_46 = (undefined1)sVar5;
local_1f = local_46;
_V_memcpy(pvVar7,&local_20,2);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 2;
CUtlBuffer::AddNullTermination(param_1);
fVar14 = *(float *)(this + 0x48);
if (((byte)param_1[0x15] & 1) != 0) goto LAB_00ba7c67;
LAB_00ba865d:
cVar3 = CUtlBuffer::CheckPut(param_1,4);
if (cVar3 == '\0') goto LAB_00ba7c83;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = fVar14;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_2d = (undefined1)((uint)fVar14 >> 0x18);
local_20 = uStack_2d;
uStack_2e = (undefined1)((uint)fVar14 >> 0x10);
local_1f = uStack_2e;
uStack_2f = (undefined1)((uint)fVar14 >> 8);
local_1e = uStack_2f;
local_30 = SUB41(fVar14,0);
local_1d = local_30;
_V_memcpy(pvVar7,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
fVar14 = *(float *)(this + 0x4c);
if (((byte)param_1[0x15] & 1) == 0) goto LAB_00ba86be;
LAB_00ba7c95:
CUtlBuffer::Printf(param_1,"%f",(double)fVar14);
}
else {
CUtlBuffer::Printf(param_1,"%d",(int)sVar5);
LAB_00ba7c55:
fVar14 = *(float *)(this + 0x48);
if (((byte)param_1[0x15] & 1) == 0) goto LAB_00ba865d;
LAB_00ba7c67:
CUtlBuffer::Printf(param_1,"%f",(double)fVar14);
LAB_00ba7c83:
fVar14 = *(float *)(this + 0x4c);
if (((byte)param_1[0x15] & 1) != 0) goto LAB_00ba7c95;
LAB_00ba86be:
cVar3 = CUtlBuffer::CheckPut(param_1,4);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = fVar14
;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_29 = (undefined1)((uint)fVar14 >> 0x18);
local_20 = uStack_29;
uStack_2a = (undefined1)((uint)fVar14 >> 0x10);
local_1f = uStack_2a;
uStack_2b = (undefined1)((uint)fVar14 >> 8);
local_1e = uStack_2b;
local_2c = SUB41(fVar14,0);
local_1d = local_2c;
_V_memcpy(pvVar7,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
}
}
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 0x18));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_43 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_43;
local_44 = (undefined1)sVar5;
local_1f = local_44;
_V_memcpy(pvVar7,&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)sVar5);
}
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 0x28));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_41 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_41;
local_42 = (undefined1)sVar5;
local_1f = local_42;
_V_memcpy(pvVar7,&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)sVar5);
}
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 0x38));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_3f = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_3f;
local_40 = (undefined1)sVar5;
local_1f = local_40;
_V_memcpy(pvVar7,&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)sVar5);
}
CCurveData::SaveToBuffer((CUtlBuffer *)(this + 0x5c),(IChoreoStringPool *)param_1);
CVar4 = this[0x178];
CVar1 = this[0x179];
uVar9 = (uint)((byte)CVar4 >> 5) * 2 & 2 | (byte)CVar4 >> 1 & 1 | ((byte)CVar4 & 1) << 2 |
((byte)CVar1 >> 5 & 1) << 3 | ((byte)CVar1 >> 3 & 1) << 4 | ((byte)CVar1 >> 6 & 1) << 5;
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%u",uVar9);
}
fVar14 = *(float *)(this + 0x134);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,4);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = fVar14
;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_25 = (undefined1)((uint)fVar14 >> 0x18);
local_20 = uStack_25;
uStack_26 = (undefined1)((uint)fVar14 >> 0x10);
local_1f = uStack_26;
uStack_27 = (undefined1)((uint)fVar14 >> 8);
local_1e = uStack_27;
local_28 = SUB41(fVar14,0);
local_1d = local_28;
_V_memcpy(pvVar7,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%f",(double)fVar14);
}
uVar9 = *(uint *)(this + 200);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%u",uVar9 & 0xff);
}
uVar10 = 0;
if (0 < (int)uVar9) {
do {
while( true ) {
pCVar12 = (CUtlString *)(*(int *)(this + 0xbc) + uVar10 * 0x18);
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get(pCVar12);
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_3d = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_3d;
local_3e = (undefined1)sVar5;
local_1f = local_3e;
_V_memcpy(pvVar7,&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)sVar5);
}
uVar11 = (uint)(*(float *)(pCVar12 + 0x10) * 255.0);
if (((byte)param_1[0x15] & 1) == 0) break;
CUtlBuffer::Printf(param_1,"%u",uVar11 & 0xff);
LAB_00ba7ec5:
uVar10 = uVar10 + 1;
if (uVar10 == uVar9) goto LAB_00ba7fa0;
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 == '\0') goto LAB_00ba7ec5;
uVar10 = uVar10 + 1;
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar11;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
} while (uVar10 != uVar9);
}
LAB_00ba7fa0:
uVar9 = *(uint *)(this + 0xdc);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%u",uVar9 & 0xff);
}
uVar10 = 0;
if (0 < (int)uVar9) {
do {
while( true ) {
pCVar12 = (CUtlString *)(uVar10 * 0x1c + *(int *)(this + 0xd0));
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get(pCVar12);
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_3b = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_3b;
local_3c = (undefined1)sVar5;
local_1f = local_3c;
_V_memcpy(pvVar7,&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)sVar5);
}
uVar11 = (uint)(*(float *)(pCVar12 + 0x10) * 255.0);
if (((byte)param_1[0x15] & 1) == 0) break;
CUtlBuffer::Printf(param_1,"%u",uVar11 & 0xff);
LAB_00ba8033:
uVar10 = uVar10 + 1;
if (uVar10 == uVar9) goto LAB_00ba8150;
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 == '\0') goto LAB_00ba8033;
uVar10 = uVar10 + 1;
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar11;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
} while (uVar10 != uVar9);
}
LAB_00ba8150:
local_5c = 2;
local_54 = this + 0xe4;
do {
uVar9 = *(uint *)(local_54 + 0xc);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar9;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
else {
CUtlBuffer::Printf(param_1,"%u",uVar9 & 0xff);
}
uVar10 = 0;
if (0 < (int)uVar9) {
do {
while( true ) {
pCVar12 = (CUtlString *)(uVar10 * 0x1c + *(int *)local_54);
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get(pCVar12);
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20)))
= sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_39 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_39;
local_3a = (undefined1)sVar5;
local_1f = local_3a;
_V_memcpy(pvVar7,&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)sVar5);
}
uVar11 = (uint)(*(float *)(pCVar12 + 0x10) * 4096.0);
if (((byte)param_1[0x15] & 1) == 0) break;
CUtlBuffer::Printf(param_1,"%u",uVar11 & 0xffff);
LAB_00ba81e6:
uVar10 = uVar10 + 1;
if (uVar10 == uVar9) goto LAB_00ba830f;
}
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 == '\0') goto LAB_00ba81e6;
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(short)uVar11;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_37 = (undefined1)(uVar11 >> 8);
local_20 = uStack_37;
local_38 = (undefined1)uVar11;
local_1f = local_38;
_V_memcpy(pvVar7,&local_20,2);
iVar13 = *(int *)(param_1 + 0x10);
}
}
uVar10 = uVar10 + 1;
*(int *)(param_1 + 0x10) = iVar13 + 2;
CUtlBuffer::AddNullTermination(param_1);
} while (uVar10 != uVar9);
}
LAB_00ba830f:
local_54 = local_54 + 0x14;
local_5c = local_5c + -1;
} while (local_5c != 0);
if (this[4] != (CChoreoEvent)0x6) goto LAB_00ba832a;
fVar14 = *(float *)(this + 0x50);
if (fVar14 == 0.0) {
(*(code *)**(undefined4 **)this)(this);
if (((byte)param_1[0x15] & 1) != 0) {
CUtlBuffer::Printf(param_1,"%f",0xbff0000000000000);
goto LAB_00ba832a;
}
cVar3 = CUtlBuffer::CheckPut(param_1,4);
if (cVar3 == '\0') goto LAB_00ba832a;
if (((byte)param_1[0x34] & 1) == 0) {
*(undefined4 *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
0xbf800000;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
local_20 = 0xbf;
local_1f = 0x80;
local_1e = 0;
local_1d = 0;
goto LAB_00ba8fca;
}
}
}
else {
if (((byte)param_1[0x15] & 1) != 0) {
CUtlBuffer::Printf(param_1,"%f",(double)fVar14);
goto LAB_00ba832a;
}
cVar3 = CUtlBuffer::CheckPut(param_1,4);
if (cVar3 == '\0') goto LAB_00ba832a;
if (((byte)param_1[0x34] & 1) == 0) {
*(float *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = fVar14;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_21 = (undefined1)((uint)fVar14 >> 0x18);
local_20 = uStack_21;
uStack_22 = (undefined1)((uint)fVar14 >> 0x10);
local_1f = uStack_22;
uStack_23 = (undefined1)((uint)fVar14 >> 8);
local_1e = uStack_23;
local_24 = SUB41(fVar14,0);
local_1d = local_24;
LAB_00ba8fca:
_V_memcpy(pvVar7,&local_20,4);
iVar13 = *(int *)(param_1 + 0x10);
}
}
}
*(int *)(param_1 + 0x10) = iVar13 + 4;
CUtlBuffer::AddNullTermination(param_1);
LAB_00ba832a:
CVar4 = this[0x178];
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) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\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);
}
}
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(byte *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(byte)CVar4 >> 2 & 1;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
if (((byte)this[0x178] & 4) != 0) {
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 0x94));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_35 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_35;
local_36 = (undefined1)sVar5;
local_1f = local_36;
_V_memcpy(pvVar7,&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)sVar5);
}
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 0xa4));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_33 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_33;
local_34 = (undefined1)sVar5;
local_1f = local_34;
_V_memcpy(pvVar7,&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)sVar5);
}
}
SaveFlexAnimationsToBuffer(this,param_1,param_3);
CVar4 = this[4];
if (CVar4 == (CChoreoEvent)0xc) {
uVar6 = *(undefined4 *)(this + 0x54);
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) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\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);
}
}
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(char *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
(char)uVar6;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
CVar4 = this[4];
}
if (CVar4 == (CChoreoEvent)0x5) {
CVar4 = this[5];
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) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\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);
}
}
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(CChoreoEvent *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
CVar4;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
pcVar2 = (code *)**(undefined4 **)param_3;
uVar6 = CUtlString::Get((CUtlString *)(this + 0x13c));
sVar5 = (*pcVar2)(param_3,uVar6);
if (((byte)param_1[0x15] & 1) == 0) {
cVar3 = CUtlBuffer::CheckPut(param_1,2);
if (cVar3 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
*(short *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) =
sVar5;
iVar13 = *(int *)(param_1 + 0x10);
}
else {
iVar13 = *(int *)(param_1 + 0x10);
pvVar7 = (void *)((iVar13 - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (pvVar7 != (void *)0x0) {
uStack_31 = (undefined1)((ushort)sVar5 >> 8);
local_20 = uStack_31;
local_32 = (undefined1)sVar5;
local_1f = local_32;
_V_memcpy(pvVar7,&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)sVar5);
}
bVar8 = 0;
if (this[5] != (CChoreoEvent)0x2) {
bVar8 = (byte)this[0x178] >> 7;
}
if (((byte)this[0x179] & 2) != 0) {
bVar8 = bVar8 | 2;
}
if (((byte)this[0x179] & 4) != 0) {
bVar8 = bVar8 | 4;
}
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')) {
if (((byte)param_1[0x15] & 0x10) == 0) {
iVar13 = *(int *)(param_1 + 0x18);
}
else {
iVar13 = 0;
}
while (iVar13 = iVar13 + -1, -1 < iVar13) {
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\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);
}
}
}
cVar3 = CUtlBuffer::CheckPut(param_1,1);
if (cVar3 != '\0') {
*(byte *)(*(int *)param_1 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x20))) = bVar8;
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
CUtlBuffer::AddNullTermination(param_1);
}
}
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
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.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.