CUtlRBTree<CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::Node_t,int,CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::Node_t,int>,int>>::InsertRebalance
0x0074e5b0 · 2727 bytes · __thiscall
_ZN10CUtlRBTreeIN7CUtlMapIPKcN15CNetPropManager10PropInfo_tEiE6Node_tEiNS5_8CKeyLessE10CUtlMemoryI15UtlRBTreeNode_tIS6_iEiEE15InsertRebalanceEi
Decompiled
undefined (2 params)
/* CUtlRBTree<CUtlMap<char const*, CNetPropManager::PropInfo_t, int>::Node_t, int, CUtlMap<char
const*, CNetPropManager::PropInfo_t, int>::CKeyLess, CUtlMemory<UtlRBTreeNode_t<CUtlMap<char
const*, CNetPropManager::PropInfo_t, int>::Node_t, int>, int> >::InsertRebalance(int) */
void __thiscall
CUtlRBTree<CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::Node_t,int,CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::Node_t,int>,int>>
::InsertRebalance(CUtlRBTree<CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::Node_t,int,CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<char_const*,CNetPropManager::PropInfo_t,int>::Node_t,int>,int>>
*this,int param_1)
{
undefined4 *puVar1;
int iVar2;
undefined4 *puVar3;
int iVar4;
int iVar5;
int iVar6;
int *piVar7;
do {
iVar2 = *(int *)(this + 0x10);
if (param_1 == iVar2) {
LAB_0074e617:
*(undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4) + 0xc) = 1;
return;
}
if (Links(int)::s_Sentinel == '\0') {
iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar2 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (param_1 == -1) goto LAB_0074e954;
LAB_0074e5df:
puVar1 = (undefined4 *)(param_1 * 0x34 + *(int *)(this + 4));
}
else {
if (param_1 != -1) goto LAB_0074e5df;
LAB_0074e954:
puVar1 = &Links(int)::s_Sentinel;
}
iVar2 = puVar1[2];
if ((Links(int)::s_Sentinel == '\0') &&
(iVar6 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar6 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
if (iVar2 == -1) goto LAB_0074e920;
LAB_0074e600:
puVar1 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
}
else {
if (iVar2 != -1) goto LAB_0074e600;
LAB_0074e920:
puVar1 = &Links(int)::s_Sentinel;
}
if (puVar1[3] != 0) {
iVar2 = *(int *)(this + 0x10);
goto LAB_0074e617;
}
if (Links(int)::s_Sentinel == '\0') {
iVar2 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar2 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (param_1 == -1) goto LAB_0074e8c4;
LAB_0074e650:
puVar1 = (undefined4 *)(param_1 * 0x34 + *(int *)(this + 4));
}
else {
if (param_1 != -1) goto LAB_0074e650;
LAB_0074e8c4:
puVar1 = &Links(int)::s_Sentinel;
}
iVar2 = puVar1[2];
if (Links(int)::s_Sentinel == '\0') {
iVar6 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar6 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (iVar2 == -1) goto LAB_0074e88c;
LAB_0074e671:
puVar1 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
}
else {
if (iVar2 != -1) goto LAB_0074e671;
LAB_0074e88c:
puVar1 = &Links(int)::s_Sentinel;
}
iVar6 = puVar1[2];
if (Links(int)::s_Sentinel == '\0') {
iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar5 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
goto LAB_0074e689;
}
if (iVar2 == -1) goto LAB_0074e85a;
LAB_0074e692:
puVar1 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
}
else {
LAB_0074e689:
if (iVar2 != -1) goto LAB_0074e692;
LAB_0074e85a:
puVar1 = &Links(int)::s_Sentinel;
}
iVar5 = puVar1[2];
if (Links(int)::s_Sentinel == '\0') {
iVar4 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar4 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
goto LAB_0074e6a3;
}
if (iVar5 == -1) goto LAB_0074e820;
LAB_0074e6ac:
piVar7 = (int *)(iVar5 * 0x34 + *(int *)(this + 4));
}
else {
LAB_0074e6a3:
if (iVar5 != -1) goto LAB_0074e6ac;
LAB_0074e820:
piVar7 = &Links(int)::s_Sentinel;
}
if (iVar2 == *piVar7) {
if (Links(int)::s_Sentinel == '\0') {
iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar5 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
goto LAB_0074e6c2;
}
if (iVar6 == -1) goto LAB_0074ea82;
LAB_0074e6cb:
puVar1 = (undefined4 *)(iVar6 * 0x34 + *(int *)(this + 4));
}
else {
LAB_0074e6c2:
if (iVar6 != -1) goto LAB_0074e6cb;
LAB_0074ea82:
puVar1 = &Links(int)::s_Sentinel;
}
iVar5 = puVar1[1];
if ((Links(int)::s_Sentinel == '\0') &&
(iVar4 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar4 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
iVar4 = DAT_00f4389c;
if (iVar5 != -1) {
iVar4 = *(int *)(iVar5 * 0x34 + *(int *)(this + 4) + 0xc);
}
if (iVar4 == 0) {
LAB_0074e6f6:
*(undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4) + 0xc) = 1;
*(undefined4 *)(iVar5 * 0x34 + *(int *)(this + 4) + 0xc) = 1;
*(undefined4 *)(iVar6 * 0x34 + *(int *)(this + 4) + 0xc) = 0;
param_1 = iVar6;
}
else {
if (Links(int)::s_Sentinel == '\0') {
iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar5 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
goto LAB_0074e9df;
}
if (param_1 == -1) goto LAB_0074edda;
LAB_0074e9e8:
iVar5 = *(int *)(param_1 * 0x34 + *(int *)(this + 4) + 8);
if (Links(int)::s_Sentinel != '\0') goto LAB_0074e9f9;
LAB_0074edf0:
iVar4 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar4 == 0) goto LAB_0074e9f9;
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
if (iVar5 == -1) goto LAB_0074ee50;
LAB_0074ea02:
if (param_1 != *(int *)(iVar5 * 0x34 + *(int *)(this + 4) + 4)) goto LAB_0074ea18;
LAB_0074ee60:
RotateLeft(this,iVar2);
if ((Links(int)::s_Sentinel == '\0') &&
(iVar6 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar6 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (iVar2 == -1) {
puVar1 = &Links(int)::s_Sentinel;
}
else {
puVar1 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
}
iVar6 = puVar1[2];
if ((Links(int)::s_Sentinel == '\0') &&
(iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar5 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (iVar6 == -1) {
puVar1 = &Links(int)::s_Sentinel;
puVar3 = (undefined4 *)(*(int *)(this + 4) + -0x34);
}
else {
puVar3 = (undefined4 *)(iVar6 * 0x34 + *(int *)(this + 4));
puVar1 = puVar3;
}
iVar6 = puVar1[2];
}
else {
LAB_0074e9df:
if (param_1 != -1) goto LAB_0074e9e8;
LAB_0074edda:
iVar5 = DAT_00f43898;
if (Links(int)::s_Sentinel == '\0') goto LAB_0074edf0;
LAB_0074e9f9:
if (iVar5 != -1) goto LAB_0074ea02;
LAB_0074ee50:
if (param_1 == DAT_00f43894) goto LAB_0074ee60;
LAB_0074ea18:
puVar3 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
iVar2 = param_1;
}
puVar3[3] = 1;
*(undefined4 *)(iVar6 * 0x34 + *(int *)(this + 4) + 0xc) = 0;
RotateRight(this,iVar6);
param_1 = iVar2;
}
}
else {
if (Links(int)::s_Sentinel == '\0') {
iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar5 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
goto LAB_0074e740;
}
if (iVar6 == -1) goto LAB_0074eb2a;
LAB_0074e749:
piVar7 = (int *)(iVar6 * 0x34 + *(int *)(this + 4));
}
else {
LAB_0074e740:
if (iVar6 != -1) goto LAB_0074e749;
LAB_0074eb2a:
piVar7 = &Links(int)::s_Sentinel;
}
iVar5 = *piVar7;
if ((Links(int)::s_Sentinel == '\0') &&
(iVar4 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar4 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
if (iVar5 == -1) goto LAB_0074eaf0;
LAB_0074e762:
puVar1 = (undefined4 *)(iVar5 * 0x34 + *(int *)(this + 4));
}
else {
if (iVar5 != -1) goto LAB_0074e762;
LAB_0074eaf0:
puVar1 = &Links(int)::s_Sentinel;
}
if (puVar1[3] == 0) goto LAB_0074e6f6;
if (Links(int)::s_Sentinel == '\0') {
iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar5 != 0) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
goto LAB_0074e77e;
}
if (param_1 == -1) goto LAB_0074ed2a;
LAB_0074e787:
iVar5 = *(int *)(param_1 * 0x34 + *(int *)(this + 4) + 8);
if (Links(int)::s_Sentinel != '\0') goto LAB_0074e798;
LAB_0074ed40:
iVar4 = __cxa_guard_acquire(&Links(int)::s_Sentinel);
if (iVar4 == 0) goto LAB_0074e798;
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
if (iVar5 == -1) goto LAB_0074eda0;
LAB_0074e7a1:
piVar7 = (int *)(iVar5 * 0x34 + *(int *)(this + 4));
}
else {
LAB_0074e77e:
if (param_1 != -1) goto LAB_0074e787;
LAB_0074ed2a:
iVar5 = DAT_00f43898;
if (Links(int)::s_Sentinel == '\0') goto LAB_0074ed40;
LAB_0074e798:
if (iVar5 != -1) goto LAB_0074e7a1;
LAB_0074eda0:
piVar7 = &Links(int)::s_Sentinel;
}
if (param_1 == *piVar7) {
RotateRight(this,iVar2);
if ((Links(int)::s_Sentinel == '\0') &&
(iVar6 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar6 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (iVar2 == -1) {
puVar1 = &Links(int)::s_Sentinel;
}
else {
puVar1 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
}
iVar6 = puVar1[2];
if ((Links(int)::s_Sentinel == '\0') &&
(iVar5 = __cxa_guard_acquire(&Links(int)::s_Sentinel), iVar5 != 0)) {
Links(int)::s_Sentinel = 0xffffffff;
DAT_00f43894 = -1;
DAT_00f43898 = -1;
__cxa_guard_release(&Links(int)::s_Sentinel);
}
if (iVar6 == -1) {
puVar1 = &Links(int)::s_Sentinel;
puVar3 = (undefined4 *)(*(int *)(this + 4) + -0x34);
}
else {
puVar3 = (undefined4 *)(iVar6 * 0x34 + *(int *)(this + 4));
puVar1 = puVar3;
}
iVar6 = puVar1[2];
}
else {
puVar3 = (undefined4 *)(iVar2 * 0x34 + *(int *)(this + 4));
iVar2 = param_1;
}
puVar3[3] = 1;
*(undefined4 *)(iVar6 * 0x34 + *(int *)(this + 4) + 0xc) = 0;
RotateLeft(this,iVar6);
param_1 = iVar2;
}
} while( true );
}
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.