L L4D2node

CUtlPriorityQueue<GCSDK::CJobMgr::JobSleeping_t,CDefUtlPriorityQueueLessFunc<GCSDK::CJobMgr::JobSleeping_t>,CUtlMemory<GCSDK::CJobMgr::JobSleeping_t,int>>::RemoveAtHead

0x000632d0 · 275 bytes · __thiscall

_ZN17CUtlPriorityQueueIN5GCSDK7CJobMgr13JobSleeping_tE28CDefUtlPriorityQueueLessFuncIS2_E10CUtlMemoryIS2_iEE12RemoveAtHeadEv

Decompiled

undefined (1 param)

/* CUtlPriorityQueue<GCSDK::CJobMgr::JobSleeping_t,
   CDefUtlPriorityQueueLessFunc<GCSDK::CJobMgr::JobSleeping_t>,
   CUtlMemory<GCSDK::CJobMgr::JobSleeping_t, int> >::RemoveAtHead() */

void __thiscall
CUtlPriorityQueue<GCSDK::CJobMgr::JobSleeping_t,CDefUtlPriorityQueueLessFunc<GCSDK::CJobMgr::JobSleeping_t>,CUtlMemory<GCSDK::CJobMgr::JobSleeping_t,int>>
::RemoveAtHead(CUtlPriorityQueue<GCSDK::CJobMgr::JobSleeping_t,CDefUtlPriorityQueueLessFunc<GCSDK::CJobMgr::JobSleeping_t>,CUtlMemory<GCSDK::CJobMgr::JobSleeping_t,int>>
               *this)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  char cVar6;
  int iVar7;
  int iVar8;
  
  iVar8 = *(int *)(this + 0xc);
  if (0 < iVar8) {
    iVar7 = iVar8 + -1;
    iVar8 = 0;
    if (iVar7 != 0) {
      puVar4 = *(undefined4 **)this;
      puVar2 = puVar4 + iVar7 * 6;
      *puVar4 = *puVar2;
      puVar4[1] = puVar2[1];
      puVar4[2] = puVar2[2];
      puVar4[3] = puVar2[3];
      puVar4[4] = puVar2[4];
      puVar4[5] = puVar2[5];
      iVar8 = *(int *)(this + 0xc) + -1;
    }
    *(int *)(this + 0xc) = iVar8;
  }
  if ((iVar8 != 0) && (0 < iVar8 / 2)) {
    iVar7 = 0;
    do {
      iVar3 = iVar7 * 2 + 2;
      iVar1 = iVar7 * 2 + 1;
      iVar5 = iVar7;
      if ((iVar1 < iVar8) &&
         (cVar6 = (**(code **)(this + 0x14))
                            (*(int *)this + iVar7 * 0x18,*(int *)this + iVar1 * 0x18), iVar5 = iVar1
         , cVar6 == '\0')) {
        iVar5 = iVar7;
      }
      if ((iVar3 < iVar8) &&
         (cVar6 = (**(code **)(this + 0x14))
                            (*(int *)this + iVar5 * 0x18,*(int *)this + iVar3 * 0x18), cVar6 != '\0'
         )) {
        iVar5 = iVar3;
      }
    } while ((iVar5 != iVar7) && (Swap(this,iVar7,iVar5), iVar7 = iVar5, iVar5 < iVar8 / 2));
  }
  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)