UpdateQueryCache
0x0049da90 · 324 bytes · unknown
_Z16UpdateQueryCachev
Decompiled
undefined (0 params)
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* UpdateQueryCache() */
void UpdateQueryCache(void)
{
int iVar1;
QueryCacheUpdateRecord_t *pQVar2;
undefined4 *puVar3;
undefined1 *puVar4;
undefined1 *puVar5;
int iVar6;
code *local_a4;
code *local_a0;
code *local_9c;
undefined4 local_98;
undefined4 local_94;
char *local_90;
undefined4 local_8c [2];
undefined1 local_84 [8];
int local_7c [25];
int local_18;
pQVar2 = (QueryCacheUpdateRecord_t *)local_8c;
puVar4 = local_84;
do {
puVar5 = puVar4 + 0x10;
*(undefined4 *)(puVar4 + ((int)local_8c - (int)pQVar2)) = 0;
*(undefined4 *)(puVar4 + (int)(local_84 + (-4 - (int)pQVar2))) = 0;
puVar4 = puVar5;
} while (puVar5 != &stack0xfffffffc);
local_8c[0] = 0;
puVar3 = local_8c + 1;
iVar1 = 0x100;
do {
iVar6 = iVar1;
puVar3[3] = iVar6;
*puVar3 = 0x100;
puVar3 = puVar3 + 4;
iVar1 = iVar6 + 0x100;
} while (iVar6 + 0x100 != 0x800);
local_18 = 0x800 - iVar6;
local_94 = 0;
LOCK();
local_98 = 0;
UNLOCK();
local_90 = "ProcessQueryCacheUpdate";
local_a4 = ProcessQueryCacheUpdate;
local_a0 = PreUpdateQueryCache;
local_9c = PostUpdateQueryCache;
CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>::
Run((CParallelProcessor<QueryCacheUpdateRecord_t,CFuncJobItemProcessor<QueryCacheUpdateRecord_t>,1>
*)&local_a4,pQVar2,8,-(uint)(*(int *)(sv_disable_querycache._28_4_ + 0x30) == 0) & 0x7fffffff
,(IThreadPool *)0x0);
do {
if (*(int *)(pQVar2 + 8) != 0) {
**(int **)(pQVar2 + 0xc) = s_VictimList;
if (s_VictimList != 0) {
*(undefined4 *)(s_VictimList + 4) = *(undefined4 *)(pQVar2 + 0xc);
}
s_VictimList = *(int *)(pQVar2 + 8);
}
pQVar2 = pQVar2 + 0x10;
} while (pQVar2 != (QueryCacheUpdateRecord_t *)&stack0xfffffff4);
return;
}
SourceMod gamedata
paste intoaddons/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.
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.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.