CSentence::CacheRestoreFromBuffer
0x000deb20 · 5844 bytes · __thiscall
_ZN9CSentence22CacheRestoreFromBufferER10CUtlBuffer
Decompiled
undefined (2 params)
/* CSentence::CacheRestoreFromBuffer(CUtlBuffer&) */
void __thiscall CSentence::CacheRestoreFromBuffer(CSentence *this,CUtlBuffer *param_1)
{
CPhonemeTag CVar1;
CUtlBuffer CVar2;
byte bVar3;
char cVar4;
undefined2 *puVar5;
short *psVar6;
int iVar7;
undefined4 *puVar8;
int *piVar9;
ushort uVar10;
short sVar11;
short sVar12;
float fVar13;
undefined2 uVar14;
int iVar15;
uint uVar16;
CSentence CVar17;
float local_cc;
uint local_c8;
float local_c4;
float local_c0;
byte local_af;
char local_ae;
char local_ad;
short local_ac;
short local_aa;
undefined2 local_a8;
short local_a6;
short local_a4;
short local_a2;
short local_a0;
short local_9e;
undefined2 local_9c;
undefined2 local_9a;
undefined2 local_98;
undefined2 local_96;
undefined2 local_94;
undefined2 local_92;
undefined2 local_90;
undefined2 local_8e;
undefined4 local_8c;
undefined4 local_88;
undefined4 local_84;
undefined4 local_80;
undefined4 local_7c;
int local_78;
undefined4 local_74;
undefined4 local_70;
int local_6c;
undefined4 local_68;
undefined4 local_64;
undefined1 local_60;
undefined1 local_5f;
undefined1 local_5e;
undefined1 local_5d;
undefined1 local_5c;
undefined1 local_5b;
undefined1 local_5a;
undefined1 local_59;
undefined1 local_58;
undefined1 local_57;
undefined1 local_56;
undefined1 local_55;
undefined1 local_54;
undefined1 local_53;
undefined1 local_52;
undefined1 local_51;
undefined4 local_50;
undefined1 local_4c;
undefined1 local_4b;
undefined1 local_4a;
undefined1 local_49;
undefined1 local_48;
undefined1 local_47;
undefined1 local_46;
undefined1 local_45;
undefined1 local_44;
undefined1 local_43;
undefined1 local_42;
undefined1 local_41;
undefined4 local_40;
float local_3c;
undefined1 local_38;
undefined4 local_34;
float local_30;
undefined2 local_2c;
undefined1 local_2a;
undefined4 local_28;
undefined4 local_24;
void *local_20;
Reset(this);
this[0x4b] = (CSentence)0x1;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,1);
if (cVar4 == '\0') goto LAB_000deb7c;
CVar1 = *(CPhonemeTag *)(*(int *)param_1 + (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)))
;
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
}
else {
local_34 = (float)((uint)local_34 & 0xffffff00);
CUtlBuffer::Scanf(param_1,"%c",&local_34);
CVar1 = local_34._0_1_;
}
if ((CVar1 == (CPhonemeTag)0x4) || (CVar1 == (CPhonemeTag)0x1)) {
if (CVar1 == (CPhonemeTag)0x4) {
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,1);
if (cVar4 != '\0') {
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
}
}
else {
local_34 = (float)((uint)local_34 & 0xffffff00);
CUtlBuffer::Scanf(param_1,"%c",&local_34);
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,1);
if (cVar4 != '\0') {
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
}
}
else {
local_34 = (float)((uint)local_34 & 0xffffff00);
CUtlBuffer::Scanf(param_1,"%c",&local_34);
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,1);
if (cVar4 != '\0') {
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
}
}
else {
local_34 = (float)((uint)local_34 & 0xffffff00);
CUtlBuffer::Scanf(param_1,"%c",&local_34);
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
puVar8 = (undefined4 *)
((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (puVar8 == (undefined4 *)0x0) {
puVar8 = &local_40;
}
local_34 = local_40;
local_34._1_3_ = (undefined3)((uint)local_40 >> 8);
local_34 = (float)CONCAT31(local_34._1_3_,*(undefined1 *)((int)puVar8 + 3));
local_34._2_2_ = (undefined2)((uint)local_40 >> 0x10);
local_34._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar8 + 2),*(undefined1 *)((int)puVar8 + 3));
local_34._3_1_ = (undefined1)((uint)local_40 >> 0x18);
local_34._0_3_ = CONCAT12(*(undefined1 *)((int)puVar8 + 1),(undefined2)local_34);
local_34 = (float)CONCAT13(*(undefined1 *)puVar8,(undefined3)local_34);
_V_memcpy(&local_40,&local_34,4);
iVar15 = *(int *)(param_1 + 0xc);
fVar13 = local_40;
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
goto LAB_000def39;
}
local_34 = 0.0;
local_30 = 0.0;
local_2c = 0;
local_20 = (void *)0x0;
local_28 = 0;
local_24 = 0;
local_2a = 0;
}
else {
local_40 = 0.0;
CUtlBuffer::Scanf(param_1,"%d",&local_40);
fVar13 = local_40;
LAB_000def39:
local_c8 = (uint)fVar13 & 0xffff;
local_34 = 0.0;
local_2c = 0;
local_30 = 0.0;
local_20 = (void *)0x0;
local_28 = 0;
local_24 = 0;
local_2a = 0;
if (local_c8 != 0) {
uVar16 = 0;
do {
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_c4._0_2_ = 0;
goto LAB_000defb0;
}
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
local_c4._0_2_ =
(undefined2)
*(undefined4 *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
puVar8 = (undefined4 *)
((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (puVar8 == (undefined4 *)0x0) {
puVar8 = &local_8c;
}
local_64 = local_8c;
local_64 = CONCAT31((int3)((uint)local_8c >> 8),*(undefined1 *)((int)puVar8 + 3));
local_64._2_2_ = (undefined2)((uint)local_8c >> 0x10);
local_64._0_2_ =
CONCAT11(*(undefined1 *)((int)puVar8 + 2),*(undefined1 *)((int)puVar8 + 3));
local_64._3_1_ = (undefined1)((uint)local_8c >> 0x18);
local_64._0_3_ = CONCAT12(*(undefined1 *)((int)puVar8 + 1),(undefined2)local_64);
local_64 = CONCAT13(*(undefined1 *)puVar8,(undefined3)local_64);
/* try { // try from 000df83a to 000dfc90 has its CatchHandler @ 000e028c */
_V_memcpy(&local_8c,&local_64,4);
iVar15 = *(int *)(param_1 + 0xc);
local_c4._0_2_ = (undefined2)local_8c;
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000defba;
LAB_000df0a8:
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_c0 = 0.0;
goto LAB_000defee;
}
iVar15 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
local_88 = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_88._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_60 = local_88._3_1_;
local_88._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_5f = local_88._2_1_;
local_88._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_5e = local_88._1_1_;
local_88._0_1_ = SUB41(fVar13,0);
local_5d = (undefined1)local_88;
_V_memcpy(&local_88,&local_60,4);
iVar15 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
local_c0 = local_88;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000deff8;
LAB_000df150:
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_30 = 0.0;
}
else {
iVar15 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
local_84 = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_84._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_5c = local_84._3_1_;
local_84._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_5b = local_84._2_1_;
local_84._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_5a = local_84._1_1_;
local_84._0_1_ = SUB41(fVar13,0);
local_59 = (undefined1)local_84;
_V_memcpy(&local_84,&local_5c,4);
iVar15 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
local_30 = local_84;
}
}
else {
local_8c = 0;
/* try { // try from 000def9f to 000df24e has its CatchHandler @ 000e028c */
CUtlBuffer::Scanf(param_1,"%d",&local_8c);
local_c4._0_2_ = (undefined2)local_8c;
LAB_000defb0:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000df0a8;
LAB_000defba:
local_88 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_88);
local_c0 = local_88;
LAB_000defee:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000df150;
LAB_000deff8:
local_84 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_84);
local_30 = local_84;
}
local_34 = local_c0;
local_2c = local_c4._0_2_;
AddRuntimePhoneme(this,(CPhonemeTag *)&local_34);
uVar16 = uVar16 + 1;
} while (uVar16 != local_c8);
}
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
local_c0 = *(float *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
piVar9 = (int *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1)
;
if (piVar9 == (int *)0x0) {
piVar9 = &local_78;
}
local_50 = local_78;
local_50 = CONCAT31((int3)((uint)local_78 >> 8),*(undefined1 *)((int)piVar9 + 3));
local_50._2_2_ = (undefined2)((uint)local_78 >> 0x10);
local_50._0_2_ =
CONCAT11(*(undefined1 *)((int)piVar9 + 2),*(undefined1 *)((int)piVar9 + 3));
local_50._3_1_ = (undefined1)((uint)local_78 >> 0x18);
local_50._0_3_ = CONCAT12(*(undefined1 *)((int)piVar9 + 1),(undefined2)local_50);
local_50 = CONCAT13((char)*piVar9,(undefined3)local_50);
_V_memcpy(&local_78,&local_50,4);
iVar15 = *(int *)(param_1 + 0xc);
local_c0 = (float)local_78;
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
goto LAB_000dfd28;
}
}
else {
local_78 = 0;
/* try { // try from 000dfd1a to 000dff72 has its CatchHandler @ 000e028c */
CUtlBuffer::Scanf(param_1,"%d",&local_78);
local_c0 = (float)local_78;
LAB_000dfd28:
if (0 < (int)local_c0) {
iVar15 = 0;
do {
local_38 = 0;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_40 = 0.0;
goto LAB_000dfd63;
}
iVar7 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar7 - *(int *)(param_1 + 0x20)));
local_74 = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_74._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_4c = local_74._3_1_;
local_74._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_4b = local_74._2_1_;
local_74._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_4a = local_74._1_1_;
local_74._0_1_ = SUB41(fVar13,0);
local_49 = (undefined1)local_74;
_V_memcpy(&local_74,&local_4c,4);
iVar7 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar7 + 4;
local_40 = local_74;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dfd72;
LAB_000dfe58:
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_3c = 0.0;
}
else {
iVar7 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar7 - *(int *)(param_1 + 0x20)));
local_70 = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_70._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_48 = local_70._3_1_;
local_70._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_47 = local_70._2_1_;
local_70._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_46 = local_70._1_1_;
local_70._0_1_ = SUB41(fVar13,0);
local_45 = (undefined1)local_70;
_V_memcpy(&local_70,&local_48,4);
iVar7 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar7 + 4;
local_3c = local_70;
}
}
else {
local_74 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_74);
local_40 = local_74;
LAB_000dfd63:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dfe58;
LAB_000dfd72:
local_70 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_70);
local_3c = local_70;
}
CUtlVector<CEmphasisSample,CUtlMemory<CEmphasisSample,int>>::InsertBefore
((CUtlVector<CEmphasisSample,CUtlMemory<CEmphasisSample,int>> *)(this + 0x30),
*(int *)(this + 0x3c),(CEmphasisSample *)&local_40);
iVar15 = iVar15 + 1;
} while ((float)iVar15 != local_c0);
}
}
CVar17 = (CSentence)((byte)param_1[0x15] & 1);
if (((byte)param_1[0x15] & 1) == 0) {
/* try { // try from 000dffd1 to 000dffd5 has its CatchHandler @ 000e028c */
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
iVar7 = *(int *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
piVar9 = (int *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1)
;
if (piVar9 == (int *)0x0) {
piVar9 = &local_6c;
}
local_40 = (float)local_6c;
local_40 = (float)CONCAT31((int3)((uint)local_6c >> 8),*(undefined1 *)((int)piVar9 + 3))
;
local_40._2_2_ = (undefined2)((uint)local_6c >> 0x10);
local_40._0_2_ =
CONCAT11(*(undefined1 *)((int)piVar9 + 2),*(undefined1 *)((int)piVar9 + 3));
local_40._3_1_ = (undefined1)((uint)local_6c >> 0x18);
local_40._0_3_ = CONCAT12(*(undefined1 *)((int)piVar9 + 1),(ushort)local_40);
local_40 = (float)CONCAT13((char)*piVar9,(undefined3)local_40);
/* try { // try from 000e01a7 to 000e025f has its CatchHandler @ 000e028c */
_V_memcpy(&local_6c,&local_40,4);
iVar15 = *(int *)(param_1 + 0xc);
iVar7 = local_6c;
}
CVar17 = (CSentence)(iVar7 != 0);
*(int *)(param_1 + 0xc) = iVar15 + 4;
}
}
else {
local_6c = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_6c);
CVar17 = (CSentence)(local_6c != 0);
}
goto LAB_000df516;
}
}
else if (CVar1 != (CPhonemeTag)0x5) {
LAB_000deb7c:
this[0x48] = (CSentence)0x0;
return;
}
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
uVar10 = *(ushort *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
puVar8 = (undefined4 *)
((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (puVar8 == (undefined4 *)0x0) {
puVar8 = &local_40;
}
uVar14 = local_34._2_2_;
local_34 = (float)CONCAT22(local_34._2_2_,(ushort)local_40);
local_34 = (float)CONCAT31(local_34._1_3_,*(undefined1 *)((int)puVar8 + 1));
local_34._0_2_ = CONCAT11(*(undefined1 *)puVar8,*(undefined1 *)((int)puVar8 + 1));
local_34 = (float)CONCAT22(uVar14,(undefined2)local_34);
_V_memcpy(&local_40,&local_34,2);
iVar15 = *(int *)(param_1 + 0xc);
uVar10 = (ushort)local_40;
}
*(int *)(param_1 + 0xc) = iVar15 + 2;
local_c8 = (uint)uVar10;
goto LAB_000debce;
}
local_34 = 0.0;
local_30 = 0.0;
local_2c = 0;
local_20 = (void *)0x0;
local_28 = 0;
local_24 = 0;
local_2a = 0;
if (CVar1 != (CPhonemeTag)0x5) goto LAB_000df2a5;
LAB_000df5d0:
if (((byte)param_1[0x15] & 1) == 0) {
/* try { // try from 000e0088 to 000e008c has its CatchHandler @ 000e028c */
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = *(short *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1)
;
if (psVar6 == (short *)0x0) {
psVar6 = &local_a6;
}
local_96 = local_a6;
local_96 = CONCAT11((char)((ushort)local_a6 >> 8),*(undefined1 *)((int)psVar6 + 1));
local_96 = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_a6,&local_96,2);
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = local_a6;
}
*(int *)(param_1 + 0xc) = iVar15 + 2;
goto LAB_000df604;
}
}
else {
local_a6 = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_a6);
sVar11 = local_a6;
LAB_000df604:
if (0 < sVar11) {
iVar15 = 0;
do {
local_38 = 0;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 == '\0') {
local_40 = 0.0;
goto LAB_000df656;
}
if (((byte)param_1[0x34] & 1) == 0) {
iVar7 = *(int *)(param_1 + 0xc);
sVar12 = *(short *)(*(int *)param_1 + (iVar7 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) +
*(int *)param_1);
if (psVar6 == (short *)0x0) {
psVar6 = &local_a4;
}
local_94 = local_a4;
local_94 = CONCAT11((char)((ushort)local_a4 >> 8),*(undefined1 *)((int)psVar6 + 1));
local_94 = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_a4,&local_94,2);
iVar7 = *(int *)(param_1 + 0xc);
sVar12 = local_a4;
}
*(int *)(param_1 + 0xc) = iVar7 + 2;
local_40 = (float)(int)sVar12 * 0.0050000004;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000df665;
LAB_000df730:
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 == '\0') {
local_3c = 0.0;
}
else {
if (((byte)param_1[0x34] & 1) == 0) {
iVar7 = *(int *)(param_1 + 0xc);
sVar12 = *(short *)(*(int *)param_1 + (iVar7 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) +
*(int *)param_1);
if (psVar6 == (short *)0x0) {
psVar6 = &local_a2;
}
local_92 = local_a2;
local_92 = CONCAT11((char)((ushort)local_a2 >> 8),*(undefined1 *)((int)psVar6 + 1));
local_92 = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_a2,&local_92,2);
iVar7 = *(int *)(param_1 + 0xc);
sVar12 = local_a2;
}
*(int *)(param_1 + 0xc) = iVar7 + 2;
local_3c = (float)(int)sVar12 * 3.051851e-05;
}
}
else {
local_a4 = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_a4);
local_40 = (float)(int)local_a4 * 0.0050000004;
LAB_000df656:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000df730;
LAB_000df665:
local_a2 = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_a2);
local_3c = (float)(int)local_a2 * 3.051851e-05;
}
CUtlVector<CEmphasisSample,CUtlMemory<CEmphasisSample,int>>::InsertBefore
((CUtlVector<CEmphasisSample,CUtlMemory<CEmphasisSample,int>> *)(this + 0x30),
*(int *)(this + 0x3c),(CEmphasisSample *)&local_40);
iVar15 = iVar15 + 1;
} while (iVar15 < sVar11);
}
}
CVar2 = param_1[0x15];
if (((byte)CVar2 & 1) != 0) {
local_ae = '\0';
CUtlBuffer::Scanf(param_1,"%c",&local_ae);
CVar17 = (CSentence)(local_ae != '\0');
goto LAB_000df516;
}
}
else {
local_40 = (float)((uint)local_40 & 0xffff0000);
CUtlBuffer::Scanf(param_1,"%d",&local_40);
local_c8 = (uint)local_40 & 0xffff;
LAB_000debce:
local_34 = 0.0;
local_30 = 0.0;
local_2c = 0;
local_20 = (void *)0x0;
local_28 = 0;
local_24 = 0;
local_2a = 0;
if (CVar1 == (CPhonemeTag)0x5) {
if (local_c8 != 0) {
uVar16 = 0;
do {
CVar2 = param_1[0x15];
if (((byte)CVar2 & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,1);
bVar3 = (byte)CVar2 & 1;
if (cVar4 == '\0') goto LAB_000df966;
bVar3 = *(byte *)(*(int *)param_1 + (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20))
);
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000df970;
LAB_000dfa90:
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 == '\0') {
local_c4 = 0.0;
goto LAB_000df9ae;
}
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = *(short *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) +
*(int *)param_1);
if (psVar6 == (short *)0x0) {
psVar6 = &local_ac;
}
local_9c = local_ac;
local_9c = CONCAT11((char)((ushort)local_ac >> 8),*(undefined1 *)((int)psVar6 + 1));
local_9c = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_ac,&local_9c,2);
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = local_ac;
}
*(int *)(param_1 + 0xc) = iVar15 + 2;
local_c4 = (float)(int)sVar11 * 0.0050000004;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000df9b8;
LAB_000dfaf0:
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 == '\0') {
local_cc = 0.0;
}
else {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = *(short *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) +
*(int *)param_1);
if (psVar6 == (short *)0x0) {
psVar6 = &local_aa;
}
local_9a = local_aa;
local_9a = CONCAT11((char)((ushort)local_aa >> 8),*(undefined1 *)((int)psVar6 + 1));
local_9a = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_aa,&local_9a,2);
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = local_aa;
}
*(int *)(param_1 + 0xc) = iVar15 + 2;
local_cc = (float)(int)sVar11 * 0.0050000004;
}
}
else {
local_af = 0;
CUtlBuffer::Scanf(param_1,"%u",&local_af);
bVar3 = local_af;
LAB_000df966:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dfa90;
LAB_000df970:
local_ac = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_ac);
local_c4 = (float)(int)local_ac * 0.0050000004;
LAB_000df9ae:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dfaf0;
LAB_000df9b8:
local_aa = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_aa);
local_cc = (float)(int)local_aa * 0.0050000004;
}
local_2c = ByteCodeToCode(bVar3);
local_34 = local_c4;
local_30 = local_cc;
AddRuntimePhoneme(this,(CPhonemeTag *)&local_34);
uVar16 = uVar16 + 1;
} while (uVar16 != local_c8);
}
goto LAB_000df5d0;
}
if (local_c8 != 0) {
local_c4 = 0.0;
do {
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 == '\0') {
uVar14 = 0;
goto LAB_000dec52;
}
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
uVar14 = *(undefined2 *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
puVar5 = (undefined2 *)
((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1);
if (puVar5 == (undefined2 *)0x0) {
puVar5 = &local_a8;
}
local_98 = local_a8;
local_98 = CONCAT11((char)((ushort)local_a8 >> 8),*(undefined1 *)((int)puVar5 + 1));
local_98 = CONCAT11(*(undefined1 *)puVar5,*(undefined1 *)((int)puVar5 + 1));
_V_memcpy(&local_a8,&local_98,2);
iVar15 = *(int *)(param_1 + 0xc);
uVar14 = local_a8;
}
*(int *)(param_1 + 0xc) = iVar15 + 2;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dec5c;
LAB_000ded40:
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_c0 = 0.0;
goto LAB_000dec87;
}
iVar15 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
local_80 = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_80._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_58 = local_80._3_1_;
local_80._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_57 = local_80._2_1_;
local_80._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_56 = local_80._1_1_;
local_80._0_1_ = SUB41(fVar13,0);
local_55 = (undefined1)local_80;
_V_memcpy(&local_80,&local_58,4);
iVar15 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
local_c0 = local_80;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000dec91;
LAB_000dedd0:
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_30 = 0.0;
local_2c = uVar14;
}
else {
iVar15 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
local_7c = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_7c._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_54 = local_7c._3_1_;
local_7c._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_53 = local_7c._2_1_;
local_7c._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_52 = local_7c._1_1_;
local_7c._0_1_ = SUB41(fVar13,0);
local_51 = (undefined1)local_7c;
_V_memcpy(&local_7c,&local_54,4);
iVar15 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar15 + 4;
local_30 = local_7c;
local_2c = uVar14;
}
}
else {
local_a8 = 0;
/* try { // try from 000dec46 to 000dee37 has its CatchHandler @ 000e028c */
CUtlBuffer::Scanf(param_1,"%d",&local_a8);
uVar14 = local_a8;
LAB_000dec52:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000ded40;
LAB_000dec5c:
local_80 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_80);
local_c0 = local_80;
LAB_000dec87:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000dedd0;
LAB_000dec91:
local_7c = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_7c);
local_30 = local_7c;
local_2c = uVar14;
}
local_34 = local_c0;
AddRuntimePhoneme(this,(CPhonemeTag *)&local_34);
local_c4 = (float)((int)local_c4 + 1);
} while (local_c4 != (float)local_c8);
}
if (CVar1 == (CPhonemeTag)0x5) goto LAB_000df5d0;
LAB_000df2a5:
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 != '\0') {
if (((byte)param_1[0x34] & 1) == 0) {
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = *(short *)(*(int *)param_1 + (iVar15 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) + *(int *)param_1)
;
if (psVar6 == (short *)0x0) {
psVar6 = &local_a0;
}
local_90 = local_a0;
local_90 = CONCAT11((char)((ushort)local_a0 >> 8),*(undefined1 *)((int)psVar6 + 1));
local_90 = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_a0,&local_90,2);
iVar15 = *(int *)(param_1 + 0xc);
sVar11 = local_a0;
}
*(int *)(param_1 + 0xc) = iVar15 + 2;
goto LAB_000df2d9;
}
}
else {
local_a0 = 0;
/* try { // try from 000df2cd to 000df73f has its CatchHandler @ 000e028c */
CUtlBuffer::Scanf(param_1,"%d",&local_a0);
sVar11 = local_a0;
LAB_000df2d9:
if (0 < sVar11) {
iVar15 = 0;
do {
local_38 = 0;
if (((byte)param_1[0x15] & 1) == 0) {
cVar4 = CUtlBuffer::CheckGet(param_1,4);
if (cVar4 == '\0') {
local_40 = 0.0;
goto LAB_000df31b;
}
iVar7 = *(int *)(param_1 + 0xc);
fVar13 = *(float *)(*(int *)param_1 + (iVar7 - *(int *)(param_1 + 0x20)));
local_68 = fVar13;
if (((byte)param_1[0x34] & 1) != 0) {
local_68._3_1_ = (undefined1)((uint)fVar13 >> 0x18);
local_44 = local_68._3_1_;
local_68._2_1_ = (undefined1)((uint)fVar13 >> 0x10);
local_43 = local_68._2_1_;
local_68._1_1_ = (undefined1)((uint)fVar13 >> 8);
local_42 = local_68._1_1_;
local_68._0_1_ = SUB41(fVar13,0);
local_41 = (undefined1)local_68;
_V_memcpy(&local_68,&local_44,4);
iVar7 = *(int *)(param_1 + 0xc);
}
*(int *)(param_1 + 0xc) = iVar7 + 4;
local_40 = local_68;
if (((byte)param_1[0x15] & 1) != 0) goto LAB_000df32a;
LAB_000df420:
cVar4 = CUtlBuffer::CheckGet(param_1,2);
if (cVar4 == '\0') {
local_3c = 0.0;
}
else {
if (((byte)param_1[0x34] & 1) == 0) {
iVar7 = *(int *)(param_1 + 0xc);
sVar12 = *(short *)(*(int *)param_1 + (iVar7 - *(int *)(param_1 + 0x20)));
}
else {
psVar6 = (short *)((*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)) +
*(int *)param_1);
if (psVar6 == (short *)0x0) {
psVar6 = &local_9e;
}
local_8e = local_9e;
local_8e = CONCAT11((char)((ushort)local_9e >> 8),*(undefined1 *)((int)psVar6 + 1));
local_8e = CONCAT11((char)*psVar6,*(undefined1 *)((int)psVar6 + 1));
_V_memcpy(&local_9e,&local_8e,2);
iVar7 = *(int *)(param_1 + 0xc);
sVar12 = local_9e;
}
*(int *)(param_1 + 0xc) = iVar7 + 2;
local_3c = (float)(int)sVar12 * 3.051851e-05;
}
}
else {
local_68 = 0.0;
CUtlBuffer::Scanf(param_1,"%f",&local_68);
local_40 = local_68;
LAB_000df31b:
if (((byte)param_1[0x15] & 1) == 0) goto LAB_000df420;
LAB_000df32a:
local_9e = 0;
CUtlBuffer::Scanf(param_1,"%d",&local_9e);
local_3c = (float)(int)local_9e * 3.051851e-05;
}
CUtlVector<CEmphasisSample,CUtlMemory<CEmphasisSample,int>>::InsertBefore
((CUtlVector<CEmphasisSample,CUtlMemory<CEmphasisSample,int>> *)(this + 0x30),
*(int *)(this + 0x3c),(CEmphasisSample *)&local_40);
iVar15 = iVar15 + 1;
} while (iVar15 < sVar11);
}
}
CVar2 = param_1[0x15];
if (((byte)CVar2 & 1) != 0) {
local_ad = '\0';
CUtlBuffer::Scanf(param_1,"%c",&local_ad);
CVar17 = (CSentence)(local_ad != '\0');
goto LAB_000df516;
}
}
CVar17 = (CSentence)((byte)CVar2 & 1);
cVar4 = CUtlBuffer::CheckGet(param_1,1);
if (cVar4 != '\0') {
cVar4 = *(char *)(*(int *)param_1 + (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 0x20)));
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
CVar17 = (CSentence)(cVar4 != '\0');
}
LAB_000df516:
this[0x48] = (CSentence)0x1;
this[0x4a] = CVar17;
if (local_20 == (void *)0x0) {
return;
}
operator_delete__(local_20);
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.