CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>::Run
0x0049ded0 · 2013 bytes · __thiscall
_ZN18CParallelProcessorI24QueryCacheUpdateRecord_t21CFuncJobItemProcessorIS0_ELi1EE3RunEPS0_jiP11IThreadPool
Decompiled
undefined (5 params)
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CParallelProcessor<QueryCacheUpdateRecord_t, CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,
1>::Run(QueryCacheUpdateRecord_t*, unsigned int, int, IThreadPool*) */
void __thiscall
CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>::Run
(CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>
*this,QueryCacheUpdateRecord_t *param_1,uint param_2,int param_3,IThreadPool *param_4)
{
uint uVar1;
code *pcVar2;
int iVar3;
int *piVar4;
int iVar5;
CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>
*pCVar6;
undefined4 uVar7;
undefined4 *****pppppuVar8;
undefined4 *puVar9;
undefined4 uVar10;
int iVar11;
int iVar12;
uint uVar13;
QueryCacheUpdateRecord_t *pQVar14;
QueryCacheUpdateRecord_t *pQVar15;
QueryCacheUpdateRecord_t **ppQVar16;
int in_GS_OFFSET;
undefined4 uStack_e0;
QueryCacheUpdateRecord_t *local_dc;
undefined4 *****local_d8;
uint local_d4 [4];
char *local_c4 [5];
uint local_b0 [4];
undefined1 auStack_a0 [4];
CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_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;
QueryCacheUpdateRecord_t *local_54;
undefined4 *****local_50;
uint local_4c;
QueryCacheUpdateRecord_t *local_48;
undefined4 *****local_44;
uint local_40;
QueryCacheUpdateRecord_t *local_3c;
undefined4 local_38;
undefined4 local_34;
QueryCacheUpdateRecord_t *local_30;
undefined4 *****local_2c;
uint local_28;
QueryCacheUpdateRecord_t *local_24;
int local_20;
local_84 = (undefined4 ******)0x0;
local_20 = *(int *)(in_GS_OFFSET + 0x14);
local_80 = 0;
if (_g_Telemetry == (QueryCacheUpdateRecord_t *)0x0) {
local_54 = (QueryCacheUpdateRecord_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(QueryCacheUpdateRecord_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 = 0x49df66;
(**(code **)(_g_Telemetry + 0x50))();
local_54 = _g_Telemetry;
}
pQVar14 = _g_pThreadPool;
local_5c = local_84;
local_58 = local_80;
if (param_2 == 0) {
LAB_0049e65f:
ppQVar16 = &local_dc;
if (local_54 != (QueryCacheUpdateRecord_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 = 0x49e693;
local_dc = local_54;
(**(code **)(local_54 + 0x54))();
ppQVar16 = &local_dc;
}
}
else {
if (param_4 == (IThreadPool *)0x0) {
local_9c = this + 0xc;
LOCK();
*(QueryCacheUpdateRecord_t **)local_9c = param_1;
UNLOCK();
pQVar15 = param_1 + param_2 * 0x10;
*(QueryCacheUpdateRecord_t **)(this + 0x10) = pQVar15;
if (pQVar14 == (QueryCacheUpdateRecord_t *)0x0) {
local_7c = (undefined4 ******)0x0;
local_78 = 0;
if (_g_Telemetry == (QueryCacheUpdateRecord_t *)0x0) {
local_48 = (QueryCacheUpdateRecord_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 0049e5d1 to 0049e5d3 has its CatchHandler @ 0049e747 */
uStack_e0 = 0x49e5d4;
(**(code **)(_g_Telemetry + 0x50))();
pQVar15 = *(QueryCacheUpdateRecord_t **)(this + 0x10);
local_48 = _g_Telemetry;
}
local_50 = local_7c;
local_4c = local_78;
if (*(QueryCacheUpdateRecord_t **)(this + 0xc) < pQVar15) {
if (*(code **)(this + 4) != (code *)0x0) {
/* try { // try from 0049e5fa to 0049e628 has its CatchHandler @ 0049e6ff */
uStack_e0 = 0x49e5fc;
(**(code **)(this + 4))();
pQVar15 = *(QueryCacheUpdateRecord_t **)(this + 0x10);
}
while( true ) {
LOCK();
pQVar14 = *(QueryCacheUpdateRecord_t **)local_9c;
*(uint *)local_9c = *(uint *)local_9c + 0x10;
UNLOCK();
if (pQVar15 <= pQVar14) break;
uStack_e0 = 0x49e60d;
local_dc = pQVar14;
(**(code **)this)();
}
if (*(code **)(this + 8) != (code *)0x0) {
uStack_e0 = 0x49e629;
(**(code **)(this + 8))();
}
}
if (local_48 != (QueryCacheUpdateRecord_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 = 0x49e65c;
local_dc = local_48;
(**(code **)(local_48 + 0x54))();
}
goto LAB_0049e65f;
}
iVar12 = param_2 - 1;
if (param_3 < (int)(param_2 - 1)) {
iVar12 = param_3;
}
}
else {
LOCK();
*(QueryCacheUpdateRecord_t **)(this + 0xc) = param_1;
UNLOCK();
*(QueryCacheUpdateRecord_t **)(this + 0x10) = param_1 + param_2 * 0x10;
iVar12 = param_2 - 1;
pQVar14 = (QueryCacheUpdateRecord_t *)param_4;
if (param_3 < (int)(param_2 - 1)) {
iVar12 = param_3;
}
}
local_9c = this + 0xc;
/* try { // try from 0049dfb7 to 0049e0f5 has its CatchHandler @ 0049e747 */
uStack_e0 = 0x49dfba;
local_dc = pQVar14;
local_98 = (**(code **)(*(int *)pQVar14 + 0x1c))();
if (iVar12 <= local_98) {
local_98 = iVar12;
}
if (local_98 < 1) {
local_64 = (undefined4 ******)0x0;
local_60 = 0;
if (_g_Telemetry == (QueryCacheUpdateRecord_t *)0x0) {
local_24 = (QueryCacheUpdateRecord_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 0049e46c to 0049e46e has its CatchHandler @ 0049e747 */
uStack_e0 = 0x49e46f;
(**(code **)(_g_Telemetry + 0x50))();
local_24 = _g_Telemetry;
}
pQVar14 = *(QueryCacheUpdateRecord_t **)(this + 0x10);
local_2c = local_64;
local_28 = local_60;
if (*(QueryCacheUpdateRecord_t **)(this + 0xc) < pQVar14) {
if (*(code **)(this + 4) != (code *)0x0) {
/* try { // try from 0049e495 to 0049e4c0 has its CatchHandler @ 0049e720 */
uStack_e0 = 0x49e497;
(**(code **)(this + 4))();
pQVar14 = *(QueryCacheUpdateRecord_t **)(this + 0x10);
}
while( true ) {
LOCK();
pQVar15 = *(QueryCacheUpdateRecord_t **)local_9c;
*(uint *)local_9c = *(uint *)local_9c + 0x10;
UNLOCK();
if (pQVar14 <= pQVar15) break;
uStack_e0 = 0x49e4a5;
local_dc = pQVar15;
(**(code **)this)();
}
if (*(code **)(this + 8) != (code *)0x0) {
uStack_e0 = 0x49e4c1;
(**(code **)(this + 8))();
}
}
ppQVar16 = &local_dc;
if (local_24 != (QueryCacheUpdateRecord_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 = 0x49e4f4;
local_dc = local_24;
(**(code **)(local_24 + 0x54))();
ppQVar16 = &local_dc;
}
}
else {
iVar12 = local_98 + -1;
iVar5 = -((local_98 * 4 + 0xfU & 0xfffffff0) + 0x10);
local_90 = auStack_a0 + iVar5;
do {
pcVar2 = *(code **)(*(int *)pQVar14 + 0x54);
*(undefined4 *)((int)&local_dc + iVar5) = 0x1c;
local_94 = pcVar2;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e00f;
puVar9 = ::operator_new(*(uint *)((int)&local_dc + iVar5));
puVar9[3] = 1;
*puVar9 = &PTR_AddRef_00c1af08;
puVar9[2] = &DAT_00c1af24;
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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = pQVar14;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e05d;
(*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) = 0x49e07b;
(*pcVar2)();
iVar12 = iVar12 + -1;
} while (iVar12 != -1);
local_74 = (undefined4 ******)0x0;
local_70 = 0;
if (_g_Telemetry == (QueryCacheUpdateRecord_t *)0x0) {
local_3c = (QueryCacheUpdateRecord_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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = _g_Telemetry;
pcVar2 = *(code **)(_g_Telemetry + 0x50);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e0f6;
(*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 0049e11c to 0049e148 has its CatchHandler @ 0049e734 */
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e11e;
(*pcVar2)();
uVar13 = *(uint *)(this + 0x10);
}
while( true ) {
LOCK();
uVar1 = *(uint *)local_9c;
*(uint *)local_9c = *(uint *)local_9c + 0x10;
UNLOCK();
if (uVar13 <= uVar1) break;
*(uint *)((int)&local_dc + iVar5) = uVar1;
pcVar2 = *(code **)this;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e12d;
(*pcVar2)();
}
pcVar2 = *(code **)(this + 8);
if (pcVar2 != (code *)0x0) {
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e149;
(*pcVar2)();
}
}
pQVar14 = local_3c;
pppppuVar8 = local_44;
if (local_3c != (QueryCacheUpdateRecord_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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = pQVar14;
*(undefined4 ******)((int)local_d4 + iVar5 + -4) = pppppuVar8;
*(uint *)((int)local_d4 + iVar5) = uVar13;
pcVar2 = *(code **)(pQVar14 + 0x54);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e17c;
(*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 == (QueryCacheUpdateRecord_t *)0x0) {
local_30 = (QueryCacheUpdateRecord_t *)0x0;
}
else {
local_9c = *(CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>
**)(_g_Telemetry + 0x50);
local_94 = *(code **)(_g_Telemetry + 0x14);
iVar3 = *piVar4;
*(int **)((int)&local_dc + iVar5) = piVar4;
/* try { // try from 0049e1ba to 0049e237 has its CatchHandler @ 0049e747 */
pcVar2 = *(code **)(iVar3 + 0x10);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e1bd;
uVar10 = (*pcVar2)();
*(undefined4 *)((int)local_d4 + iVar5 + -4) = uVar10;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = _g_Telemetry;
pcVar2 = local_94;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e1d1;
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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = _g_Telemetry;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e238;
(*(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) = 0x49e258;
pthread_mutex_lock(*(pthread_mutex_t **)((int)&local_dc + iVar5));
puVar9 = (undefined4 *)*piVar4;
*(int **)((int)&local_dc + iVar5) = piVar4;
/* try { // try from 0049e25d to 0049e27b has its CatchHandler @ 0049e743 */
pcVar2 = (code *)*puVar9;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e25f;
(*pcVar2)();
if ((piVar4[3] == 1) || (piVar4[3] == 4)) {
local_44 = (undefined4 ******)0x0;
local_40 = 0;
if (_g_Telemetry == (QueryCacheUpdateRecord_t *)0x0) {
local_24 = (QueryCacheUpdateRecord_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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = _g_Telemetry;
/* try { // try from 0049e35d to 0049e35f has its CatchHandler @ 0049e743 */
pcVar2 = *(code **)(_g_Telemetry + 0x50);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e360;
(*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 0049e382 to 0049e39a has its CatchHandler @ 0049e6cc */
pcVar2 = *(code **)(iVar11 + 0x1c);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e385;
iVar11 = (*pcVar2)();
piVar4[3] = iVar11;
iVar11 = *piVar4;
*(int **)((int)&local_dc + iVar5) = piVar4;
pcVar2 = *(code **)(iVar11 + 0x20);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e390;
(*pcVar2)();
*(int **)((int)&local_dc + iVar5) = piVar4 + 0x11;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e39b;
CThreadEvent::Set();
pQVar14 = local_24;
pppppuVar8 = local_2c;
if (local_24 != (QueryCacheUpdateRecord_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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = pQVar14;
*(undefined4 ******)((int)local_d4 + iVar5 + -4) = pppppuVar8;
*(uint *)((int)local_d4 + iVar5) = uVar13;
pcVar2 = *(code **)(pQVar14 + 0x54);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e3d2;
(*pcVar2)();
}
}
iVar11 = *piVar4;
*(int **)((int)&local_dc + iVar5) = piVar4;
pcVar2 = *(code **)(iVar11 + 4);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e27c;
(*pcVar2)();
*(int **)((int)&local_dc + iVar5) = piVar4 + 5;
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e284;
pthread_mutex_unlock(*(pthread_mutex_t **)((int)&local_dc + iVar5));
pQVar14 = local_30;
uVar10 = local_38;
if (local_30 != (QueryCacheUpdateRecord_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;
*(QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5) = pQVar14;
*(undefined4 *)((int)local_d4 + iVar5 + -4) = uVar10;
*(undefined4 *)((int)local_d4 + iVar5) = uVar7;
pcVar2 = *(code **)(pQVar14 + 0x54);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e2b7;
(*pcVar2)();
}
}
iVar11 = *piVar4;
*(int **)((int)&local_dc + iVar5) = piVar4;
/* try { // try from 0049e2bc to 0049e2be has its CatchHandler @ 0049e747 */
pcVar2 = *(code **)(iVar11 + 4);
*(undefined4 *)((int)&uStack_e0 + iVar5) = 0x49e2bf;
(*pcVar2)();
iVar12 = iVar12 + 1;
ppQVar16 = (QueryCacheUpdateRecord_t **)((int)&local_dc + iVar5);
} while (iVar12 != local_98);
}
pQVar14 = local_54;
pppppuVar8 = local_5c;
if (local_54 != (QueryCacheUpdateRecord_t *)0x0) {
ppQVar16[5] = (QueryCacheUpdateRecord_t *)0x0;
uVar13 = local_58;
ppQVar16[4] = (QueryCacheUpdateRecord_t *)0x0;
ppQVar16[3] = (QueryCacheUpdateRecord_t *)0x0;
*ppQVar16 = pQVar14;
ppQVar16[1] = (QueryCacheUpdateRecord_t *)pppppuVar8;
ppQVar16[2] = (QueryCacheUpdateRecord_t *)uVar13;
pcVar2 = *(code **)(pQVar14 + 0x54);
ppQVar16[-1] = (QueryCacheUpdateRecord_t *)0x49e527;
(*pcVar2)();
}
}
if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
/* WARNING: Subroutine does not return */
*(undefined1 **)((int)ppQVar16 + -4) = &LAB_0049e734;
__stack_chk_fail();
}
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.