L L4D2node

CUtlRBTree<CUtlMap<char_const*,ConceptHistory_t,int>::Node_t,int,CUtlMap<char_const*,ConceptHistory_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,ConceptHistory_t,int>::Node_t,int>,int>>::RemoveRebalance

0x005d7590 · 4834 bytes · __thiscall

_ZN10CUtlRBTreeIN7CUtlMapIPKc16ConceptHistory_tiE6Node_tEiNS4_8CKeyLessE10CUtlMemoryI15UtlRBTreeNode_tIS5_iEiEE15RemoveRebalanceEi

Decompiled

undefined (2 params)

/* WARNING: Type propagation algorithm not settling */
/* CUtlRBTree<CUtlMap<char const*, ConceptHistory_t, int>::Node_t, int, CUtlMap<char const*,
   ConceptHistory_t, int>::CKeyLess, CUtlMemory<UtlRBTreeNode_t<CUtlMap<char const*,
   ConceptHistory_t, int>::Node_t, int>, int> >::RemoveRebalance(int) */

void __thiscall
CUtlRBTree<CUtlMap<char_const*,ConceptHistory_t,int>::Node_t,int,CUtlMap<char_const*,ConceptHistory_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,ConceptHistory_t,int>::Node_t,int>,int>>
::RemoveRebalance(CUtlRBTree<CUtlMap<char_const*,ConceptHistory_t,int>::Node_t,int,CUtlMap<char_const*,ConceptHistory_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,ConceptHistory_t,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_00f21f78 = -1;
      DAT_00f21f7c = 0xffffffff;
      __cxa_guard_release(&Links(int)::s_Sentinel);
    }
    iVar3 = DAT_00f21f80;
    if (param_1 != -1) {
      iVar3 = *(int *)(param_1 * 0xd4 + *(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_00f21f78 = -1;
        DAT_00f21f7c = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      if (param_1 == -1) goto LAB_005d79ad;
LAB_005d7659:
      puVar4 = (undefined4 *)(param_1 * 0xd4 + *(int *)(this + 4));
    }
    else {
      if (param_1 != -1) goto LAB_005d7659;
LAB_005d79ad:
      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_00f21f78 = -1;
        DAT_00f21f7c = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      if (iVar3 == -1) goto LAB_005d7814;
LAB_005d7679:
      if (param_1 != *(int *)(iVar3 * 0xd4 + *(int *)(this + 4))) goto LAB_005d768d;
LAB_005d7828:
      if (Links(int)::s_Sentinel == '\0') {
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar3 == -1) goto LAB_005d7d74;
LAB_005d7839:
        local_20 = *(int *)(iVar3 * 0xd4 + *(int *)(this + 4) + 4);
        if (Links(int)::s_Sentinel != '\0') goto LAB_005d7850;
LAB_005d7d90:
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 == 0) goto LAB_005d7850;
        Links(int)::s_Sentinel = -1;
        DAT_00f21f78 = -1;
        DAT_00f21f7c = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
        if (local_20 == -1) goto LAB_005d7de0;
LAB_005d785c:
        if (*(int *)(local_20 * 0xd4 + *(int *)(this + 4) + 0xc) != 0) goto LAB_005d7870;
LAB_005d7df0:
        *(undefined4 *)(local_20 * 0xd4 + *(int *)(this + 4) + 0xc) = 1;
        *(undefined4 *)(iVar3 * 0xd4 + *(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_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (param_1 == -1) goto LAB_005d83a5;
LAB_005d7e38:
          puVar4 = (undefined4 *)(param_1 * 0xd4 + *(int *)(this + 4));
        }
        else {
          if (param_1 != -1) goto LAB_005d7e38;
LAB_005d83a5:
          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_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (iVar3 == -1) goto LAB_005d8374;
LAB_005d7e58:
          puVar4 = (undefined4 *)(iVar3 * 0xd4 + *(int *)(this + 4));
        }
        else {
          if (iVar3 != -1) goto LAB_005d7e58;
LAB_005d8374:
          puVar4 = &Links(int)::s_Sentinel;
        }
        local_20 = puVar4[1];
        if (Links(int)::s_Sentinel == '\0') goto LAB_005d7e6f;
LAB_005d787f:
        if (local_20 != -1) goto LAB_005d788b;
LAB_005d7e96:
        iVar2 = Links(int)::s_Sentinel;
        if (Links(int)::s_Sentinel == '\0') goto LAB_005d7ea8;
LAB_005d789e:
        if (iVar2 != -1) goto LAB_005d78a7;
LAB_005d7ed2:
        if (DAT_00f21f80 == 1) goto LAB_005d7ee1;
joined_r0x005d7f2e:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) {
          local_24 = -0xd4;
          iVar2 = DAT_00f21f78;
          if (Links(int)::s_Sentinel != '\0') goto LAB_005d78e7;
LAB_005d7f76:
          iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
          if (iVar1 != 0) {
            Links(int)::s_Sentinel = -1;
            DAT_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
            goto LAB_005d78e7;
          }
          if (iVar2 != -1) goto LAB_005d78f0;
LAB_005d7fa0:
          if (DAT_00f21f80 == 1) goto LAB_005d7fb0;
LAB_005d7903:
          local_28 = iVar3 * 0xd4;
        }
        else {
          local_24 = local_20 * 0xd4;
          iVar2 = *(int *)(*(int *)(this + 4) + local_24 + 4);
          if (Links(int)::s_Sentinel == '\0') goto LAB_005d7f76;
LAB_005d78e7:
          if (iVar2 == -1) goto LAB_005d7fa0;
LAB_005d78f0:
          if (*(int *)(iVar2 * 0xd4 + *(int *)(this + 4) + 0xc) != 1) goto LAB_005d7903;
LAB_005d7fb0:
          if ((Links(int)::s_Sentinel == '\0') &&
             (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
            Links(int)::s_Sentinel = -1;
            DAT_00f21f78 = -1;
            DAT_00f21f7c = 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 * 0xd4) = 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_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (param_1 == -1) {
            puVar4 = &Links(int)::s_Sentinel;
          }
          else {
            puVar4 = (undefined4 *)(param_1 * 0xd4 + *(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_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (iVar3 == -1) {
            local_28 = -0xd4;
            puVar4 = &Links(int)::s_Sentinel;
          }
          else {
            local_28 = iVar3 * 0xd4;
            puVar4 = (undefined4 *)(*(int *)(this + 4) + local_28);
          }
          local_20 = puVar4[1];
          local_24 = local_20 * 0xd4;
        }
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 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_00f21f78 = -1;
          DAT_00f21f7c = 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] * 0xd4) = 1;
        RotateLeft(this,iVar3);
        iVar3 = *(int *)(this + 0x10);
        param_1 = iVar3;
      }
      else {
        if (iVar3 != -1) goto LAB_005d7839;
LAB_005d7d74:
        local_20 = DAT_00f21f78;
        if (Links(int)::s_Sentinel == '\0') goto LAB_005d7d90;
LAB_005d7850:
        if (local_20 != -1) goto LAB_005d785c;
LAB_005d7de0:
        if (DAT_00f21f80 == 0) goto LAB_005d7df0;
LAB_005d7870:
        if (Links(int)::s_Sentinel != '\0') goto LAB_005d787f;
LAB_005d7e6f:
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) goto LAB_005d7e96;
LAB_005d788b:
        iVar2 = *(int *)(local_20 * 0xd4 + *(int *)(this + 4));
        if (Links(int)::s_Sentinel != '\0') goto LAB_005d789e;
LAB_005d7ea8:
        iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar1 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
          goto LAB_005d789e;
        }
        if (iVar2 == -1) goto LAB_005d7ed2;
LAB_005d78a7:
        if (*(int *)(iVar2 * 0xd4 + *(int *)(this + 4) + 0xc) != 1) goto joined_r0x005d7f2e;
LAB_005d7ee1:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(local_20 * 0xd4 + *(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_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar2 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(iVar2 * 0xd4 + *(int *)(this + 4));
        }
        if (puVar4[3] != 1) goto joined_r0x005d7f2e;
LAB_005d81d0:
        param_1 = iVar3;
        if (local_20 == -1) {
          iVar3 = *(int *)(this + 0x10);
        }
        else {
          *(undefined4 *)(local_20 * 0xd4 + *(int *)(this + 4) + 0xc) = 0;
          iVar3 = *(int *)(this + 0x10);
        }
      }
    }
    else {
      if (iVar3 != -1) goto LAB_005d7679;
LAB_005d7814:
      if (param_1 == Links(int)::s_Sentinel) goto LAB_005d7828;
LAB_005d768d:
      if ((Links(int)::s_Sentinel == '\0') &&
         (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
        Links(int)::s_Sentinel = -1;
        DAT_00f21f78 = -1;
        DAT_00f21f7c = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      local_20 = Links(int)::s_Sentinel;
      if (iVar3 != -1) {
        local_20 = *(int *)(iVar3 * 0xd4 + *(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_00f21f78 = -1;
        DAT_00f21f7c = 0xffffffff;
        __cxa_guard_release(&Links(int)::s_Sentinel);
      }
      iVar2 = DAT_00f21f80;
      if (local_20 != -1) {
        iVar2 = *(int *)(local_20 * 0xd4 + *(int *)(this + 4) + 0xc);
      }
      if (iVar2 == 0) {
        *(undefined4 *)(local_20 * 0xd4 + *(int *)(this + 4) + 0xc) = 1;
        *(undefined4 *)(iVar3 * 0xd4 + *(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_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (param_1 == -1) goto LAB_005d81c5;
LAB_005d7cb8:
          puVar4 = (undefined4 *)(param_1 * 0xd4 + *(int *)(this + 4));
        }
        else {
          if (param_1 != -1) goto LAB_005d7cb8;
LAB_005d81c5:
          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_00f21f78 = -1;
            DAT_00f21f7c = 0xffffffff;
            __cxa_guard_release(&Links(int)::s_Sentinel);
          }
          if (iVar3 == -1) goto LAB_005d8194;
LAB_005d7cd8:
          piVar5 = (int *)(iVar3 * 0xd4 + *(int *)(this + 4));
        }
        else {
          if (iVar3 != -1) goto LAB_005d7cd8;
LAB_005d8194:
          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_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) goto LAB_005d7bc7;
LAB_005d76ef:
        puVar4 = (undefined4 *)(local_20 * 0xd4 + *(int *)(this + 4));
      }
      else {
        if (local_20 != -1) goto LAB_005d76ef;
LAB_005d7bc7:
        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_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
          goto LAB_005d7703;
        }
        if (iVar2 == -1) goto LAB_005d79ea;
LAB_005d770c:
        if (*(int *)(iVar2 * 0xd4 + *(int *)(this + 4) + 0xc) != 1) goto LAB_005d771f;
LAB_005d7a00:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        iVar2 = Links(int)::s_Sentinel;
        if (local_20 != -1) {
          iVar2 = *(int *)(local_20 * 0xd4 + *(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_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar2 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(iVar2 * 0xd4 + *(int *)(this + 4));
        }
        if (puVar4[3] == 1) goto LAB_005d81d0;
        if (Links(int)::s_Sentinel == '\0') goto LAB_005d7a58;
LAB_005d7727:
        if (local_20 != -1) goto LAB_005d7733;
LAB_005d7a7f:
        local_24 = -0xd4;
        iVar2 = Links(int)::s_Sentinel;
        if (Links(int)::s_Sentinel == '\0') goto LAB_005d7a98;
LAB_005d774b:
        if (iVar2 != -1) goto LAB_005d7754;
LAB_005d7ac2:
        if (DAT_00f21f80 == 1) goto LAB_005d7ad8;
LAB_005d7767:
        local_28 = iVar3 * 0xd4;
      }
      else {
LAB_005d7703:
        if (iVar2 != -1) goto LAB_005d770c;
LAB_005d79ea:
        if (DAT_00f21f80 == 1) goto LAB_005d7a00;
LAB_005d771f:
        if (Links(int)::s_Sentinel != '\0') goto LAB_005d7727;
LAB_005d7a58:
        iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar2 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (local_20 == -1) goto LAB_005d7a7f;
LAB_005d7733:
        local_24 = local_20 * 0xd4;
        iVar2 = *(int *)(*(int *)(this + 4) + local_24);
        if (Links(int)::s_Sentinel != '\0') goto LAB_005d774b;
LAB_005d7a98:
        iVar1 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
        if (iVar1 != 0) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
          goto LAB_005d774b;
        }
        if (iVar2 == -1) goto LAB_005d7ac2;
LAB_005d7754:
        if (*(int *)(iVar2 * 0xd4 + *(int *)(this + 4) + 0xc) != 1) goto LAB_005d7767;
LAB_005d7ad8:
        if ((Links(int)::s_Sentinel == '\0') &&
           (iVar3 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar3 != 0)) {
          Links(int)::s_Sentinel = -1;
          DAT_00f21f78 = -1;
          DAT_00f21f7c = 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] * 0xd4) = 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_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (param_1 == -1) {
          puVar4 = &Links(int)::s_Sentinel;
        }
        else {
          puVar4 = (undefined4 *)(param_1 * 0xd4 + *(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_00f21f78 = -1;
          DAT_00f21f7c = 0xffffffff;
          __cxa_guard_release(&Links(int)::s_Sentinel);
        }
        if (iVar3 == -1) {
          local_28 = -0xd4;
          piVar5 = &Links(int)::s_Sentinel;
        }
        else {
          local_28 = iVar3 * 0xd4;
          piVar5 = (int *)(*(int *)(this + 4) + local_28);
        }
        local_20 = *piVar5;
        local_24 = local_20 * 0xd4;
      }
      if ((Links(int)::s_Sentinel == '\0') &&
         (iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar2 != 0)) {
        Links(int)::s_Sentinel = -1;
        DAT_00f21f78 = -1;
        DAT_00f21f7c = 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_00f21f78 = -1;
        DAT_00f21f7c = 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 * 0xd4) = 1;
      RotateRight(this,iVar3);
      iVar3 = *(int *)(this + 0x10);
      param_1 = iVar3;
    }
  }
  *(undefined4 *)(param_1 * 0xd4 + *(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)