L L4D2node

CSentence::CacheSaveToBuffer

0x000dba50 · 5522 bytes · __thiscall

_ZN9CSentence17CacheSaveToBufferER10CUtlBufferi

Decompiled

undefined (3 params)

/* CSentence::CacheSaveToBuffer(CUtlBuffer&, int) */

void __thiscall CSentence::CacheSaveToBuffer(CSentence *this,CUtlBuffer *param_1,int param_2)

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

SourceMod gamedata

paste 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)