L L4D2node

Pow_FixedPoint_Exponent_SIMD

0x0027b7b0 · 104 bytes · __cdecl

_Z28Pow_FixedPoint_Exponent_SIMDRKU8__vectorfi

Decompiled

undefined (2 params)

/* Pow_FixedPoint_Exponent_SIMD(float __vector(4) const&, int) */

void Pow_FixedPoint_Exponent_SIMD(_func_float_int **param_1,int param_2)

{
  uint uVar1;
  undefined1 auVar2 [16];
  undefined1 auVar3 [16];
  float fVar4;
  float fVar6;
  float fVar7;
  undefined1 auVar5 [16];
  float fVar8;
  undefined1 in_XMM2 [16];
  undefined1 auVar9 [16];
  
  uVar1 = (param_2 >> 0x1f ^ param_2) - (param_2 >> 0x1f);
  auVar5 = *(undefined1 (*) [16])param_1;
  auVar3 = Four_Ones;
  if ((uVar1 & 3) != 0) {
    auVar9 = sqrtps(in_XMM2,auVar5);
    auVar2 = Four_Ones;
    if ((uVar1 & 1) != 0) {
      auVar2 = sqrtps(Four_Ones,auVar9);
    }
    auVar3 = auVar2;
    if ((uVar1 & 2) != 0) {
      auVar3._0_4_ = auVar2._0_4_ * auVar9._0_4_;
      auVar3._4_4_ = auVar2._4_4_ * auVar9._4_4_;
      auVar3._8_4_ = auVar2._8_4_ * auVar9._8_4_;
      auVar3._12_4_ = auVar2._12_4_ * auVar9._12_4_;
    }
  }
  uVar1 = (int)uVar1 >> 2;
  while( true ) {
    fVar4 = auVar5._0_4_;
    fVar6 = auVar5._4_4_;
    fVar7 = auVar5._8_4_;
    fVar8 = auVar5._12_4_;
    auVar2 = auVar3;
    if ((uVar1 & 1) != 0) {
      auVar2._0_4_ = auVar3._0_4_ * fVar4;
      auVar2._4_4_ = auVar3._4_4_ * fVar6;
      auVar2._8_4_ = auVar3._8_4_ * fVar7;
      auVar2._12_4_ = auVar3._12_4_ * fVar8;
    }
    uVar1 = (int)uVar1 >> 1;
    if (uVar1 == 0) break;
    auVar5._0_4_ = fVar4 * fVar4;
    auVar5._4_4_ = fVar6 * fVar6;
    auVar5._8_4_ = fVar7 * fVar7;
    auVar5._12_4_ = fVar8 * fVar8;
    auVar3 = auVar2;
  }
  if (-1 < param_2) {
    return;
  }
  auVar9._0_8_ = CONCAT44(-(uint)(auVar2._4_4_ == (float)0),-(uint)(auVar2._0_4_ == (float)0)) &
                 0x3400000034000000;
  auVar9._8_4_ = -(uint)(auVar2._8_4_ == (float)0) & 0x34000000;
  auVar9._12_4_ = -(uint)(auVar2._12_4_ == (float)0) & 0x34000000;
  rcpps(auVar2,auVar9 | auVar2);
  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)