L L4D2node

CDmxAttribute::UnserializeElement

0x00be1630 · 3076 bytes · __thiscall

_ZN13CDmxAttribute18UnserializeElementE17DmAttributeType_tR10CUtlBuffer

Decompiled

undefined (3 params)

/* CDmxAttribute::UnserializeElement(DmAttributeType_t, CUtlBuffer&) */

undefined4 __thiscall
CDmxAttribute::UnserializeElement(CDmxAttribute *this,int param_2,CUtlBuffer *param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  CUtlString *this_00;
  CUtlBinaryBlock *this_01;
  float *pfVar3;
  CUtlVector<VMatrix,CUtlMemory<VMatrix,int>> *this_02;
  CUtlVector<Vector4D,CUtlMemory<Vector4D,int>> *this_03;
  CUtlVector<QAngle,CUtlMemory<QAngle,int>> *this_04;
  CUtlVector<Vector2D,CUtlMemory<Vector2D,int>> *this_05;
  CUtlVector<CUtlString,CUtlMemory<CUtlString,int>> *this_06;
  CUtlVector<DmeTime_t,CUtlMemory<DmeTime_t,int>> *this_07;
  CUtlVector<CUtlBinaryBlock,CUtlMemory<CUtlBinaryBlock,int>> *this_08;
  CUtlVector<float,CUtlMemory<float,int>> *this_09;
  CUtlVector<bool,CUtlMemory<bool,int>> *this_10;
  CUtlVector<Color,CUtlMemory<Color,int>> *this_11;
  CUtlVector<int,CUtlMemory<int,int>> *this_12;
  CUtlVector<Quaternion,CUtlMemory<Quaternion,int>> *this_13;
  int iVar4;
  VMatrix *pVVar5;
  int in_GS_OFFSET;
  bool bVar6;
  float local_64;
  float local_60;
  float local_5c;
  float local_58;
  float local_54;
  float local_50;
  float local_4c;
  float local_48;
  float local_44;
  float local_40;
  float local_3c;
  float local_38;
  float local_34;
  float local_30;
  float local_2c;
  float local_28;
  undefined4 local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (0xd < param_2 - 0xfU) {
switchD_00be1666_default:
    uVar2 = 0;
    goto LAB_00be1672;
  }
  bVar6 = *(int *)this != param_2;
  if (bVar6) {
    AllocateDataMemory(this,param_2);
  }
  switch(param_2) {
  case 0x10:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(int *)&local_64);
    if ((char)uVar2 == '\0') break;
    if (*(int *)this == 0x10) {
      this_12 = *(CUtlVector<int,CUtlMemory<int,int>> **)(this + 8);
    }
    else {
      AllocateDataMemory(this,0x10);
      puVar1 = *(undefined4 **)(this + 8);
      this_12 = (CUtlVector<int,CUtlMemory<int,int>> *)0x0;
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = 0;
        puVar1[1] = 0;
        puVar1[2] = 0;
        puVar1[3] = 0;
        puVar1[4] = 0;
        this_12 = *(CUtlVector<int,CUtlMemory<int,int>> **)(this + 8);
      }
    }
    iVar4 = *(int *)(this_12 + 0xc);
    CUtlVector<int,CUtlMemory<int,int>>::GrowVector(this_12,1);
    CUtlVector<int,CUtlMemory<int,int>>::ShiftElementsRight(this_12,iVar4,1);
    pfVar3 = (float *)(*(int *)this_12 + iVar4 * 4);
    goto joined_r0x00be1d30;
  case 0x11:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x11) {
        this_09 = *(CUtlVector<float,CUtlMemory<float,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x11);
        puVar1 = *(undefined4 **)(this + 8);
        this_09 = (CUtlVector<float,CUtlMemory<float,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_09 = *(CUtlVector<float,CUtlMemory<float,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_09 + 0xc);
      CUtlVector<float,CUtlMemory<float,int>>::GrowVector(this_09,1);
      CUtlVector<float,CUtlMemory<float,int>>::ShiftElementsRight(this_09,iVar4,1);
      pfVar3 = (float *)(*(int *)this_09 + iVar4 * 4);
      if (pfVar3 != (float *)0x0) {
        *pfVar3 = local_64;
      }
    }
    break;
  case 0x12:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(bool *)&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x12) {
        this_10 = *(CUtlVector<bool,CUtlMemory<bool,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x12);
        puVar1 = *(undefined4 **)(this + 8);
        this_10 = (CUtlVector<bool,CUtlMemory<bool,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_10 = *(CUtlVector<bool,CUtlMemory<bool,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_10 + 0xc);
      CUtlVector<bool,CUtlMemory<bool,int>>::GrowVector(this_10,1);
      CUtlVector<bool,CUtlMemory<bool,int>>::ShiftElementsRight(this_10,iVar4,1);
      pVVar5 = (VMatrix *)(iVar4 + *(int *)this_10);
      if (pVVar5 != (VMatrix *)0x0) {
        *pVVar5 = local_64._0_1_;
      }
    }
    break;
  case 0x13:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    CUtlString::CUtlString((CUtlString *)&local_64);
                    /* try { // try from 00be1bcd to 00be1c69 has its CatchHandler @ 00be228e */
    uVar2 = ::Unserialize(param_3,(CUtlString *)&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x13) {
        this_06 = *(CUtlVector<CUtlString,CUtlMemory<CUtlString,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x13);
        puVar1 = *(undefined4 **)(this + 8);
        this_06 = (CUtlVector<CUtlString,CUtlMemory<CUtlString,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_06 = *(CUtlVector<CUtlString,CUtlMemory<CUtlString,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_06 + 0xc);
      CUtlVector<CUtlString,CUtlMemory<CUtlString,int>>::GrowVector(this_06,1);
      CUtlVector<CUtlString,CUtlMemory<CUtlString,int>>::ShiftElementsRight(this_06,iVar4,1);
      this_00 = (CUtlString *)(iVar4 * 0x10 + *(int *)this_06);
      if (this_00 != (CUtlString *)0x0) {
        CUtlString::CUtlString(this_00,(CUtlString *)&local_64);
      }
    }
    goto LAB_00be1e2e;
  case 0x14:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    CUtlBinaryBlock::CUtlBinaryBlock((CUtlBinaryBlock *)&local_64,0,0);
                    /* try { // try from 00be1d95 to 00be1e2d has its CatchHandler @ 00be227c */
    uVar2 = ::Unserialize(param_3,(CUtlBinaryBlock *)&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x14) {
        this_08 = *(CUtlVector<CUtlBinaryBlock,CUtlMemory<CUtlBinaryBlock,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x14);
        puVar1 = *(undefined4 **)(this + 8);
        this_08 = (CUtlVector<CUtlBinaryBlock,CUtlMemory<CUtlBinaryBlock,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_08 = *(CUtlVector<CUtlBinaryBlock,CUtlMemory<CUtlBinaryBlock,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_08 + 0xc);
      CUtlVector<CUtlBinaryBlock,CUtlMemory<CUtlBinaryBlock,int>>::GrowVector(this_08,1);
      CUtlVector<CUtlBinaryBlock,CUtlMemory<CUtlBinaryBlock,int>>::ShiftElementsRight
                (this_08,iVar4,1);
      this_01 = (CUtlBinaryBlock *)(iVar4 * 0x10 + *(int *)this_08);
      if (this_01 != (CUtlBinaryBlock *)0x0) {
        CUtlBinaryBlock::CUtlBinaryBlock(this_01,(CUtlBinaryBlock *)&local_64);
      }
    }
LAB_00be1e2e:
    CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)&local_64);
    break;
  case 0x15:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    local_64 = -0.0;
    uVar2 = ::Unserialize(param_3,(DmeTime_t *)&local_64);
    if ((char)uVar2 == '\0') break;
    if (*(int *)this == 0x15) {
      this_07 = *(CUtlVector<DmeTime_t,CUtlMemory<DmeTime_t,int>> **)(this + 8);
    }
    else {
      AllocateDataMemory(this,0x15);
      puVar1 = *(undefined4 **)(this + 8);
      this_07 = (CUtlVector<DmeTime_t,CUtlMemory<DmeTime_t,int>> *)0x0;
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = 0;
        puVar1[1] = 0;
        puVar1[2] = 0;
        puVar1[3] = 0;
        puVar1[4] = 0;
        this_07 = *(CUtlVector<DmeTime_t,CUtlMemory<DmeTime_t,int>> **)(this + 8);
      }
    }
    iVar4 = *(int *)(this_07 + 0xc);
    CUtlVector<DmeTime_t,CUtlMemory<DmeTime_t,int>>::GrowVector(this_07,1);
    CUtlVector<DmeTime_t,CUtlMemory<DmeTime_t,int>>::ShiftElementsRight(this_07,iVar4,1);
    pfVar3 = (float *)(*(int *)this_07 + iVar4 * 4);
