L L4D2node

mainGtU

0x00091850 · 361 bytes · processEntry

_ZL7mainGtUjjPhPtjPi.part.0

Decompiled

undefined (6 params)

/* mainGtU(unsigned int, unsigned int, unsigned char*, unsigned short*, unsigned int, int*) [clone
   .part.0] */

bool processEntry
mainGtU(uint param_1,uint param_2,uchar *param_3,ushort *param_4,uint param_5,int *param_6)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  int iVar4;
  int in_EAX;
  ushort *puVar5;
  int in_ECX;
  ushort *puVar6;
  bool bVar7;
  bool bVar8;
  ushort *local_18;
  
  bVar1 = *(byte *)(in_ECX + 0xb + param_1);
  bVar2 = *(byte *)(in_ECX + 0xb + in_EAX);
  bVar7 = bVar2 < bVar1;
  bVar8 = bVar2 == bVar1;
  if (bVar8) {
    puVar5 = (ushort *)(in_EAX + 0xc);
    puVar6 = (ushort *)(param_1 + 0xc);
    local_18 = param_4 + 4;
    do {
      bVar7 = *(byte *)(in_ECX + (int)puVar5) < *(byte *)(in_ECX + (int)puVar6);
      bVar8 = *(byte *)(in_ECX + (int)puVar5) == *(byte *)(in_ECX + (int)puVar6);
      if (!bVar8) goto LAB_00091980;
      iVar3 = (int)puVar6 * 2;
      iVar4 = (int)puVar5 * 2;
      bVar7 = *(ushort *)(param_3 + iVar4) < *(ushort *)(param_3 + iVar3);
      bVar8 = *(ushort *)(param_3 + iVar4) == *(ushort *)(param_3 + iVar3);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 1 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 1 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 2) < *(ushort *)(param_3 + iVar3 + 2);
      bVar8 = *(ushort *)(param_3 + iVar4 + 2) == *(ushort *)(param_3 + iVar3 + 2);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 2 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 2 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 4) < *(ushort *)(param_3 + iVar3 + 4);
      bVar8 = *(ushort *)(param_3 + iVar4 + 4) == *(ushort *)(param_3 + iVar3 + 4);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 3 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 3 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 6) < *(ushort *)(param_3 + iVar3 + 6);
      bVar8 = *(ushort *)(param_3 + iVar4 + 6) == *(ushort *)(param_3 + iVar3 + 6);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 4 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 4 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 8) < *(ushort *)(param_3 + iVar3 + 8);
      bVar8 = *(ushort *)(param_3 + iVar4 + 8) == *(ushort *)(param_3 + iVar3 + 8);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 5 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 5 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 10) < *(ushort *)(param_3 + iVar3 + 10);
      bVar8 = *(ushort *)(param_3 + iVar4 + 10) == *(ushort *)(param_3 + iVar3 + 10);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 6 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 6 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 0xc) < *(ushort *)(param_3 + iVar3 + 0xc);
      bVar8 = *(ushort *)(param_3 + iVar4 + 0xc) == *(ushort *)(param_3 + iVar3 + 0xc);
      if (!bVar8) goto LAB_00091980;
      bVar1 = *(byte *)(in_ECX + 7 + (int)puVar6);
      bVar2 = *(byte *)(in_ECX + 7 + (int)puVar5);
      bVar7 = bVar2 < bVar1;
      bVar8 = bVar2 == bVar1;
      if (!bVar8) goto LAB_00091980;
      bVar7 = *(ushort *)(param_3 + iVar4 + 0xe) < *(ushort *)(param_3 + iVar3 + 0xe);
      bVar8 = *(ushort *)(param_3 + iVar4 + 0xe) == *(ushort *)(param_3 + iVar3 + 0xe);
      if (!bVar8) goto LAB_00091980;
      puVar5 = puVar5 + 4;
      puVar6 = puVar6 + 4;
      if (param_4 <= puVar5) {
        puVar5 = (ushort *)((int)puVar5 - (int)param_4);
      }
      if (param_4 <= puVar6) {
        puVar6 = (ushort *)((int)puVar6 - (int)param_4);
      }
      *(int *)param_5 = *(int *)param_5 + -1;
      local_18 = local_18 + -4;
    } while (-1 < (int)local_18);
    bVar7 = false;
  }
  else {
LAB_00091980:
    bVar7 = !bVar7 && !bVar8;
  }
  return bVar7;
}

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)