L L4D2node

DrawExtrusionFace

0x00281e70 · 1781 bytes · __regparm3

_ZL17DrawExtrusionFaceRK6VectorS1_PS_ii5ColorR12CMeshBuilder

Decompiled

undefined (7 params)

/* DrawExtrusionFace(Vector const&, Vector const&, Vector*, int, int, Color, CMeshBuilder&) */

void __regparm3
DrawExtrusionFace(float *param_1,float *param_2,int param_3,int param_4,int param_5,uint param_6,
                 int param_7)

{
  float *pfVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float *pfVar8;
  uint uVar9;
  int iVar10;
  float *pfVar11;
  
  fVar2 = param_1[2];
  fVar3 = *param_1;
  pfVar1 = (float *)(param_3 + param_4 * 0xc);
  pfVar8 = *(float **)(param_7 + 0x1ac);
  fVar4 = pfVar1[2];
  fVar5 = *pfVar1;
  pfVar8[1] = param_1[1] + pfVar1[1];
  pfVar8[2] = fVar2 + fVar4;
  *pfVar8 = fVar3 + fVar5;
  uVar9 = param_6 & 0xff00 | (param_6 & 0xff) << 0x10 | param_6 >> 0x10 & 0xff |
          param_6 & 0xff000000;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  pfVar11 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(float **)(param_7 + 0x1ac) = pfVar11;
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  fVar2 = *param_1;
  fVar3 = param_1[1];
  fVar4 = param_1[2];
  pfVar8 = (float *)(param_3 + param_5 * 0xc);
  fVar5 = *pfVar8;
  fVar6 = pfVar8[1];
  fVar7 = pfVar8[2];
  *pfVar11 = fVar2 + fVar5;
  pfVar11[1] = fVar3 + fVar6;
  pfVar11[2] = fVar4 + fVar7;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  pfVar11 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(float **)(param_7 + 0x1ac) = pfVar11;
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  *pfVar11 = fVar2 + fVar5;
  pfVar11[1] = fVar3 + fVar6;
  pfVar11[2] = fVar4 + fVar7;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  pfVar11 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(float **)(param_7 + 0x1ac) = pfVar11;
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  fVar2 = *param_2;
  fVar3 = param_2[1];
  fVar4 = param_2[2];
  fVar5 = *pfVar8;
  fVar6 = pfVar8[1];
  fVar7 = pfVar8[2];
  *pfVar11 = fVar2 + fVar5;
  pfVar11[1] = fVar3 + fVar6;
  pfVar11[2] = fVar4 + fVar7;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  pfVar8 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(float **)(param_7 + 0x1ac) = pfVar8;
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  *pfVar8 = fVar2 + fVar5;
  pfVar8[1] = fVar3 + fVar6;
  pfVar8[2] = fVar4 + fVar7;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  pfVar8 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(float **)(param_7 + 0x1ac) = pfVar8;
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  fVar2 = *param_2;
  fVar3 = param_2[1];
  fVar4 = param_2[2];
  fVar5 = pfVar1[1];
  fVar6 = pfVar1[2];
  fVar7 = *pfVar1;
  *pfVar8 = fVar2 + fVar7;
  pfVar8[1] = fVar3 + fVar5;
  pfVar8[2] = fVar4 + fVar6;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  pfVar8 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(float **)(param_7 + 0x1ac) = pfVar8;
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  *pfVar8 = fVar2 + fVar7;
  pfVar8[1] = fVar3 + fVar5;
  pfVar8[2] = fVar4 + fVar6;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  pfVar8 = (float *)(*(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4));
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(float **)(param_7 + 0x1ac) = pfVar8;
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  fVar2 = param_1[1];
  fVar3 = param_1[2];
  fVar4 = pfVar1[1];
  fVar5 = pfVar1[2];
  *pfVar8 = *param_1 + *pfVar1;
  pfVar8[1] = fVar2 + fVar4;
  pfVar8[2] = fVar3 + fVar5;
  **(uint **)(param_7 + 0x1b4) = uVar9;
  iVar10 = *(int *)(param_7 + 0x1a8) + 1;
  *(int *)(param_7 + 0x1a8) = iVar10;
  if (*(int *)(param_7 + 0x1a4) < iVar10) {
    *(int *)(param_7 + 0x1a4) = iVar10;
  }
  *(int *)(param_7 + 0x1ac) = *(int *)(param_7 + 0x1ac) + *(int *)(param_7 + 0xf4);
  *(int *)(param_7 + 0x1b0) = *(int *)(param_7 + 0x1b0) + *(int *)(param_7 + 0x100);
  *(int *)(param_7 + 0x1b4) = *(int *)(param_7 + 0x1b4) + *(int *)(param_7 + 0x104);
  *(int *)(param_7 + 0x1b8) = *(int *)(param_7 + 0x1b8) + *(int *)(param_7 + 0x10c);
  *(int *)(param_7 + 0x1bc) = *(int *)(param_7 + 0x1bc) + *(int *)(param_7 + 0x110);
  *(int *)(param_7 + 0x1c0) = *(int *)(param_7 + 0x1c0) + *(int *)(param_7 + 0x114);
  *(int *)(param_7 + 0x1c4) = *(int *)(param_7 + 0x1c4) + *(int *)(param_7 + 0x118);
  *(int *)(param_7 + 0x1c8) = *(int *)(param_7 + 0x1c8) + *(int *)(param_7 + 0x11c);
  *(int *)(param_7 + 0x1cc) = *(int *)(param_7 + 0x1cc) + *(int *)(param_7 + 0x120);
  *(int *)(param_7 + 0x1d0) = *(int *)(param_7 + 0x1d0) + *(int *)(param_7 + 0x124);
  *(int *)(param_7 + 0x1d4) = *(int *)(param_7 + 0x1d4) + *(int *)(param_7 + 0x128);
  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)