L L4D2node

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 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)