L L4D2node

RecvTable_ReadInfos

0x0014f4a0 · 2494 bytes · __cdecl

_Z19RecvTable_ReadInfosP7bf_readi

Decompiled

undefined (2 params)

/* RecvTable_ReadInfos(bf_read*, int) */

SendTable * RecvTable_ReadInfos(bf_read *param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  uint uVar3;
  SendTable *this;
  undefined4 uVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  SendProp SVar8;
  SendProp *pSVar9;
  int iVar10;
  SendProp *this_00;
  byte local_28;
  uint local_20;
  
  this = operator_new(0x14);
                    /* try { // try from 0014f4c0 to 0014f4c4 has its CatchHandler @ 0014ff24 */
  SendTable::SendTable(this);
  uVar4 = CBitRead::ReadAndAllocateString((CBitRead *)param_1,(bool *)0x0);
  *(undefined4 *)(this + 8) = uVar4;
  iVar10 = *(int *)(param_1 + 0x14);
  if (iVar10 < 10) {
    puVar6 = *(uint **)(param_1 + 0x18);
    local_20 = *(uint *)(param_1 + 0x10);
    if (puVar6 == *(uint **)(param_1 + 0x1c)) {
      *(undefined4 *)(param_1 + 0x14) = 1;
      *(undefined4 *)(param_1 + 0x10) = 0;
      *(uint **)(param_1 + 0x18) = puVar6 + 1;
      param_1[4] = (bf_read)0x1;
    }
    else if (*(uint **)(param_1 + 0x1c) < puVar6) {
      param_1[4] = (bf_read)0x1;
      *(undefined4 *)(param_1 + 0x10) = 0;
    }
    else {
      *(uint **)(param_1 + 0x18) = puVar6 + 1;
      uVar5 = *puVar6;
      *(uint *)(param_1 + 0x10) = uVar5;
      if (param_1[4] == (bf_read)0x0) {
        uVar7 = (&CBitBuffer::s_nMaskTable)[10 - iVar10];
        *(int *)(param_1 + 0x14) = iVar10 + 0x16;
        *(uint *)(param_1 + 0x10) = uVar5 >> ((byte)(10 - iVar10) & 0x1f);
        local_20 = (uVar7 & uVar5) << ((byte)iVar10 & 0x1f) | local_20;
        goto LAB_0014f506;
      }
    }
    *(undefined4 *)(this + 4) = 0;
  }
  else {
    *(int *)(param_1 + 0x14) = iVar10 + -10;
    local_20 = *(uint *)(param_1 + 0x10) & 0x3ff;
    if (iVar10 + -10 == 0) {
      puVar2 = *(undefined4 **)(param_1 + 0x18);
      *(undefined4 *)(param_1 + 0x14) = 0x20;
      if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
        *(undefined4 *)(param_1 + 0x14) = 1;
        *(undefined4 *)(param_1 + 0x10) = 0;
        *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
      }
      else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
        param_1[4] = (bf_read)0x1;
        *(undefined4 *)(param_1 + 0x10) = 0;
      }
      else {
        *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
        *(undefined4 *)(param_1 + 0x10) = *puVar2;
      }
    }
    else {
      *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 10;
    }
