L L4D2node

CM_BoxLeafnums

0x00119b00 · 447 bytes · __cdecl

_Z14CM_BoxLeafnumsR10leafnums_tRK6VectorS3_i

Decompiled

undefined (4 params)

/* CM_BoxLeafnums(leafnums_t&, Vector const&, Vector const&, int) */

int CM_BoxLeafnums(leafnums_t *param_1,Vector *param_2,Vector *param_3,int param_4)

{
  undefined4 *puVar1;
  uint *puVar2;
  float *pfVar3;
  uint uVar4;
  uint uVar5;
  float fVar6;
  float fVar7;
  int local_1020;
  uint local_101c;
  uint local_1018;
  uint local_1014;
  uint auStack_1010 [1024];
  
  local_1014 = 0;
  local_1018 = 0;
  local_1020 = 0;
  local_101c = *(uint *)param_1;
  uVar5 = 0xffffffff;
  while( true ) {
    while (uVar4 = param_4, -1 < (int)uVar4) {
      puVar1 = (undefined4 *)(**(int **)(param_1 + 0xc) + uVar4 * 0xc);
      pfVar3 = (float *)*puVar1;
      fVar6 = (*(float *)param_2 * *pfVar3 - pfVar3[3]) + *(float *)(param_2 + 4) * pfVar3[1] +
              *(float *)(param_2 + 8) * pfVar3[2];
      fVar7 = ABS(pfVar3[1] * *(float *)(param_3 + 4)) + ABS(*pfVar3 * *(float *)param_3) +
              ABS(pfVar3[2] * *(float *)(param_3 + 8));
      uVar5 = uVar4;
      if (fVar6 < fVar7) {
        if (-fVar7 <= fVar6) {
          if (local_101c == 0xffffffff) {
            *(uint *)param_1 = uVar4;
            local_101c = uVar4;
          }
          auStack_1010[local_1014] = puVar1[1];
          local_1014 = local_1014 + 1 & 0x3ff;
        }
        param_4 = puVar1[2];
      }
      else {
        param_4 = puVar1[1];
      }
    }
    if (local_101c == 0xffffffff) {
      *(uint *)param_1 = uVar5;
    }
    if (local_1020 < *(int *)(param_1 + 4)) {
      *(uint *)(*(int *)(param_1 + 8) + local_1020 * 4) = ~uVar4;
      local_1020 = local_1020 + 1;
    }
    if (local_1018 == local_1014) break;
    puVar2 = auStack_1010 + local_1018;
    local_101c = *(uint *)param_1;
    local_1018 = local_1018 + 1 & 0x3ff;
    param_4 = *puVar2;
  }
  return local_1020;
}

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)