L L4D2node

_GLOBAL__sub_I_g_VProfTargetThread

0x000a4620 · 2613 bytes · unknown

Decompiled

undefined (0 params)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void _GLOBAL__sub_I_g_VProfTargetThread(void)

{
  vec2_origin._0_4_ = 0;
  vec2_origin._4_4_ = 0;
  vec2_invalid._0_4_ = 0x7f7fffff;
  vec2_invalid._4_4_ = 0x7f7fffff;
  vec4_origin._0_4_ = 0;
  vec4_origin._4_4_ = 0;
  vec4_origin._8_4_ = 0;
  vec4_origin._12_4_ = 0;
  vec4_invalid._0_4_ = 0x7f7fffff;
  vec4_invalid._4_4_ = 0x7f7fffff;
  vec4_invalid._8_4_ = 0x7f7fffff;
  vec4_invalid._12_4_ = 0x7f7fffff;
  UNSPECIFIED_LOGGING_COLOR._0_1_ = 0;
  UNSPECIFIED_LOGGING_COLOR._1_1_ = 0;
  UNSPECIFIED_LOGGING_COLOR._2_1_ = 0;
  UNSPECIFIED_LOGGING_COLOR._3_1_ = 0;
  ConVar::ConVar((ConVar *)vprof_dump_spikes,"vprof_dump_spikes","0",0,
                 "Framerate at which vprof will begin to dump spikes to the console. 0 = disabled, negative to reset after dump"
                );
  __cxa_atexit(ConVar::~ConVar,vprof_dump_spikes,&__dso_handle);
  ConVar::ConVar((ConVar *)vprof_dump_spikes_terse,"vprof_dump_spikes_terse","0",0,
                 "Whether to use most terse output");
  __cxa_atexit(ConVar::~ConVar,vprof_dump_spikes_terse,&__dso_handle);
  ConVar::ConVar((ConVar *)vprof_dump_spikes_hierarchy,"vprof_dump_spikes_hiearchy","0",0,
                 "Set to 1 to get a hierarchy report whith vprof_dump_spikes");
  __cxa_atexit(ConVar::~ConVar,vprof_dump_spikes_hierarchy,&__dso_handle);
  ConVar::ConVar((ConVar *)vprof_dump_spikes_node,"vprof_dump_spikes_node","",0,
                 "Node to start report from when doing a dump spikes");
  __cxa_atexit(ConVar::~ConVar,vprof_dump_spikes_node,&__dso_handle);
  ConVar::ConVar((ConVar *)vprof_dump_spikes_budget_group,"vprof_dump_spikes_budget_group","",0,
                 "Budget gtNode to start report from when doing a dump spikes");
  __cxa_atexit(ConVar::~ConVar,vprof_dump_spikes_budget_group,&__dso_handle);
  ConVar::ConVar((ConVar *)vprof_dump_oninterval,"vprof_dump_oninterval","0",0,
                 "Interval (in seconds) at which vprof will batch up data and dump it to the console."
                );
  __cxa_atexit(ConVar::~ConVar,vprof_dump_oninterval,&__dso_handle);
  g_VProfTargetThread = ThreadGetCurrentId();
  ConVar::ConVar((ConVar *)vprof_counters,"vprof_counters","0",0);
  __cxa_atexit(ConVar::~ConVar,vprof_counters,&__dso_handle);
  ConVar::ConVar((ConVar *)vprof_counters_show_minmax,"vprof_counters_show_minmax","0",0);
  __cxa_atexit(ConVar::~ConVar,vprof_counters_show_minmax,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_dump_counters_command,"vprof_dump_counters",vprof_dump_counters,
             "Dump vprof counters to the console",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_dump_counters_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)spike_command,"spike",spike,"generates a fake spike",0x4000,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,spike_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_vtune_group_command,"vprof_vtune_group",vprof_vtune_group,
             "enable vtune for a particular vprof group (\"disable\" to disable)",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_vtune_group_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_dump_groupnames_command,"vprof_dump_groupnames",
             vprof_dump_groupnames,"Write the names of all of the vprof groups to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_dump_groupnames_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_cachemiss_command,"vprof_cachemiss",vprof_cachemiss,
             "Toggle VProf cache miss checking",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_cachemiss_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_cachemiss_on_command,"vprof_cachemiss_on",vprof_cachemiss_on,
             "Turn on VProf cache miss checking",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_cachemiss_on_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_cachemiss_off_command,"vprof_cachemiss_off",vprof_cachemiss_off,
             "Turn off VProf cache miss checking",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_cachemiss_off_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_command,"vprof",vprof,"Toggle VProf profiler",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_on_command,"vprof_on",vprof_on,"Turn on VProf profiler",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_on_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)budget_toggle_group_command,"budget_toggle_group",budget_toggle_group,
             "Turn a budget group on/off",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,budget_toggle_group_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_off_command,"vprof_off",vprof_off,"Turn off VProf profiler",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_off_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_reset_command,"vprof_reset",vprof_reset,
             "Reset the stats in VProf profiler",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_reset_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_reset_peaks_command,"vprof_reset_peaks",vprof_reset_peaks,
             "Reset just the peak time in VProf profiler",0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_reset_peaks_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_command,"vprof_generate_report",
             vprof_generate_report,"Generate a report to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_generate_report_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_budget_command,"vprof_generate_report_budget",
             vprof_generate_report_budget,"Generate a report to the console based on budget group.",
             0,(int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_generate_report_budget_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_hierarchy_command,"vprof_generate_report_hierarchy"
             ,vprof_generate_report_hierarchy,"Generate a report to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_generate_report_hierarchy_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_hierarchy_per_frame_and_count_only_command,
             "vprof_generate_report_hierarchy_per_frame_and_count_only",
             vprof_generate_report_hierarchy_per_frame_and_count_only,
             "Generate a minimal hiearchical report to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,
               vprof_generate_report_hierarchy_per_frame_and_count_only_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_AI_command,"vprof_generate_report_AI",
             vprof_generate_report_AI,"Generate a report to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_generate_report_AI_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_AI_only_command,"vprof_generate_report_AI_only",
             vprof_generate_report_AI_only,"Generate a report to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_generate_report_AI_only_command,&__dso_handle);
  ConCommand::ConCommand
            ((ConCommand *)vprof_generate_report_map_load_command,"vprof_generate_report_map_load",
             vprof_generate_report_map_load,"Generate a report to the console.",0,
             (int_____char_const__char *)0x0);
  __cxa_atexit(ConCommand::~ConCommand,vprof_generate_report_map_load_command,&__dso_handle);
  g_VProfExport._0_4_ = &PTR_AddListener_002ca068;
  g_VProfExport._4_4_ = 0;
  g_VProfExport._8_4_ = 0;
  g_VProfExport._12_4_ = 0;
  g_VProfExport._16_4_ = 0;
  g_VProfExport._20_4_ = 0;
  g_VProfExport._24_4_ = 0;
  g_VProfExport[0x21] = 0;
  g_VProfExport[0x20] = 0;
  g_VProfExport._28_4_ = 0;
  __cxa_atexit(CVProfExport::~CVProfExport,g_VProfExport,&__dso_handle);
  InterfaceReg::InterfaceReg
            ((InterfaceReg *)__g_CreateCVProfExportIVProfExport_reg,
             __CreateCVProfExportIVProfExport_interface,"VProfExport001");
  s_VProfListeners = 0;
  _DAT_003f006c = 0;
  _DAT_003f0070 = 0;
  DAT_003f0074 = 0;
  _DAT_003f0078 = 0;
  __cxa_atexit(CUtlVector<VProfListenInfo_t,CUtlMemory<VProfListenInfo_t,int>>::~CUtlVector,
               &s_VProfListeners,&__dso_handle);
  ConVar::ConVar((ConVar *)rpt_vprof_time,"rpt_vprof_time","0.25",0x20010,"");
  __cxa_atexit(ConVar::~ConVar,rpt_vprof_time,&__dso_handle);
  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.



        
        

⚠ This function has no mangled symbol — it may be internal/static. The Linux gamedata field uses @-prefix symbol resolution which requires an exported mangled name. You'll need a Linux byte signature for this one (extract via extract_signature.java).


          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)