LAB_0014f506:
    *(uint *)(this + 4) = local_20;
    if (local_20 != 0) {
      uVar5 = 0xffffffff;
      if (local_20 < 0x1840001) {
        uVar5 = local_20 * 0x54 + 4;
      }
      puVar6 = operator_new__(uVar5);
      pSVar9 = (SendProp *)(puVar6 + 1);
      *puVar6 = local_20;
      this_00 = pSVar9;
      while (local_20 = local_20 - 1, local_20 != 0xffffffff) {
                    /* try { // try from 0014f55b to 0014f55f has its CatchHandler @ 0014ff39 */
        SendProp::SendProp(this_00);
        this_00 = this_00 + 0x54;
      }
      *(SendProp **)this = pSVar9;
      if (*(int *)(this + 4) < 1) {
        return this;
      }
      local_20 = 0;
      do {
        iVar10 = *(int *)(param_1 + 0x14);
        if (iVar10 < 5) {
          uVar5 = *(uint *)(param_1 + 0x10);
          puVar6 = *(uint **)(param_1 + 0x18);
          if (puVar6 == *(uint **)(param_1 + 0x1c)) {
            *(undefined4 *)(param_1 + 0x14) = 1;
            *(uint **)(param_1 + 0x18) = puVar6 + 1;
            uVar5 = 0;
            *(undefined4 *)(param_1 + 0x10) = 0;
            param_1[4] = (bf_read)0x1;
          }
          else {
            if (*(uint **)(param_1 + 0x1c) < puVar6) {
              param_1[4] = (bf_read)0x1;
              *(undefined4 *)(param_1 + 0x10) = 0;
            }
            else {
              *(uint **)(param_1 + 0x18) = puVar6 + 1;
              uVar7 = *puVar6;
              *(uint *)(param_1 + 0x10) = uVar7;
              if (param_1[4] == (bf_read)0x0) {
                uVar3 = (&CBitBuffer::s_nMaskTable)[5 - iVar10];
                *(int *)(param_1 + 0x14) = iVar10 + 0x1b;
                uVar5 = (uVar3 & uVar7) << ((byte)iVar10 & 0x1f) | uVar5;
                *(uint *)(param_1 + 0x10) = uVar7 >> ((byte)(5 - iVar10) & 0x1f);
                goto LAB_0014f5ae;
              }
            }
            uVar5 = 0;
          }
        }
        else {
          *(int *)(param_1 + 0x14) = iVar10 + -5;
          uVar5 = *(uint *)(param_1 + 0x10) & 0x1f;
          if (iVar10 + -5 == 0) {
            puVar2 = *(undefined4 **)(param_1 + 0x18);
            *(undefined4 *)(param_1 + 0x14) = 0x20;
            if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
              *(undefined4 *)(param_1 + 0x14) = 1;
              *(undefined4 *)(param_1 + 0x10) = 0;
              *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
            }
            else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
              param_1[4] = (bf_read)0x1;
              *(undefined4 *)(param_1 + 0x10) = 0;
            }
            else {
              *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
              *(undefined4 *)(param_1 + 0x10) = *puVar2;
            }
          }
          else {
            *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 5;
          }
        }
