CCommentarySystem::LoadCommentaryFile
0x0064dae0 · 4230 bytes · __thiscall
_ZN17CCommentarySystem18LoadCommentaryFileEv
Decompiled
undefined (1 param)
/* WARNING: Type propagation algorithm not settling */
/* CCommentarySystem::LoadCommentaryFile() */
void __thiscall CCommentarySystem::LoadCommentaryFile(CCommentarySystem *this)
{
code *pcVar1;
uint *puVar2;
CCommentarySystem *pCVar3;
char cVar4;
KeyValues *this_00;
IBaseFileSystem *pIVar5;
int iVar6;
undefined4 uVar7;
int iVar8;
int iVar9;
undefined4 uVar10;
int *piVar11;
char *pcVar12;
undefined4 *puVar13;
void *pvVar14;
undefined *puVar15;
undefined *puVar16;
int iVar17;
char *pcVar18;
int *piVar19;
int iVar20;
int in_GS_OFFSET;
undefined4 uStackY_cab0;
uint uVar21;
char acStack_ca90 [4];
code *local_ca8c;
int local_ca88;
int local_ca84;
KeyValues *local_ca80;
int local_ca7c;
int local_ca78;
int local_ca74;
char *local_ca70;
undefined *local_ca6c;
int local_ca68;
char *local_ca64;
CCommentarySystem *local_ca60;
undefined4 local_ca5c;
undefined1 local_ca58 [16];
int local_ca48;
int local_ca20 [2048];
int local_aa20 [4096];
char local_6a20 [512];
char local_6820 [1024];
char local_6420 [1024];
char local_6020 [1024];
char local_5c20 [1024];
char local_5820 [1024];
char local_5420 [1022];
char acStack_5022 [20482];
int local_20;
piVar19 = (int *)&stack0xffff3554;
local_ca60 = this;
local_20 = *(int *)(in_GS_OFFSET + 0x14);
uVar21 = 0x200;
uStackY_cab0 = 0x64db34;
V_snprintf(local_6a20,0x200,"maps/%s_commentary.txt");
uStackY_cab0 = 0x64db40;
this_00 = KeyValues::operator_new((KeyValues *)0x2c,uVar21);
/* try { // try from 0064db63 to 0064db67 has its CatchHandler @ 0064e9c3 */
uStackY_cab0 = 0x64db68;
local_ca80 = this_00;
KeyValues::KeyValues(this_00,"Commentary",(IKeyValuesSystem *)0x0,false);
pIVar5 = (IBaseFileSystem *)0x0;
if (filesystem != 0) {
pIVar5 = (IBaseFileSystem *)(filesystem + 4);
}
uStackY_cab0 = 0x64db90;
cVar4 = KeyValues::LoadFromFile(this_00,pIVar5,local_6a20,"GAME");
if (cVar4 == '\0') {
uStackY_cab0 = 0x64e9a1;
Msg();
}
else {
uStackY_cab0 = 0x64dba8;
Msg();
uStackY_cab0 = 0x64dbc5;
iVar6 = (**(code **)(*(int *)(filesystem + 4) + 0x1c))();
iVar6 = -((iVar6 * 4 + 0xfU & 0xfffffff0) + 0x10);
piVar19 = (int *)(&stack0xffff3554 + iVar6);
*(undefined4 *)(&stack0xffff3560 + iVar6) = 0;
local_ca88 = (int)acStack_ca90 + iVar6;
*(char **)(&stack0xffff3558 + iVar6) = acStack_5022 + 2;
*(undefined1 **)(&stack0xffff3554 + iVar6) = local_ca58;
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x5000;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dc0d;
CUtlBuffer::CUtlBuffer
(*(CUtlBuffer **)(&stack0xffff3554 + iVar6),*(void **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6),*(int *)(&stack0xffff3560 + iVar6));
*(KeyValues **)(&stack0xffff3554 + iVar6) = local_ca80;
/* try { // try from 0064dc16 to 0064e80d has its CatchHandler @ 0064e98e */
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dc1b;
local_ca68 = KeyValues::GetFirstSubKey(*(KeyValues **)(&stack0xffff3554 + iVar6));
if (local_ca68 == 0) {
local_ca7c = 0;
}
else {
local_ca84 = 0;
local_ca7c = 0;
do {
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dc4b;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 9;
*(char **)(&stack0xffff3558 + iVar6) = "trackinfo";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dc65;
iVar8 = V_strncmp(*(char **)(&stack0xffff3554 + iVar6),*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
iVar9 = local_ca68;
if (iVar8 != 0) {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(char **)(&stack0xffff3558 + iVar6) = "classname";
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dc8b;
iVar9 = KeyValues::FindKey(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
(bool)(&stack0xffff355c)[iVar6]);
if (iVar9 != 0) {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dca7;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
}
iVar9 = local_ca68;
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dcb7;
uVar10 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "modify_entity";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar10;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dcc7;
iVar8 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(char **)(&stack0xffff3558 + iVar6) = "mapupdate";
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dce4;
iVar9 = KeyValues::FindKey(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
(bool)(&stack0xffff355c)[iVar6]);
if (g_bInCommentaryMode == '\0') {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x10;
*(char **)(&stack0xffff3558 + iVar6) = "info_remarkable";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
/* try { // try from 0064e9f3 to 0064ebd0 has its CatchHandler @ 0064e98e */
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e9f8;
iVar20 = V_strncmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
if (iVar20 != 0) {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x13;
*(char **)(&stack0xffff3558 + iVar6) = "info_item_position";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64ea18;
iVar20 = V_strncmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
if (((iVar20 != 0) && (iVar9 == 0)) && (iVar8 != 0)) goto LAB_0064e6b8;
}
}
if (iVar8 == 0) {
if (*(int *)(local_ca60 + 0x2c) == 0) {
*(undefined4 *)(&stack0xffff3554 + iVar6) = 0x2c;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e80e;
pvVar14 = KeyValues::operator_new
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(uint *)(&stack0xffff3558 + iVar6));
*(undefined4 *)(&stack0xffff3560 + iVar6) = 0;
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(char **)(&stack0xffff3558 + iVar6) = "Entities";
*(void **)(&stack0xffff3554 + iVar6) = pvVar14;
/* try { // try from 0064e82b to 0064e82f has its CatchHandler @ 0064e83e */
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e830;
KeyValues::KeyValues
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(IKeyValuesSystem **)(&stack0xffff355c + iVar6),
(bool)(&stack0xffff3560)[iVar6]);
*(void **)(local_ca60 + 0x2c) = pvVar14;
}
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd16;
uVar10 = KeyValues::MakeCopy(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
*(undefined4 *)(&stack0xffff3554 + iVar6) = *(undefined4 *)(local_ca60 + 0x2c);
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd2b;
KeyValues::AddSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(KeyValues **)(&stack0xffff3558 + iVar6));
}
*(undefined4 *)(&stack0xffff355c + iVar6) = 1;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0xffffffff;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd43;
piVar11 = (int *)CreateEntityByName(*(char **)(&stack0xffff3554 + iVar6),
*(int *)(&stack0xffff3558 + iVar6),
(bool)(&stack0xffff355c)[iVar6]);
if (piVar11 == (int *)0x0) {
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) =
"Commentary: Failed to spawn commentary entity, type: \'%s\'\n";
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e6b8;
Warning();
}
else {
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd5b;
local_ca6c = (undefined *)
KeyValues::GetFirstSubKey(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (local_ca6c != (undefined *)0x0) {
*(undefined **)(&stack0xffff3554 + iVar6) = local_ca6c;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd77;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "connections";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd87;
iVar9 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
puVar15 = local_ca6c;
if (iVar9 == 0) {
*(undefined **)(&stack0xffff3554 + iVar6) = local_ca6c;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dd9d;
local_ca70 = (char *)KeyValues::GetFirstSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (local_ca70 != (char *)0x0) {
*(char **)(&stack0xffff3554 + iVar6) = local_ca70;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64ddb9;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "connections";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64ddc9;
iVar9 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
pcVar18 = local_ca70;
if (iVar9 == 0) {
*(char **)(&stack0xffff3554 + iVar6) = local_ca70;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dddf;
local_ca74 = KeyValues::GetFirstSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (local_ca74 != 0) {
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64ddfb;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "connections";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de0b;
iVar8 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
iVar9 = local_ca74;
if (iVar8 == 0) {
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de21;
local_ca78 = KeyValues::GetFirstSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (local_ca78 != 0) {
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de3d;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "connections";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de4d;
iVar8 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
iVar9 = local_ca78;
if (iVar8 == 0) {
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de63;
local_ca64 = (char *)KeyValues::GetFirstSubKey
(*(KeyValues **)
(&stack0xffff3554 + iVar6));
while (local_ca64 != (char *)0x0) {
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de7f;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "connections";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64de8f;
iVar9 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
pcVar18 = local_ca64;
if (iVar9 == 0) {
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dea5;
iVar9 = KeyValues::GetFirstSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (iVar9 != 0) {
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dee0;
uVar7 = KeyValues::GetName(*(KeyValues **)
(&stack0xffff3554 + iVar6));
*(char **)(&stack0xffff3558 + iVar6) = "connections";
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64def0;
iVar8 = _V_strcmp(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6));
pCVar3 = local_ca60;
if (iVar8 == 0) {
*(int *)(&stack0xffff355c + iVar6) = iVar9;
*(int **)(&stack0xffff3558 + iVar6) = piVar11;
*(CCommentarySystem **)(&stack0xffff3554 + iVar6) = pCVar3;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dec6;
ParseEntKVBlock(*(CCommentarySystem **)
(&stack0xffff3554 + iVar6),
*(CBaseEntity **)(&stack0xffff3558 + iVar6),
*(KeyValues **)(&stack0xffff355c + iVar6));
}
else {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64df0c;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0x5e;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64df26;
iVar8 = V_strnchr(*(char **)(&stack0xffff3554 + iVar6),
(&stack0xffff3558)[iVar6],
*(int *)(&stack0xffff355c + iVar6));
if (iVar8 == 0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
local_ca8c = pcVar1;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e0eb;
uVar10 = KeyValues::GetName(*(KeyValues **)
(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
pcVar1 = local_ca8c;
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e0fe;
(*pcVar1)();
}
else {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) = local_5420;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64df48;
V_strncpy(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_5420;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64df56;
iVar8 = _V_strlen(*(char **)(&stack0xffff3554 + iVar6));
if (0 < iVar8) {
pcVar18 = local_5420;
pcVar12 = pcVar18 + iVar8;
do {
while (*pcVar18 != '^') {
pcVar18 = pcVar18 + 1;
if (pcVar18 == pcVar12) goto LAB_0064df7e;
}
*pcVar18 = '\"';
pcVar18 = pcVar18 + 1;
} while (pcVar18 != pcVar12);
}
LAB_0064df7e:
pcVar1 = *(code **)(*piVar11 + 0x84);
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64df8e;
uVar7 = KeyValues::GetName(*(KeyValues **)
(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff355c + iVar6) = local_5420;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dfa1;
(*pcVar1)();
}
}
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dece;
iVar9 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
LAB_0064dfcf:
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dfdd;
local_ca64 = (char *)KeyValues::GetNextKey
(*(KeyValues **)
(&stack0xffff3554 + iVar6));
}
else {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(char **)(&stack0xffff3554 + iVar6) = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e05e;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0x5e;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e078;
iVar9 = V_strnchr(*(char **)(&stack0xffff3554 + iVar6),
(&stack0xffff3558)[iVar6],
*(int *)(&stack0xffff355c + iVar6));
if (iVar9 != 0) {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) = local_5820;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e09a;
V_strncpy(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_5820;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e0a8;
iVar9 = _V_strlen(*(char **)(&stack0xffff3554 + iVar6));
if (0 < iVar9) {
pcVar18 = local_5820;
pcVar12 = pcVar18 + iVar9;
do {
if (*pcVar18 == '^') {
*pcVar18 = '\"';
}
pcVar18 = pcVar18 + 1;
} while (pcVar18 != pcVar12);
}
pcVar1 = *(code **)(*piVar11 + 0x84);
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dfbc;
uVar7 = KeyValues::GetName(*(KeyValues **)
(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff355c + iVar6) = local_5820;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dfcf;
(*pcVar1)();
goto LAB_0064dfcf;
}
pcVar1 = *(code **)(*piVar11 + 0x84);
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e1e8;
uVar10 = KeyValues::GetName(*(KeyValues **)
(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e1f5;
(*pcVar1)();
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e203;
local_ca64 = (char *)KeyValues::GetNextKey
(*(KeyValues **)
(&stack0xffff3554 + iVar6));
}
}
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64dff9;
local_ca78 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
else {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e121;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0x5e;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e13b;
iVar9 = V_strnchr(*(char **)(&stack0xffff3554 + iVar6),
(&stack0xffff3558)[iVar6],
*(int *)(&stack0xffff355c + iVar6));
if (iVar9 == 0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e21e;
uVar10 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6))
;
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e22b;
(*pcVar1)();
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e239;
local_ca78 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
else {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) = local_5c20;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e15d;
V_strncpy(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_5c20;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e16b;
iVar9 = _V_strlen(*(char **)(&stack0xffff3554 + iVar6));
if (0 < iVar9) {
pcVar18 = local_5c20;
pcVar12 = pcVar18 + iVar9;
do {
while (*pcVar18 != '^') {
pcVar18 = pcVar18 + 1;
if (pcVar18 == pcVar12) goto LAB_0064e196;
}
*pcVar18 = '\"';
pcVar18 = pcVar18 + 1;
} while (pcVar18 != pcVar12);
}
LAB_0064e196:
pcVar1 = *(code **)(*piVar11 + 0x84);
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e1ac;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff355c + iVar6) = local_5c20;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e1bf;
(*pcVar1)();
*(int *)(&stack0xffff3554 + iVar6) = local_ca78;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e1cd;
local_ca78 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
}
}
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e015;
local_ca74 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
else {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e25c;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0x5e;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e276;
iVar9 = V_strnchr(*(char **)(&stack0xffff3554 + iVar6),
(&stack0xffff3558)[iVar6],
*(int *)(&stack0xffff355c + iVar6));
if (iVar9 == 0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e320;
uVar10 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e32d;
(*pcVar1)();
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e33b;
local_ca74 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
else {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) = local_6020;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e298;
V_strncpy(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_6020;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e2a6;
iVar9 = _V_strlen(*(char **)(&stack0xffff3554 + iVar6));
if (0 < iVar9) {
pcVar18 = local_6020;
pcVar12 = pcVar18 + iVar9;
do {
while (*pcVar18 != '^') {
pcVar18 = pcVar18 + 1;
if (pcVar18 == pcVar12) goto LAB_0064e2ce;
}
*pcVar18 = '\"';
pcVar18 = pcVar18 + 1;
} while (pcVar18 != pcVar12);
}
LAB_0064e2ce:
pcVar1 = *(code **)(*piVar11 + 0x84);
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e2e4;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff355c + iVar6) = local_6020;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e2f7;
(*pcVar1)();
*(int *)(&stack0xffff3554 + iVar6) = local_ca74;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e305;
local_ca74 = KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
}
}
}
else {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(char **)(&stack0xffff3554 + iVar6) = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e35e;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0x5e;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e378;
iVar9 = V_strnchr(*(char **)(&stack0xffff3554 + iVar6),(&stack0xffff3558)[iVar6]
,*(int *)(&stack0xffff355c + iVar6));
if (iVar9 == 0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(char **)(&stack0xffff3554 + iVar6) = local_ca70;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e41a;
uVar10 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e427;
(*pcVar1)();
}
else {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) = local_6420;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e39a;
V_strncpy(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(int *)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_6420;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e3a8;
iVar9 = _V_strlen(*(char **)(&stack0xffff3554 + iVar6));
if (0 < iVar9) {
pcVar18 = local_6420;
pcVar12 = pcVar18 + iVar9;
do {
while (*pcVar18 != '^') {
pcVar18 = pcVar18 + 1;
if (pcVar18 == pcVar12) goto LAB_0064e3d6;
}
*pcVar18 = '\"';
pcVar18 = pcVar18 + 1;
} while (pcVar18 != pcVar12);
}
LAB_0064e3d6:
pcVar1 = *(code **)(*piVar11 + 0x84);
*(char **)(&stack0xffff3554 + iVar6) = local_ca70;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e3ec;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff355c + iVar6) = local_6420;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e3ff;
(*pcVar1)();
}
}
*(char **)(&stack0xffff3554 + iVar6) = local_ca70;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e031;
local_ca70 = (char *)KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
}
else {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined **)(&stack0xffff3554 + iVar6) = puVar15;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e44a;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0x5e;
*(undefined4 *)(&stack0xffff3554 + iVar6) = uVar7;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e464;
iVar9 = V_strnchr(*(char **)(&stack0xffff3554 + iVar6),(&stack0xffff3558)[iVar6],
*(int *)(&stack0xffff355c + iVar6));
if (iVar9 == 0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(undefined **)(&stack0xffff3554 + iVar6) = local_ca6c;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e4fd;
uVar10 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar10;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e50a;
(*pcVar1)();
}
else {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0x400;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff3554 + iVar6) = local_6820;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e482;
V_strncpy(*(char **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),*(int *)(&stack0xffff355c + iVar6))
;
*(char **)(&stack0xffff3554 + iVar6) = local_6820;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e490;
iVar9 = _V_strlen(*(char **)(&stack0xffff3554 + iVar6));
if (0 < iVar9) {
pcVar18 = local_6820;
pcVar12 = pcVar18 + iVar9;
do {
if (*pcVar18 == '^') {
*pcVar18 = '\"';
}
pcVar18 = pcVar18 + 1;
} while (pcVar18 != pcVar12);
}
pcVar1 = *(code **)(*piVar11 + 0x84);
*(undefined **)(&stack0xffff3554 + iVar6) = local_ca6c;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e4c1;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(char **)(&stack0xffff355c + iVar6) = local_6820;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e4d4;
(*pcVar1)();
}
}
*(undefined **)(&stack0xffff3554 + iVar6) = local_ca6c;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e4e2;
local_ca6c = (undefined *)
KeyValues::GetNextKey(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
local_ca5c = 0xffffffff;
iVar9 = *piVar11;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
pcVar1 = *(code **)(iVar9 + 0xc);
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e51e;
puVar13 = (undefined4 *)(*pcVar1)();
pCVar3 = local_ca60;
local_ca5c = *puVar13;
*(undefined4 **)(&stack0xffff355c + iVar6) = &local_ca5c;
*(undefined4 *)(&stack0xffff3558 + iVar6) = *(undefined4 *)(pCVar3 + 0x50);
*(CCommentarySystem **)(&stack0xffff3554 + iVar6) = pCVar3 + 0x44;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e54a;
iVar8 = CUtlVector<CHandle<CBaseEntity>,CUtlMemory<CHandle<CBaseEntity>,int>>::
InsertBefore(*(CUtlVector<CHandle<CBaseEntity>,CUtlMemory<CHandle<CBaseEntity>,int>>
**)(&stack0xffff3554 + iVar6),*(int *)(&stack0xffff3558 + iVar6),
*(CHandle **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined1 **)(&stack0xffff3554 + iVar6) = local_ca58;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e56a;
CUtlBuffer::SeekPut();
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(undefined1 **)(&stack0xffff3558 + iVar6) = local_ca58;
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e58a;
KeyValues::RecursiveSaveToFile
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(CUtlBuffer **)(&stack0xffff3558 + iVar6),*(int *)(&stack0xffff355c + iVar6)
);
iVar9 = local_ca48;
do {
iVar20 = iVar9;
iVar9 = iVar20 + -1;
} while (acStack_5022[iVar20 + 1] != '}');
pcVar18 = acStack_5022 + 2;
cVar4 = acStack_5022[2];
while (cVar4 != '{') {
pcVar18 = pcVar18 + 1;
cVar4 = *pcVar18;
}
*(char **)(&stack0xffff3558 + iVar6) = pcVar18 + 2;
iVar9 = local_ca88;
pcVar12 = acStack_5022 + (iVar20 - (int)(pcVar18 + 2));
*(char **)(&stack0xffff355c + iVar6) = pcVar12;
pcVar18 = (char *)(local_ca84 + iVar9);
*(char **)(&stack0xffff3554 + iVar6) = pcVar18;
local_ca64 = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e5e6;
memcpy(*(void **)(&stack0xffff3554 + iVar6),*(void **)(&stack0xffff3558 + iVar6),
*(size_t *)(&stack0xffff355c + iVar6));
pcVar18 = local_ca64;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)(&stack0xffff3560 + iVar6) = 0;
*(pointer_____offset_0x8___ **)(&stack0xffff355c + iVar6) =
&CPointCommentaryNode::typeinfo;
local_ca84 = local_ca84 + (int)pcVar12;
*(pointer_____offset_0x8___ **)(&stack0xffff3558 + iVar6) = &CBaseEntity::typeinfo;
local_aa20[iVar8 * 2] = (int)pcVar18;
local_aa20[iVar8 * 2 + 1] = (int)pcVar12;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e620;
iVar9 = __dynamic_cast();
if (iVar9 != 0) {
pcVar18 = *(char **)(local_ca60 + 0x10) + 1;
local_ca64 = *(char **)(local_ca60 + 0x10);
*(char **)(local_ca60 + 0x10) = pcVar18;
if (pcVar18 != *(char **)(iVar9 + 0x1494)) {
if (*(char *)(iVar9 + 0x6c) == '\0') {
puVar2 = *(uint **)(iVar9 + 0x30);
if (puVar2 != (uint *)0x0) {
*puVar2 = *puVar2 | 0x101;
*(uint **)(&stack0xffff3554 + iVar6) = puVar2;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e662;
iVar8 = CBaseEdict::GetChangeAccessor
(*(CBaseEdict **)(&stack0xffff3554 + iVar6));
*(undefined2 *)(iVar8 + 2) = 0;
}
}
else {
*(byte *)(iVar9 + 0x70) = *(byte *)(iVar9 + 0x70) | 1;
}
*(char **)(iVar9 + 0x1494) = pcVar18;
}
}
*(undefined4 *)(&stack0xffff3560 + iVar6) = 0;
*(pointer_____offset_0x8___ **)(&stack0xffff355c + iVar6) = &CPointTemplate::typeinfo;
*(pointer_____offset_0x8___ **)(&stack0xffff3558 + iVar6) = &CBaseEntity::typeinfo;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e68e;
iVar8 = __dynamic_cast();
iVar9 = local_ca7c;
if (iVar8 != 0) {
local_ca7c = local_ca7c + 1;
local_ca20[iVar9] = iVar8;
}
}
}
LAB_0064e6b8:
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e6c6;
local_ca68 = KeyValues::GetNextKey(*(KeyValues **)(&stack0xffff3554 + iVar6));
} while (local_ca68 != 0);
}
if (*(int *)(local_ca60 + 0x2c) != 0) {
*(int *)(&stack0xffff3554 + iVar6) = *(int *)(local_ca60 + 0x2c);
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e6f3;
iVar9 = KeyValues::GetFirstSubKey(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (iVar9 != 0) {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(char **)(&stack0xffff3558 + iVar6) = "modify";
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e715;
local_ca68 = KeyValues::FindKey(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
(bool)(&stack0xffff355c)[iVar6]);
if (local_ca68 != 0) {
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(char **)(&stack0xffff3558 + iVar6) = "find_by_modelname";
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e73b;
iVar8 = KeyValues::FindKey(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
(bool)(&stack0xffff355c)[iVar6]);
local_ca6c = (undefined *)iVar8;
if (iVar8 != 0) {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(int *)(&stack0xffff3554 + iVar6) = iVar8;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e767;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined1 **)(&stack0xffff3554 + iVar6) = gEntList;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e77f;
piVar11 = (int *)CGlobalEntityList::FindEntityByModel
(*(CGlobalEntityList **)(&stack0xffff3554 + iVar6),
*(CBaseEntity **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
while (piVar11 != (int *)0x0) {
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e797;
local_ca64 = (char *)KeyValues::GetFirstSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (puVar15 = local_ca6c, local_ca64 != (char *)0x0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
pcVar18 = local_ca64;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(char **)(&stack0xffff3554 + iVar6) = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e7cb;
local_ca70 = (char *)KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e7df;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
pcVar18 = local_ca70;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(char **)(&stack0xffff355c + iVar6) = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e7f2;
(*pcVar1)();
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e800;
local_ca64 = (char *)KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined **)(&stack0xffff3554 + iVar6) = puVar15;
/* try { // try from 0064e879 to 0064e979 has its CatchHandler @ 0064e98e */
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e87e;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(int **)(&stack0xffff3558 + iVar6) = piVar11;
*(undefined1 **)(&stack0xffff3554 + iVar6) = gEntList;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e892;
piVar11 = (int *)CGlobalEntityList::FindEntityByModel
(*(CGlobalEntityList **)(&stack0xffff3554 + iVar6),
*(CBaseEntity **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
}
}
*(undefined4 *)(&stack0xffff355c + iVar6) = 0;
*(char **)(&stack0xffff3558 + iVar6) = "find_by_targetname";
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e8af;
puVar15 = (undefined *)
KeyValues::FindKey(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
(bool)(&stack0xffff355c)[iVar6]);
local_ca6c = puVar15;
if (puVar15 != (undefined *)0x0) {
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined **)(&stack0xffff3554 + iVar6) = puVar15;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e8db;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined1 **)(&stack0xffff3554 + iVar6) = gEntList;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e8f3;
piVar11 = (int *)CGlobalEntityList::FindEntityByTarget
(*(CGlobalEntityList **)(&stack0xffff3554 + iVar6),
*(CBaseEntity **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
while (piVar11 != (int *)0x0) {
*(int *)(&stack0xffff3554 + iVar6) = local_ca68;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e907;
local_ca64 = (char *)KeyValues::GetFirstSubKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
while (puVar15 = local_ca6c, local_ca64 != (char *)0x0) {
pcVar1 = *(code **)(*piVar11 + 0x84);
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
pcVar18 = local_ca64;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(char **)(&stack0xffff3554 + iVar6) = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e93b;
local_ca70 = (char *)KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e94f;
uVar7 = KeyValues::GetName(*(KeyValues **)(&stack0xffff3554 + iVar6));
pcVar18 = local_ca70;
*(undefined4 *)(&stack0xffff3558 + iVar6) = uVar7;
*(int **)(&stack0xffff3554 + iVar6) = piVar11;
*(char **)(&stack0xffff355c + iVar6) = pcVar18;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e962;
(*pcVar1)();
*(char **)(&stack0xffff3554 + iVar6) = local_ca64;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e970;
local_ca64 = (char *)KeyValues::GetNextKey
(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
*(undefined1 **)(&stack0xffff355c + iVar6) = &DAT_00d539c2;
*(undefined4 *)(&stack0xffff3558 + iVar6) = 0;
*(undefined **)(&stack0xffff3554 + iVar6) = puVar15;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64ead9;
uVar7 = KeyValues::GetString
(*(KeyValues **)(&stack0xffff3554 + iVar6),
*(char **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
*(undefined4 *)(&stack0xffff355c + iVar6) = uVar7;
*(int **)(&stack0xffff3558 + iVar6) = piVar11;
*(undefined1 **)(&stack0xffff3554 + iVar6) = gEntList;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64eaed;
piVar11 = (int *)CGlobalEntityList::FindEntityByTarget
(*(CGlobalEntityList **)(&stack0xffff3554 + iVar6),
*(CBaseEntity **)(&stack0xffff3558 + iVar6),
*(char **)(&stack0xffff355c + iVar6));
}
}
}
*(int *)(&stack0xffff3554 + iVar6) = iVar9;
*(undefined4 *)((int)&uStackY_cab0 + iVar6) = 0x64e97a;
iVar9 = KeyValues::GetNextKey(*(KeyValues **)(&stack0xffff3554 + iVar6));
}
}
puVar15 = g_pEntityList;
if (local_ca7c != 0) {
local_ca64 = (char *)0x0;
iVar9 = *(int *)(local_ca60 + 0x50);
piVar19 = (int *)(&stack0xffff3554 + iVar6);
if (iVar9 != 0) {
local_ca68 = iVar9 * 4;
iVar20 = 0;
iVar8 = -((local_ca68 + 0xfU & 0xfffffff0) + 0x10);
piVar19 = (int *)(&stack0xffff3554 + iVar8 + iVar6);
local_ca64 = acStack_ca90 + iVar8 + iVar6;
local_ca6c = g_pEntityList;
local_ca70 = local_ca64;
do {
uVar7 = 0;
uVar21 = *(uint *)(*(int *)(local_ca60 + 0x44) + iVar20);
if (((uVar21 != 0xffffffff) &&
(puVar16 = puVar15 + (uVar21 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc)) &&
(*(uint *)(puVar16 + 8) == uVar21 >> 0xc)) {
uVar7 = *(undefined4 *)(puVar16 + 4);
}
*(undefined4 *)(local_ca64 + iVar20) = uVar7;
iVar20 = iVar20 + 4;
} while (local_ca68 != iVar20);
}
piVar19[4] = iVar9;
piVar19[3] = (int)local_aa20;
piVar19[2] = (int)local_ca64;
piVar19[1] = local_ca7c;
*piVar19 = (int)local_ca20;
piVar19[-1] = 0x64ea97;
MapEntity_ParseAllEntites_SpawnTemplates
((CPointTemplate **)*piVar19,piVar19[1],(CBaseEntity **)piVar19[2],
(HierarchicalSpawnMapData_t *)piVar19[3],piVar19[4]);
iVar6 = iVar9 * 4;
while (iVar8 = iVar6, pCVar3 = local_ca60, iVar9 = iVar9 + -1, -1 < iVar9) {
iVar6 = iVar8 + -4;
if (*(int *)(local_ca64 + iVar9 * 4) == 0) {
iVar20 = *(int *)(local_ca60 + 0x50);
iVar17 = (iVar20 - iVar9) + -1;
if (0 < iVar17) {
iVar20 = *(int *)(local_ca60 + 0x44);
piVar19[2] = iVar17 * 4;
piVar19[1] = iVar8 + iVar20;
*piVar19 = iVar20 + iVar6;
piVar19[-1] = 0x64ebd1;
_V_memmove((void *)*piVar19,(void *)piVar19[1],piVar19[2]);
iVar20 = *(int *)(pCVar3 + 0x50);
}
*(int *)(local_ca60 + 0x50) = iVar20 + -1;
}
}
}
*piVar19 = (int)local_ca58;
piVar19[-1] = 0x64ebac;
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)*piVar19);
}
*piVar19 = (int)local_ca80;
piVar19[-1] = 0x64e9af;
KeyValues::deleteThis();
if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
/* WARNING: Subroutine does not return */
piVar19[-1] = 0x64e9e0;
__stack_chk_fail();
}
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.