joined_r0x00be1d30:
    if (pfVar3 != (float *)0x0) {
      *pfVar3 = local_64;
    }
    break;
  case 0x16:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    local_24 = 0;
    uVar2 = ::Unserialize(param_3,(Color *)&local_24);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x16) {
        this_11 = *(CUtlVector<Color,CUtlMemory<Color,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x16);
        puVar1 = *(undefined4 **)(this + 8);
        this_11 = (CUtlVector<Color,CUtlMemory<Color,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_11 = *(CUtlVector<Color,CUtlMemory<Color,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_11 + 0xc);
      CUtlVector<Color,CUtlMemory<Color,int>>::GrowVector(this_11,1);
      CUtlVector<Color,CUtlMemory<Color,int>>::ShiftElementsRight(this_11,iVar4,1);
      puVar1 = (undefined4 *)(*(int *)this_11 + iVar4 * 4);
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = local_24;
      }
    }
    break;
  case 0x17:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(Vector2D *)&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x17) {
        this_05 = *(CUtlVector<Vector2D,CUtlMemory<Vector2D,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x17);
        puVar1 = *(undefined4 **)(this + 8);
        this_05 = (CUtlVector<Vector2D,CUtlMemory<Vector2D,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_05 = *(CUtlVector<Vector2D,CUtlMemory<Vector2D,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_05 + 0xc);
      CUtlVector<Vector2D,CUtlMemory<Vector2D,int>>::GrowVector(this_05,1);
      CUtlVector<Vector2D,CUtlMemory<Vector2D,int>>::ShiftElementsRight(this_05,iVar4,1);
      pfVar3 = (float *)(*(int *)this_05 + iVar4 * 8);
      if (pfVar3 != (float *)0x0) {
        *pfVar3 = local_64;
        pfVar3[1] = local_60;
      }
    }
    break;
  case 0x18:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(Vector *)&local_64);
    if ((char)uVar2 == '\0') break;
    if (*(int *)this == 0x18) {
      this_04 = *(CUtlVector<QAngle,CUtlMemory<QAngle,int>> **)(this + 8);
    }
    else {
      AllocateDataMemory(this,0x18);
      puVar1 = *(undefined4 **)(this + 8);
      this_04 = (CUtlVector<QAngle,CUtlMemory<QAngle,int>> *)0x0;
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = 0;
        puVar1[1] = 0;
        puVar1[2] = 0;
        puVar1[3] = 0;
        puVar1[4] = 0;
        this_04 = *(CUtlVector<QAngle,CUtlMemory<QAngle,int>> **)(this + 8);
      }
    }
    iVar4 = *(int *)(this_04 + 0xc);
    CUtlVector<Vector,CUtlMemory<Vector,int>>::GrowVector
              ((CUtlVector<Vector,CUtlMemory<Vector,int>> *)this_04,1);
    CUtlVector<Vector,CUtlMemory<Vector,int>>::ShiftElementsRight
              ((CUtlVector<Vector,CUtlMemory<Vector,int>> *)this_04,iVar4,1);
    goto LAB_00be1a82;
  case 0x19:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(Vector4D *)&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x19) {
        this_03 = *(CUtlVector<Vector4D,CUtlMemory<Vector4D,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x19);
        puVar1 = *(undefined4 **)(this + 8);
        this_03 = (CUtlVector<Vector4D,CUtlMemory<Vector4D,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_03 = *(CUtlVector<Vector4D,CUtlMemory<Vector4D,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_03 + 0xc);
      CUtlVector<Vector4D,CUtlMemory<Vector4D,int>>::GrowVector(this_03,1);
      CUtlVector<Vector4D,CUtlMemory<Vector4D,int>>::ShiftElementsRight(this_03,iVar4,1);
      pfVar3 = (float *)(iVar4 * 0x10 + *(int *)this_03);
      if (pfVar3 != (float *)0x0) {
        *pfVar3 = local_64;
        pfVar3[1] = local_60;
        pfVar3[2] = local_5c;
        pfVar3[3] = local_58;
      }
    }
    break;
  case 0x1a:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(QAngle *)&local_64);
    if ((char)uVar2 == '\0') break;
    if (*(int *)this == 0x1a) {
      this_04 = *(CUtlVector<QAngle,CUtlMemory<QAngle,int>> **)(this + 8);
    }
    else {
      AllocateDataMemory(this,0x1a);
      puVar1 = *(undefined4 **)(this + 8);
      this_04 = (CUtlVector<QAngle,CUtlMemory<QAngle,int>> *)0x0;
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = 0;
        puVar1[1] = 0;
        puVar1[2] = 0;
        puVar1[3] = 0;
        puVar1[4] = 0;
        this_04 = *(CUtlVector<QAngle,CUtlMemory<QAngle,int>> **)(this + 8);
      }
    }
    iVar4 = *(int *)(this_04 + 0xc);
    CUtlVector<QAngle,CUtlMemory<QAngle,int>>::GrowVector(this_04,1);
    CUtlVector<QAngle,CUtlMemory<QAngle,int>>::ShiftElementsRight(this_04,iVar4,1);
