L L4D2node

CNetPropManager::SearchSendTable

0x0074aae0 · 895 bytes · __thiscall

_ZNK15CNetPropManager15SearchSendTableEP9SendTablePKc

Decompiled

undefined (3 params)

/* CNetPropManager::SearchSendTable(SendTable*, char const*) const */

int __thiscall
CNetPropManager::SearchSendTable(CNetPropManager *this,SendTable *param_1,char *param_2)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_28;
  int local_20;
  
  local_30 = 0;
  if (0 < *(int *)(param_1 + 4)) {
    do {
      iVar11 = local_30 * 0x54 + *(int *)param_1;
      if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
         (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0)) {
        return iVar11;
      }
      piVar1 = *(int **)(iVar11 + 0x48);
      if ((piVar1 != (int *)0x0) && (0 < piVar1[1])) {
        local_34 = 0;
        do {
          iVar11 = local_34 * 0x54 + *piVar1;
          if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
             (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0)) {
            return iVar11;
          }
          piVar2 = *(int **)(iVar11 + 0x48);
          if ((piVar2 != (int *)0x0) && (0 < piVar2[1])) {
            local_38 = 0;
            do {
              iVar11 = local_38 * 0x54 + *piVar2;
              if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
                 (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0)) {
                return iVar11;
              }
              piVar3 = *(int **)(iVar11 + 0x48);
              if ((piVar3 != (int *)0x0) && (0 < piVar3[1])) {
                local_3c = 0;
                do {
                  iVar11 = local_3c * 0x54 + *piVar3;
                  if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
                     (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0)) {
                    return iVar11;
                  }
                  piVar4 = *(int **)(iVar11 + 0x48);
                  if ((piVar4 != (int *)0x0) && (0 < piVar4[1])) {
                    local_40 = 0;
                    do {
                      iVar11 = local_40 * 0x54 + *piVar4;
                      if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
                         (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0)) {
                        return iVar11;
                      }
                      piVar5 = *(int **)(iVar11 + 0x48);
                      if ((piVar5 != (int *)0x0) && (0 < piVar5[1])) {
                        local_44 = 0;
                        do {
                          iVar11 = local_44 * 0x54 + *piVar5;
                          if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
                             (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0)) {
                            return iVar11;
                          }
                          piVar6 = *(int **)(iVar11 + 0x48);
                          if ((piVar6 != (int *)0x0) && (0 < piVar6[1])) {
                            local_28 = 0;
                            do {
                              iVar11 = local_28 * 0x54 + *piVar6;
                              if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
                                 (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2), iVar9 == 0))
                              {
                                return iVar11;
                              }
                              piVar7 = *(int **)(iVar11 + 0x48);
                              if ((piVar7 != (int *)0x0) && (0 < piVar7[1])) {
                                local_20 = 0;
                                do {
                                  iVar11 = local_20 * 0x54 + *piVar7;
                                  if ((*(char **)(iVar11 + 0x30) != (char *)0x0) &&
                                     (iVar9 = _V_strcmp(*(char **)(iVar11 + 0x30),param_2),
                                     iVar9 == 0)) {
                                    return iVar11;
                                  }
                                  piVar8 = *(int **)(iVar11 + 0x48);
                                  if ((piVar8 != (int *)0x0) && (0 < piVar8[1])) {
                                    iVar11 = 0;
                                    do {
                                      iVar9 = iVar11 * 0x54 + *piVar8;
                                      if ((*(char **)(iVar9 + 0x30) != (char *)0x0) &&
                                         (iVar10 = _V_strcmp(*(char **)(iVar9 + 0x30),param_2),
                                         iVar10 == 0)) {
                                        return iVar9;
                                      }
                                      if ((*(SendTable **)(iVar9 + 0x48) != (SendTable *)0x0) &&
                                         (iVar9 = SearchSendTable(this,*(SendTable **)(iVar9 + 0x48)
                                                                  ,param_2), iVar9 != 0)) {
                                        return iVar9;
                                      }
                                      iVar11 = iVar11 + 1;
                                    } while (iVar11 < piVar8[1]);
                                  }
                                  local_20 = local_20 + 1;
                                } while (local_20 < piVar7[1]);
                              }
                              local_28 = local_28 + 1;
                            } while (local_28 < piVar6[1]);
                          }
                          local_44 = local_44 + 1;
                        } while (local_44 < piVar5[1]);
                      }
                      local_40 = local_40 + 1;
                    } while (local_40 < piVar4[1]);
                  }
                  local_3c = local_3c + 1;
                } while (local_3c < piVar3[1]);
              }
              local_38 = local_38 + 1;
            } while (local_38 < piVar2[1]);
          }
          local_34 = local_34 + 1;
        } while (local_34 < piVar1[1]);
      }
      local_30 = local_30 + 1;
    } while (local_30 < *(int *)(param_1 + 4));
  }
  return 0;
}

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)