LAB_0014f5ae:
        *(uint *)(pSVar9 + local_20 * 0x54 + 8) = uVar5;
        uVar4 = CBitRead::ReadAndAllocateString((CBitRead *)param_1,(bool *)0x0);
        *(undefined4 *)(pSVar9 + local_20 * 0x54 + 0x30) = uVar4;
        iVar1 = *(int *)(param_1 + 0x14);
        iVar10 = (uint)(param_2 != 2) * 8 + 0xb;
        if (iVar1 < iVar10) {
          uVar5 = *(uint *)(param_1 + 0x10);
          puVar6 = *(uint **)(param_1 + 0x18);
          if (puVar6 == *(uint **)(param_1 + 0x1c)) {
            *(undefined4 *)(param_1 + 0x14) = 1;
            *(uint **)(param_1 + 0x18) = puVar6 + 1;
            *(undefined4 *)(param_1 + 0x10) = 0;
            param_1[4] = (bf_read)0x1;
          }
          else if (*(uint **)(param_1 + 0x1c) < puVar6) {
            param_1[4] = (bf_read)0x1;
            *(undefined4 *)(param_1 + 0x10) = 0;
          }
          else {
            *(uint **)(param_1 + 0x18) = puVar6 + 1;
            uVar7 = *puVar6;
            *(uint *)(param_1 + 0x10) = uVar7;
            if (param_1[4] == (bf_read)0x0) {
              iVar10 = iVar10 - iVar1;
              uVar5 = ((&CBitBuffer::s_nMaskTable)[iVar10] & uVar7) << ((byte)iVar1 & 0x1f) | uVar5;
              *(int *)(param_1 + 0x14) = 0x20 - iVar10;
              *(uint *)(param_1 + 0x10) = uVar7 >> ((byte)iVar10 & 0x1f);
              goto LAB_0014f5ff;
            }
          }
          *(undefined4 *)(pSVar9 + local_20 * 0x54 + 0x3c) = 0;
          iVar10 = *(int *)(param_1 + 0x14);
          uVar5 = *(uint *)(param_1 + 0x10);
          if (7 < iVar10) goto LAB_0014f611;
LAB_0014f817:
          puVar6 = *(uint **)(param_1 + 0x18);
          if (puVar6 == *(uint **)(param_1 + 0x1c)) {
            *(undefined4 *)(param_1 + 0x14) = 1;
            *(undefined4 *)(param_1 + 0x10) = 0;
            *(uint **)(param_1 + 0x18) = puVar6 + 1;
            param_1[4] = (bf_read)0x1;
          }
          else if (*(uint **)(param_1 + 0x1c) < puVar6) {
            param_1[4] = (bf_read)0x1;
            *(undefined4 *)(param_1 + 0x10) = 0;
          }
          else {
            *(uint **)(param_1 + 0x18) = puVar6 + 1;
            uVar7 = *puVar6;
            *(uint *)(param_1 + 0x10) = uVar7;
            if (param_1[4] == (bf_read)0x0) {
              uVar3 = (&CBitBuffer::s_nMaskTable)[8 - iVar10];
              *(int *)(param_1 + 0x14) = iVar10 + 0x18;
              local_28 = (byte)uVar5;
              SVar8 = (SendProp)((byte)((uVar3 & uVar7) << ((byte)iVar10 & 0x1f)) | local_28);
              *(uint *)(param_1 + 0x10) = uVar7 >> ((byte)(8 - iVar10) & 0x1f);
              goto LAB_0014f62d;
            }
          }
          iVar10 = *(int *)(pSVar9 + local_20 * 0x54 + 8);
          pSVar9[local_20 * 0x54 + 0x38] = (SendProp)0x0;
          if (iVar10 == 6) goto LAB_0014f850;
LAB_0014f63c:
          if ((*(uint *)(pSVar9 + local_20 * 0x54 + 0x3c) & 0x40) != 0) goto LAB_0014f850;
          iVar1 = *(int *)(param_1 + 0x14);
          uVar5 = 0;
          if (iVar10 == 5) {
            uVar7 = *(uint *)(param_1 + 0x10);
            if (iVar1 < 10) {
              puVar6 = *(uint **)(param_1 + 0x18);
              if (puVar6 == *(uint **)(param_1 + 0x1c)) {
                *(undefined4 *)(param_1 + 0x14) = 1;
                *(undefined4 *)(param_1 + 0x10) = 0;
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                param_1[4] = (bf_read)0x1;
              }
              else if (*(uint **)(param_1 + 0x1c) < puVar6) {
                param_1[4] = (bf_read)0x1;
                *(undefined4 *)(param_1 + 0x10) = 0;
              }
              else {
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                uVar3 = *puVar6;
                *(uint *)(param_1 + 0x10) = uVar3;
                if (param_1[4] == (bf_read)0x0) {
                  uVar5 = (&CBitBuffer::s_nMaskTable)[10 - iVar1];
                  *(int *)(param_1 + 0x14) = iVar1 + 0x16;
                  uVar5 = (uVar5 & uVar3) << ((byte)iVar1 & 0x1f) | uVar7;
                  *(uint *)(param_1 + 0x10) = uVar3 >> ((byte)(10 - iVar1) & 0x1f);
                }
              }
            }
            else {
              *(int *)(param_1 + 0x14) = iVar1 + -10;
              uVar5 = uVar7 & 0x3ff;
              if (iVar1 + -10 == 0) {
                puVar2 = *(undefined4 **)(param_1 + 0x18);
                *(undefined4 *)(param_1 + 0x14) = 0x20;
                if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
                  *(undefined4 *)(param_1 + 0x14) = 1;
                  *(undefined4 *)(param_1 + 0x10) = 0;
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                }
                else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
                  param_1[4] = (bf_read)0x1;
                  *(undefined4 *)(param_1 + 0x10) = 0;
                }
                else {
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                  *(undefined4 *)(param_1 + 0x10) = *puVar2;
                }
              }
              else {
                *(uint *)(param_1 + 0x10) = uVar7 >> 10;
              }
            }
            *(uint *)(pSVar9 + local_20 * 0x54 + 0x20) = uVar5;
          }
          else {
            if (iVar1 < 0x20) {
              uVar7 = *(uint *)(param_1 + 0x10);
              puVar6 = *(uint **)(param_1 + 0x18);
              if (puVar6 == *(uint **)(param_1 + 0x1c)) {
                *(undefined4 *)(param_1 + 0x14) = 1;
                *(undefined4 *)(param_1 + 0x10) = 0;
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                param_1[4] = (bf_read)0x1;
              }
              else if (*(uint **)(param_1 + 0x1c) < puVar6) {
                param_1[4] = (bf_read)0x1;
                *(undefined4 *)(param_1 + 0x10) = 0;
              }
              else {
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                uVar3 = *puVar6;
                *(uint *)(param_1 + 0x10) = uVar3;
                if (param_1[4] == (bf_read)0x0) {
                  *(int *)(param_1 + 0x14) = iVar1;
                  local_28 = (byte)(0x20 - iVar1);
                  uVar7 = (uVar3 & (&CBitBuffer::s_nMaskTable)[0x20 - iVar1]) <<
                          ((byte)iVar1 & 0x1f) | uVar7;
                  *(uint *)(param_1 + 0x10) = uVar3 >> (local_28 & 0x1f);
                  goto LAB_0014f697;
                }
              }
              uVar7 = 0;
            }
            else {
              *(int *)(param_1 + 0x14) = iVar1 + -0x20;
              uVar7 = *(uint *)(param_1 + 0x10);
              if (iVar1 + -0x20 == 0) {
                puVar2 = *(undefined4 **)(param_1 + 0x18);
                *(undefined4 *)(param_1 + 0x14) = 0x20;
                if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
                  *(undefined4 *)(param_1 + 0x14) = 1;
                  *(undefined4 *)(param_1 + 0x10) = 0;
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                }
                else {
                  if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
                    param_1[4] = (bf_read)0x1;
                    goto LAB_0014f68c;
                  }
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                  *(undefined4 *)(param_1 + 0x10) = *puVar2;
                }
              }
              else {
LAB_0014f68c:
                *(undefined4 *)(param_1 + 0x10) = 0;
              }
            }