LAB_00be1a82:
    pfVar3 = (float *)(*(int *)this_04 + iVar4 * 0xc);
    if (pfVar3 != (float *)0x0) {
      *pfVar3 = local_64;
      pfVar3[1] = local_60;
      pfVar3[2] = local_5c;
    }
    break;
  case 0x1b:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(Quaternion *)&local_64);
    if ((char)uVar2 != '\0') {
      if (*(int *)this == 0x1b) {
        this_13 = *(CUtlVector<Quaternion,CUtlMemory<Quaternion,int>> **)(this + 8);
      }
      else {
        AllocateDataMemory(this,0x1b);
        puVar1 = *(undefined4 **)(this + 8);
        this_13 = (CUtlVector<Quaternion,CUtlMemory<Quaternion,int>> *)0x0;
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
          puVar1[1] = 0;
          puVar1[2] = 0;
          puVar1[3] = 0;
          puVar1[4] = 0;
          this_13 = *(CUtlVector<Quaternion,CUtlMemory<Quaternion,int>> **)(this + 8);
        }
      }
      iVar4 = *(int *)(this_13 + 0xc);
      CUtlVector<Quaternion,CUtlMemory<Quaternion,int>>::GrowVector(this_13,1);
      CUtlVector<Quaternion,CUtlMemory<Quaternion,int>>::ShiftElementsRight(this_13,iVar4,1);
      pfVar3 = (float *)(iVar4 * 0x10 + *(int *)this_13);
      if (pfVar3 != (float *)0x0) {
        *pfVar3 = local_64;
        pfVar3[1] = local_60;
        pfVar3[2] = local_5c;
        pfVar3[3] = local_58;
      }
    }
    break;
  case 0x1c:
    if ((bVar6) && (puVar1 = *(undefined4 **)(this + 8), puVar1 != (undefined4 *)0x0)) {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
      puVar1[3] = 0;
      puVar1[4] = 0;
    }
    uVar2 = ::Unserialize(param_3,(VMatrix *)&local_64);
    if ((char)uVar2 == '\0') break;
    if (*(int *)this == 0x1c) {
LAB_00be172b:
      this_02 = *(CUtlVector<VMatrix,CUtlMemory<VMatrix,int>> **)(this + 8);
    }
    else {
      AllocateDataMemory(this,0x1c);
      puVar1 = *(undefined4 **)(this + 8);
      this_02 = (CUtlVector<VMatrix,CUtlMemory<VMatrix,int>> *)0x0;
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = 0;
        puVar1[1] = 0;
        puVar1[2] = 0;
        puVar1[3] = 0;
        puVar1[4] = 0;
        goto LAB_00be172b;
      }
    }
    iVar4 = *(int *)(this_02 + 0xc);
    CUtlVector<VMatrix,CUtlMemory<VMatrix,int>>::GrowVector(this_02,1);
    CUtlVector<VMatrix,CUtlMemory<VMatrix,int>>::ShiftElementsRight(this_02,iVar4,1);
    pfVar3 = (float *)(iVar4 * 0x40 + *(int *)this_02);
    if (pfVar3 != (float *)0x0) {
      *pfVar3 = local_64;
      pfVar3[1] = local_60;
      pfVar3[2] = local_5c;
      pfVar3[3] = local_58;
      pfVar3[4] = local_54;
      pfVar3[5] = local_50;
      pfVar3[6] = local_4c;
      pfVar3[7] = local_48;
      pfVar3[8] = local_44;
      pfVar3[9] = local_40;
      pfVar3[10] = local_3c;
      pfVar3[0xb] = local_38;
      pfVar3[0xc] = local_34;
      pfVar3[0xd] = local_30;
      pfVar3[0xe] = local_2c;
      pfVar3[0xf] = local_28;
    }
    break;
  default:
    goto switchD_00be1666_default;
  }
LAB_00be1672:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

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)