L L4D2node

IsBoxIntersectingRay

0x0058a000 · 261 bytes · __regparm2

_Z20IsBoxIntersectingRayRK6VectorS1_S1_S1_S1_f

Decompiled

undefined (6 params)

/* IsBoxIntersectingRay(Vector const&, Vector const&, Vector const&, Vector const&, Vector const&,
   float) */

undefined4 __regparm2
IsBoxIntersectingRay
          (Vector *param_1,Vector *param_2,Vector *param_3,Vector *param_4,Vector *param_5,
          float param_6)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  float fVar10;
  float fVar12;
  float fVar13;
  float fVar14;
  undefined1 auVar11 [16];
  float fVar15;
  float fVar19;
  float fVar20;
  float fVar21;
  undefined1 auVar16 [16];
  undefined1 auVar17 [16];
  undefined1 auVar18 [16];
  undefined1 auVar22 [16];
  undefined1 auVar23 [16];
  undefined1 auVar24 [16];
  undefined1 auVar25 [16];
  undefined1 auVar26 [16];
  undefined1 auVar27 [16];
  float *in_stack_00000014;
  float in_stack_00000018;
  
  fVar15 = *(float *)param_3 - *(float *)param_5;
  fVar19 = *(float *)(param_3 + 4) - *(float *)(param_5 + 4);
  fVar20 = *(float *)(param_3 + 8) - *(float *)(param_5 + 8);
  fVar21 = *(float *)(param_3 + 0xc) - *(float *)(param_5 + 0xc);
  uVar2 = -(uint)(*(float *)param_6 < fVar15);
  uVar4 = -(uint)(*(float *)((int)param_6 + 4) < fVar19);
  uVar6 = -(uint)(*(float *)((int)param_6 + 8) < fVar20);
  fVar10 = *(float *)param_4 - *(float *)param_5;
  fVar12 = *(float *)(param_4 + 4) - *(float *)(param_5 + 4);
  fVar13 = *(float *)(param_4 + 8) - *(float *)(param_5 + 8);
  fVar14 = *(float *)(param_4 + 0xc) - *(float *)(param_5 + 0xc);
  uVar3 = -(uint)(fVar10 < *(float *)param_6);
  uVar5 = -(uint)(fVar12 < *(float *)((int)param_6 + 4));
  uVar7 = -(uint)(fVar13 < *(float *)((int)param_6 + 8));
  auVar9._0_4_ = -(uint)((float)0 < fVar15) & uVar2 | -(uint)(fVar10 < (float)0) & uVar3;
  auVar9._4_4_ = -(uint)((float)0 < fVar19) & uVar4 | -(uint)(fVar12 < (float)0) & uVar5;
  auVar9._8_4_ = -(uint)((float)0 < fVar20) & uVar6 | -(uint)(fVar13 < (float)0) & uVar7;
  auVar9._12_4_ = 0;
  iVar1 = movmskps(param_2,auVar9);
  if (iVar1 != 0) {
    return 0;
  }
  uVar2 = uVar2 ^ -(uint)((float)0 < fVar15) | uVar3 ^ -(uint)(fVar10 < (float)0);
  uVar3 = uVar4 ^ -(uint)((float)0 < fVar19) | uVar5 ^ -(uint)(fVar12 < (float)0);
  uVar4 = uVar6 ^ -(uint)((float)0 < fVar20) | uVar7 ^ -(uint)(fVar13 < (float)0);
  uVar5 = -(uint)((float)0 < fVar21 != *(float *)((int)param_6 + 0xc) < fVar21 ||
                 fVar14 < *(float *)((int)param_6 + 0xc) != fVar14 < (float)0);
  auVar17._0_8_ = CONCAT44(~uVar3,~uVar2) & 0xff7fffffff7fffff;
  auVar17._8_4_ = ~uVar4 & 0xff7fffff;
  auVar17._12_4_ = ~uVar5 & 0xff7fffff;
  auVar16._0_4_ = (uint)((fVar15 - in_stack_00000018) * *in_stack_00000014) & uVar2;
  auVar16._4_4_ = (uint)((fVar19 - in_stack_00000018) * in_stack_00000014[1]) & uVar3;
  auVar16._8_4_ = (uint)((fVar20 - in_stack_00000018) * in_stack_00000014[2]) & uVar4;
  auVar16._12_4_ = (uint)((fVar21 - in_stack_00000018) * in_stack_00000014[3]) & uVar5;
  auVar23._0_8_ = CONCAT44(~uVar3,~uVar2) & 0x7f7fffff7f7fffff;
  auVar23._8_4_ = ~uVar4 & 0x7f7fffff;
  auVar23._12_4_ = ~uVar5 & 0x7f7fffff;
  auVar11._0_4_ = (uint)((fVar10 + in_stack_00000018) * *in_stack_00000014) & uVar2;
  auVar11._4_4_ = (uint)((fVar12 + in_stack_00000018) * in_stack_00000014[1]) & uVar3;
  auVar11._8_4_ = (uint)((fVar13 + in_stack_00000018) * in_stack_00000014[2]) & uVar4;
  auVar11._12_4_ = (uint)((fVar14 + in_stack_00000018) * in_stack_00000014[3]) & uVar5;
  auVar26 = minps(auVar16 | auVar17,auVar11 | auVar23);
  auVar17 = maxps(auVar16 | auVar17,auVar11 | auVar23);
  auVar8._0_12_ = auVar26._4_12_;
  auVar8._12_4_ = auVar26._0_4_;
  auVar9 = maxps(auVar8,auVar26);
  auVar22._0_12_ = auVar17._4_12_;
  auVar22._12_4_ = auVar17._0_4_;
  auVar23 = minps(auVar22,auVar17);
  auVar27._0_8_ = auVar26._8_8_;
  auVar27._8_4_ = auVar26._0_4_;
  auVar27._12_4_ = auVar26._4_4_;
  auVar18._0_8_ = auVar17._8_8_;
  auVar18._8_4_ = auVar17._0_4_;
  auVar18._12_4_ = auVar17._4_4_;
  auVar9 = maxps(auVar9,auVar27);
  auVar17 = minps(auVar23,auVar18);
  auVar26._0_4_ = auVar9._0_4_;
  auVar26._4_4_ = auVar26._0_4_;
  auVar26._8_4_ = auVar26._0_4_;
  auVar26._12_4_ = auVar26._0_4_;
  auVar9 = maxps(auVar26,Four_Zeros);
  auVar24._0_4_ = auVar17._0_4_;
  auVar24._4_4_ = auVar24._0_4_;
  auVar24._8_4_ = auVar24._0_4_;
  auVar24._12_4_ = auVar24._0_4_;
  auVar17 = minps(auVar24,Four_Ones);
  auVar25._4_4_ = -(uint)((float)-(uint)(auVar17._4_4_ < auVar9._4_4_) == (float)0);
  auVar25._0_4_ = -(uint)((float)-(uint)(auVar17._0_4_ < auVar9._0_4_) == (float)0);
  auVar25._8_4_ = -(uint)((float)-(uint)(auVar17._8_4_ < auVar9._8_4_) == (float)0);
  auVar25._12_4_ = -(uint)((float)-(uint)(auVar17._12_4_ < auVar9._12_4_) == (float)0);
  iVar1 = movmskps(in_stack_00000014,auVar25);
  return CONCAT31((int3)((uint)iVar1 >> 8),iVar1 == 0xf);
}

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)