LAB_0014f697:
            *(uint *)(pSVar9 + local_20 * 0x54 + 0x10) = uVar7;
            iVar10 = *(int *)(param_1 + 0x14);
            if (iVar10 < 0x20) {
              uVar7 = *(uint *)(param_1 + 0x10);
              puVar6 = *(uint **)(param_1 + 0x18);
              if (puVar6 == *(uint **)(param_1 + 0x1c)) {
                *(undefined4 *)(param_1 + 0x14) = 1;
                *(undefined4 *)(param_1 + 0x10) = 0;
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                param_1[4] = (bf_read)0x1;
              }
              else if (*(uint **)(param_1 + 0x1c) < puVar6) {
                param_1[4] = (bf_read)0x1;
                *(undefined4 *)(param_1 + 0x10) = 0;
              }
              else {
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                uVar3 = *puVar6;
                *(uint *)(param_1 + 0x10) = uVar3;
                if (param_1[4] == (bf_read)0x0) {
                  *(int *)(param_1 + 0x14) = iVar10;
                  local_28 = (byte)(0x20 - iVar10);
                  uVar7 = (uVar3 & (&CBitBuffer::s_nMaskTable)[0x20 - iVar10]) <<
                          ((byte)iVar10 & 0x1f) | uVar7;
                  *(uint *)(param_1 + 0x10) = uVar3 >> (local_28 & 0x1f);
                  goto LAB_0014f6e2;
                }
              }
              *(undefined4 *)(pSVar9 + local_20 * 0x54 + 0x14) = 0;
              iVar10 = *(int *)(param_1 + 0x14);
              uVar7 = *(uint *)(param_1 + 0x10);
              if (5 < iVar10) goto LAB_0014f6f6;
LAB_0014f93a:
              puVar6 = *(uint **)(param_1 + 0x18);
              if (puVar6 == *(uint **)(param_1 + 0x1c)) {
                *(undefined4 *)(param_1 + 0x14) = 1;
                *(undefined4 *)(param_1 + 0x10) = 0;
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                param_1[4] = (bf_read)0x1;
              }
              else if (*(uint **)(param_1 + 0x1c) < puVar6) {
                param_1[4] = (bf_read)0x1;
                *(undefined4 *)(param_1 + 0x10) = 0;
              }
              else {
                *(uint **)(param_1 + 0x18) = puVar6 + 1;
                uVar3 = *puVar6;
                *(uint *)(param_1 + 0x10) = uVar3;
                if (param_1[4] == (bf_read)0x0) {
                  uVar5 = (&CBitBuffer::s_nMaskTable)[6 - iVar10];
                  *(int *)(param_1 + 0x14) = iVar10 + 0x1a;
                  uVar5 = (uVar5 & uVar3) << ((byte)iVar10 & 0x1f) | uVar7;
                  *(uint *)(param_1 + 0x10) = uVar3 >> ((byte)(6 - iVar10) & 0x1f);
                }
              }
            }
            else {
              *(int *)(param_1 + 0x14) = iVar10 + -0x20;
              uVar7 = *(uint *)(param_1 + 0x10);
              if (iVar10 + -0x20 == 0) {
                puVar2 = *(undefined4 **)(param_1 + 0x18);
                *(undefined4 *)(param_1 + 0x14) = 0x20;
                if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
                  *(undefined4 *)(param_1 + 0x14) = 1;
                  *(undefined4 *)(param_1 + 0x10) = 0;
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                }
                else {
                  if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
                    param_1[4] = (bf_read)0x1;
                    goto LAB_0014f6d7;
                  }
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                  *(undefined4 *)(param_1 + 0x10) = *puVar2;
                }
              }
              else {
LAB_0014f6d7:
                *(undefined4 *)(param_1 + 0x10) = 0;
              }
