L L4D2node

RecvTable_Term(bool)::CPropVisitor::Visit_R

0x0014ed50 · 945 bytes · __regparm3

_ZZ14RecvTable_TermbEN12CPropVisitor7Visit_REP9RecvTable

Decompiled

undefined (1 param)

/* Visit_R(RecvTable*) */

void __regparm3 RecvTable_Term(bool)::CPropVisitor::Visit_R(RecvTable *param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  int iVar27;
  
  if (param_1[0x11] != (RecvTable)0x0) {
    param_1[0x11] = (RecvTable)0x0;
    *(undefined4 *)(param_1 + 8) = 0;
    if (0 < *(int *)(param_1 + 4)) {
      iVar10 = 0;
      iVar15 = 0;
      do {
        while ((*(int *)(*(int *)param_1 + iVar10 + 4) != 6 ||
               (piVar1 = *(int **)(*(int *)param_1 + iVar10 + 0x28),
               *(char *)((int)piVar1 + 0x11) == '\0'))) {
LAB_0014ed88:
          iVar15 = iVar15 + 1;
          iVar10 = iVar10 + 0x3c;
          if (*(int *)(param_1 + 4) <= iVar15) {
            return;
          }
        }
        *(undefined1 *)((int)piVar1 + 0x11) = 0;
        piVar1[2] = 0;
        if (piVar1[1] < 1) goto LAB_0014ed88;
        iVar18 = 0;
        iVar16 = 0;
        do {
          while ((*(int *)(*piVar1 + iVar16 + 4) != 6 ||
                 (piVar2 = *(int **)(*piVar1 + iVar16 + 0x28), *(char *)((int)piVar2 + 0x11) == '\0'
                 ))) {
LAB_0014edd8:
            iVar18 = iVar18 + 1;
            iVar16 = iVar16 + 0x3c;
            if (piVar1[1] <= iVar18) goto LAB_0014f100;
          }
          *(undefined1 *)((int)piVar2 + 0x11) = 0;
          piVar2[2] = 0;
          if (piVar2[1] < 1) goto LAB_0014edd8;
          iVar17 = 0;
          iVar19 = 0;
          do {
            while ((*(int *)(*piVar2 + iVar17 + 4) != 6 ||
                   (piVar3 = *(int **)(*piVar2 + iVar17 + 0x28),
                   *(char *)((int)piVar3 + 0x11) == '\0'))) {
LAB_0014ee28:
              iVar19 = iVar19 + 1;
              iVar17 = iVar17 + 0x3c;
              if (piVar2[1] <= iVar19) goto LAB_0014f0e0;
            }
            *(undefined1 *)((int)piVar3 + 0x11) = 0;
            piVar3[2] = 0;
            if (piVar3[1] < 1) goto LAB_0014ee28;
            iVar11 = 0;
            iVar20 = 0;
            do {
              while ((*(int *)(*piVar3 + iVar20 + 4) != 6 ||
                     (piVar4 = *(int **)(*piVar3 + iVar20 + 0x28),
                     *(char *)((int)piVar4 + 0x11) == '\0'))) {
LAB_0014ee78:
                iVar11 = iVar11 + 1;
                iVar20 = iVar20 + 0x3c;
                if (piVar3[1] <= iVar11) goto LAB_0014f0c0;
              }
              *(undefined1 *)((int)piVar4 + 0x11) = 0;
              piVar4[2] = 0;
              if (piVar4[1] < 1) goto LAB_0014ee78;
              iVar12 = 0;
              iVar21 = 0;
              do {
                while ((*(int *)(*piVar4 + iVar21 + 4) != 6 ||
                       (piVar5 = *(int **)(*piVar4 + iVar21 + 0x28),
                       *(char *)((int)piVar5 + 0x11) == '\0'))) {
LAB_0014eec8:
                  iVar12 = iVar12 + 1;
                  iVar21 = iVar21 + 0x3c;
                  if (piVar4[1] <= iVar12) goto LAB_0014f0a0;
                }
                *(undefined1 *)((int)piVar5 + 0x11) = 0;
                piVar5[2] = 0;
                if (piVar5[1] < 1) goto LAB_0014eec8;
                iVar13 = 0;
                iVar22 = 0;
                do {
                  while ((*(int *)(*piVar5 + iVar22 + 4) != 6 ||
                         (piVar6 = *(int **)(*piVar5 + iVar22 + 0x28),
                         *(char *)((int)piVar6 + 0x11) == '\0'))) {
LAB_0014ef18:
                    iVar13 = iVar13 + 1;
                    iVar22 = iVar22 + 0x3c;
                    if (piVar5[1] <= iVar13) goto LAB_0014f080;
                  }
                  *(undefined1 *)((int)piVar6 + 0x11) = 0;
                  piVar6[2] = 0;
                  if (piVar6[1] < 1) goto LAB_0014ef18;
                  iVar26 = 0;
                  iVar14 = 0;
                  do {
                    while ((*(int *)(*piVar6 + iVar14 + 4) != 6 ||
                           (piVar7 = *(int **)(*piVar6 + iVar14 + 0x28),
                           *(char *)((int)piVar7 + 0x11) == '\0'))) {
LAB_0014ef68:
                      iVar26 = iVar26 + 1;
                      iVar14 = iVar14 + 0x3c;
                      if (piVar6[1] <= iVar26) goto LAB_0014f060;
                    }
                    *(undefined1 *)((int)piVar7 + 0x11) = 0;
                    piVar7[2] = 0;
                    if (piVar7[1] < 1) goto LAB_0014ef68;
                    iVar24 = 0;
                    iVar23 = 0;
                    do {
                      while ((*(int *)(*piVar7 + iVar24 + 4) != 6 ||
                             (piVar8 = *(int **)(*piVar7 + iVar24 + 0x28),
                             *(char *)((int)piVar8 + 0x11) == '\0'))) {
LAB_0014efb8:
                        iVar23 = iVar23 + 1;
                        iVar24 = iVar24 + 0x3c;
                        if (piVar7[1] <= iVar23) goto LAB_0014f048;
                      }
                      *(undefined1 *)((int)piVar8 + 0x11) = 0;
                      piVar8[2] = 0;
                      if (piVar8[1] < 1) goto LAB_0014efb8;
                      iVar27 = 0;
                      iVar25 = 0;
                      do {
                        while (iVar9 = *piVar8 + iVar25, *(int *)(iVar9 + 4) != 6) {
                          iVar27 = iVar27 + 1;
                          iVar25 = iVar25 + 0x3c;
                          if (piVar8[1] <= iVar27) goto LAB_0014f030;
                        }
                        iVar27 = iVar27 + 1;
                        iVar25 = iVar25 + 0x3c;
                        Visit_R(*(RecvTable **)(iVar9 + 0x28));
                      } while (iVar27 < piVar8[1]);
LAB_0014f030:
                      iVar23 = iVar23 + 1;
                      iVar24 = iVar24 + 0x3c;
                    } while (iVar23 < piVar7[1]);
LAB_0014f048:
                    iVar26 = iVar26 + 1;
                    iVar14 = iVar14 + 0x3c;
                  } while (iVar26 < piVar6[1]);
LAB_0014f060:
                  iVar13 = iVar13 + 1;
                  iVar22 = iVar22 + 0x3c;
                } while (iVar13 < piVar5[1]);
LAB_0014f080:
                iVar12 = iVar12 + 1;
                iVar21 = iVar21 + 0x3c;
              } while (iVar12 < piVar4[1]);
LAB_0014f0a0:
              iVar11 = iVar11 + 1;
              iVar20 = iVar20 + 0x3c;
            } while (iVar11 < piVar3[1]);
LAB_0014f0c0:
            iVar19 = iVar19 + 1;
            iVar17 = iVar17 + 0x3c;
          } while (iVar19 < piVar2[1]);
LAB_0014f0e0:
          iVar18 = iVar18 + 1;
          iVar16 = iVar16 + 0x3c;
        } while (iVar18 < piVar1[1]);
LAB_0014f100:
        iVar15 = iVar15 + 1;
        iVar10 = iVar10 + 0x3c;
        if (*(int *)(param_1 + 4) <= iVar15) {
          return;
        }
      } while( true );
    }
  }
  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)