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 intoaddons/sourcemod/gamedata/<your_plugin>.txt
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.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.