L L4D2node

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 into addons/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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)