L L4D2node

CUtlRBTree<CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::Node_t,int,CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::Node_t,int>,int>>::RemoveRebalance

0x00067760 · 4966 bytes · __thiscall

_ZN10CUtlRBTreeIN7CUtlMapIyPN5GCSDK4CJobEiE6Node_tEiNS4_8CKeyLessE10CUtlMemoryI15UtlRBTreeNode_tIS5_iEiEE15RemoveRebalanceEi

Decompiled

undefined (2 params)

/* WARNING: Type propagation algorithm not settling */
/* CUtlRBTree<CUtlMap<unsigned long long, GCSDK::CJob*, int>::Node_t, int, CUtlMap<unsigned long
   long, GCSDK::CJob*, int>::CKeyLess, CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned long long,
   GCSDK::CJob*, int>::Node_t, int>, int> >::RemoveRebalance(int) */

void __thiscall
CUtlRBTree<CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::Node_t,int,CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::Node_t,int>,int>>
::RemoveRebalance(CUtlRBTree<CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::Node_t,int,CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,GCSDK::CJob*,int>::Node_t,int>,int>>
                  *this,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  int *piVar5;
  bool bVar6;
  int local_28;
  int local_24;
  int local_20;
  
  iVar3 = *(int *)(this + 0x10);
  while (param_1 != iVar3) {
    if ((Links(int)::s_Sentinel == '\0') &&
       (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
      Links(int)::s_Sentinel = -1;
      DAT_000d282c = -1;
      DAT_000d2830 = 0xffffffff;
      __cxa_guard_release(&Links(int)::s_Sentinel);
    }
    iVar3 = DAT_000d2834;
    if (param_1 != -1) {
      iVar3 = *(int *)(param_1 * 0x1c + *(int *)(this + 4) + 0xc);
    }
    if (iVar3 != 1) break;
    if (Links(int)::s_Sentinel == '\0') {
      iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
      if (iVar3 != 0) {
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      if (param_1 == -1) goto LAB_00067bad;
LAB_00067829:
      puVar4 = (undefined4 *)(param_1 * 0x1c + *(int *)(this + 4));
    }
    else {
      if (param_1 != -1) goto LAB_00067829;
LAB_00067bad:
      puVar4 = &Links(int)::s_Sentinel;
    }
    iVar3 = puVar4[2];
    if (Links(int)::s_Sentinel == '\0') {
      iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
      if (iVar2 != 0) {
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      if (iVar3 == -1) goto LAB_000679fc;
LAB_0006784b:
      if (param_1 != *(int *)(iVar3 * 0x1c + *(int *)(this + 4))) goto LAB_00067863;
LAB_00067a10:
      if (Links(int)::s_Sentinel == '\0') {
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar3 == -1) goto LAB_00067fa4;
LAB_00067a21:
        local_20 = *(int *)(iVar3 * 0x1c + *(int *)(this + 4) + 4);
        if (Links(int)::s_Sentinel != '\0') goto LAB_00067a3c;
LAB_00067fc0:
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 == 0) goto LAB_00067a3c;
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
        if (local_20 == -1) goto LAB_00068010;
LAB_00067a48:
        if (*(int *)(local_20 * 0x1c + *(int *)(this + 4) + 0xc) != 0) goto LAB_00067a5e;
LAB_00068020:
        *(undefined4 *)(local_20 * 0x1c + *(int *)(this + 4) + 0xc) = 1;
        *(undefined4 *)(iVar3 * 0x1c + *(int *)(this + 4) + 0xc) = 0;
        RotateLeft(this,iVar3);
        if (Links(int)::s_Sentinel == '\0') {
          iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
          if (iVar3 != 0) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (param_1 == -1) goto LAB_00068605;
LAB_0006806e:
          puVar4 = (undefined4 *)(param_1 * 0x1c + *(int *)(this + 4));
        }
        else {
          if (param_1 != -1) goto LAB_0006806e;
LAB_00068605:
          puVar4 = &Links(int)::s_Sentinel;
        }
        iVar3 = puVar4[2];
        if (Links(int)::s_Sentinel == '\0') {
          iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
          if (iVar2 != 0) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (iVar3 == -1) goto LAB_000685d4;
LAB_00068090:
          puVar4 = (undefined4 *)(iVar3 * 0x1c + *(int *)(this + 4));
        }
        else {
          if (iVar3 != -1) goto LAB_00068090;
LAB_000685d4:
          puVar4 = &Links(int)::s_Sentinel;
        }
        local_20 = puVar4[1];
        if (Links(int)::s_Sentinel == '\0') goto LAB_000680ab;
LAB_00067a6d:
        if (local_20 != -1) goto LAB_00067a79;
LAB_000680d2:
        iVar2 = Links(int)::s_Sentinel;
        if (Links(int)::s_Sentinel == '\0') goto LAB_000680e8;
LAB_00067a90:
        if (iVar2 != -1) goto LAB_00067a99;
LAB_00068112:
        if (DAT_000d2834 == 1) goto LAB_00068121;
joined_r0x00068174:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) {
          local_24 = -0x1c;
          iVar2 = DAT_000d282c;
          if (Links(int)::s_Sentinel == '\0') goto LAB_000681be;
LAB_00067add:
          if (iVar2 != -1) goto LAB_00067ae6;
LAB_000681e8:
          if (DAT_000d2834 == 1) goto LAB_00068200;
LAB_00067afb:
          local_28 = iVar3 * 0x1c;
        }
        else {
          local_24 = local_20 * 0x1c;
          iVar2 = *(int *)(*(int *)(this + 4) + local_24 + 4);
          if (Links(int)::s_Sentinel != '\0') goto LAB_00067add;
LAB_000681be:
          iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
          if (iVar1 != 0) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
            goto LAB_00067add;
          }
          if (iVar2 == -1) goto LAB_000681e8;
LAB_00067ae6:
          if (*(int *)(iVar2 * 0x1c + *(int *)(this + 4) + 0xc) != 1) goto LAB_00067afb;
LAB_00068200:
          if ((Links(int)::s_Sentinel == '\0') &&
             (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          piVar5 = &Links(int)::s_Sentinel;
          if (local_20 != -1) {
            piVar5 = (int *)(*(int *)(this + 4) + local_24);
          }
          *(undefined4 *)(*(int *)(this + 4) + 0xc + *piVar5 * 0x1c) = 1;
          *(undefined4 *)(*(int *)(this + 4) + 0xc + local_24) = 0;
          RotateRight(this,local_20);
          if ((Links(int)::s_Sentinel == '\0') &&
             (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (param_1 == -1) {
            puVar4 = &Links(int)::s_Sentinel;
          }
          else {
            puVar4 = (undefined4 *)(param_1 * 0x1c + *(int *)(this + 4));
          }
          iVar3 = puVar4[2];
          if ((Links(int)::s_Sentinel == '\0') &&
             (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (iVar3 == -1) {
            local_28 = -0x1c;
            puVar4 = &Links(int)::s_Sentinel;
          }
          else {
            local_28 = iVar3 * 0x1c;
            puVar4 = (undefined4 *)(*(int *)(this + 4) + local_28);
          }
          local_20 = puVar4[1];
          local_24 = local_20 * 0x1c;
        }
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        puVar4 = &Links(int)::s_Sentinel;
        if (iVar3 != -1) {
          puVar4 = (undefined4 *)(*(int *)(this + 4) + local_28);
        }
        bVar6 = Links(int)::s_Sentinel == '\0';
        *(undefined4 *)(*(int *)(this + 4) + 0xc + local_24) = puVar4[3];
        *(undefined4 *)(*(int *)(this + 4) + 0xc + local_28) = 1;
        if ((bVar6) && (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        puVar4 = &Links(int)::s_Sentinel;
        if (local_20 != -1) {
          puVar4 = (undefined4 *)(*(int *)(this + 4) + local_24);
        }
        *(undefined4 *)(*(int *)(this + 4) + 0xc + puVar4[1] * 0x1c) = 1;
        RotateLeft(this,iVar3);
        iVar3 = *(int *)(this + 0x10);
        param_1 = iVar3;
      }
      else {
        if (iVar3 != -1) goto LAB_00067a21;
LAB_00067fa4:
        local_20 = DAT_000d282c;
        if (Links(int)::s_Sentinel == '\0') goto LAB_00067fc0;
LAB_00067a3c:
        if (local_20 != -1) goto LAB_00067a48;
LAB_00068010:
        if (DAT_000d2834 == 0) goto LAB_00068020;
LAB_00067a5e:
        if (Links(int)::s_Sentinel != '\0') goto LAB_00067a6d;
LAB_000680ab:
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) goto LAB_000680d2;
LAB_00067a79:
        iVar2 = *(int *)(local_20 * 0x1c + *(int *)(this + 4));
        if (Links(int)::s_Sentinel != '\0') goto LAB_00067a90;
LAB_000680e8:
        iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar1 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
          goto LAB_00067a90;
        }
        if (iVar2 == -1) goto LAB_00068112;
LAB_00067a99:
        if (*(int *)(iVar2 * 0x1c + *(int *)(this + 4) + 0xc) != 1) goto joined_r0x00068174;
LAB_00068121:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(local_20 * 0x1c + *(int *)(this + 4));
        }
        iVar2 = puVar4[1];
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar1 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar2 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(iVar2 * 0x1c + *(int *)(this + 4));
        }
        if (puVar4[3] != 1) goto joined_r0x00068174;
LAB_00068430:
        param_1 = iVar3;
        if (local_20 == -1) {
          iVar3 = *(int *)(this + 0x10);
        }
        else {
          *(undefined4 *)(local_20 * 0x1c + *(int *)(this + 4) + 0xc) = 0;
          iVar3 = *(int *)(this + 0x10);
        }
      }
    }
    else {
      if (iVar3 != -1) goto LAB_0006784b;
LAB_000679fc:
      if (param_1 == Links(int)::s_Sentinel) goto LAB_00067a10;
LAB_00067863:
      if ((Links(int)::s_Sentinel == '\0') &&
         (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      local_20 = Links(int)::s_Sentinel;
      if (iVar3 != -1) {
        local_20 = *(int *)(iVar3 * 0x1c + *(int *)(this + 4));
      }
      if ((Links(int)::s_Sentinel == '\0') &&
         (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      iVar2 = DAT_000d2834;
      if (local_20 != -1) {
        iVar2 = *(int *)(local_20 * 0x1c + *(int *)(this + 4) + 0xc);
      }
      if (iVar2 == 0) {
        *(undefined4 *)(local_20 * 0x1c + *(int *)(this + 4) + 0xc) = 1;
        *(undefined4 *)(iVar3 * 0x1c + *(int *)(this + 4) + 0xc) = 0;
        RotateRight(this,iVar3);
        if (Links(int)::s_Sentinel == '\0') {
          iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
          if (iVar3 != 0) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (param_1 == -1) goto LAB_00068425;
LAB_00067ede:
          puVar4 = (undefined4 *)(param_1 * 0x1c + *(int *)(this + 4));
        }
        else {
          if (param_1 != -1) goto LAB_00067ede;
LAB_00068425:
          puVar4 = &Links(int)::s_Sentinel;
        }
        iVar3 = puVar4[2];
        if (Links(int)::s_Sentinel == '\0') {
          iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
          if (iVar2 != 0) {
            Links(int)::s_Sentinel = -1;
            DAT_000d282c = -1;
            DAT_000d2830 = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (iVar3 == -1) goto LAB_000683f4;
LAB_00067f00:
          piVar5 = (int *)(iVar3 * 0x1c + *(int *)(this + 4));
        }
        else {
          if (iVar3 != -1) goto LAB_00067f00;
LAB_000683f4:
          piVar5 = &Links(int)::s_Sentinel;
        }
        local_20 = *piVar5;
      }
      if (Links(int)::s_Sentinel == '\0') {
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) goto LAB_00067de7;
LAB_000678cb:
        puVar4 = (undefined4 *)(local_20 * 0x1c + *(int *)(this + 4));
      }
      else {
        if (local_20 != -1) goto LAB_000678cb;
LAB_00067de7:
        puVar4 = &Links(int)::s_Sentinel;
      }
      iVar2 = puVar4[1];
      if (Links(int)::s_Sentinel == '\0') {
        iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar1 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
          goto LAB_000678e3;
        }
        if (iVar2 == -1) goto LAB_00067bea;
LAB_000678ec:
        if (*(int *)(iVar2 * 0x1c + *(int *)(this + 4) + 0xc) != 1) goto LAB_00067901;
LAB_00067c00:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        iVar2 = Links(int)::s_Sentinel;
        if (local_20 != -1) {
          iVar2 = *(int *)(local_20 * 0x1c + *(int *)(this + 4));
        }
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar1 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar2 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(iVar2 * 0x1c + *(int *)(this + 4));
        }
        if (puVar4[3] == 1) goto LAB_00068430;
        if (Links(int)::s_Sentinel == '\0') goto LAB_00067c60;
LAB_00067909:
        if (local_20 != -1) goto LAB_00067915;
LAB_00067c87:
        local_24 = -0x1c;
        iVar2 = Links(int)::s_Sentinel;
        if (Links(int)::s_Sentinel == '\0') goto LAB_00067ca0;
LAB_0006792f:
        if (iVar2 != -1) goto LAB_00067938;
LAB_00067cca:
        if (DAT_000d2834 == 1) goto LAB_00067ce0;
LAB_0006794d:
        local_28 = iVar3 * 0x1c;
      }
      else {
LAB_000678e3:
        if (iVar2 != -1) goto LAB_000678ec;
LAB_00067bea:
        if (DAT_000d2834 == 1) goto LAB_00067c00;
LAB_00067901:
        if (Links(int)::s_Sentinel != '\0') goto LAB_00067909;
LAB_00067c60:
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) goto LAB_00067c87;
LAB_00067915:
        local_24 = local_20 * 0x1c;
        iVar2 = *(int *)(*(int *)(this + 4) + local_24);
        if (Links(int)::s_Sentinel != '\0') goto LAB_0006792f;
LAB_00067ca0:
        iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar1 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
          goto LAB_0006792f;
        }
        if (iVar2 == -1) goto LAB_00067cca;
LAB_00067938:
        if (*(int *)(iVar2 * 0x1c + *(int *)(this + 4) + 0xc) != 1) goto LAB_0006794d;
LAB_00067ce0:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        puVar4 = &Links(int)::s_Sentinel;
        if (local_20 != -1) {
          puVar4 = (undefined4 *)(*(int *)(this + 4) + local_24);
        }
        *(undefined4 *)(*(int *)(this + 4) + 0xc + puVar4[1] * 0x1c) = 1;
        *(undefined4 *)(*(int *)(this + 4) + 0xc + local_24) = 0;
        RotateLeft(this,local_20);
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (param_1 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(param_1 * 0x1c + *(int *)(this + 4));
        }
        iVar3 = puVar4[2];
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_000d282c = -1;
          DAT_000d2830 = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar3 == -1) {
          local_28 = -0x1c;
          piVar5 = &Links(int)::s_Sentinel;
        }
        else {
          local_28 = iVar3 * 0x1c;
          piVar5 = (int *)(*(int *)(this + 4) + local_28);
        }
        local_20 = *piVar5;
        local_24 = local_20 * 0x1c;
      }
      if ((Links(int)::s_Sentinel == '\0') &&
         (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      puVar4 = &Links(int)::s_Sentinel;
      if (iVar3 != -1) {
        puVar4 = (undefined4 *)(*(int *)(this + 4) + local_28);
      }
      bVar6 = Links(int)::s_Sentinel == '\0';
      *(undefined4 *)(*(int *)(this + 4) + 0xc + local_24) = puVar4[3];
      *(undefined4 *)(*(int *)(this + 4) + 0xc + local_28) = 1;
      if ((bVar6) && (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
        Links(int)::s_Sentinel = -1;
        DAT_000d282c = -1;
        DAT_000d2830 = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      piVar5 = &Links(int)::s_Sentinel;
      if (local_20 != -1) {
        piVar5 = (int *)(*(int *)(this + 4) + local_24);
      }
      *(undefined4 *)(*(int *)(this + 4) + 0xc + *piVar5 * 0x1c) = 1;
      RotateRight(this,iVar3);
      iVar3 = *(int *)(this + 0x10);
      param_1 = iVar3;
    }
  }
  *(undefined4 *)(param_1 * 0x1c + *(int *)(this + 4) + 0xc) = 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)