L L4D2node

CParallelProcessor<PackWork_t,CFuncJobItemProcessor<PackWork_t>,1>::Run

0x002076e0 · 2013 bytes · __thiscall

_ZN18CParallelProcessorI10PackWork_t21CFuncJobItemProcessorIS0_ELi1EE3RunEPS0_jiP11IThreadPool

Decompiled

undefined (5 params)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CParallelProcessor<PackWork_t, CFuncJobItemProcessor<PackWork_t>, 1>::Run(PackWork_t*, unsigned
   int, int, IThreadPool*) */

void __thiscall
CParallelProcessor<PackWork_t,CFuncJobItemProcessor<PackWork_t>,1>::Run
          (CParallelProcessor<PackWork_t,CFuncJobItemProcessor<PackWork_t>,1> *this,
          PackWork_t *param_1,uint param_2,int param_3,IThreadPool *param_4)

{
  uint uVar1;
  code *pcVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  CParallelProcessor<PackWork_t,CFuncJobItemProcessor<PackWork_t>,1> *pCVar6;
  undefined4 uVar7;
  undefined4 *****pppppuVar8;
  undefined4 *puVar9;
  undefined4 uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  PackWork_t *pPVar14;
  PackWork_t *pPVar15;
  PackWork_t **ppPVar16;
  int in_GS_OFFSET;
  undefined4 uStack_e0;
  PackWork_t *local_dc;
  undefined4 *****local_d8;
  uint local_d4 [4];
  char *local_c4 [5];
  uint local_b0 [4];
  undefined1 auStack_a0 [4];
  CParallelProcessor<PackWork_t,CFuncJobItemProcessor<PackWork_t>,1> *local_9c;
  int local_98;
  code *local_94;
  undefined1 *local_90;
  int *local_88;
  undefined4 *****local_84;
  uint local_80;
  undefined4 *****local_7c;
  uint local_78;
  undefined4 *****local_74;
  uint local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 *****local_64;
  uint local_60;
  undefined4 *****local_5c;
  uint local_58;
  PackWork_t *local_54;
  undefined4 *****local_50;
  uint local_4c;
  PackWork_t *local_48;
  undefined4 *****local_44;
  uint local_40;
  PackWork_t *local_3c;
  undefined4 local_38;
  undefined4 local_34;
  PackWork_t *local_30;
  undefined4 *****local_2c;
  uint local_28;
  PackWork_t *local_24;
  int local_20;
  
  local_84 = (undefined4 ******)0x0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_80 = 0;
  if (_g_Telemetry == (PackWork_t *)0x0) {
    local_54 = (PackWork_t *)0x0;
  }
  else {
    local_b0[0] = param_2;
    local_c4[4] = *(char **)(this + 0x14);
    local_dc = _g_Telemetry;
    local_c4[3] = "Run %s %d";
    local_c4[2] = (char *)&Run(PackWork_t*,unsigned_int,int,IThreadPool*)::tm_fmt;
    local_c4[1] = (char *)0x367;
    local_d8 = &local_84;
    local_c4[0] = "/data/src/public/vstdlib/jobthread.h";
    local_d4[3] = 0;
    local_d4[1] = 0;
    local_d4[2] = 0;
    local_d4[0] = 0;
    uStack_e0 = 0x207776;
    (**(code **)(_g_Telemetry + 0x50))();
    local_54 = _g_Telemetry;
  }
  pPVar14 = _g_pThreadPool;
  local_5c = local_84;
  local_58 = local_80;
  if (param_2 == 0) {
LAB_00207e6f:
    ppPVar16 = &local_dc;
    if (local_54 != (PackWork_t *)0x0) {
      local_d4[3] = 0;
      local_d4[2] = 0;
      local_d4[1] = 0;
      local_d8 = local_5c;
      local_d4[0] = local_58;
      uStack_e0 = 0x207ea3;
      local_dc = local_54;
      (**(code **)(local_54 + 0x54))();
      ppPVar16 = &local_dc;
    }
  }
  else {
    if (param_4 == (IThreadPool *)0x0) {
      local_9c = this + 0xc;
      LOCK();
      *(PackWork_t **)local_9c = param_1;
      UNLOCK();
      pPVar15 = param_1 + param_2 * 0xc;
      *(PackWork_t **)(this + 0x10) = pPVar15;
      if (pPVar14 == (PackWork_t *)0x0) {
        local_7c = (undefined4 ******)0x0;
        local_78 = 0;
        if (_g_Telemetry == (PackWork_t *)0x0) {
          local_48 = (PackWork_t *)0x0;
        }
        else {
          local_c4[4] = *(char **)(this + 0x14);
          local_c4[3] = "DoExecute %s";
          local_c4[2] = (char *)&DoExecute()::tm_fmt;
          local_c4[1] = (char *)0x3a9;
          local_c4[0] = "/data/src/public/vstdlib/jobthread.h";
          local_d8 = &local_7c;
          local_d4[3] = 0;
          local_d4[1] = 0;
          local_d4[2] = 0;
          local_d4[0] = 0;
          local_dc = _g_Telemetry;
                    /* try { // try from 00207de2 to 00207de4 has its CatchHandler @ 00207f57 */
          uStack_e0 = 0x207de5;
          (**(code **)(_g_Telemetry + 0x50))();
          pPVar15 = *(PackWork_t **)(this + 0x10);
          local_48 = _g_Telemetry;
        }
        local_50 = local_7c;
        local_4c = local_78;
        if (*(PackWork_t **)(this + 0xc) < pPVar15) {
          if (*(code **)(this + 4) != (code *)0x0) {
                    /* try { // try from 00207e0b to 00207e38 has its CatchHandler @ 00207f0f */
            uStack_e0 = 0x207e0d;
            (**(code **)(this + 4))();
            pPVar15 = *(PackWork_t **)(this + 0x10);
          }
          while( true ) {
            LOCK();
            pPVar14 = *(PackWork_t **)local_9c;
            *(uint *)local_9c = *(uint *)local_9c + 0xc;
            UNLOCK();
            if (pPVar15 <= pPVar14) break;
            uStack_e0 = 0x207e1d;
            local_dc = pPVar14;
            (**(code **)this)();
          }
          if (*(code **)(this + 8) != (code *)0x0) {
            uStack_e0 = 0x207e39;
            (**(code **)(this + 8))();
          }
        }
        if (local_48 != (PackWork_t *)0x0) {
          local_d4[3] = 0;
          local_d4[2] = 0;
          local_d4[1] = 0;
          local_d8 = local_50;
          local_d4[0] = local_4c;
          uStack_e0 = 0x207e6c;
          local_dc = local_48;
          (**(code **)(local_48 + 0x54))();
        }
        goto LAB_00207e6f;
      }
      iVar12 = param_2 - 1;
      if (param_3 < (int)(param_2 - 1)) {
        iVar12 = param_3;
      }
    }
    else {
      LOCK();
      *(PackWork_t **)(this + 0xc) = param_1;
      UNLOCK();
      *(PackWork_t **)(this + 0x10) = param_1 + param_2 * 0xc;
      iVar12 = param_2 - 1;
      pPVar14 = (PackWork_t *)param_4;
      if (param_3 < (int)(param_2 - 1)) {
        iVar12 = param_3;
      }
    }
    local_9c = this + 0xc;
                    /* try { // try from 002077c8 to 00207905 has its CatchHandler @ 00207f57 */
    uStack_e0 = 0x2077cb;
    local_dc = pPVar14;
    local_98 = (**(code **)(*(int *)pPVar14 + 0x1c))();
    if (iVar12 <= local_98) {
      local_98 = iVar12;
    }
    if (local_98 < 1) {
      local_64 = (undefined4 ******)0x0;
      local_60 = 0;
      if (_g_Telemetry == (PackWork_t *)0x0) {
        local_24 = (PackWork_t *)0x0;
      }
      else {
        local_c4[4] = *(char **)(this + 0x14);
        local_c4[3] = "DoExecute %s";
        local_c4[2] = (char *)&DoExecute()::tm_fmt;
        local_c4[1] = (char *)0x3a9;
        local_c4[0] = "/data/src/public/vstdlib/jobthread.h";
        local_d8 = &local_64;
        local_d4[3] = 0;
        local_d4[1] = 0;
        local_d4[2] = 0;
        local_d4[0] = 0;
        local_dc = _g_Telemetry;
                    /* try { // try from 00207c7c to 00207c7e has its CatchHandler @ 00207f57 */
        uStack_e0 = 0x207c7f;
        (**(code **)(_g_Telemetry + 0x50))();
        local_24 = _g_Telemetry;
      }
      pPVar14 = *(PackWork_t **)(this + 0x10);
      local_2c = local_64;
      local_28 = local_60;
      if (*(PackWork_t **)(this + 0xc) < pPVar14) {
        if (*(code **)(this + 4) != (code *)0x0) {
                    /* try { // try from 00207ca5 to 00207cd0 has its CatchHandler @ 00207f30 */
          uStack_e0 = 0x207ca7;
          (**(code **)(this + 4))();
          pPVar14 = *(PackWork_t **)(this + 0x10);
        }
        while( true ) {
          LOCK();
          pPVar15 = *(PackWork_t **)local_9c;
          *(uint *)local_9c = *(uint *)local_9c + 0xc;
          UNLOCK();
          if (pPVar14 <= pPVar15) break;
          uStack_e0 = 0x207cb5;
          local_dc = pPVar15;
          (**(code **)this)();
        }
        if (*(code **)(this + 8) != (code *)0x0) {
          uStack_e0 = 0x207cd1;
          (**(code **)(this + 8))();
        }
      }
      ppPVar16 = &local_dc;
      if (local_24 != (PackWork_t *)0x0) {
        local_d4[3] = 0;
        local_d4[2] = 0;
        local_d4[1] = 0;
        local_d8 = local_2c;
        local_d4[0] = local_28;
        uStack_e0 = 0x207d04;
        local_dc = local_24;
        (**(code **)(local_24 + 0x54))();
        ppPVar16 = &local_dc;
      }
    }
    else {
      iVar12 = local_98 + -1;
      iVar5 = -((local_98 * 4 + 0xfU & 0xfffffff0) + 0x10);
      local_90 = auStack_a0 + iVar5;
      do {
        pcVar2 = *(code **)(*(int *)pPVar14 + 0x54);
        *(undefined4 *)((int)&local_dc + iVar5) = 0x1c;
        local_94 = pcVar2;
        *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x20781f;
        puVar9 = operator_new(*(uint *)((int)&local_dc + iVar5));
        puVar9[3] = 1;
        *puVar9 = &PTR_AddRef_002c44e8;
        puVar9[2] = &PTR__CMemberFunctor0_002c4504;
        puVar9[4] = DoExecute;
        puVar9[5] = 0;
        puVar9[6] = this;
        *(undefined4 **)((int)local_d4 + iVar5 + -4) = puVar9;
        pcVar2 = local_94;
        *(undefined4 *)((int)local_d4 + iVar5 + 8) = 8;
        *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
        *(int ***)((int)local_d4 + iVar5) = &local_88;
        *(PackWork_t **)((int)&local_dc + iVar5) = pPVar14;
        *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x20786d;
        (*pcVar2)();
        piVar4 = local_88;
        uVar10 = *(undefined4 *)(this + 0x14);
        *(int **)(local_90 + iVar12 * 4) = local_88;
        iVar11 = *local_88;
        *(undefined4 *)((int)local_d4 + iVar5 + -4) = uVar10;
        *(int **)((int)&local_dc + iVar5) = piVar4;
        pcVar2 = *(code **)(iVar11 + 0x14);
        *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x20788b;
        (*pcVar2)();
        iVar12 = iVar12 + -1;
      } while (iVar12 != -1);
      local_74 = (undefined4 ******)0x0;
      local_70 = 0;
      if (_g_Telemetry == (PackWork_t *)0x0) {
        local_3c = (PackWork_t *)0x0;
      }
      else {
        uVar10 = *(undefined4 *)(this + 0x14);
        *(char **)((int)local_c4 + iVar5 + 0xc) = "DoExecute %s";
        *(undefined4 **)((int)local_c4 + iVar5 + 8) = &DoExecute()::tm_fmt;
        *(undefined4 *)((int)local_c4 + iVar5 + 4) = 0x3a9;
        *(char **)((int)local_c4 + iVar5) = "/data/src/public/vstdlib/jobthread.h";
        *(undefined4 *)((int)local_c4 + iVar5 + 0x10) = uVar10;
        *(undefined4 *)((int)local_d4 + iVar5 + 0xc) = 0;
        *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
        *(undefined4 *)((int)local_d4 + iVar5 + 8) = 0;
        *(undefined4 *)((int)local_d4 + iVar5) = 0;
        *(undefined4 *******)((int)local_d4 + iVar5 + -4) = &local_74;
        *(PackWork_t **)((int)&local_dc + iVar5) = _g_Telemetry;
        pcVar2 = *(code **)(_g_Telemetry + 0x50);
        *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207906;
        (*pcVar2)();
        local_3c = _g_Telemetry;
      }
      local_44 = local_74;
      uVar13 = *(uint *)(this + 0x10);
      local_40 = local_70;
      if (*(uint *)(this + 0xc) < uVar13) {
        pcVar2 = *(code **)(this + 4);
        if (pcVar2 != (code *)0x0) {
                    /* try { // try from 0020792c to 00207958 has its CatchHandler @ 00207f44 */
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x20792e;
          (*pcVar2)();
          uVar13 = *(uint *)(this + 0x10);
        }
        while( true ) {
          LOCK();
          uVar1 = *(uint *)local_9c;
          *(uint *)local_9c = *(uint *)local_9c + 0xc;
          UNLOCK();
          if (uVar13 <= uVar1) break;
          *(uint *)((int)&local_dc + iVar5) = uVar1;
          pcVar2 = *(code **)this;
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x20793d;
          (*pcVar2)();
        }
        pcVar2 = *(code **)(this + 8);
        if (pcVar2 != (code *)0x0) {
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207959;
          (*pcVar2)();
        }
      }
      pPVar14 = local_3c;
      pppppuVar8 = local_44;
      if (local_3c != (PackWork_t *)0x0) {
        *(undefined4 *)((int)local_d4 + iVar5 + 0xc) = 0;
        uVar13 = local_40;
        *(undefined4 *)((int)local_d4 + iVar5 + 8) = 0;
        *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
        *(PackWork_t **)((int)&local_dc + iVar5) = pPVar14;
        *(undefined4 ******)((int)local_d4 + iVar5 + -4) = pppppuVar8;
        *(uint *)((int)local_d4 + iVar5) = uVar13;
        pcVar2 = *(code **)(pPVar14 + 0x54);
        *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x20798c;
        (*pcVar2)();
      }
      iVar12 = 0;
      do {
        piVar4 = *(int **)(local_90 + iVar12 * 4);
        iVar11 = piVar4[3];
        if ((iVar11 - 1U < 2) || (iVar11 == 4)) {
          local_6c = 0;
          local_68 = 0;
          if (_g_Telemetry == (PackWork_t *)0x0) {
            local_30 = (PackWork_t *)0x0;
          }
          else {
            local_9c = *(CParallelProcessor<PackWork_t,CFuncJobItemProcessor<PackWork_t>,1> **)
                        (_g_Telemetry + 0x50);
            local_94 = *(code **)(_g_Telemetry + 0x14);
            iVar3 = *piVar4;
            *(int **)((int)&local_dc + iVar5) = piVar4;
                    /* try { // try from 002079ca to 00207a47 has its CatchHandler @ 00207f57 */
            pcVar2 = *(code **)(iVar3 + 0x10);
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x2079cd;
            uVar10 = (*pcVar2)();
            *(undefined4 *)((int)local_d4 + iVar5 + -4) = uVar10;
            *(PackWork_t **)((int)&local_dc + iVar5) = _g_Telemetry;
            pcVar2 = local_94;
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x2079e1;
            uVar10 = (*pcVar2)();
            *(undefined4 *)((int)local_b0 + iVar5) = uVar10;
            pCVar6 = local_9c;
            *(undefined4 **)((int)local_d4 + iVar5 + -4) = &local_6c;
            *(int *)((int)local_b0 + iVar5 + 4) = iVar11;
            *(char **)((int)local_c4 + iVar5 + 0x10) = "Abort";
            *(char **)((int)local_c4 + iVar5 + 0xc) = "%s %s %d";
            *(undefined4 **)((int)local_c4 + iVar5 + 8) = &CJob::Abort(bool)::tm_fmt;
            *(undefined4 *)((int)local_c4 + iVar5 + 4) = 0x52d;
            *(char **)((int)local_c4 + iVar5) = "/data/src/public/vstdlib/jobthread.h";
            *(undefined4 *)((int)local_d4 + iVar5 + 0xc) = 0;
            *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
            *(undefined4 *)((int)local_d4 + iVar5 + 8) = 0;
            *(undefined4 *)((int)local_d4 + iVar5) = 0;
            *(PackWork_t **)((int)&local_dc + iVar5) = _g_Telemetry;
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207a48;
            (*(code *)pCVar6)();
            local_30 = _g_Telemetry;
          }
          uVar7 = local_68;
          uVar10 = local_6c;
          *(int **)((int)&local_dc + iVar5) = piVar4 + 5;
          local_38 = uVar10;
          local_34 = uVar7;
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207a68;
          pthread_mutex_lock(*(pthread_mutex_t **)((int)&local_dc + iVar5));
          puVar9 = (undefined4 *)*piVar4;
          *(int **)((int)&local_dc + iVar5) = piVar4;
                    /* try { // try from 00207a6d to 00207a8b has its CatchHandler @ 00207f53 */
          pcVar2 = (code *)*puVar9;
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207a6f;
          (*pcVar2)();
          if ((piVar4[3] == 1) || (piVar4[3] == 4)) {
            local_44 = (undefined4 ******)0x0;
            local_40 = 0;
            if (_g_Telemetry == (PackWork_t *)0x0) {
              local_24 = (PackWork_t *)0x0;
            }
            else {
              *(char **)((int)local_c4 + iVar5 + 0xc) = "CJob::DoAbort";
              *(undefined4 **)((int)local_c4 + iVar5 + 8) = &CJob::Abort(bool)::tm_fmt;
              *(undefined4 *)((int)local_c4 + iVar5 + 4) = 0x539;
              *(char **)((int)local_c4 + iVar5) = "/data/src/public/vstdlib/jobthread.h";
              *(undefined4 *)((int)local_d4 + iVar5 + 0xc) = 0;
              *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
              *(undefined4 *)((int)local_d4 + iVar5 + 8) = 0;
              *(undefined4 *)((int)local_d4 + iVar5) = 0;
              *(undefined4 *******)((int)local_d4 + iVar5 + -4) = &local_44;
              *(PackWork_t **)((int)&local_dc + iVar5) = _g_Telemetry;
                    /* try { // try from 00207b6d to 00207b6f has its CatchHandler @ 00207f53 */
              pcVar2 = *(code **)(_g_Telemetry + 0x50);
              *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207b70;
              (*pcVar2)();
              local_24 = _g_Telemetry;
            }
            iVar11 = *piVar4;
            local_2c = local_44;
            local_28 = local_40;
            *(undefined4 *)((int)local_d4 + iVar5 + -4) = 1;
            *(int **)((int)&local_dc + iVar5) = piVar4;
                    /* try { // try from 00207b92 to 00207baa has its CatchHandler @ 00207edc */
            pcVar2 = *(code **)(iVar11 + 0x1c);
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207b95;
            iVar11 = (*pcVar2)();
            piVar4[3] = iVar11;
            iVar11 = *piVar4;
            *(int **)((int)&local_dc + iVar5) = piVar4;
            pcVar2 = *(code **)(iVar11 + 0x20);
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207ba0;
            (*pcVar2)();
            *(int **)((int)&local_dc + iVar5) = piVar4 + 0x11;
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207bab;
            CThreadEvent::Set();
            pPVar14 = local_24;
            pppppuVar8 = local_2c;
            if (local_24 != (PackWork_t *)0x0) {
              *(undefined4 *)((int)local_d4 + iVar5 + 0xc) = 0;
              uVar13 = local_28;
              *(undefined4 *)((int)local_d4 + iVar5 + 8) = 0;
              *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
              *(PackWork_t **)((int)&local_dc + iVar5) = pPVar14;
              *(undefined4 ******)((int)local_d4 + iVar5 + -4) = pppppuVar8;
              *(uint *)((int)local_d4 + iVar5) = uVar13;
              pcVar2 = *(code **)(pPVar14 + 0x54);
              *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207be2;
              (*pcVar2)();
            }
          }
          iVar11 = *piVar4;
          *(int **)((int)&local_dc + iVar5) = piVar4;
          pcVar2 = *(code **)(iVar11 + 4);
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207a8c;
          (*pcVar2)();
          *(int **)((int)&local_dc + iVar5) = piVar4 + 5;
          *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207a94;
          pthread_mutex_unlock(*(pthread_mutex_t **)((int)&local_dc + iVar5));
          pPVar14 = local_30;
          uVar10 = local_38;
          if (local_30 != (PackWork_t *)0x0) {
            *(undefined4 *)((int)local_d4 + iVar5 + 0xc) = 0;
            uVar7 = local_34;
            *(undefined4 *)((int)local_d4 + iVar5 + 8) = 0;
            *(undefined4 *)((int)local_d4 + iVar5 + 4) = 0;
            *(PackWork_t **)((int)&local_dc + iVar5) = pPVar14;
            *(undefined4 *)((int)local_d4 + iVar5 + -4) = uVar10;
            *(undefined4 *)((int)local_d4 + iVar5) = uVar7;
            pcVar2 = *(code **)(pPVar14 + 0x54);
            *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207ac7;
            (*pcVar2)();
          }
        }
        iVar11 = *piVar4;
        *(int **)((int)&local_dc + iVar5) = piVar4;
                    /* try { // try from 00207acc to 00207ace has its CatchHandler @ 00207f57 */
        pcVar2 = *(code **)(iVar11 + 4);
        *(undefined4 *)((int)&uStack_e0 + iVar5) = 0x207acf;
        (*pcVar2)();
        iVar12 = iVar12 + 1;
        ppPVar16 = (PackWork_t **)((int)&local_dc + iVar5);
      } while (iVar12 != local_98);
    }
    pPVar14 = local_54;
    pppppuVar8 = local_5c;
    if (local_54 != (PackWork_t *)0x0) {
      ppPVar16[5] = (PackWork_t *)0x0;
      uVar13 = local_58;
      ppPVar16[4] = (PackWork_t *)0x0;
      ppPVar16[3] = (PackWork_t *)0x0;
      *ppPVar16 = pPVar14;
      ppPVar16[1] = (PackWork_t *)pppppuVar8;
      ppPVar16[2] = (PackWork_t *)uVar13;
      pcVar2 = *(code **)(pPVar14 + 0x54);
      ppPVar16[-1] = (PackWork_t *)0x207d37;
      (*pcVar2)();
    }
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    *(undefined1 **)((int)ppPVar16 + -4) = &LAB_00207f44;
    __stack_chk_fail();
  }
  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)