L L4D2node

ct_init

0x000ead00 · 720 bytes · __cdecl

_Z7ct_initR6TStatePt

Decompiled

undefined (2 params)

/* ct_init(TState&, unsigned short*) */

void ct_init(TState *param_1,ushort *param_2)

{
  short sVar1;
  short sVar2;
  uint uVar3;
  TState *pTVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  
  *(undefined4 *)(param_1 + 0x1af48) = 0;
  *(ushort **)(param_1 + 0x1af50) = param_2;
  *(undefined4 *)(param_1 + 0x1af44) = 0;
  *(undefined4 *)(param_1 + 0x1af4c) = 0;
  if (*(short *)(param_1 + 0xe7e) == 0) {
    iVar10 = 0;
    iVar8 = 0;
    do {
      iVar7 = 1 << ((byte)(&extra_lbits)[iVar8] & 0x1f);
      *(int *)(param_1 + iVar8 * 4 + 0x1e40) = iVar10;
      if (0 < iVar7) {
        pTVar4 = param_1 + iVar10 + 0x1b3d;
        do {
          *pTVar4 = SUB41(iVar8,0);
          pTVar4 = pTVar4 + 1;
        } while (pTVar4 != param_1 + iVar7 + iVar10 + 0x1b3d);
        iVar10 = iVar10 + iVar7;
      }
      iVar8 = iVar8 + 1;
    } while (iVar8 != 0x1c);
    if (iVar10 != 0x100) {
      *(char **)(param_1 + 0x6afa4) = "ct_init: length != 256";
    }
    param_1[iVar10 + 0x1b3c] = (TState)0x1c;
    iVar8 = 0;
    iVar10 = 0;
    do {
      iVar7 = 1 << ((byte)(&extra_dbits)[iVar8] & 0x1f);
      *(int *)(param_1 + iVar8 * 4 + 0x1eb4) = iVar10;
      if (0 < iVar7) {
        pTVar4 = param_1 + iVar10 + 0x1c3d;
        do {
          *pTVar4 = SUB41(iVar8,0);
          pTVar4 = pTVar4 + 1;
        } while (pTVar4 != param_1 + iVar7 + iVar10 + 0x1c3d);
        iVar10 = iVar10 + iVar7;
      }
      iVar8 = iVar8 + 1;
    } while (iVar8 != 0x10);
    if (iVar10 != 0x100) {
      *(char **)(param_1 + 0x6afa4) = "ct_init: dist != 256";
    }
    iVar10 = iVar10 >> 7;
    iVar8 = 0x10;
    do {
      *(int *)(param_1 + iVar8 * 4 + 0x1eb4) = iVar10 << 7;
      iVar7 = 1 << ((char)(&extra_dbits)[iVar8] - 7U & 0x1f);
      if (0 < iVar7) {
        pTVar4 = param_1 + iVar10 + 0x1d3d;
        do {
          *pTVar4 = SUB41(iVar8,0);
          pTVar4 = pTVar4 + 1;
        } while (pTVar4 != param_1 + iVar7 + iVar10 + 0x1d3d);
        iVar10 = iVar10 + iVar7;
      }
      iVar8 = iVar8 + 1;
    } while (iVar8 != 0x1e);
    if (iVar10 != 0x100) {
      *(char **)(param_1 + 0x6afa4) = "ct_init: 256+dist != 512";
    }
    iVar8 = 0;
    do {
      *(undefined2 *)(param_1 + iVar8 * 2 + 0xfe4) = 0;
      iVar8 = iVar8 + 1;
    } while (iVar8 != 0x10);
    sVar1 = *(short *)(param_1 + 0xff4);
    iVar8 = 0;
    do {
      iVar8 = iVar8 + 1;
      *(undefined2 *)(param_1 + iVar8 * 4 + 0x9fa) = 8;
    } while (iVar8 != 0x90);
    *(short *)(param_1 + 0xff4) = sVar1 + 0x90;
    sVar2 = *(short *)(param_1 + 0xff6);
    iVar8 = 0x90;
    do {
      iVar8 = iVar8 + 1;
      *(undefined2 *)(param_1 + iVar8 * 4 + 0x9fa) = 9;
    } while (iVar8 != 0x100);
    *(short *)(param_1 + 0xff6) = sVar2 + 0x70;
    sVar2 = *(short *)(param_1 + 0xff2);
    iVar8 = 0x100;
    do {
      iVar8 = iVar8 + 1;
      *(undefined2 *)(param_1 + iVar8 * 4 + 0x9fa) = 7;
    } while (iVar8 != 0x118);
    *(short *)(param_1 + 0xff2) = sVar2 + 0x18;
    iVar8 = 0x118;
    do {
      iVar8 = iVar8 + 1;
      *(undefined2 *)(param_1 + iVar8 * 4 + 0x9fa) = 8;
    } while (iVar8 != 0x120);
    *(short *)(param_1 + 0xff4) = sVar1 + 0x98;
    gen_codes(param_1,(ct_data *)(param_1 + 0x9fc),0x11f);
    uVar11 = 0;
    do {
      iVar8 = 5;
      *(undefined2 *)(param_1 + uVar11 * 4 + 0xe7e) = 5;
      uVar6 = uVar11;
      uVar3 = 0;
      do {
        uVar9 = uVar3;
        uVar5 = uVar6 & 1;
        iVar8 = iVar8 + -1;
        uVar6 = uVar6 >> 1;
        uVar3 = (uVar5 | uVar9) * 2;
      } while (iVar8 != 0);
      *(ushort *)(param_1 + uVar11 * 4 + 0xe7c) = (ushort)uVar5 | (ushort)uVar9;
      uVar11 = uVar11 + 1;
    } while (uVar11 != 0x1e);
    init_block(param_1);
    return;
  }
  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)