LAB_0014f6e2:
              *(uint *)(pSVar9 + local_20 * 0x54 + 0x14) = uVar7;
              iVar10 = *(int *)(param_1 + 0x14);
              uVar7 = *(uint *)(param_1 + 0x10);
              if (iVar10 < 6) goto LAB_0014f93a;
LAB_0014f6f6:
              *(int *)(param_1 + 0x14) = iVar10 + -6;
              uVar5 = uVar7 & 0x3f;
              if (iVar10 + -6 == 0) {
                puVar2 = *(undefined4 **)(param_1 + 0x18);
                *(undefined4 *)(param_1 + 0x14) = 0x20;
                if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
                  *(undefined4 *)(param_1 + 0x14) = 1;
                  *(undefined4 *)(param_1 + 0x10) = 0;
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                }
                else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
                  param_1[4] = (bf_read)0x1;
                  *(undefined4 *)(param_1 + 0x10) = 0;
                }
                else {
                  *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
                  *(undefined4 *)(param_1 + 0x10) = *puVar2;
                }
              }
              else {
                *(uint *)(param_1 + 0x10) = uVar7 >> 6;
              }
            }
            *(uint *)(pSVar9 + local_20 * 0x54 + 0xc) = uVar5;
          }
        }
        else {
          uVar5 = (&CBitBuffer::s_nMaskTable)[iVar10];
          *(int *)(param_1 + 0x14) = iVar1 - iVar10;
          uVar5 = uVar5 & *(uint *)(param_1 + 0x10);
          if (iVar1 - iVar10 == 0) {
            puVar2 = *(undefined4 **)(param_1 + 0x18);
            *(undefined4 *)(param_1 + 0x14) = 0x20;
            if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
              *(undefined4 *)(param_1 + 0x14) = 1;
              *(undefined4 *)(param_1 + 0x10) = 0;
              *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
            }
            else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
              param_1[4] = (bf_read)0x1;
              *(undefined4 *)(param_1 + 0x10) = 0;
            }
            else {
              *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
              *(undefined4 *)(param_1 + 0x10) = *puVar2;
            }
          }
          else {
            *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> (sbyte)iVar10;
          }
LAB_0014f5ff:
          *(uint *)(pSVar9 + local_20 * 0x54 + 0x3c) = uVar5;
          iVar10 = *(int *)(param_1 + 0x14);
          uVar5 = *(uint *)(param_1 + 0x10);
          if (iVar10 < 8) goto LAB_0014f817;
LAB_0014f611:
          *(int *)(param_1 + 0x14) = iVar10 + -8;
          SVar8 = SUB41(uVar5,0);
          if (iVar10 + -8 == 0) {
            puVar2 = *(undefined4 **)(param_1 + 0x18);
            *(undefined4 *)(param_1 + 0x14) = 0x20;
            if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
              *(undefined4 *)(param_1 + 0x14) = 1;
              *(undefined4 *)(param_1 + 0x10) = 0;
              *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
            }
            else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
              param_1[4] = (bf_read)0x1;
              *(undefined4 *)(param_1 + 0x10) = 0;
            }
            else {
              *(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
              *(undefined4 *)(param_1 + 0x10) = *puVar2;
            }
          }
          else {
            *(uint *)(param_1 + 0x10) = uVar5 >> 8;
          }
LAB_0014f62d:
          iVar10 = *(int *)(pSVar9 + local_20 * 0x54 + 8);
          pSVar9[local_20 * 0x54 + 0x38] = SVar8;
          if (iVar10 != 6) goto LAB_0014f63c;
LAB_0014f850:
          uVar4 = CBitRead::ReadAndAllocateString((CBitRead *)param_1,(bool *)0x0);
          *(undefined4 *)(pSVar9 + local_20 * 0x54 + 0x28) = uVar4;
        }
        local_20 = local_20 + 1;
        if (*(int *)(this + 4) <= (int)local_20) {
          return this;
        }
        pSVar9 = *(SendProp **)this;
      } while( true );
    }
  }
  *(undefined4 *)this = 0;
  return this;
}

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)