From 18bdf80eaae09f3f09f27e50b896e2d576c6226f Mon Sep 17 00:00:00 2001 From: avirox Date: Sun, 18 Dec 2005 19:56:27 +0000 Subject: [PATCH] Added a folder remotely git-svn-id: svn://svn.icculus.org/nexuiz/trunk@681 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- TeamNexuiz/menu/dotmenu.txt | 51 + TeamNexuiz/menu/fteqccgui.exe | Bin 0 -> 233472 bytes TeamNexuiz/menu/mbuiltin.qc | 250 + TeamNexuiz/menu/menu.qc | 151 + TeamNexuiz/menu/menu.qh | 35 + TeamNexuiz/menu/menu1.qc | 151 + TeamNexuiz/menu/msys.qc | 278 + TeamNexuiz/menu/progdefs.h | 13 + TeamNexuiz/menu/progs.src | 180 + TeamNexuiz/menu/qc.asm | 17163 ++++++++++++++++++++++++++++++ TeamNexuiz/menu/qcc.bat | 2 + TeamNexuiz/menu/qcc.exe | Bin 0 -> 208896 bytes TeamNexuiz/menu/teamselect.menu | 72 + TeamNexuiz/menu/todo | 75 + 14 files changed, 18421 insertions(+) create mode 100644 TeamNexuiz/menu/dotmenu.txt create mode 100644 TeamNexuiz/menu/fteqccgui.exe create mode 100644 TeamNexuiz/menu/mbuiltin.qc create mode 100644 TeamNexuiz/menu/menu.qc create mode 100644 TeamNexuiz/menu/menu.qh create mode 100644 TeamNexuiz/menu/menu1.qc create mode 100644 TeamNexuiz/menu/msys.qc create mode 100644 TeamNexuiz/menu/progdefs.h create mode 100644 TeamNexuiz/menu/progs.src create mode 100644 TeamNexuiz/menu/qc.asm create mode 100644 TeamNexuiz/menu/qcc.bat create mode 100644 TeamNexuiz/menu/qcc.exe create mode 100644 TeamNexuiz/menu/teamselect.menu create mode 100644 TeamNexuiz/menu/todo diff --git a/TeamNexuiz/menu/dotmenu.txt b/TeamNexuiz/menu/dotmenu.txt new file mode 100644 index 000000000..10375887d --- /dev/null +++ b/TeamNexuiz/menu/dotmenu.txt @@ -0,0 +1,51 @@ +Parser documentation/.menu docs: +================================== + +A token is a sequence of letters that are not whitespaces. +If the parser expects something, it will error out if it doesnt find the expected token/type. + +The parser supports the following token types which refer to the keyword: + +Type Keyword +----- ------- +ITEM Item +TEMPLATE Template +DERIVE Derive +DERIVETEMPLATE DeriveTemplate +NAMESPACE Namespace +IGNORE Ignore +DEFINE #define +UNDEF #undef +INCLUDE #include +BRACEOPEN { +BRACECLOSE } +BRACKETOPEN [ +BRACKETCLOSE ] +TOKEN any other token + +You can use either the " or the ' to start a string - mind to use the same char to finish it! +DP only supports the \n and \\ escape chars currently. + +Now Im going to explain the behavior of the parser after it encounters a specific token: + +Ignore + + The parser expects a { next and reads over everything until it encounters the corresponding }. + Mind that corresponding means you can comment out/make it ignore bigger parts of the .menu files, + since it keeps the number { while parsing and only exits from the ignore loop if it has found the + same count of }. + + Example: + + Ignore { + blabla { + { blub } + { } } + } + +Item + + The parser expects an item type/control name next, eg. Rect or Window and afterwards the name + of the item that should be defined. Next expects a { and then a number of key value pairs that + define the entity or one of the other keywords. You can nest everything in everything + diff --git a/TeamNexuiz/menu/fteqccgui.exe b/TeamNexuiz/menu/fteqccgui.exe new file mode 100644 index 0000000000000000000000000000000000000000..9bace9fcd48128fcb61f3a28c22a6d89dbd44d7c GIT binary patch literal 233472 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≶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 literal 0 HcmV?d00001 diff --git a/TeamNexuiz/menu/mbuiltin.qc b/TeamNexuiz/menu/mbuiltin.qc new file mode 100644 index 000000000..b1dc3bafa --- /dev/null +++ b/TeamNexuiz/menu/mbuiltin.qc @@ -0,0 +1,250 @@ +////////////////////////////////////////////////// +// common cmd +////////////////////////////////////////////////// +// AK FIXME: Create perhaps a special builtin file for the common cmds + +//#define PROFILESTRZONE +#define FIXEDFOPEN + +void checkextension(string ext) = #1; + +// error cmds +void error(string err,...) = #2; +void objerror(string err,...) = #3; + +// print + +void print(string text,...) = #4; +void bprint(string text,...) = #5; +void sprint(float clientnum, string text,...) = #6; +void centerprint(string text,...) = #7; + +// vector stuff + +vector normalize(vector v) = #8; +float vlen(vector v) = #9; +float vectoyaw(vector v) = #10; +vector vectoangles(vector v) = #11; + +float random(void) = #12; + +void cmd(string command) = #13; + +// cvar cmds + +float cvar(string name) = #14; +const string cvar_string(string name) = #71; +const string cvar_defstring(string name) = #89; +void cvar_set(string name, string value) = #15; + +void dprint(string text,...) = #16; + +// conversion functions + +string ftos(float f) = #17; +float fabs(float f) = #18; +string vtos(vector v) = #19; +string etos(entity e) = #20; + +float stof(string val,...) = #21; + +entity spawn(void) = #22; +void remove(entity e) = #23; + +entity findstring(entity start, .string _field, string match) = #24; +entity findfloat(entity start, .float _field, float match) = #25; +entity findentity(entity start, .entity _field, entity match) = #25; + +entity findchainstring(.string _field, string match) = #26; +entity findchainfloat(.float _field, float match) = #27; +entity findchainentity(.entity _field, entity match) = #27; + +entity findflags(entity start, .float field, float match) = #87; +entity findchainflags(.float field, float match) = #88; + +string precache_file(string file) = #28; +string precache_sound(string sample) = #29; + +void crash(void) = #72; +void coredump(void) = #30; +void stackdump(void) = #73; +void traceon(void) = #31; +void traceoff(void) = #32; + +void eprint(entity e) = #33; +float rint(float f) = #34; +float floor(float f) = #35; +float ceil(float f) = #36; +entity nextent(entity e) = #37; +float sin(float f) = #38; +float cos(float f) = #39; +float sqrt(float f) = #40; +vector randomvec(void) = #41; + +float registercvar(string name, string value, float flags) = #42; // returns 1 if success +float min(float f,...) = #43; +float max(float f,...) = #44; +float bound(float min,float value, float max) = #45; +float pow(float a, float b) = #46; +void copyentity(entity src, entity dst) = #47; + +#ifdef FIXEDFOPEN +float _fopen( string filename, float mode ) = #48; +#else +float fopen(string filename, float mode) = #48; +#endif +void fclose(float fhandle) = #49; +string fgets(float fhandle) = #50; +void fputs(float fhandle, string s) = #51; + +float strlen(string s) = #52; +//string strcat(string s1,string s2,...) = #53; +string strcat(string s1, ...) = #53; +string substring(string s, float start, float length) = #54; + +vector stov(string s) = #55; + +#ifdef PROFILESTRZONE +string _strzone(string s) = #56; +void _strunzone(string s) = #57; + +string( string s ) strzone = +{ + return _strzone( s ); +}; + +void( string s ) strunzone = +{ + return _strunzone( s ); +}; +#else +string strzone(string s) = #56; +void strunzone(string s) = #57; +#endif + +float tokenize(string s) = #58 +string argv(float n) = #59; + +float isserver(void) = #60; +float clientcount(void) = #61; +float clientstate(void) = #62; +void clientcommand(float client, string s) = #63; +void changelevel(string map) = #64; +void localsound(string sample) = #65; +vector getmousepos(void) = #66; +float gettime(void) = #67; +void loadfromdata(string data) = #68; +void loadfromfile(string file) = #69; + +float mod(float val, float m) = #70; + +float search_begin(string pattern, float caseinsensitive, float quiet) = #74; +void search_end(float handle) = #75; +float search_getsize(float handle) = #76; +string search_getfilename(float handle, float num) = #77; + +string chr(float ascii) = #78; + +float etof(entity ent) = #79; +entity ftoe(float num) = #80; + +float validstring(string str) = #81; + +float altstr_count(string str) = #82; +string altstr_prepare(string str) = #83; +string altstr_get(string str, float num) = #84; +string altstr_set(string str, float num, string set) = #85; +string altstr_ins(string str, float num, string set) = #86; + +///////////////////////////////////////////////// +// Write* Functions +///////////////////////////////////////////////// +void WriteByte(float data, float dest, float desto) = #401; +void WriteChar(float data, float dest, float desto) = #402; +void WriteShort(float data, float dest, float desto) = #403; +void WriteLong(float data, float dest, float desto) = #404; +void WriteAngle(float data, float dest, float desto) = #405; +void WriteCoord(float data, float dest, float desto) = #406; +void WriteString(string data, float dest, float desto)= #407; +void WriteEntity(entity data, float dest, float desto) = #408; + +////////////////////////////////////////////////// +// Draw funtions +////////////////////////////////////////////////// + +float iscachedpic(string name) = #451; +string precache_pic(string name) = #452; +void freepic(string name) = #453; + +float drawcharacter(vector position, float character, vector scale, vector rgb, float alpha, float flag) = #454; + +float drawstring(vector position, string text, vector scale, vector rgb, float alpha, float flag) = #455; + +float drawpic(vector position, string pic, vector size, vector rgb, float alpha, float flag) = #456; + +float drawfill(vector position, vector size, vector rgb, float alpha, float flag) = #457; + +void drawsetcliparea(float x, float y, float width, float height) = #458; + +void drawresetcliparea(void) = #459; + +vector drawgetimagesize(string pic) = #460; + +float cin_open(string file, string name) = #461; +void cin_close(string name) = #462; +void cin_setstate(string name, float type) = #463; +float cin_getstate(string name) = #464; + +//////////////////////////////////////////////// +// Menu functions +//////////////////////////////////////////////// + +void setkeydest(float dest) = #601; +float getkeydest(void) = #602; + +void setmousetarget(float trg) = #603; +float getmousetarget(void) = #604; + +float isfunction(string function_name) = #607; +void callfunction(...) = #605; +void writetofile(float fhandle, entity ent) = #606; +vector getresolution(float number) = #608; +string keynumtostring(float keynum) = #609; +string findkeysforcommand(string command) = #610; + +float gethostcachevalue(float type) = #611; +string gethostcachestring(float type, float hostnr) = #612; + +void parseentitydata(entity ent, string data) = #613; + +float stringtokeynum(string key) = #614; + +void resethostcachemasks(void) = #615; +void sethostcachemaskstring(float mask, float fld, string str, float op) = #616; +void sethostcachemasknumber(float mask, float fld, float num, float op) = #617; +void resorthostcache(void) = #618; +void sethostcachesort(float fld, float descending) = #619; +void refreshhostcache(void) = #620; +float gethostcachenumber(float fld, float hostnr) = #621; +float gethostcacheindexforkey(string key) = #622; +void addwantedhostcachekey(string key) = #623; + +#ifdef FIXEDFOPEN +float fopen( string filename, float mode ) = +{ + local float handle; + if( mode == FILE_READ ) { + return _fopen( filename, mode ); + } + + // check for data/ + filename = strzone( filename ); + if( substring( filename, 0, 5 ) != "data/" ) { + print( "menu: fopen: all output must go into data/!\n" ); + return -1; + } + handle = _fopen( substring( filename, 5, 10000 ), mode ); + strunzone( filename ); + return handle; +}; +#endif diff --git a/TeamNexuiz/menu/menu.qc b/TeamNexuiz/menu/menu.qc new file mode 100644 index 000000000..c753030fa --- /dev/null +++ b/TeamNexuiz/menu/menu.qc @@ -0,0 +1,151 @@ +/////////////////////////////////////////////// +// Menu Source File +/////////////////////// +// This file belongs to dpmod/darkplaces +// AK contains all menu functions (especially the required ones) +/////////////////////////////////////////////// + +void() m_updategamestate = +{ + // update isserver and clientstate + gamestatus = 0; + if( isserver() ) + gamestatus = gamestatus | GAME_ISSERVER; + if( clientstate() == CS_CONNECTED ) + gamestatus = gamestatus | GAME_CONNECTED; + if( cvar("developer") ) + gamestatus = gamestatus | GAME_DEVELOPER; +}; + +void() m_init = +{ + // init graphic + Gfx_Init(); + + // init cursor + Cursor_Init(); + + Key_Init(); + + HostCache_Init(); + + // init menu + Menu_Init(); +}; + +// required menu functions +void( float pKey, float pAscii ) m_keydown = +{ + if( !Menu_Active ) + return; + + // actually the menu is the only system that needs to react on key events + Menu_Key( pKey, pAscii ); +}; + +void() m_frame = +{ + Timer_Update(); + + HostCache_Update(); + + Key_Update(); + + // graphic frame + Gfx_Update(); + + // cursor frame + Cursor_Update(); + + // menu frame + Menu_Frame(); +}; + +void() m_draw = +{ + m_updategamestate(); + + + if( !Menu_Active ) { + // test whether we want to force it to be displayed + if( !(gamestatus & GAME_CONNECTED) && !(gamestatus & GAME_DEVELOPER) && cvar_string( "menu_directmenu" ) != "" ) { + m_display(); + } + else { + return; + } + } + + // call m_frame cause draw is the only menu function called once per frame + m_frame(); + + // now the drawing code + Menu_Draw(); + + // draw the cursor on top of the menu + Cursor_Draw(); + + // and now the gfx drawing code (for special fx) + Gfx_Draw(); +}; + +void() m_display = +{ + Menu_Active = true; + + m_updategamestate(); + + // let also the snd and gfx know (perhaps for sfx) + Gfx_Display(); + Cursor_Display(); + Key_Display(); + + // let the menu manager know + Menu_PerformReinit(); +}; + +void() m_hide = +{ + Gfx_Hide(); + Cursor_Hide(); + Key_Hide(); + + // let the menu manager know + Menu_Hide(); + + Menu_Active = false; +}; + +void() m_toggle = +{ + Timer_Update(); + + if( Menu_Active ) + m_hide(); + else + m_display(); +}; + +void() m_shutdown = +{ + Timer_Update(); + + // shutdown menu + Menu_Shutdown(); + + // shutdown timer + Timer_Quit(); + + // shutdown key system + Key_Quit(); + + // shutdown cursor + Cursor_Quit(); + + // shutdown graphic + Gfx_Quit(); + + // make sure everything is reset + setkeydest( KEY_GAME ); + setmousetarget( MT_CLIENT ); +}; \ No newline at end of file diff --git a/TeamNexuiz/menu/menu.qh b/TeamNexuiz/menu/menu.qh new file mode 100644 index 000000000..8be912770 --- /dev/null +++ b/TeamNexuiz/menu/menu.qh @@ -0,0 +1,35 @@ +/////////////////////////////////////////////// +// Menu Header File +/////////////////////// +// This file belongs to dpmod/darkplaces +// AK contains all common constants, etc. +/////////////////////////////////////////////// +// constants + +const float GAME_ISSERVER = 1; +const float GAME_CONNECTED = 2; +const float GAME_DEVELOPER = 4; + +const float INFINITY = 10000000.0; + +// prototypes + +typedef float bool; + +// global vars + +//float time; // important for animations, etc. +bool Menu_Active; // is set when the menu is active + +// updated every time toggle is called +float gamestatus; + +//#define USEFUNCTIONS +//#define UTILALTSTRING + +#define AVOIDSTRZONES + +// get rid of __NULL__ sets again! + +#pragma keyword enable ifstring +#pragma keyword enable lo diff --git a/TeamNexuiz/menu/menu1.qc b/TeamNexuiz/menu/menu1.qc new file mode 100644 index 000000000..f0c92fe6e --- /dev/null +++ b/TeamNexuiz/menu/menu1.qc @@ -0,0 +1,151 @@ +/////////////////////////////////////////////// +// Menu Source File +/////////////////////// +// This file belongs to dpmod/darkplaces +// AK contains all menu functions (especially the required ones) +/////////////////////////////////////////////// + +void() m_updategamestate = +{ + // update isserver and clientstate + gamestatus = 0; + if( isserver() ) + gamestatus = gamestatus | GAME_ISSERVER; + if( clientstate() == CS_CONNECTED ) + gamestatus = gamestatus | GAME_CONNECTED; + if( cvar("developer") ) + gamestatus = gamestatus | GAME_DEVELOPER; +}; + +void() m_init = +{ + // init graphic + Gfx_Init(); + + // init cursor + Cursor_Init(); + + Key_Init(); + + HostCache_Init(); + + // init menu + Menu_Init(); +}; + +// required menu functions +void( float pKey, float pAscii ) m_keydown = +{ + if( !Menu_Active ) + return; + + // actually the menu is the only system that needs to react on key events + Menu_Key( pKey, pAscii ); +}; + +void() m_frame = +{ + Timer_Update(); + + HostCache_Update(); + + Key_Update(); + + // graphic frame + Gfx_Update(); + + // cursor frame + Cursor_Update(); + + // menu frame + Menu_Frame(); +}; + +void() m_draw = +{ + m_updategamestate(); + + + if( !Menu_Active ) { + // test whether we want to force it to be displayed + if( !(gamestatus & GAME_CONNECTED) && !(gamestatus & GAME_DEVELOPER) ) { + m_display(); + } + else { + return; + } + } + + // call m_frame cause draw is the only menu function called once per frame + m_frame(); + + // now the drawing code + Menu_Draw(); + + // draw the cursor on top of the menu + Cursor_Draw(); + + // and now the gfx drawing code (for special fx) + Gfx_Draw(); +}; + +void() m_display = +{ + Menu_Active = true; + + m_updategamestate(); + + // let also the snd and gfx know (perhaps for sfx) + Gfx_Display(); + Cursor_Display(); + Key_Display(); + + // let the menu manager know + Menu_PerformReinit(); +}; + +void() m_hide = +{ + Gfx_Hide(); + Cursor_Hide(); + Key_Hide(); + + // let the menu manager know + Menu_Hide(); + + Menu_Active = false; +}; + +void() m_toggle = +{ + Timer_Update(); + + if( Menu_Active ) + m_hide(); + else + m_display(); +}; + +void() m_shutdown = +{ + Timer_Update(); + + // shutdown menu + Menu_Shutdown(); + + // shutdown timer + Timer_Quit(); + + // shutdown key system + Key_Quit(); + + // shutdown cursor + Cursor_Quit(); + + // shutdown graphic + Gfx_Quit(); + + // make sure everything is reset + setkeydest( KEY_GAME ); + setmousetarget( MT_CLIENT ); +}; \ No newline at end of file diff --git a/TeamNexuiz/menu/msys.qc b/TeamNexuiz/menu/msys.qc new file mode 100644 index 000000000..0b4853d2a --- /dev/null +++ b/TeamNexuiz/menu/msys.qc @@ -0,0 +1,278 @@ +////////////////////////////////////////////////////////// +// sys globals + +entity self; + +///////////////////////////////////////////////////////// +void end_sys_globals; +///////////////////////////////////////////////////////// +// sys fields + +///////////////////////////////////////////////////////// +void end_sys_fields; +///////////////////////////////////////////////////////// +// sys functions + +void() m_init; +void(float keynr, float ascii) m_keydown; +void() m_draw; +void() m_display; // old NG Menu +void() m_toggle; +void() m_hide; // old NG Menu +void() m_shutdown; + +///////////////////////////////////////////////////////// +// sys constants +/////////////////////////// +// key constants + +// +// these are the key numbers that should be passed to Key_Event +// +float K_TAB = 9; +float K_ENTER = 13; +float K_ESCAPE = 27; +float K_SPACE = 32; + +// normal keys should be passed as lowercased ascii + +float K_BACKSPACE = 127; +float K_UPARROW = 128; +float K_DOWNARROW = 129; +float K_LEFTARROW = 130; +float K_RIGHTARROW = 131; + +float K_ALT = 132; +float K_CTRL = 133; +float K_SHIFT = 134; +float K_F1 = 135; +float K_F2 = 136; +float K_F3 = 137; +float K_F4 = 138; +float K_F5 = 139; +float K_F6 = 140; +float K_F7 = 141; +float K_F8 = 142; +float K_F9 = 143; +float K_F10 = 144; +float K_F11 = 145; +float K_F12 = 146; +float K_INS = 147; +float K_DEL = 148; +float K_PGDN = 149; +float K_PGUP = 150; +float K_HOME = 151; +float K_END = 152; + +float K_KP_HOME = 160; +float K_KP_UPARROW = 161; +float K_KP_PGUP = 162; +float K_KP_LEFTARROW = 163; +float K_KP_5 = 164; +float K_KP_RIGHTARROW = 165; +float K_KP_END = 166; +float K_KP_DOWNARROW = 167; +float K_KP_PGDN = 168; +float K_KP_ENTER = 169; +float K_KP_INS = 170; +float K_KP_DEL = 171; +float K_KP_SLASH = 172; +float K_KP_MINUS = 173; +float K_KP_PLUS = 174; + +float K_PAUSE = 255; + +// +// joystick buttons +// +float K_JOY1 = 768; +float K_JOY2 = 769; +float K_JOY3 = 770; +float K_JOY4 = 771; + +// +// aux keys are for multi-buttoned joysticks to generate so they can use +// the normal binding process +// +float K_AUX1 = 772; +float K_AUX2 = 773; +float K_AUX3 = 774; +float K_AUX4 = 775; +float K_AUX5 = 776; +float K_AUX6 = 777; +float K_AUX7 = 778; +float K_AUX8 = 779; +float K_AUX9 = 780; +float K_AUX10 = 781; +float K_AUX11 = 782; +float K_AUX12 = 783; +float K_AUX13 = 784; +float K_AUX14 = 785; +float K_AUX15 = 786; +float K_AUX16 = 787; +float K_AUX17 = 788; +float K_AUX18 = 789; +float K_AUX19 = 790; +float K_AUX20 = 791; +float K_AUX21 = 792; +float K_AUX22 = 793; +float K_AUX23 = 794; +float K_AUX24 = 795; +float K_AUX25 = 796; +float K_AUX26 = 797; +float K_AUX27 = 798; +float K_AUX28 = 799; +float K_AUX29 = 800; +float K_AUX30 = 801; +float K_AUX31 = 802; +float K_AUX32 = 803; + +// +// mouse buttons generate virtual keys +// +float K_MOUSE1 = 512; +float K_MOUSE2 = 513; +float K_MOUSE3 = 514; +float K_MOUSE4 = 515; +float K_MOUSE5 = 516; +float K_MOUSE6 = 517; +float K_MOUSE7 = 518; +float K_MOUSE8 = 519; +float K_MOUSE9 = 520; +float K_MOUSE10 = 521; + +float K_MWHEELDOWN = K_MOUSE4; +float K_MWHEELUP = K_MOUSE5; + +/////////////////////////// +// key dest constants + +float KEY_GAME = 0; +float KEY_MENU = 2; +float KEY_UNKNOWN = 3; + +/////////////////////////// +// file constants + +float FILE_READ = 0; +float FILE_APPEND = 1; +float FILE_WRITE = 2; + +/////////////////////////// +// logical constants (just for completeness) + +float TRUE = 1; +float FALSE = 0; + +/////////////////////////// +// boolean constants + +float true = 1; +float false = 0; + +/////////////////////////// +// msg constants + +float MSG_BROADCAST = 0; // unreliable to all +float MSG_ONE = 1; // reliable to one (msg_entity) +float MSG_ALL = 2; // reliable to all +float MSG_INIT = 3; // write to the init string + +///////////////////////////// +// mouse target constants + +float MT_MENU = 1; +float MT_CLIENT = 2; + +///////////////////////// +// client state constants + +float CS_DEDICATED = 0; +float CS_DISCONNECTED = 1; +float CS_CONNECTED = 2; + +/////////////////////////// +// blend flags + +float DRAWFLAG_NORMAL = 0; +float DRAWFLAG_ADDITIVE = 1; +float DRAWFLAG_MODULATE = 2; +float DRAWFLAG_2XMODULATE = 3; + + +/////////////////////////// +// cvar constants + +float CVAR_SAVE = 1; +float CVAR_NOTIFY = 2; +float CVAR_READONLY = 4; + +/////////////////////////// +// server list constants + +float SLIST_HOSTCACHEVIEWCOUNT = 0; +float SLIST_HOSTCACHETOTALCOUNT = 1; +float SLIST_MASTERQUERYCOUNT = 2; +float SLIST_MASTERREPLYCOUNT = 3; +float SLIST_SERVERQUERYCOUNT = 4; +float SLIST_SERVERREPLYCOUNT = 5; +float SLIST_SORTFIELD = 6; +float SLIST_SORTDESCENDING = 7; + +float SLIST_LEGACY_LINE1 = 1024; +float SLIST_LEGACY_LINE2 = 1025; + +float SLIST_TEST_CONTAINS = 0; +float SLIST_TEST_NOTCONTAIN = 1; +float SLIST_TEST_LESSEQUAL = 2; +float SLIST_TEST_LESS = 3; +float SLIST_TEST_EQUAL = 4; +float SLIST_TEST_GREATER = 5; +float SLIST_TEST_GREATEREQUAL = 6; +float SLIST_TEST_NOTEQUAL = 7; + +float SLIST_MASK_AND = 0; +float SLIST_MASK_OR = 512; + +float NET_CURRENTPROTOCOL = 3; + +//////////////////////////////// +// cinematic action constants + +float CINE_PLAY = 1; +float CINE_LOOP = 2; +float CINE_PAUSE = 3; +float CINE_FIRSTFRAME = 4; +float CINE_RESETONWAKEUP= 5; + +/////////////////////////// +// null entity (actually it is the same like the world entity) + +entity null_entity; + +/////////////////////////// +// error constants + +// file handling +float ERR_CANNOTOPEN = -1; // fopen +float ERR_NOTENOUGHFILEHANDLES = -2; // fopen +float ERR_INVALIDMODE = -3; // fopen +float ERR_BADFILENAME = -4; // fopen + +// drawing functions + +float ERR_NULLSTRING = -1; +float ERR_BADDRAWFLAG = -2; +float ERR_BADSCALE = -3; +float ERR_BADSIZE = ERR_BADSCALE; +float ERR_NOTCACHED = -4; + +/* not supported at the moment +/////////////////////////// +// os constants + +float OS_WINDOWS = 0; +float OS_LINUX = 1; +float OS_MAC = 2; +*/ + diff --git a/TeamNexuiz/menu/progdefs.h b/TeamNexuiz/menu/progdefs.h new file mode 100644 index 000000000..3f3064cc3 --- /dev/null +++ b/TeamNexuiz/menu/progdefs.h @@ -0,0 +1,13 @@ + +/* file generated by qcc, do not modify */ + +typedef struct +{ int pad[28]; + int self; +} globalvars_t; + +typedef struct +{ +} entvars_t; + +#define PROGHEADER_CRC 10020 diff --git a/TeamNexuiz/menu/progs.src b/TeamNexuiz/menu/progs.src new file mode 100644 index 000000000..30f202999 --- /dev/null +++ b/TeamNexuiz/menu/progs.src @@ -0,0 +1,180 @@ +/////////////////////////////////////////////// +// Progs file +/////////////////////// +// This file belongs to dpmod/darkplaces +// AK contains all file names which should be included into menu.dat +// this is absolutly beta +/////////////////////////////////////////////// +// menu.dat destination path +../../menu.dat + +// these are the default qc header files +msys.qc +mbuiltin.qc + +//////////////////////////// +// dpmod-specific menu files +/// + +// Header Files + +menu.qh + +// util functions +util/util.qh +util/altstring.qh +util/rect.qh +util/string.qh +util/text.qh +util/uid.qh +util/property.qh + +// base system +base/timer.qh +base/gfx.qh +base/snd.qh +base/cursor.qh +base/key.qh +base/hostcache.qh + +// main system +system/parser.qh +system/debug.qh +system/isframe.qh +system/mgfx.qh +system/item.qh +system/structure.qh +system/events.qh +system/history.qh +system/gc.qh + +// controls +control/items.qh +control/constants.qh +control/data/data.qh +control/window/windows.qh +control/visual/visual.qh +control/automation/automation.qh +//control/fx/fx.qh + +// custom (game specific) +custom/custom.qh +custom/player/player.qh +custom/creategame/creategame.qh +custom/joingame.qh +custom/key.qh +custom/video.qh +custom/credits.qh +custom/messagebox.qh + +// Source Files + +// custom (game specific) +custom/quit.qm +custom/option.qm +custom/globalkey.qm +custom/stresstest.qm +custom/visible.qm +custom/color.qm +custom/player.qm +custom/util.qm +custom/creategame.qm +custom/key.qm +custom/video.qm +custom/joingame.qm +custom/credits.qm + +custom/player/avatar.qc +custom/player/name.qc +custom/player/color.qc + +custom/creategame/maps.qc +custom/creategame/mods.qc +custom/creategame/filelist.qc + +custom/visible.qc +custom/key.qc +custom/video.qc +custom/joingame.qc +custom/credits.qc +custom/messagebox.qc + +// controls +control/automation/automation.qc +control/automation/foreach.qc +control/automation/job.qc + +control/data/base.qc +control/data/container.qc +control/data/cvar.qc +control/data/text.qc +control/data/value.qc +control/data/textswitch.qc +control/data/valueswitch.qc +control/data/fastresync.qc +control/data/textvalue.qc +control/data/texttime.qc +control/data/altstring.qc +control/data/router.qc + +control/window/window.qc +control/window/reference.qc +control/window/layout.qc +control/window/arrangement.qc +control/window/scroll.qc +control/window/eventwindow.qc +control/window/frame.qc + +control/visual/list.qc +control/visual/button.qc +control/visual/editbox.qc +control/visual/label.qc +control/visual/multilabel.qc +control/visual/picture.qc +control/visual/rect.qc +control/visual/slider.qc +control/visual/valuebutton.qc +control/visual/floating.qc +control/visual/switchbutton.qc +control/visual/scrollbar.qc + +//control/fx/vector.qc +//control/fx/float.qc +//control/fx/interpol.qc + +control/cinematic.qc +control/container.qc +control/custom.qc +control/link.qc + +// main system +system/history.qc +system/events.qc +//system/events_.qc +system/event_helper.qc +system/structure.qc +system/mgfx.qc +system/isframe.qc +system/debug.qc +system/parser.qc +system/gc.qc + +// base systems +base/key.qc +base/cursor.qc +base/snd.qc +base/gfx.qc +base/timer.qc +base/hostcache.qc + +// util functions +util/property.qc +util/text.qc +util/uid.qc +util/string.qc +util/rect.qc +util/altstring.qc +util/nfunction.qc + +menu.qc + diff --git a/TeamNexuiz/menu/qc.asm b/TeamNexuiz/menu/qc.asm new file mode 100644 index 000000000..2953bdf84 --- /dev/null +++ b/TeamNexuiz/menu/qc.asm @@ -0,0 +1,17163 @@ +entity self; +void end_sys_globals; +void end_sys_fields; +void () m_init; +void (float, float) m_keydown; +void () m_draw; +void () m_display; +void () m_toggle; +void () m_hide; +void () m_shutdown; +float K_TAB; +float K_ENTER; +float K_ESCAPE; +float K_SPACE; +float K_BACKSPACE; +float K_UPARROW; +float K_DOWNARROW; +float K_LEFTARROW; +float K_RIGHTARROW; +float K_ALT; +float K_CTRL; +float K_SHIFT; +float K_F1; +float K_F2; +float K_F3; +float K_F4; +float K_F5; +float K_F6; +float K_F7; +float K_F8; +float K_F9; +float K_F10; +float K_F11; +float K_F12; +float K_INS; +float K_DEL; +float K_PGDN; +float K_PGUP; +float K_HOME; +float K_END; +float K_KP_HOME; +float K_KP_UPARROW; +float K_KP_PGUP; +float K_KP_LEFTARROW; +float K_KP_5; +float K_KP_RIGHTARROW; +float K_KP_END; +float K_KP_DOWNARROW; +float K_KP_PGDN; +float K_KP_ENTER; +float K_KP_INS; +float K_KP_DEL; +float K_KP_SLASH; +float K_KP_MINUS; +float K_KP_PLUS; +float K_PAUSE; +float K_JOY1; +float K_JOY2; +float K_JOY3; +float K_JOY4; +float K_AUX1; +float K_AUX2; +float K_AUX3; +float K_AUX4; +float K_AUX5; +float K_AUX6; +float K_AUX7; +float K_AUX8; +float K_AUX9; +float K_AUX10; +float K_AUX11; +float K_AUX12; +float K_AUX13; +float K_AUX14; +float K_AUX15; +float K_AUX16; +float K_AUX17; +float K_AUX18; +float K_AUX19; +float K_AUX20; +float K_AUX21; +float K_AUX22; +float K_AUX23; +float K_AUX24; +float K_AUX25; +float K_AUX26; +float K_AUX27; +float K_AUX28; +float K_AUX29; +float K_AUX30; +float K_AUX31; +float K_AUX32; +float K_MOUSE1; +float K_MOUSE2; +float K_MOUSE3; +float K_MOUSE4; +float K_MOUSE5; +float K_MOUSE6; +float K_MOUSE7; +float K_MOUSE8; +float K_MOUSE9; +float K_MOUSE10; +float K_MWHEELDOWN; +float K_MWHEELUP; +float KEY_GAME; +float KEY_MENU; +float KEY_UNKNOWN; +float FILE_READ; +float FILE_APPEND; +float FILE_WRITE; +float TRUE; +float FALSE; +float true; +float false; +float MSG_BROADCAST; +float MSG_ONE; +float MSG_ALL; +float MSG_INIT; +float MT_MENU; +float MT_CLIENT; +float CS_DEDICATED; +float CS_DISCONNECTED; +float CS_CONNECTED; +float DRAWFLAG_NORMAL; +float DRAWFLAG_ADDITIVE; +float DRAWFLAG_MODULATE; +float DRAWFLAG_2XMODULATE; +float CVAR_SAVE; +float CVAR_NOTIFY; +float CVAR_READONLY; +float SLIST_HOSTCACHEVIEWCOUNT; +float SLIST_HOSTCACHETOTALCOUNT; +float SLIST_MASTERQUERYCOUNT; +float SLIST_MASTERREPLYCOUNT; +float SLIST_SERVERQUERYCOUNT; +float SLIST_SERVERREPLYCOUNT; +float SLIST_SORTFIELD; +float SLIST_SORTDESCENDING; +float SLIST_LEGACY_LINE1; +float SLIST_LEGACY_LINE2; +float SLIST_TEST_CONTAINS; +float SLIST_TEST_NOTCONTAIN; +float SLIST_TEST_LESSEQUAL; +float SLIST_TEST_LESS; +float SLIST_TEST_EQUAL; +float SLIST_TEST_GREATER; +float SLIST_TEST_GREATEREQUAL; +float SLIST_TEST_NOTEQUAL; +float SLIST_MASK_AND; +float SLIST_MASK_OR; +float NET_CURRENTPROTOCOL; +float CINE_PLAY; +float CINE_LOOP; +float CINE_PAUSE; +float CINE_FIRSTFRAME; +float CINE_RESETONWAKEUP; +entity null_entity; +float ERR_CANNOTOPEN; +float ERR_NOTENOUGHFILEHANDLES; +float ERR_INVALIDMODE; +float ERR_BADFILENAME; +float ERR_NULLSTRING; +float ERR_BADDRAWFLAG; +float ERR_BADSCALE; +float ERR_BADSIZE; +float ERR_NOTCACHED; +void (string) checkextension; +void (string) error; +void (string) objerror; +void (string) print; +void (string) bprint; +void (float, string) sprint; +void (string) centerprint; +vector (vector) normalize; +float (vector) vlen; +float (vector) vectoyaw; +vector (vector) vectoangles; +float () random; +void (string) cmd; +float (string) cvar; +string (string) str_cvar; +void (string, string) cvar_set; +void (string) dprint; +string (float) ftos; +float (float) fabs; +string (vector) vtos; +string (entity) etos; +float (string) stof; +entity () spawn; +void (entity) remove; +entity (entity, FIELD TYPE, string) findstring; +entity (entity, FIELD TYPE, float) findfloat; +entity (entity, FIELD TYPE, entity) findentity; +entity (FIELD TYPE, string) findchainstring; +entity (FIELD TYPE, float) findchainfloat; +entity (FIELD TYPE, entity) findchainentity; +string (string) precache_file; +string (string) precache_sound; +void () crash; +void () coredump; +void () stackdump; +void () traceon; +void () traceoff; +void (entity) eprint; +float (float) rint; +float (float) floor; +float (float) ceil; +entity (entity) nextent; +float (float) sin; +float (float) cos; +float (float) sqrt; +vector () randomvec; +float (string, string, float) registercvar; +float (float) min; +float (float) max; +float (float, float, float) bound; +float (float, float) pow; +void (entity, entity) copyentity; +float (string, float) _fopen; +void (float) fclose; +string (float) fgets; +void (float, string) fputs; +float (string) strlen; +string (string) strcat; +string (string, float, float) substring; +vector (string) stov; +string (string) strzone; +void (string) strunzone; +float (string) tokenize; +string (float) argv; +float () isserver; +float () clientcount; +float () clientstate; +void (float, string) clientcommand; +void (string) changelevel; +void (string) localsound; +vector () getmousepos; +float () gettime; +void (string) loadfromdata; +void (string) loadfromfile; +float (float, float) mod; +float (string, float, float) search_begin; +void (float) search_end; +float (float) search_getsize; +string (float, float) search_getfilename; +string (float) chr; +float (entity) etof; +entity (float) ftoe; +float (string) validstring; +float (string) altstr_count; +string (string) altstr_prepare; +string (string, float) altstr_get; +string (string, float, string) altstr_set; +string (string, float, string) altstr_ins; +void (float, float, float) WriteByte; +void (float, float, float) WriteChar; +void (float, float, float) WriteShort; +void (float, float, float) WriteLong; +void (float, float, float) WriteAngle; +void (float, float, float) WriteCoord; +void (string, float, float) WriteString; +void (entity, float, float) WriteEntity; +float (string) iscachedpic; +string (string) precache_pic; +void (string) freepic; +float (vector, float, vector, vector, float, float) drawcharacter; +float (vector, string, vector, vector, float, float) drawstring; +float (vector, string, vector, vector, float, float) drawpic; +float (vector, vector, vector, float, float) drawfill; +void (float, float, float, float) drawsetcliparea; +void () drawresetcliparea; +vector (string) drawgetimagesize; +float (string, string) cin_open; +void (string) cin_close; +void (string, float) cin_setstate; +float (string) cin_getstate; +void (float) setkeydest; +float () getkeydest; +void (float) setmousetarget; +float () getmousetarget; +float (string) isfunction; +void () callfunction; +void (float, entity) writetofile; +vector (float) getresolution; +string (float) keynumtostring; +string (string) findkeysforcommand; +float (float) gethostcachevalue; +string (float, float) gethostcachestring; +void (entity, string) parseentitydata; +float (string) stringtokeynum; +void () resethostcachemasks; +void (float, float, string, float) sethostcachemaskstring; +void (float, float, float, float) sethostcachemasknumber; +void () resorthostcache; +void (float, float) sethostcachesort; +void () refreshhostcache; +float (float, float) gethostcachenumber; +float (string) gethostcacheindexforkey; +void (string) addwantedhostcachekey; +float (string, float) fopen; +float(string filename, float mode) fopen = asm +{ +local float handle; +local float temp_0; + EQ_F mode, KEY_GAME, temp_0; + IFNOT temp_0, 5; + STORE_F filename, parm0_x; + STORE_F mode, parm1_x; + CALL2 _fopen; + RETURN return_x; + STORE_F filename, parm0_x; + CALL1 strzone; + STORE_S return_x, filename; + STORE_F filename, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F SLIST_SERVERREPLYCOUNT, parm2_x; + CALL3 substring; + NE_S return_x, "data/", temp_0; + IFNOT temp_0, 4; + STORE_F "menu: fopen: all output must go into data/! +", parm0_x; + CALL1 print; + RETURN ERR_CANNOTOPEN; + STORE_F filename, parm0_x; + STORE_F SLIST_SERVERREPLYCOUNT, parm1_x; + STORE_F 10000.000000, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + STORE_F mode, parm1_x; + CALL2 _fopen; + STORE_F return_x, handle; + STORE_F filename, parm0_x; + CALL1 strunzone; + RETURN handle; + DONE; +} + +float GAME_ISSERVER; +float GAME_CONNECTED; +float GAME_DEVELOPER; +float INFINITY; +bool Menu_Active; +float gamestatus; +void () Util_NullFunction; +float () Util_TrueFunction; +float () Util_FalseFunction; +string () Util_StringFuntion; +vector () Util_VectorFunction; +entity () Util_EntityFunction; +float (string) Util_GetAltStringCount; +string (string, float) Util_GetAltStringItem; +string (string, float, string) Util_SetAltStringItem; +string (string, float) Util_DelAltStringItem; +string (string, float, string) Util_InsAltStringItem; +string (string) Util_AltStringPrepare; +string (string, string) Util_AltStringPush; +string (string, string) Util_AltStringPushBack; +string (string) Util_GetAltStringTop; +string (string) Util_AltStringPop; +bool (vector, vector, vector) Util_InRect; +vector (vector, vector, vector) Util_GetClipDelta; +vector (vector, vector, vector, vector) Util_ClipRect; +bool (vector, vector, vector, vector) Util_RectInRect; +string (string) Util_ClipStack_Reset; +string (string, vector, vector) Util_ClipStack_Push; +string (string) Util_ClipStack_Pop; +vector (string) Util_ClipStack_GetPosition; +vector (string) Util_ClipStack_GetSize; +string (string) Util_OriginStack_Reset; +string (string, vector) Util_OriginStack_Push; +string (string) Util_OriginStack_Pop; +vector (string) Util_OriginStack_Get; +string () String_Create; +string (string) String_Zone; +string (string) String_Normal; +string (string, string) String_Set; +string (string) String_Free; +string (string, string) String_Append; +string (string, float, float) String_Substring; +void (entity, FIELD TYPE) String_EntityCreate; +void (entity, FIELD TYPE) String_EntityZone; +void (entity, FIELD TYPE, string) String_EntitySet; +void (entity, FIELD TYPE) String_EntityFree; +vector (string, vector) Util_GetEndOfLine; +vector (string, vector, float) Util_GetEndOfWrappedLine; +string () Util_CreateUID; +string (float) Util_GetUIDName; +float (string) Util_GetUIDNum; +string () Property_Create; +string (string) Property_Zone; +string (string) Propery_Free; +float (string) Property_Validate; +float (string, string) Property_Exists; +string (string, string, string) Property_Register; +string (string, string, string) Property_Set; +string (string, string, string) Property_Rename; +string (string, string) Property_Delete; +string (string, string) Property_Get; +string (string, string) Property_GetString; +float (string, string) Property_GetFloat; +vector (string, string) Property_GetVector; +entity (string, string) Property_GetEntity; +float Timer_Time; +float Timer_Delta; +void () Timer_Init; +void () Timer_Update; +void () Timer_Quit; +float GFX_MENU_DEFAULT_WIDTH; +float GFX_MENU_DEFAULT_HEIGHT; +string CVAR_SCMENU_MENU_WIDTH; +string CVAR_SCMENU_MENU_HEIGHT; +float GFX_SHOWFPS_DURATION; +float GFX_SHOWFPS_DEFAULT; +string CVAR_SCMENU_SHOWFPS; +float Gfx_Menu_Width; +float Gfx_Menu_Height; +float Gfx_Real_Width; +float Gfx_Real_Height; +void () Gfx_Init; +void () Gfx_Quit; +void () Gfx_Display; +void () Gfx_Hide; +void () Gfx_Update; +void () Gfx_Draw; +float (string) Gfx_IsCached; +float (string) Gfx_Precache; +void (string) Gfx_Free; +vector (string) Gfx_GetImageSize; +vector (vector) Gfx_ConToMen; +vector (vector) Gfx_MenToCon; +void () Gfx_ResetClipArea; +float (vector, float, vector, vector, float, float) Gfx_DrawCharacter; +float (vector, string, vector, vector, float, float) Gfx_DrawString; +float (vector, string, vector, vector, float, float) Gfx_DrawPic; +float (vector, vector, vector, float, float) Gfx_Fill; +void (float, float, float, float) Gfx_SetClipArea; +float (string) Sound_Precache; +void (string) Sound_Free; +void (string) Sound_Play; +string CURSOR_PATH; +string Cursor_Current; +void () Cursor_Animation; +float Cursor_Relative_x; +float Cursor_Relative_y; +float Cursor_Relative_z; +vector Cursor_Relative; +float Cursor_Position_x; +float Cursor_Position_y; +float Cursor_Position_z; +vector Cursor_Position; +float Cursor_Speed_x; +float Cursor_Speed_y; +float Cursor_Speed_z; +vector Cursor_Speed; +float Cursor_Transparency; +float Cursor_Color_x; +float Cursor_Color_y; +float Cursor_Color_z; +vector Cursor_Color; +float Cursor_Scale; +float Cursor_Flag; +float Cursor_Offset_x; +float Cursor_Offset_y; +float Cursor_Offset_z; +vector Cursor_Offset; +void () Cursor_Init; +void () Cursor_Quit; +void () Cursor_Display; +void () Cursor_Hide; +void () Cursor_Draw; +void () Cursor_Update; +void () Cursor_DefaultAnimation; +void (vector, string, vector, vector, float, float) Cursor_PrintInfo; +void () Key_Init; +void () Key_Quit; +void () Key_Update; +void () Key_Display; +void () Key_Hide; +void (string) Key_Unbind; +string (float) Key_GetName; +float (string) Key_GetNum; +string (string) Key_GetBindList; +void (float, string) Key_LimitBinds; +void (string, string) Key_Bind; +float SLIST_FIELD_CNAME; +float SLIST_FIELD_PING; +float SLIST_FIELD_GAME; +float SLIST_FIELD_MOD; +float SLIST_FIELD_MAP; +float SLIST_FIELD_NAME; +float SLIST_FIELD_MAXPLAYERS; +float SLIST_FIELD_NUMPLAYERS; +float SLIST_FIELD_PROTOCOL; +float HostCache_ViewCount; +float HostCache_TotalCount; +float HostCache_MasterQueryCount; +float HostCache_MasterReplyCount; +float HostCache_ServerQueryCount; +float HostCache_ServerReplyCount; +float HostCache_SortField; +float HostCache_SortDescending; +void () HostCache_Init; +void () HostCache_Update; +void () HostCache_ResortViewSet; +void () HostCache_RefreshHostCache; +float PARSER_TT_ITEM; +float PARSER_TT_TEMPLATE; +float PARSER_TT_DERIVE; +float PARSER_TT_DERIVETEMPLATE; +float PARSER_TT_DEFINE; +float PARSER_TT_UNDEF; +float PARSER_TT_IGNORE; +float PARSER_TT_NAMESPACE; +float PARSER_TT_INCLUDE; +float PARSER_TT_BRACEOPEN; +float PARSER_TT_BRACECLOSE; +float PARSER_TT_BRACKETOPEN; +float PARSER_TT_BRACKETCLOSE; +float PARSER_TT_TOKEN; +float PARSER_TT_SIZE; +string PARSER_TT_TEXT; +float PARSER_NORMAL; +float PARSER_INFO; +float PARSER_HIGH; +float PARSER_LOW; +float Parser_MaxIncludeDepth; +string Parser_FileList; +float Parser_IncludeDepth; +entity Parser_DefineChain; +string Parser_Filename; +float Parser_LineNumber; +float Parser_File; +string Parser_Line; +float Parser_NumTokens; +float Parser_TokenNum; +string Parser_Token; +float Parser_TokenType; +float () Parser_GetToken; +float () Parser_GetTokenType; +void () Parser_ParseDefine; +void () Parser_ProcessDefine; +void () Parser_ParseUndef; +void (float) Parser_Expect; +void (string) Parser_Error; +void (float, string) Parser_Print; +entity (string) Parser_ParseItem; +entity (string) Parser_DeriveItem; +string (string, string) Parser_ParseEntity; +void (string) Parser_ParseDefinition; +void (string) Parser_ParseNamespace; +void () Parser_ParseIgnore; +void (entity, entity) Parser_CloneChildren; +void (string) Parser_IncludeFile; +void (string, string) Parser_ParseFile; +void (string) Parser_ParseMenu; +void () Parser_Init; +void () Parser_Quit; +string SYSTEM_CVAR_VERSION_BUILDDATE; +string SYSTEM_CVAR_VERSION_BUILDTIME; +string SYSTEM_CVAR_VERSION; +string SYSTEM_CVAR_VERSION_BUILDDATE_VALUE; +string SYSTEM_CVAR_VERSION_BUILDTIME_VALUE; +string SYSTEM_CVAR_VERSION_VALUE; +string SYSTEM_CVAR_DEBUG; +string SYSTEM_CVAR_DEBUG_REF; +string SYSTEM_CVAR_DEBUG_SOUND; +string SYSTEM_CVAR_DEBUG_AREA; +string SYSTEM_CVAR_DEBUG_STEP; +string SYSTEM_CVAR_DEBUG_MOUSE; +string SYSTEM_CVAR_DEBUG_STRUCTURE; +string SYSTEM_CVAR_DEBUG_RUNFLAG; +string SYSTEM_CVAR_DEBUG_PROCESS; +string SYSTEM_CVAR_DEBUG_MGFX; +string SYSTEM_CVAR_DEBUG_PARSER; +string SYSTEM_CVAR_DEBUG_PROCESS_FILTER; +string SYSTEM_CVAR_DEBUG_DUMP_NAMES; +float SYSTEM_CVAR_DEBUG_DEFAULT; +float SYSTEM_CVAR_DEBUG_REF_DEFAULT; +float SYSTEM_CVAR_DEBUG_RUNFLAG_DEFAULT; +float SYSTEM_CVAR_DEBUG_PROCESS_DEFAULT; +float SYSTEM_CVAR_DEBUG_MGFX_DEFAULT; +float SYSTEM_CVAR_DEBUG_STRUCTURE_DEFAULT; +string SYSTEM_CVAR_DEBUG_PARSER_DEFAULT; +string SYSTEM_CVAR_DEBUG_PROCESS_FILTER_DEFAULT; +float SYSTEM_CVAR_DEBUG_SOUND_DEFAULT; +float SYSTEM_CVAR_DEBUG_AREA_DEFAULT; +float SYSTEM_CVAR_DEBUG_STEP_DEFAULT; +float SYSTEM_CVAR_DEBUG_MOUSE_DEFAULT; +bool sys_debug; +bool sys_debug_sound; +bool sys_debug_ref; +bool sys_debug_area; +bool sys_debug_runflag; +bool sys_debug_process; +bool sys_debug_mgfx; +float sys_debug_mouse; +float sys_debug_structure; +float sys_debug_parser; +bool sys_debug_halt; +float sys_debug_process_filter; +float sys_debug_cursor_localpos_x; +float sys_debug_cursor_localpos_y; +float sys_debug_cursor_localpos_z; +vector sys_debug_cursor_localpos; +void () Sys_Debug_Init; +void () Sys_Debug_Frame; +void () Sys_Debug_Draw; +void () Sys_Debug_DumpNames; +string MENU_NORMAL_NAME; +string MENU_INGAME_NAME; +string MENU_NORMAL_DEFAULT; +string MENU_INGAME_DEFAULT; +string MENU_MAINFILE; +bool MENU_ALLOWINGAME; +void () Menu_Init; +void () Menu_Load; +void () Menu_PerformReinit; +void () Menu_Hide; +void () Menu_Shutdown; +void (entity) Menu_LinkItem; +void (entity) Menu_LinkWindow; +entity (string, string, string) Menu_CreateItem; +entity (entity, string, string, bool) Menu_DeriveItem; +void (entity, string) Menu_AddEntityData; +void (entity) Menu_LinkChildren; +void () Menu_LinkWindows; +float Menu_Clip_Position_x; +float Menu_Clip_Position_y; +float Menu_Clip_Position_z; +vector Menu_Clip_Position; +float Menu_Clip_Size_x; +float Menu_Clip_Size_y; +float Menu_Clip_Size_z; +vector Menu_Clip_Size; +float Menu_Origin_x; +float Menu_Origin_y; +float Menu_Origin_z; +vector Menu_Origin; +vector (vector) Menu_OrgToMen; +vector (vector) Menu_MenToOrg; +vector (vector) Menu_ConToOrg; +vector (vector) Menu_OrgToCon; +float (vector, float, vector, vector, float, float) Menu_DrawCharacter; +float (vector, string, vector, vector, float, float) Menu_DrawString; +float (vector, string, vector, vector, float, float) Menu_DrawPicture; +float (vector, vector, vector, float, float) Menu_Fill; +void (float, float, float, float) Menu_SetClipArea; +void () Menu_ResetClipArea; +bool _menu_process_filtered; +float RUNFLAG_TEMPLATE; +float RUNFLAG_HADMOUSE; +float RUNFLAG_MOUSEINAREA; +float RUNFLAG_CHILDDRAWONLY; +float RUNFLAG_CHILDDRAWUPDATEONLY; +float RUNFLAG_HIDDEN; +float RUNFLAG_CLIPPED; +float RUNFLAG_NOSELECT; +float RUNFLAG_USERSELECT; +float RUNFLAG_DELETEFRAME; +float RUNFLAG_DELETETOGGLE; +float RUNFLAG_SPAWNED; +.entity chain; +.string type; +.entity _parent; +.string parent; +.string name; +.entity _next; +.entity _prev; +.entity _child; +.float orderPos; +.float flag; +.float _runFlag; +.float pos_x; +.float pos_y; +.float pos_z; +.vector pos; +.float size_x; +.float size_y; +.float size_z; +.vector size; +.float origin_x; +.float origin_y; +.float origin_z; +.vector origin; +.float _cache_origin_x; +.float _cache_origin_y; +.float _cache_origin_z; +.vector _cache_origin; +.float _cache_clip_pos_x; +.float _cache_clip_pos_y; +.float _cache_clip_pos_z; +.vector _cache_clip_pos; +.float _cache_clip_size_x; +.float _cache_clip_size_y; +.float _cache_clip_size_z; +.vector _cache_clip_size; +.void () init; +.void () reinit; +.void () destroy; +.void () mouseEnter; +.void () mouseLeave; +.void () update; +.void (bool, bool) select; +.void () action; +.void () draw; +.bool (float, float) key; +.void () _reinit; +.void () _destroy; +.void () _mouseEnter; +.void () _mouseLeave; +.void () _update; +.void (bool, bool) _select; +.void () _draw; +.bool (float, float) _key; +void () DefCt_Reinit; +void () DefCt_Destroy; +float (float, float) DefCt_Key; +void () DefCt_Draw; +void () DefCt_MouseEnter; +void () DefCt_MouseLeave; +void () DefCt_Update; +void (float, float) DefCt_Select; +void (entity) Raise_Reinit; +void (entity) Raise_Destroy; +bool (entity, float, float) Raise_Key; +void (entity) Raise_Draw; +void (entity) Raise_MouseEnter; +void (entity) Raise_MouseLeave; +void (entity) Raise_Update; +void (entity, float, float) Raise_Select; +void () CtCall_Init; +void () CtCall_Reinit; +void () CtCall_Destroy; +float (float, float) CtCall_Key; +void () CtCall_Draw; +void () CtCall_MouseEnter; +void () CtCall_MouseLeave; +void () CtCall_Action; +void () CtCall_Update; +void (float, float) CtCall_Select; +entity Menu_ActiveWindow; +entity Menu_ActiveItem; +entity (entity) _Menu_GetParent; +entity (entity) _Menu_GetFirst; +entity (entity) _Menu_GetLast; +entity (entity) _Menu_GetNext; +entity (entity) _Menu_GetPrev; +bool (entity, entity) _Menu_IsEmbeddedParentOf; +void () _Menu_SelectNext; +void () _Menu_SelectPrev; +float () _Menu_SelectUp; +float () _Menu_SelectDown; +void () _Menu_Reselect; +void (float) Menu_SelectNext; +void (float) Menu_SelectPrev; +float (float) Menu_SelectUp; +float (float) Menu_SelectDown; +void (float) Menu_Reselect; +void (entity, bool) Menu_CorrectSelection; +void (entity, bool) Menu_Select; +void (entity, float, float) Menu_JumpToWindow; +float (entity) Menu_HasEvents; +void (entity) Menu_SetRunFlag; +void (entity, entity) Menu_InheritRunFlag; +void () Menu_UpdateRunFlags; +void (entity) Menu_EmptyWindow; +void (entity) Menu_RemoveItem; +entity (entity, string, bool) Menu_GetItemEx; +entity (entity, string, bool) Menu_GetChildEx; +entity (string) Menu_GetItem; +entity (string) Menu_GetChild; +float MENU_SELECT_SELECTABLE; +float MENU_SELECT_ALWAYS; +float MENU_SELECT_NEVER; +float MENU_EVENT_NORMAL; +float MENU_EVENT_CONTINUE; +float MENU_EVENT_RAISEPARENT; +float MENU_EVENT_PROCESSED; +float MENU_PROCESS_RUNFLAG; +float MENU_PROCESS_UPDATE; +float MENU_PROCESS_DRAW; +float MENU_PROCESS_MOUSE; +float MENU_PROCESS_KEY; +float Menu_Cursor_Position_x; +float Menu_Cursor_Position_y; +float Menu_Cursor_Position_z; +vector Menu_Cursor_Position; +entity Menu_KeyHook_Target; +void (float, float) Menu_KeyHook; +void () Menu_Frame; +void () Menu_Draw; +void (float, float) Menu_Key; +float () Menu_Toggle; +void () Menu_Process_Setup; +float (entity, float, float, float, float) Menu_Process; +entity Menu_History; +void (entity, Menu_History_PopFunction) Menu_History_Push; +void () Menu_History_Pop; +float (entity) Menu_History_Verify; +void () Menu_History_Clear; +float Menu_GarbageFrameCount; +float Menu_GarbageToggleCount; +void () Menu_InitGarbageStats; +void () Menu_ResetGarbageStats; +float (entity) Menu_CheckForGarbage; +void (float) Menu_CollectGarbage; +void (entity) Menu_DeleteAfterFrame; +void (entity) Menu_DeleteAfterToggle; +float ITEM_ALIGN_LEFT; +float ITEM_ALIGN_CENTER; +float ITEM_ALIGN_RIGHT; +float ITEM_ALIGN_FIX_RIGHT; +float ITEM_ALIGN_FIX_CENTER; +float ITEM_ALIGN_FIX_LEFT; +float ITEM_ALIGN_FIRST; +float FLAG_TEMPLATE; +float FLAG_EMBEDDED; +float FLAG_HIDDEN; +float FLAG_NOSELECT; +float FLAG_CONNECTEDONLY; +float FLAG_SERVERONLY; +float FLAG_DEVELOPERONLY; +float FLAG_DRAWONLY; +float FLAG_CHILDDRAWONLY; +float FLAG_DRAWUPDATEONLY; +float FLAG_CHILDDRAWUPDATEONLY; +float FLAG_SEALOFFMOUSE; +.entity _link; +void () Item_Link_Init; +void () Item_Link_Destroy; +void () Item_Link_Update; +float (float, float) Item_Link_Key; +void () Item_Link_MouseEnter; +float () Item_Link_IsSelected; +.string link; +.string normal; +void () Item_Cinematic_Destroy; +void () Item_Cinematic_Init; +void () Item_Cinematic_Loop_Spawn; +void () Item_Container_Spawn; +.string value; +string ITEM_SOUND_NOSELECT; +float ITEM_BUTTON_ACTIONTIME; +float ITEM_EDITBOX_CURSOR_FREQ; +float ITEM_EDITBOX_FLASHTIME; +float ITEM_EDITBOX_SCROLLDISTANCE; +float ITEM_DATA_SYNC; +float ITEM_DATA_SEND; +float ITEM_DATA_RESET; +float ITEM_DATA_TEST_START; +float ITEM_DATA_TEST_END; +float ITEM_DATA_SAVE_EXECSTRING; +float ITEM_DATALINK_SET; +float ITEM_DATALINK_GET; +void (entity, bool) Raise_DataEvent; +string Data_ExecString; +void () Data_ExecString_BeginUse; +void () Data_ExecString_EndUse; +.string defValue; +.string _syncValue; +.void (float) _dataEvent; +void () Item_Data_Init; +void () Item_Data_Destroy; +.string target; +.entity _target; +void () Item_DataUser_Update; +void () Item_DataUser_Init; +void () Item_DataUser_Destroy; +void () Item_DataLink_Init; +void () Item_DataLink_Destroy; +void () Item_DataLink_Update; +void (float) Item_DataContainer_DataEvent; +void () Item_DataContainer_Spawn; +void () Item_Data_Container_Reinit; +void (float) Item_Data_Container_DataEvent; +void () Item_Data_Container_Spawn; +.string cvarName; +void (float) Item_Data_Cvar_DataEvent; +void () Item_Data_Cvar_Spawn; +void () Item_Data_CvarCreateSave_Spawn; +.float maxValue; +.float minValue; +.float stepValue; +.float _realValue; +void () Item_DataLink_Value_Clamp; +void () Item_DataLink_Value_Spawn; +.string descList; +void () Item_DataLink_Switch_Init; +void () Item_DataLink_Switch_Destroy; +float (entity, float) DataLink_Switch_GetOrdinal; +void () Item_DataLink_ValueSwitch_Spawn; +.string valueList; +void (float) Item_DataLink_TextSwitch_DataEvent; +void () Item_DataLink_TextSwitch_Destroy; +void () Item_DataLink_TextSwitch_Spawn; +.float _presstime; +void () Item_DataLink_FastResync_Spawn; +void () Item_DataLink_TextValue_Spawn; +void () Item_DataLink_TextTime_Spawn; +void () Item_DataLink_AltString_Spawn; +void () Item_DataLink_Router_Spawn; +float (float, float) Item_Window_Key; +void () Item_Window_Draw; +void () Item_Window_Spawn; +void () Item_Frame_Spawn; +void () Item_EventWindow_Spawn; +void () Item_Reference_Update; +void () Item_Reference_Draw; +void () Item_Reference_Destroy; +void () Item_Reference_Spawn; +.float direction_x; +.float direction_y; +.float direction_z; +.vector direction; +.float alignment; +void () Item_Layout_Spawn; +void () Item_Layout_Update; +void () Item_Arrangement_CalculateSize; +void () Item_Arrangement_Update; +void () Item_Arrangement_Spawn; +void () Item_ScrollWindow_Update; +void () Item_ScrollWindow_Spawn; +float ITEM_STATE_NORMAL; +float ITEM_STATE_SELECTED; +float ITEM_STATE_PRESSED; +.string picture; +.float color_x; +.float color_y; +.float color_z; +.vector color; +.float alpha; +.float drawFlag; +void () Item_Picture_Draw; +void () Item_Picture_Destroy; +void () Item_Picture_Spawn; +void () Item_Rect_Draw; +void () Item_Rect_Spawn; +.string text; +.float fontSize_x; +.float fontSize_y; +.float fontSize_z; +.vector fontSize; +void () Item_Label_Draw; +void () Item_Label_Update; +void () Item_Label_Destroy; +void () Item_Label_Spawn; +.float wrap; +void () Item_MultiLabel_Update; +void () Item_MultiLabel_Draw; +void () Item_MultiLabel_Destroy; +void () Item_MultiLabel_Spawn; +.string selected; +.string pressed; +.float colorSelected_x; +.float colorSelected_y; +.float colorSelected_z; +.vector colorSelected; +.float colorPressed_x; +.float colorPressed_y; +.float colorPressed_z; +.vector colorPressed; +.float drawFlags_x; +.float drawFlags_y; +.float drawFlags_z; +.vector drawFlags; +.float alphas_x; +.float alphas_y; +.float alphas_z; +.vector alphas; +.string soundSelected; +.string soundPressed; +.float _state; +void () Item_Button_Draw; +void () Item_Button_Update; +void (float, float) Item_Button_Select; +float (float, float) Item_Button_Key; +void () Item_Button_Destroy; +void () Item_Button_Spawn; +.float proportions_x; +.float proportions_y; +.float proportions_z; +.vector proportions; +.string pictureSlider; +.string soundIncrease; +.string soundDecrease; +.float sizeSlider_x; +.float sizeSlider_y; +.float sizeSlider_z; +.vector sizeSlider; +void (float, float) Item_Slider_Select; +void () Item_Slider_Draw; +float (float, float) Item_Slider_Key; +void () Item_Slider_Destroy; +void () Item_Slider_Spawn; +.float colorCursor_x; +.float colorCursor_y; +.float colorCursor_z; +.vector colorCursor; +.float colorCursorFlash_x; +.float colorCursorFlash_y; +.float colorCursorFlash_z; +.vector colorCursorFlash; +.float sizeCursor_x; +.float sizeCursor_y; +.float sizeCursor_z; +.vector sizeCursor; +.float sizeCursorFlash_x; +.float sizeCursorFlash_y; +.float sizeCursorFlash_z; +.vector sizeCursorFlash; +.float alphasCursor_x; +.float alphasCursor_y; +.float alphasCursor_z; +.vector alphasCursor; +.float drawFlagsCursor_x; +.float drawFlagsCursor_y; +.float drawFlagsCursor_z; +.vector drawFlagsCursor; +.string soundKey; +.string soundMove; +.float _cursorPos; +void () Item_EditBox_Draw; +void () Item_EditBox_Update; +float (float, float) Item_EditBox_Key; +void (float, float) Item_EditBox_Select; +void () Item_EditBox_Destroy; +void () Item_EditBox_Reinit; +void () Item_EditBox_Spawn; +void () Item_ValueButton_Update; +void () Item_ValueButton_Destroy; +void () Item_ValueButton_Spawn; +float (float, float) Item_SwitchButton_Key; +void () Item_SwitchButton_Spawn; +.float colorInactive_x; +.float colorInactive_y; +.float colorInactive_z; +.vector colorInactive; +.float drawFlagInactive; +.float alphaInactive; +void () Item_List_Draw; +void () Item_List_Update; +void (float, float) Item_List_Select; +float (float, float) Item_List_Key; +void () Item_List_Destroy; +void () Item_List_Spawn; +float (float, float) Item_FloatingArea_Key; +void () Item_FloatingArea_Update; +void () Item_FloatingArea_Spawn; +void () Item_VScrollBar_Draw; +float (float, float) Item_VScrollBar_Key; +void () Item_VScrollBar_Update; +void () Item_VScrollBar_Spawn; +void () Item_Automation_Init; +.entity _current; +void () Item_Automation_ForEach_Spawn; +void () Item_Task_Init; +void () Item_Automation_Job_Spawn; +void () Item_Task_Job_Spawn; +void (entity) Nex_MakeOnlyVisible; +void () Item_Nex_Avatar_Info_Destroy; +void () Item_Nex_Avatar_Info_Spawn; +void (float) Item_Data_Nex_Avatar_DataEvent; +void () Item_Data_Nex_Avatar_Spawn; +void (float) Item_Data_Nex_Name_DataEvent; +void () Item_Data_Nex_Name_Spawn; +void (float) Item_Data_Nex_Color_DataEvent; +void () Item_Data_Nex_Color_Spawn; +void () Item_Nex_Map_Info_Destroy; +void () Item_Nex_Map_Info_Spawn; +void () Item_Nex_MapDB_EnumFiles; +void () Item_Nex_MapDB_Destroy; +void () Item_Nex_MapDB_Spawn; +entity (string) Nex_MapDB_GetByPath; +entity (float) Nex_MapDB_GetByIndex; +float (entity) Nex_MapDB_GetIndex; +string () Nex_MapDB_GetPathAltString; +string () Nex_MapDB_GetNameAltString; +void (float) Item_DataLink_Nex_MapList_DataEvent; +void () Item_DataLink_Nex_MapList_Spawn; +void () Item_DataLink_Nex_MapList_InitWithMapList; +void (entity) DataLink_Nex_MapList_UpdateRange; +void (entity, string, string) DataLink_Nex_MapList_InsertEntryAfter; +void (entity) DataLink_Nex_MapList_DeleteEntry; +void (entity) DataLink_Nex_MapList_MoveEntryUp; +void (entity) DataLink_Nex_MapList_MoveEntryDown; +void (entity, string, string) DataLink_Nex_MapList_SetFirst; +void (entity) DataLink_Nex_MapList_Clear; +string (entity) DataLink_Nex_MapList_GetCurrentName; +string (entity) DataLink_Nex_MapList_GetCurrentPath; +void () Item_DataLink_Nex_ModSwitch_Spawn; +void (float) Item_DataLink_Nex_FileList_DataEvent; +void () Item_DataLink_Nex_FileList_Destroy; +void () Item_DataLink_Nex_FileList_Spawn; +void () Item_Nex_HostCache_Entry_Update; +void () Item_Nex_HostCache_Entry_Spawn; +void () Item_Nex_HostCache_StringField_Update; +void () Item_Nex_HostCache_StringField_Spawn; +void () Item_Nex_HostCache_ValueField_Update; +void () Item_Nex_HostCache_ValueField_Spawn; +void () Item_Nex_HostCache_Players_Update; +void () Item_Nex_HostCache_Players_Spawn; +void (float) Item_Data_Nex_Key_DataEvent; +void () Item_Data_Nex_Key_Spawn; +void () Item_Nex_KeyButton_Spawn; +void () Item_Data_Nex_Resolution_Spawn; +void () Item_Nex_Credits_Spawn; +void (string, string, string, string, event, event) Nex_MessageBox; +void () Nex_Quit_Toggle; +void() Nex_Quit_Toggle = asm +{ +local entity lEntity; +local float temp_0; +local float temp_1; + STORE_F "QuitWnd", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEntity; + INDIRECT_F lEntity, flag, temp_1; + BITAND temp_1, FLAG_HIDDEN, temp_1; + IFNOT temp_1, 11; + ADDRESS lEntity, flag, temp_1; + INDIRECT_F lEntity, flag, temp_0; + SUB_F temp_0, FLAG_HIDDEN, temp_0; + STOREP_F temp_0, temp_1; + STORE_F "QuitWnd::Layout::Buttons::No", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Menu_Select; + GOTO 7; + ADDRESS lEntity, flag, temp_0; + INDIRECT_F lEntity, flag, temp_1; + ADD_F temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_Reselect; + DONE; +} + +void () Nex_Quit_Action; +void() Nex_Quit_Action = asm +{ +local entity lEntity; +local float temp_0; +local float temp_1; + STORE_F "QuitWnd", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEntity; + INDIRECT_F lEntity, flag, temp_0; + BITAND temp_0, FLAG_HIDDEN, temp_0; + IFNOT temp_0, 5; + ADDRESS lEntity, flag, temp_0; + INDIRECT_F lEntity, flag, temp_1; + SUB_F temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + STORE_F "QuitWnd::Layout::Buttons::No", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Menu_Select; + DONE; +} + +float (float, float) Nex_Quit_Key; +float(float pKey, float pAscii) Nex_Quit_Key = asm +{ +local float temp_0; + EQ_F pKey, K_ESCAPE, temp_0; + IFNOT temp_0, 3; + CALL0 Nex_Quit_Toggle; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void () Nex_Quit_Yes; +void() Nex_Quit_Yes = asm +{ + STORE_F "quit +", parm0_x; + CALL1 cmd; + DONE; +} + +void () Nex_Quit_No; +void() Nex_Quit_No = asm +{ + CALL0 Nex_Quit_Toggle; + DONE; +} + +void () Nex_Action_ResetData_Destroy; +void() Nex_Action_ResetData_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void () Nex_Action_ResetData_Action; +void() Nex_Action_ResetData_Action = asm +{ +local float temp_0; + INDIRECT_S self, target, parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_RESET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_ResetData; +void() Nex_Action_ResetData = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, destroy, temp_0; + STOREP_FNC Nex_Action_ResetData_Destroy, temp_0; + ADDRESS self, action, temp_0; + STOREP_FNC Nex_Action_ResetData_Action, temp_0; + DONE; +} + +void () Nex_Automation_Option_Slider; +void() Nex_Automation_Option_Slider = asm +{ +local entity lValue; +local entity lSlider; +local entity lDescription; +local float temp_0; +local float temp_1; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + NOT_S temp_0, temp_0; + IFNOT temp_0, 8; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + STORE_F "Bad target '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "'", parm2_x; + CALL3 objerror; + RETURN offset_0; + STORE_F "Description", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lDescription; + STORE_F "Slider", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lSlider; + STORE_F "Value", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lValue; + ADDRESS lDescription, normal, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, text, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lDescription, link, temp_0; + INDIRECT_S lSlider, name, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lSlider, target, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, target, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lValue, target, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, target, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lValue, link, temp_0; + INDIRECT_S lSlider, name, temp_1; + STOREP_S temp_1, temp_0; + DONE; +} + +void () Nex_Automation_Option_EditBox; +void() Nex_Automation_Option_EditBox = asm +{ +local entity lEditBox; +local entity lDescription; +local float temp_0; +local float temp_1; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + NOT_S temp_0, temp_0; + IFNOT temp_0, 8; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + STORE_F "Bad target '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "'", parm2_x; + CALL3 objerror; + RETURN offset_0; + STORE_F "Description", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lDescription; + STORE_F "EditBox", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEditBox; + ADDRESS lDescription, normal, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, text, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lDescription, link, temp_0; + INDIRECT_S lEditBox, name, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lEditBox, target, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, target, temp_1; + STOREP_S temp_1, temp_0; + DONE; +} + +void () Nex_Automation_Option_Switch; +void() Nex_Automation_Option_Switch = asm +{ +local entity lSwitch; +local entity lDescription; +local float temp_0; +local float temp_1; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + NOT_S temp_0, temp_0; + IFNOT temp_0, 8; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + STORE_F "Bad target '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "'", parm2_x; + CALL3 objerror; + RETURN offset_0; + STORE_F "Description", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lDescription; + STORE_F "Switch", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lSwitch; + ADDRESS lDescription, normal, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, text, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lDescription, link, temp_0; + INDIRECT_S lSwitch, name, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lSwitch, target, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, target, temp_1; + STOREP_S temp_1, temp_0; + DONE; +} + +float (float, float) Nex_Global_Key; +float(float pKey, float pAscii) Nex_Global_Key = asm +{ +local float temp_0; + GOTO 17; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_SelectPrev; + GOTO 37; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_SelectNext; + GOTO 34; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_SelectUp; + GOTO 31; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_SelectDown; + IF return_x, 3; + STORE_F ITEM_SOUND_NOSELECT, parm0_x; + CALL1 Sound_Play; + GOTO 25; + GOTO 24; + EQ_F pKey, K_UPARROW, temp_0; + IF temp_0, -17; + EQ_F pKey, K_KP_UPARROW, temp_0; + IF temp_0, -19; + EQ_F pKey, K_LEFTARROW, temp_0; + IF temp_0, -21; + EQ_F pKey, K_KP_LEFTARROW, temp_0; + IF temp_0, -23; + EQ_F pKey, K_DOWNARROW, temp_0; + IF temp_0, -22; + EQ_F pKey, K_KP_DOWNARROW, temp_0; + IF temp_0, -24; + EQ_F pKey, K_RIGHTARROW, temp_0; + IF temp_0, -26; + EQ_F pKey, K_KP_RIGHTARROW, temp_0; + IF temp_0, -28; + EQ_F pKey, K_ESCAPE, temp_0; + IF temp_0, -27; + EQ_F pKey, K_MOUSE2, temp_0; + IF temp_0, -29; + EQ_F pKey, K_ENTER, temp_0; + IF temp_0, -28; + GOTO -23; + RETURN FILE_APPEND; + DONE; +} + +void () Item_Nex_StressRepeat_Spawn; +void() Item_Nex_StressRepeat_Spawn = asm +{ +local float locked_1020; +local float lCounter; +local entity lItem; +local float temp_1; + ADDRESS self, flag, locked_1020; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_EMBEDDED, temp_1; + STOREP_F temp_1, locked_1020; + STORE_F KEY_GAME, lCounter; + LT lCounter, 100.000000, locked_1020; + IFNOT locked_1020, 14; + INDIRECT_E self, _child, locked_1020; + STORE_F lCounter, parm0_x; + CALL1 ftos; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, name, temp_1; + STORE_F locked_1020, parm0_x; + STORE_F return_x, parm1_x; + STORE_F temp_1, parm2_x; + STORE_F FILE_APPEND, parm3_x; + CALL4 Menu_DeriveItem; + STORE_ENT return_x, lItem; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -14; + DONE; +} + +void () Nex_Action_MakeOnlyVisible_Destroy; +void() Nex_Action_MakeOnlyVisible_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void () Nex_Action_MakeOnlyVisible_Action; +void() Nex_Action_MakeOnlyVisible_Action = asm +{ +local float temp_0; + INDIRECT_S self, target, parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + CALL1 Nex_MakeOnlyVisible; + DONE; +} + +void () Nex_Action_MakeOnlyVisible; +void() Nex_Action_MakeOnlyVisible = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, destroy, temp_0; + STOREP_FNC Nex_Action_MakeOnlyVisible_Destroy, temp_0; + ADDRESS self, action, temp_0; + STOREP_FNC Nex_Action_MakeOnlyVisible_Action, temp_0; + DONE; +} + +void () Nex_Action_MakeFirstVisible; +void() Nex_Action_MakeFirstVisible = asm +{ +local float temp_0; + INDIRECT_E self, _child, parm0_x; + CALL1 Nex_MakeOnlyVisible; + DONE; +} + +void () Nex_Action_JumpToPage_Destroy; +void() Nex_Action_JumpToPage_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void () Nex_Action_JumpToPage_Action; +void() Nex_Action_JumpToPage_Action = asm +{ +local entity lItem; +local float temp_0; + INDIRECT_S self, target, parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + CALL1 Nex_MakeOnlyVisible; + STORE_F lItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 Menu_JumpToWindow; + DONE; +} + +void () Nex_Action_JumpToPage; +void() Nex_Action_JumpToPage = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, action, temp_0; + STOREP_FNC Nex_Action_JumpToPage_Action, temp_0; + ADDRESS self, destroy, temp_0; + STOREP_FNC Nex_Action_JumpToPage_Destroy, temp_0; + DONE; +} + +void () Nex_Action_SetNormalPanelLink_Destroy; +void() Nex_Action_SetNormalPanelLink_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void () Nex_Action_SetNormalPanelLink_Action; +void() Nex_Action_SetNormalPanelLink_Action = asm +{ +local entity lItem; +local float temp_0; + STORE_F "Normal::Panel", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S self, target, temp_0; + STORE_F lItem, parm0_x; + STORE_F link, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + STORE_F lItem, parm0_x; + CALL1 Raise_Update; + CALL0 Menu_UpdateRunFlags; + INDIRECT_E lItem, _link, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 Menu_JumpToWindow; + DONE; +} + +void () Nex_Action_SetNormalPanelLink; +void() Nex_Action_SetNormalPanelLink = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, destroy, temp_0; + STOREP_FNC Nex_Action_SetNormalPanelLink_Destroy, temp_0; + ADDRESS self, action, temp_0; + STOREP_FNC Nex_Action_SetNormalPanelLink_Action, temp_0; + DONE; +} + +void () Nex_Action_SetLinkOnReinit_Destroy; +void() Nex_Action_SetLinkOnReinit_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void () Nex_Action_SetLinkOnReinitk_Reinit; +void() Nex_Action_SetLinkOnReinitk_Reinit = asm +{ +local float temp_0; + STORE_F "Normal::Panel", parm0_x; + CALL1 Menu_GetItem; + INDIRECT_S self, target, temp_0; + STORE_F return_x, parm0_x; + STORE_F link, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () Nex_Action_SetLinkOnReinit; +void() Nex_Action_SetLinkOnReinit = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, destroy, temp_0; + STOREP_FNC Nex_Action_SetLinkOnReinit_Destroy, temp_0; + ADDRESS self, reinit, temp_0; + STOREP_FNC Nex_Action_SetLinkOnReinitk_Reinit, temp_0; + DONE; +} + +void () Nex_Action_Color_Cancel; +void() Nex_Action_Color_Cancel = asm +{ + STORE_F "::Data::Color", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_TEST_END, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_Color_Reset; +void() Nex_Action_Color_Reset = asm +{ + STORE_F "::Data::Color", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_RESET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Automation_UpdateAvatar_Update; +void() Nex_Automation_UpdateAvatar_Update = asm +{ +local float locked_1020; +local entity lTarget; +local entity lItem; + INDIRECT_E self, _target, locked_1020; + INDIRECT_S locked_1020, name, locked_1020; + NE_S locked_1020, "Data::Player::Avatar", locked_1020; + IFNOT locked_1020, 5; + ADDRESS self, _target, locked_1020; + STORE_F "Data::Player::Avatar", parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1020; + INDIRECT_E self, _target, lTarget; + STORE_F "Picture", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_E lTarget, _link, locked_1020; + INDIRECT_S locked_1020, picture, locked_1020; + STORE_F lItem, parm0_x; + STORE_F picture, parm1_x; + STORE_F locked_1020, parm2_x; + CALL3 String_EntitySet; + STORE_F "Name", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_E lTarget, _link, locked_1020; + INDIRECT_S locked_1020, normal, locked_1020; + STORE_F lItem, parm0_x; + STORE_F text, parm1_x; + STORE_F locked_1020, parm2_x; + CALL3 String_EntitySet; + STORE_F "Description", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_E lTarget, _link, locked_1020; + INDIRECT_S locked_1020, text, locked_1020; + STORE_F lItem, parm0_x; + STORE_F text, parm1_x; + STORE_F locked_1020, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () Nex_Automation_UpdateAvatar_Destroy; +void() Nex_Automation_UpdateAvatar_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void () Nex_Automation_UpdateAvatar; +void() Nex_Automation_UpdateAvatar = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, _update, temp_0; + STOREP_FNC Nex_Automation_UpdateAvatar_Update, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Nex_Automation_UpdateAvatar_Destroy, temp_0; + DONE; +} + +void () Nex_Action_Avatar_Next; +void() Nex_Action_Avatar_Next = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; + STORE_F "Data::Player::Avatar", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + ADDRESS lItem, _realValue, temp_0; + INDIRECT_F lItem, _realValue, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_Avatar_Prev; +void() Nex_Action_Avatar_Prev = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; + STORE_F "Data::Player::Avatar", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + ADDRESS lItem, _realValue, temp_0; + INDIRECT_F lItem, _realValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_Player_Apply; +void() Nex_Action_Player_Apply = asm +{ +local entity lItem; + STORE_F "Data::Player", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATA_SEND, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_TestOnChange; +void() Nex_Action_TestOnChange = asm +{ +local float temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATA_TEST_START, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void (float, float) Nex_Action_TestOnSelect; +void(float pSelect, float pUser) Nex_Action_TestOnSelect = asm +{ +local float temp_0; + NOT_F pSelect, temp_0; + IFNOT temp_0, 1; + AND temp_0, pUser, temp_0; + IFNOT temp_0, 4; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATA_TEST_START, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_PlaySound; +string string_null; +void() Nex_Action_PlaySound = asm +{ +local float temp_0; + INDIRECT_S self, target, temp_0; + NE_S temp_0, string_null, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, target, parm0_x; + CALL1 Sound_Play; + DONE; +} + +void () Nex_Action_PlaySoundOnce; +void() Nex_Action_PlaySoundOnce = asm +{ +local float temp_0; + INDIRECT_S self, target, temp_0; + NE_S temp_0, string_null, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, target, parm0_x; + CALL1 Sound_Play; + STORE_F self, parm0_x; + CALL1 Menu_DeleteAfterToggle; + DONE; +} + +void () Nex_MapSelector_UpdateMap; +void() Nex_MapSelector_UpdateMap = asm +{ +local float lIndex; +local entity lSelector; +local entity lItem; +local entity lInfo; +local float temp_0; +local float temp_1; + STORE_F "::Data::Server::Map::Selector", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lSelector; + STORE_F lSelector, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F lSelector, _realValue, lIndex; + STORE_F lIndex, parm0_x; + CALL1 Nex_MapDB_GetByIndex; + STORE_ENT return_x, lInfo; + INDIRECT_F self, minValue, temp_0; + NE_F lIndex, temp_0, temp_0; + IFNOT temp_0, 27; + ADDRESS self, minValue, temp_0; + STOREP_F lIndex, temp_0; + STORE_F "Picture", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lInfo, picture, temp_0; + STORE_F lItem, parm0_x; + STORE_F picture, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + STORE_F "Name", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lInfo, normal, temp_0; + STORE_F lItem, parm0_x; + STORE_F text, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + STORE_F "Description", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lInfo, text, temp_0; + STORE_F lItem, parm0_x; + STORE_F text, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lInfo, normal, temp_0; + INDIRECT_S lInfo, link, temp_1; + STORE_F lItem, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F temp_1, parm2_x; + CALL3 DataLink_Nex_MapList_SetFirst; + DONE; +} + +void () Nex_MapSelector_Synchronize; +void() Nex_MapSelector_Synchronize = asm +{ +local float locked_1020; +local entity lMapInfo; +local string lPath; +local entity lSelector; +local entity lCycle; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lCycle; + STORE_F "::Data::Server::Map::Selector", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lSelector; + INDIRECT_F lCycle, stepValue, locked_1020; + EQ_F locked_1020, KEY_GAME, locked_1020; + IFNOT locked_1020, 5; + STORE_F lCycle, parm0_x; + STORE_F ITEM_DATA_RESET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 23; + INDIRECT_S lCycle, valueList, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lPath; + STORE_F lPath, parm0_x; + CALL1 Nex_MapDB_GetByPath; + STORE_ENT return_x, lMapInfo; + STORE_F lPath, parm0_x; + CALL1 String_Free; + EQ_E lMapInfo, null_entity, locked_1020; + IFNOT locked_1020, 5; + STORE_F lCycle, parm0_x; + STORE_F ITEM_DATA_RESET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 8; + ADDRESS lSelector, _realValue, locked_1020; + STORE_F lMapInfo, parm0_x; + CALL1 Nex_MapDB_GetIndex; + STOREP_F return_x, locked_1020; + STORE_F lSelector, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_MapSelector_Next; +void() Nex_Action_MapSelector_Next = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; + STORE_F "::Data::Server::Map::Selector", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS lItem, _realValue, temp_0; + INDIRECT_F lItem, _realValue, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_MapSelector_Prev; +void() Nex_Action_MapSelector_Prev = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; + STORE_F "::Data::Server::Map::Selector", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS lItem, _realValue, temp_0; + INDIRECT_F lItem, _realValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_Map_Start; +void() Nex_Action_Map_Start = asm +{ +local float lSkill; +local float lNumBots; +local entity lItem; +local float temp_0; + STORE_F "::Data::Server::NumBots", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lItem, value, parm0_x; + CALL1 stof; + STORE_F return_x, lNumBots; + STORE_F "::Data::Server::BotSkill", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lItem, value, parm0_x; + CALL1 stof; + STORE_F return_x, lSkill; + STORE_F "saved1", parm0_x; + STORE_F "1", parm1_x; + CALL2 cvar_set; + STORE_F KEY_MENU, parm0_x; + STORE_F lNumBots, parm1_x; + CALL2 pow; + SUB_F return_x, FILE_APPEND, parm0_x; + CALL1 ftos; + STORE_F "scratch1", parm0_x; + STORE_F return_x, parm1_x; + CALL2 cvar_set; + STORE_F lNumBots, parm0_x; + STORE_F 8.000000, parm1_x; + CALL2 min; + STORE_F CVAR_READONLY, parm0_x; + STORE_F return_x, parm1_x; + CALL2 pow; + SUB_F return_x, FILE_APPEND, temp_0; + MUL_F lSkill, temp_0, temp_0; + DIV_F temp_0, KEY_UNKNOWN, parm0_x; + CALL1 ftos; + STORE_F "scratch2", parm0_x; + STORE_F return_x, parm1_x; + CALL2 cvar_set; + SUB_F lNumBots, 8.000000, parm0_x; + STORE_F 8.000000, parm1_x; + CALL2 min; + STORE_F CVAR_READONLY, parm0_x; + STORE_F return_x, parm1_x; + CALL2 pow; + SUB_F return_x, FILE_APPEND, temp_0; + MUL_F lSkill, temp_0, temp_0; + DIV_F temp_0, KEY_UNKNOWN, parm0_x; + CALL1 ftos; + STORE_F "scratch3", parm0_x; + STORE_F return_x, parm1_x; + CALL2 cvar_set; + STORE_F "::Data::Server::MaxPlayers", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F "maxplayers "", parm0_x; + CALL1 cmd; + INDIRECT_S lItem, value, parm0_x; + CALL1 cmd; + STORE_F "" +", parm0_x; + CALL1 cmd; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F "map "", parm0_x; + CALL1 cmd; + INDIRECT_S lItem, valueList, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 cmd; + STORE_F "" +", parm0_x; + CALL1 cmd; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATA_SEND, parm1_x; + CALL2 Raise_DataEvent; + CALL0 m_hide; + DONE; +} + +void () Nex_Action_Cycle_Add; +void() Nex_Action_Cycle_Add = asm +{ +local string lName; +local string lPath; +local entity lCycle; +local entity lList; +local float temp_0; +local float temp_1; + STORE_F "::Data::Server::Map::List", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lList; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lCycle; + STORE_F lList, parm0_x; + CALL1 DataLink_Nex_MapList_GetCurrentName; + STORE_S return_x, lName; + STORE_F lList, parm0_x; + CALL1 DataLink_Nex_MapList_GetCurrentPath; + STORE_S return_x, lPath; + INDIRECT_F lCycle, stepValue, temp_0; + EQ_F temp_0, FILE_APPEND, temp_0; + IFNOT temp_0, 6; + STORE_F lCycle, parm0_x; + STORE_F lName, parm1_x; + STORE_F lPath, parm2_x; + CALL3 DataLink_Nex_MapList_InsertEntryAfter; + GOTO 5; + STORE_F lCycle, parm0_x; + STORE_F lName, parm1_x; + STORE_F lPath, parm2_x; + CALL3 DataLink_Nex_MapList_SetFirst; + STORE_F lName, parm0_x; + CALL1 String_Free; + STORE_F lPath, parm0_x; + CALL1 String_Free; + ADDRESS lCycle, _realValue, temp_0; + INDIRECT_F lCycle, _realValue, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lCycle, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + CALL0 Nex_MapSelector_Synchronize; + DONE; +} + +void () Nex_Action_Cycle_Remove; +void() Nex_Action_Cycle_Remove = asm +{ +local entity lCycle; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lCycle; + STORE_F lCycle, parm0_x; + CALL1 DataLink_Nex_MapList_DeleteEntry; + CALL0 Nex_MapSelector_Synchronize; + DONE; +} + +void () Nex_Action_Cycle_MoveUp; +void() Nex_Action_Cycle_MoveUp = asm +{ +local entity lCycle; +local float temp_0; +local float temp_1; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lCycle; + STORE_F lCycle, parm0_x; + CALL1 DataLink_Nex_MapList_MoveEntryUp; + ADDRESS lCycle, _realValue, temp_0; + INDIRECT_F lCycle, _realValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lCycle, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + CALL0 Nex_MapSelector_Synchronize; + DONE; +} + +void () Nex_Action_Cycle_MoveDown; +void() Nex_Action_Cycle_MoveDown = asm +{ +local entity lCycle; +local float temp_0; +local float temp_1; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lCycle; + STORE_F lCycle, parm0_x; + CALL1 DataLink_Nex_MapList_MoveEntryDown; + ADDRESS lCycle, _realValue, temp_0; + INDIRECT_F lCycle, _realValue, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lCycle, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + CALL0 Nex_MapSelector_Synchronize; + DONE; +} + +void () Nex_Action_Cycle_Clear; +void() Nex_Action_Cycle_Clear = asm +{ +local entity lCycle; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lCycle; + STORE_F lCycle, parm0_x; + CALL1 DataLink_Nex_MapList_Clear; + CALL0 Nex_MapSelector_Synchronize; + DONE; +} + +entity (float) Nex_Management_GetFileList; +entity(float pType) Nex_Management_GetFileList = asm +{ +local float temp_0; + GOTO 10; + STORE_F "::Data::Management::FileList::Weapon", parm0_x; + CALL1 Menu_GetItem; + RETURN return_x; + STORE_F "::Data::Management::FileList::Game", parm0_x; + CALL1 Menu_GetItem; + RETURN return_x; + STORE_F "::Data::Management::FileList::MapList", parm0_x; + CALL1 Menu_GetItem; + RETURN return_x; + IFNOT pType, -9; + EQ_F pType, FILE_APPEND, temp_0; + IF temp_0, -8; + EQ_F pType, KEY_MENU, temp_0; + IF temp_0, -7; + CALL0 crash; + RETURN null_entity; + DONE; +} + +entity (float) Nex_Management_GetContainer; +entity(float pType) Nex_Management_GetContainer = asm +{ +local float temp_0; + GOTO 10; + STORE_F "::Data::Weapon", parm0_x; + CALL1 Menu_GetItem; + RETURN return_x; + STORE_F "::Data::Game", parm0_x; + CALL1 Menu_GetItem; + RETURN return_x; + STORE_F "::Data::Server::Map::Cycle", parm0_x; + CALL1 Menu_GetItem; + RETURN return_x; + IFNOT pType, -9; + EQ_F pType, FILE_APPEND, temp_0; + IF temp_0, -8; + EQ_F pType, KEY_MENU, temp_0; + IF temp_0, -7; + CALL0 crash; + RETURN null_entity; + DONE; +} + +float () Nex_Management_GetType; +float() Nex_Management_GetType = asm +{ +local entity lTypeData; +local float temp_0; + STORE_F "::Data::Management::ConfigType", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lTypeData; + INDIRECT_S lTypeData, value, parm0_x; + CALL1 stof; + RETURN return_x; + DONE; +} + +void (float) Nex_Management_SetType; +void(float pType) Nex_Management_SetType = asm +{ +local entity lTypeData; +local entity lList; +local entity lItem; +local float temp_0; + STORE_F "::Data::Management::ConfigType", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lTypeData; + STORE_F pType, parm0_x; + CALL1 ftos; + STORE_F lTypeData, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + STORE_F "FileList", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F pType, parm0_x; + CALL1 Nex_Management_GetFileList; + STORE_ENT return_x, lList; + INDIRECT_S lList, name, temp_0; + STORE_F lItem, parm0_x; + STORE_F target, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () Nex_Update_Management_SyncData; +void() Nex_Update_Management_SyncData = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_F self, _realValue, temp_0; + LT temp_0, Timer_Time, temp_0; + IFNOT temp_0, 3; + INDIRECT_F self, _realValue, temp_1; + GT temp_1, KEY_GAME, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 9; + CALL0 Nex_Management_GetType; + STORE_F return_x, parm0_x; + CALL1 Nex_Management_GetContainer; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_SYNC, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, temp_0; + STOREP_F KEY_GAME, temp_0; + DONE; +} + +void () Nex_Action_Management_LoadConfig; +void() Nex_Action_Management_LoadConfig = asm +{ +local entity lSyncItem; +local entity lFilenameData; +local entity lFileList; +local float temp_0; +local float temp_1; +local float temp_2; + CALL0 Nex_Management_GetType; + STORE_F return_x, parm0_x; + CALL1 Nex_Management_GetFileList; + STORE_ENT return_x, lFileList; + STORE_F "::Data::Management::Filename", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lFilenameData; + INDIRECT_S lFileList, selected, temp_1; + INDIRECT_S lFilenameData, value, temp_2; + INDIRECT_S lFileList, normal, temp_0; + STORE_F "exec "", parm0_x; + STORE_F temp_1, parm1_x; + STORE_F "/", parm2_x; + STORE_F temp_2, parm3_x; + STORE_F ".", parm4_x; + STORE_F temp_0, parm5_x; + STORE_F "" +", parm6_x; + CALL7 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + STORE_F "::Data::Management::SyncCategory", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lSyncItem; + ADDRESS lSyncItem, _realValue, temp_0; + STOREP_F Timer_Time, temp_0; + DONE; +} + +void () Nex_Action_Management_Load; +void() Nex_Action_Management_Load = asm +{ +local string lQuestion; +local entity lItem; +local float temp_0; + STORE_F "::Data::Management::Filename", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_S lItem, value, temp_0; + EQ_S temp_0, "", temp_0; + IFNOT temp_0, 9; + STORE_F "Loading", parm0_x; + STORE_F "You must specify a filename!", parm1_x; + STORE_F "Ok", parm2_x; + STORE_F "", parm3_x; + STORE_F Util_NullFunction, parm4_x; + STORE_F Util_NullFunction, parm5_x; + CALL6 Nex_MessageBox; + RETURN offset_0; + INDIRECT_S lItem, value, temp_0; + STORE_F "Do you want to load '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "'?", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lQuestion; + STORE_F "Loading", parm0_x; + STORE_F lQuestion, parm1_x; + STORE_F "Yes", parm2_x; + STORE_F "No", parm3_x; + STORE_F Nex_Action_Management_LoadConfig, parm4_x; + STORE_F Util_NullFunction, parm5_x; + CALL6 Nex_MessageBox; + STORE_F lQuestion, parm0_x; + CALL1 String_Free; + DONE; +} + +void () Nex_Action_Management_SaveConfig; +void() Nex_Action_Management_SaveConfig = asm +{ +local float lHandle; +local entity lContainer; +local entity lFilename; +local entity lFileList; +local float lType; +local float temp_0; +local float temp_1; +local float temp_2; + CALL0 Nex_Management_GetType; + STORE_F return_x, lType; + STORE_F lType, parm0_x; + CALL1 Nex_Management_GetFileList; + STORE_ENT return_x, lFileList; + STORE_F lType, parm0_x; + CALL1 Nex_Management_GetContainer; + STORE_ENT return_x, lContainer; + STORE_F "::Data::Management::Filename", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lFilename; + INDIRECT_S lFilename, value, temp_0; + EQ_S temp_0, "", temp_0; + IFNOT temp_0, 9; + STORE_F "Loading", parm0_x; + STORE_F "You must specify a filename!", parm1_x; + STORE_F "Ok", parm2_x; + STORE_F "", parm3_x; + STORE_F Util_NullFunction, parm4_x; + STORE_F Util_NullFunction, parm5_x; + CALL6 Nex_MessageBox; + RETURN offset_0; + INDIRECT_S lFileList, selected, temp_0; + INDIRECT_S lFilename, value, temp_1; + INDIRECT_S lFileList, normal, temp_2; + STORE_F temp_0, parm0_x; + STORE_F "/", parm1_x; + STORE_F temp_1, parm2_x; + STORE_F ".", parm3_x; + STORE_F temp_2, parm4_x; + CALL5 strcat; + STORE_F return_x, parm0_x; + STORE_F KEY_MENU, parm1_x; + CALL2 fopen; + STORE_F return_x, lHandle; + LT lHandle, KEY_GAME, temp_0; + IFNOT temp_0, 2; + RETURN offset_0; + CALL0 Data_ExecString_BeginUse; + STORE_F lContainer, parm0_x; + STORE_F ITEM_DATA_SAVE_EXECSTRING, parm1_x; + CALL2 Raise_DataEvent; + STORE_F lHandle, parm0_x; + STORE_F Data_ExecString, parm1_x; + CALL2 fputs; + CALL0 Data_ExecString_EndUse; + STORE_F lHandle, parm0_x; + CALL1 fclose; + DONE; +} + +void () Nex_Action_Management_Save; +void() Nex_Action_Management_Save = asm +{ +local string lQuestion; +local float lHandle; +local entity lFilename; +local entity lFileList; +local float temp_0; +local float temp_1; +local float temp_2; + CALL0 Nex_Management_GetType; + STORE_F return_x, parm0_x; + CALL1 Nex_Management_GetFileList; + STORE_ENT return_x, lFileList; + STORE_F "::Data::Management::Filename", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lFilename; + INDIRECT_S lFileList, selected, temp_0; + INDIRECT_S lFilename, value, temp_1; + INDIRECT_S lFileList, normal, temp_2; + STORE_F temp_0, parm0_x; + STORE_F "/", parm1_x; + STORE_F temp_1, parm2_x; + STORE_F ".", parm3_x; + STORE_F temp_2, parm4_x; + CALL5 strcat; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 fopen; + STORE_F return_x, lHandle; + EQ_F lHandle, ERR_CANNOTOPEN, temp_0; + IFNOT temp_0, 5; + CALL0 Nex_Action_Management_SaveConfig; + STORE_F lHandle, parm0_x; + CALL1 fclose; + GOTO 20; + GT lHandle, KEY_GAME, temp_0; + IFNOT temp_0, 18; + INDIRECT_S lFilename, value, temp_0; + STORE_F "Do you want to overwrite '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "'?", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lQuestion; + STORE_F "Saving", parm0_x; + STORE_F lQuestion, parm1_x; + STORE_F "Yes", parm2_x; + STORE_F "No", parm3_x; + STORE_F Nex_Action_Management_SaveConfig, parm4_x; + STORE_F Util_NullFunction, parm5_x; + CALL6 Nex_MessageBox; + STORE_F lQuestion, parm0_x; + CALL1 String_Free; + DONE; +} + +void () Nex_Action_Management_Refresh; +void() Nex_Action_Management_Refresh = asm +{ +local entity lItem; + STORE_F "::Data::Management::FileList", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F ITEM_DATA_SYNC, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Nex_Action_Management_TypeWeapon; +void() Nex_Action_Management_TypeWeapon = asm +{ + STORE_F KEY_GAME, parm0_x; + CALL1 Nex_Management_SetType; + DONE; +} + +void () Nex_Action_Management_TypeGame; +void() Nex_Action_Management_TypeGame = asm +{ + STORE_F FILE_APPEND, parm0_x; + CALL1 Nex_Management_SetType; + DONE; +} + +void () Nex_Action_Management_TypeMapList; +void() Nex_Action_Management_TypeMapList = asm +{ + STORE_F KEY_MENU, parm0_x; + CALL1 Nex_Management_SetType; + DONE; +} + +void () Nex_Automation_Key; +void() Nex_Automation_Key = asm +{ +local entity lLink2; +local entity lLink1; +local entity lAction; +local float temp_0; +local float temp_1; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + NOT_S temp_0, temp_0; + IFNOT temp_0, 8; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, target, temp_0; + STORE_F "Bad target '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "'", parm2_x; + CALL3 objerror; + RETURN offset_0; + STORE_F "Action", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lAction; + STORE_F "Link1", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lLink1; + STORE_F "Link2", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lLink2; + ADDRESS lAction, text, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, text, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lLink1, link, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, target, temp_1; + STOREP_S temp_1, temp_0; + ADDRESS lLink2, link, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_S temp_1, target, temp_1; + STOREP_S temp_1, temp_0; + DONE; +} + +void (float, float) Nex_Key_KeyHook; +void(float pKey, float pAscii) Nex_Key_KeyHook = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; + NE_F pKey, K_ESCAPE, temp_0; + IFNOT temp_0, 13; + STORE_F pKey, parm0_x; + CALL1 ftos; + STORE_F Menu_KeyHook_Target, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + STORE_F Menu_KeyHook_Target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + STORE_F Menu_KeyHook_Target, parm0_x; + STORE_F ITEM_DATA_TEST_START, parm1_x; + CALL2 Raise_DataEvent; + STORE_F Menu_KeyHook_Target, parm0_x; + STORE_F "InfoWindow", parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Menu_GetItemEx; + STORE_ENT return_x, lItem; + ADDRESS lItem, flag, temp_0; + INDIRECT_F lItem, flag, temp_1; + BITOR temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + STORE_FNC Util_NullFunction, Menu_KeyHook; + DONE; +} + +void () Nex_Action_KeyButton; +void() Nex_Action_KeyButton = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; +local float temp_2; + INDIRECT_E self, _target, temp_0; + INDIRECT_E temp_0, _link, Menu_KeyHook_Target; + STORE_FNC Nex_Key_KeyHook, Menu_KeyHook; + STORE_F "InfoWindow", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + ADDRESS lItem, flag, temp_0; + INDIRECT_F lItem, flag, temp_1; + INDIRECT_F lItem, flag, temp_2; + BITAND temp_2, FLAG_HIDDEN, temp_2; + SUB_F temp_1, temp_2, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +void () Nex_Action_Video_Apply; +void() Nex_Action_Video_Apply = asm +{ + STORE_F "::Data::Video::Fullscreen", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_SEND, parm1_x; + CALL2 Raise_DataEvent; + STORE_F "::Data::Video::Resolution", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_SEND, parm1_x; + CALL2 Raise_DataEvent; + STORE_F "::Data::Video::BPP", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F ITEM_DATA_SEND, parm1_x; + CALL2 Raise_DataEvent; + STORE_F "vid_restart +", parm0_x; + CALL1 cmd; + DONE; +} + +void () Nex_Action_JoinGame_SortBy_Action; +void() Nex_Action_JoinGame_SortBy_Action = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_F self, _realValue, temp_0; + EQ_F HostCache_SortField, temp_0, temp_0; + IFNOT temp_0, 7; + INDIRECT_F self, _realValue, temp_0; + NOT_F HostCache_SortDescending, temp_1; + STORE_F temp_0, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 sethostcachesort; + GOTO 4; + INDIRECT_F self, _realValue, parm0_x; + STORE_F FILE_APPEND, parm1_x; + CALL2 sethostcachesort; + CALL0 HostCache_ResortViewSet; + DONE; +} + +void () Nex_Action_JoinGame_SortBy; +void() Nex_Action_JoinGame_SortBy = asm +{ +local float locked_1174; +local float temp_1; + ADDRESS self, _realValue, locked_1174; + INDIRECT_S self, target, parm0_x; + CALL1 gethostcacheindexforkey; + STOREP_F return_x, locked_1174; + ADDRESS self, action, locked_1174; + STOREP_FNC Nex_Action_JoinGame_SortBy_Action, locked_1174; + DONE; +} + +void () Nex_Automation_CreateEntries; +void() Nex_Automation_CreateEntries = asm +{ +local entity lEntry; +local float lCounter; +local entity lTemplate; +local float temp_0; + STORE_F "Entry", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lTemplate; + STORE_F KEY_GAME, lCounter; + LT lCounter, 64.000000, temp_0; + IFNOT temp_0, 17; + STORE_F lCounter, parm0_x; + CALL1 ftos; + STORE_F "Entry", parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + INDIRECT_S self, parent, temp_0; + STORE_F lTemplate, parm0_x; + STORE_F return_x, parm1_x; + STORE_F temp_0, parm2_x; + STORE_F FILE_APPEND, parm3_x; + CALL4 Menu_DeriveItem; + STORE_ENT return_x, lEntry; + ADDRESS lEntry, stepValue, temp_0; + STOREP_F lCounter, temp_0; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -17; + INDIRECT_E self, _parent, parm0_x; + CALL1 Menu_LinkItem; + DONE; +} + +void () Nex_Action_EntryConnect; +void() Nex_Action_EntryConnect = asm +{ +local float temp_0; + STORE_F "connect "", parm0_x; + CALL1 cmd; + INDIRECT_F self, stepValue, temp_0; + STORE_F SLIST_FIELD_CNAME, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 gethostcachestring; + STORE_F return_x, parm0_x; + CALL1 cmd; + STORE_F "" +", parm0_x; + CALL1 cmd; + CALL0 m_hide; + DONE; +} + +void () Nex_Action_RefreshSlist; +void() Nex_Action_RefreshSlist = asm +{ + CALL0 HostCache_RefreshHostCache; + DONE; +} + +void () Nex_Action_JumpToJoinGame; +void() Nex_Action_JumpToJoinGame = asm +{ +local entity lItem; +local float temp_0; + CALL0 resethostcachemasks; + STORE_F SLIST_FIELD_PING, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 sethostcachesort; + CALL0 HostCache_RefreshHostCache; + STORE_F "Normal::Panel", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F link, parm1_x; + STORE_F "JoinGame", parm2_x; + CALL3 String_EntitySet; + STORE_F lItem, parm0_x; + CALL1 Raise_Update; + CALL0 Menu_UpdateRunFlags; + INDIRECT_E lItem, _link, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 Menu_JumpToWindow; + DONE; +} + +void () Nex_Action_ExecuteQuery; +void() Nex_Action_ExecuteQuery = asm +{ +local bool lIsStringArg; +local float lOperator; +local float lField; +local bool lAndMask; +local string lToken; +local float lTokenCount; +local float lTokenNum; +local float lOrPos; +local float lAndPos; +local float temp_0; +local float temp_1; + CALL0 resethostcachemasks; + STORE_F KEY_GAME, lAndPos; + STORE_F K_MOUSE1, lOrPos; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, parm0_x; + CALL1 tokenize; + STORE_F return_x, lTokenCount; + STORE_F KEY_GAME, lTokenNum; + LT lTokenNum, lTokenCount, temp_0; + IFNOT temp_0, 223; + STORE_F lTokenNum, parm0_x; + CALL1 argv; + STORE_S return_x, lToken; + EQ_S lToken, "notempty", temp_0; + IFNOT temp_0, 8; + STORE_F lAndPos, parm0_x; + STORE_F SLIST_FIELD_NUMPLAYERS, parm1_x; + STORE_F KEY_GAME, parm2_x; + STORE_F SLIST_SORTDESCENDING, parm3_x; + CALL4 sethostcachemasknumber; + ADD_F lAndPos, FILE_APPEND, lAndPos; + GOTO 209; + EQ_S lToken, "compatible", temp_0; + IFNOT temp_0, 8; + STORE_F lAndPos, parm0_x; + STORE_F SLIST_FIELD_PROTOCOL, parm1_x; + STORE_F KEY_UNKNOWN, parm2_x; + STORE_F CVAR_READONLY, parm3_x; + CALL4 sethostcachemasknumber; + ADD_F lAndPos, FILE_APPEND, lAndPos; + GOTO 200; + EQ_S lToken, "goodping", temp_0; + IFNOT temp_0, 8; + STORE_F lAndPos, parm0_x; + STORE_F SLIST_FIELD_PING, parm1_x; + STORE_F K_PGUP, parm2_x; + STORE_F KEY_MENU, parm3_x; + CALL4 sethostcachemasknumber; + ADD_F lAndPos, FILE_APPEND, lAndPos; + GOTO 191; + EQ_S lToken, "mediumping", temp_0; + IFNOT temp_0, 8; + STORE_F lAndPos, parm0_x; + STORE_F SLIST_FIELD_PROTOCOL, parm1_x; + STORE_F 250.000000, parm2_x; + STORE_F KEY_MENU, parm3_x; + CALL4 sethostcachemasknumber; + ADD_F lAndPos, FILE_APPEND, lAndPos; + GOTO 182; + EQ_S lToken, "mask", temp_0; + IFNOT temp_0, 168; + ADD_F lTokenNum, FILE_APPEND, lTokenNum; + GT lTokenNum, lTokenCount, temp_0; + IFNOT temp_0, 3; + GOTO 178; + GOTO 4; + STORE_F lTokenNum, parm0_x; + CALL1 argv; + STORE_S return_x, lToken; + EQ_S lToken, "or", temp_0; + IFNOT temp_0, 3; + STORE_F KEY_GAME, lAndMask; + GOTO 6; + EQ_S lToken, "and", temp_0; + IFNOT temp_0, 3; + STORE_F FILE_APPEND, lAndMask; + GOTO 2; + GOTO 165; + ADD_F lTokenNum, FILE_APPEND, lTokenNum; + GT lTokenNum, lTokenCount, temp_0; + IFNOT temp_0, 3; + GOTO 161; + GOTO 4; + STORE_F lTokenNum, parm0_x; + CALL1 argv; + STORE_S return_x, lToken; + EQ_S lToken, "cname", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_CNAME, lField; + STORE_F FILE_APPEND, lIsStringArg; + GOTO 46; + EQ_S lToken, "ping", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_PING, lField; + STORE_F KEY_GAME, lIsStringArg; + GOTO 41; + EQ_S lToken, "game", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_GAME, lField; + STORE_F FILE_APPEND, lIsStringArg; + GOTO 36; + EQ_S lToken, "mod", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_MOD, lField; + STORE_F FILE_APPEND, lIsStringArg; + GOTO 31; + EQ_S lToken, "map", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_MAP, lField; + STORE_F FILE_APPEND, lIsStringArg; + GOTO 26; + EQ_S lToken, "name", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_NAME, lField; + STORE_F FILE_APPEND, lIsStringArg; + GOTO 21; + EQ_S lToken, "maxplayers", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_MAXPLAYERS, lField; + STORE_F KEY_GAME, lIsStringArg; + GOTO 16; + EQ_S lToken, "numplayers", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_NUMPLAYERS, lField; + STORE_F KEY_GAME, lIsStringArg; + GOTO 11; + EQ_S lToken, "protocol", temp_0; + IFNOT temp_0, 4; + STORE_F SLIST_FIELD_PROTOCOL, lField; + STORE_F KEY_GAME, lIsStringArg; + GOTO 6; + IFNOT lAndMask, 3; + ADD_F lAndPos, FILE_APPEND, lAndPos; + GOTO 2; + ADD_F lOrPos, FILE_APPEND, lOrPos; + GOTO 91; + ADD_F lTokenNum, FILE_APPEND, lTokenNum; + GT lTokenNum, lTokenCount, temp_0; + IFNOT temp_0, 3; + GOTO 103; + GOTO 4; + STORE_F lTokenNum, parm0_x; + CALL1 argv; + STORE_S return_x, lToken; + EQ_S lToken, "$$", temp_0; + IFNOT temp_0, 3; + STORE_F KEY_GAME, lOperator; + GOTO 40; + EQ_S lToken, "!$", temp_0; + IFNOT temp_0, 3; + STORE_F FILE_APPEND, lOperator; + GOTO 36; + EQ_S lToken, "<", temp_0; + IFNOT temp_0, 3; + STORE_F KEY_UNKNOWN, lOperator; + GOTO 32; + EQ_S lToken, "<=", temp_0; + IFNOT temp_0, 3; + STORE_F KEY_MENU, lOperator; + GOTO 28; + EQ_S lToken, "==", temp_0; + IF temp_0, 2; + EQ_S lToken, "=", temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 3; + STORE_F CVAR_READONLY, lOperator; + GOTO 21; + EQ_S lToken, ">", temp_0; + IFNOT temp_0, 3; + STORE_F SLIST_SERVERREPLYCOUNT, lOperator; + GOTO 17; + EQ_S lToken, ">=", temp_0; + IFNOT temp_0, 3; + STORE_F SLIST_SORTFIELD, lOperator; + GOTO 13; + EQ_S lToken, "!=", temp_0; + IFNOT temp_0, 3; + STORE_F SLIST_SORTDESCENDING, lOperator; + GOTO 9; + EQ_S lToken, ":", temp_0; + IFNOT temp_0, 6; + IFNOT lIsStringArg, 3; + STORE_F KEY_GAME, lOperator; + GOTO 2; + STORE_F KEY_MENU, lOperator; + GOTO 2; + GOTO 56; + ADD_F lTokenNum, FILE_APPEND, lTokenNum; + GT lTokenNum, lTokenCount, temp_0; + IFNOT temp_0, 3; + GOTO 52; + GOTO 4; + STORE_F lTokenNum, parm0_x; + CALL1 argv; + STORE_S return_x, lToken; + IFNOT lIsStringArg, 14; + IFNOT lAndMask, 7; + STORE_F lAndPos, parm0_x; + STORE_F lField, parm1_x; + STORE_F lToken, parm2_x; + STORE_F lOperator, parm3_x; + CALL4 sethostcachemaskstring; + GOTO 6; + STORE_F lOrPos, parm0_x; + STORE_F lField, parm1_x; + STORE_F lToken, parm2_x; + STORE_F lOperator, parm3_x; + CALL4 sethostcachemaskstring; + GOTO 17; + IFNOT lAndMask, 9; + STORE_F lToken, parm0_x; + CALL1 stof; + STORE_F lAndPos, parm0_x; + STORE_F lField, parm1_x; + STORE_F return_x, parm2_x; + STORE_F lOperator, parm3_x; + CALL4 sethostcachemasknumber; + GOTO 8; + STORE_F lToken, parm0_x; + CALL1 stof; + STORE_F lOrPos, parm0_x; + STORE_F lField, parm1_x; + STORE_F return_x, parm2_x; + STORE_F lOperator, parm3_x; + CALL4 sethostcachemasknumber; + GOTO -147; + GOTO -157; + GOTO 13; + STORE_F lOrPos, parm0_x; + STORE_F SLIST_FIELD_MAP, parm1_x; + STORE_F lToken, parm2_x; + STORE_F KEY_GAME, parm3_x; + CALL4 sethostcachemaskstring; + ADD_F lOrPos, FILE_APPEND, lOrPos; + STORE_F lOrPos, parm0_x; + STORE_F SLIST_FIELD_NAME, parm1_x; + STORE_F lToken, parm2_x; + STORE_F KEY_GAME, parm3_x; + CALL4 sethostcachemaskstring; + ADD_F lOrPos, FILE_APPEND, lOrPos; + ADD_F lTokenNum, FILE_APPEND, lTokenNum; + GOTO -223; + CALL0 HostCache_ResortViewSet; + DONE; +} + +void () Nex_Credits_SetSizeX; +void() Nex_Credits_SetSizeX = asm +{ +local entity lItem; +local float temp_0; +local float temp_1; + STORE_F "Credits", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + ADDRESS lItem, size_x, temp_0; + INDIRECT_E self, _parent, temp_1; + INDIRECT_F temp_1, size_x, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +void () Nex_Credits_Scroll; +void() Nex_Credits_Scroll = asm +{ +local entity lTarget; +local entity lItem; +local vector temp_0; +local vector temp_1; +local vector temp_2; +local float temp_3; +local float temp_4; + STORE_F "Credits", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_E self, _parent, lTarget; + ADDRESS lTarget, origin_x, temp_2_x; + INDIRECT_V lTarget, origin_x, temp_1; + INDIRECT_V self, direction_x, temp_0; + MUL_FV Timer_Delta, temp_0, temp_0; + SUB_V temp_1, temp_0, temp_0; + STOREP_V temp_0_x, temp_2; + INDIRECT_F self, direction_x, temp_3; + IFNOT temp_3, 17; + INDIRECT_F lTarget, origin_x, temp_3; + INDIRECT_F lItem, size_x, temp_4; + SUB_F KEY_GAME, temp_4, temp_4; + LT temp_3, temp_4, temp_3; + IFNOT temp_3, 4; + ADDRESS lTarget, origin_x, temp_3; + INDIRECT_F lTarget, size_x, temp_4; + STOREP_F temp_4, temp_3; + INDIRECT_F lTarget, origin_x, temp_3; + INDIRECT_F lItem, size_x, temp_4; + GT temp_3, temp_4, temp_3; + IFNOT temp_3, 5; + ADDRESS lTarget, origin_x, temp_3; + INDIRECT_F lItem, size_x, temp_4; + SUB_F KEY_GAME, temp_4, temp_4; + STOREP_F temp_4, temp_3; + INDIRECT_F self, direction_y, temp_3; + IFNOT temp_3, 17; + INDIRECT_F lTarget, origin_y, temp_3; + INDIRECT_F lItem, size_y, temp_4; + SUB_F KEY_GAME, temp_4, temp_4; + LT temp_3, temp_4, temp_3; + IFNOT temp_3, 4; + ADDRESS lTarget, origin_y, temp_3; + INDIRECT_F lTarget, size_y, temp_4; + STOREP_F temp_4, temp_3; + INDIRECT_F lTarget, origin_y, temp_3; + INDIRECT_F lItem, size_y, temp_4; + GT temp_3, temp_4, temp_3; + IFNOT temp_3, 5; + ADDRESS lTarget, origin_y, temp_3; + INDIRECT_F lItem, size_y, temp_4; + SUB_F KEY_GAME, temp_4, temp_4; + STOREP_F temp_4, temp_3; + DONE; +} + +void () Nex_Credits_Toggle; +void() Nex_Credits_Toggle = asm +{ +local entity lEntity; +local float temp_3; +local float temp_4; + STORE_F "CreditsWnd", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEntity; + INDIRECT_F lEntity, flag, temp_3; + BITAND temp_3, FLAG_HIDDEN, temp_3; + IFNOT temp_3, 11; + ADDRESS lEntity, flag, temp_3; + INDIRECT_F lEntity, flag, temp_4; + SUB_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_F "CreditsWnd::Layout::Items::Close", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Menu_Select; + GOTO 7; + ADDRESS lEntity, flag, temp_3; + INDIRECT_F lEntity, flag, temp_4; + ADD_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_Reselect; + DONE; +} + +float (float, float) Nex_Credits_Key; +float(float pKey, float pAscii) Nex_Credits_Key = asm +{ +local float temp_3; + EQ_F pKey, K_ESCAPE, temp_3; + IFNOT temp_3, 3; + CALL0 Nex_Credits_Toggle; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void () Nex_Credits_Action; +void() Nex_Credits_Action = asm +{ +local entity lEntity; +local float temp_3; +local float temp_4; + STORE_F "CreditsWnd", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEntity; + INDIRECT_F lEntity, flag, temp_3; + BITAND temp_3, FLAG_HIDDEN, temp_3; + IFNOT temp_3, 5; + ADDRESS lEntity, flag, temp_3; + INDIRECT_F lEntity, flag, temp_4; + SUB_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_F "CreditsWnd::Layout::Items::Close", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Menu_Select; + STORE_F "CreditsWnd::Layout::Items::Scroller", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEntity; + ADDRESS lEntity, origin_y, temp_3; + INDIRECT_F lEntity, size_y, temp_4; + STOREP_F temp_4, temp_3; + DONE; +} + +void() Item_Nex_Avatar_Info_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Nex_Avatar_Info_Spawn = asm +{ +local float temp_3; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, picture, parm0_x; + CALL1 Gfx_Precache; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Nex_Avatar_Info_Destroy, temp_3; + DONE; +} + +void () _IDNA_BuildList; +void() _IDNA_BuildList = asm +{ +local float locked_1174; +local string lLine; +local string lDescription; +local string lModel; +local string lSkin; +local string lPicture; +local string lName; +local float lHandle; +local string lFilename; +local entity lAvatar; +local float lSearchCounter; +local float lSearchSize; +local float lSearchHandle; +local float temp_4; + STORE_F self, parm0_x; + CALL1 Menu_EmptyWindow; + STORE_F "models/player/*.txt", parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 search_begin; + STORE_F return_x, lSearchHandle; + LT lSearchHandle, KEY_GAME, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + STORE_F lSearchHandle, parm0_x; + CALL1 search_getsize; + STORE_F return_x, lSearchSize; + STORE_F KEY_GAME, lSearchCounter; + LT lSearchCounter, lSearchSize, locked_1174; + IFNOT locked_1174, 116; + STORE_F lSearchHandle, parm0_x; + STORE_F lSearchCounter, parm1_x; + CALL2 search_getfilename; + STORE_S return_x, lFilename; + STORE_F lFilename, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 fopen; + STORE_F return_x, lHandle; + LT lHandle, KEY_GAME, locked_1174; + IFNOT locked_1174, 6; + STORE_F "Menu: Couldn't open model definition file '", parm0_x; + STORE_F lFilename, parm1_x; + STORE_F "' +", parm2_x; + CALL3 print; + GOTO 99; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lName; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lPicture; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lSkin; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lModel; + NOT_S lName, locked_1174; + IF locked_1174, 2; + NOT_S lPicture, temp_4; + OR locked_1174, temp_4, locked_1174; + IF locked_1174, 2; + NOT_S lSkin, temp_4; + OR locked_1174, temp_4, locked_1174; + IF locked_1174, 2; + NOT_S lModel, temp_4; + OR locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 19; + STORE_F lName, parm0_x; + CALL1 String_Free; + STORE_F lPicture, parm0_x; + CALL1 String_Free; + STORE_F lSkin, parm0_x; + CALL1 String_Free; + STORE_F lModel, parm0_x; + CALL1 String_Free; + STORE_F lSearchHandle, parm0_x; + STORE_F lSearchCounter, parm1_x; + CALL2 search_getfilename; + STORE_F "Menu: Couldn't parse model definition file '", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "' +", parm2_x; + CALL3 print; + STORE_F lHandle, parm0_x; + CALL1 fclose; + GOTO 50; + CALL0 String_Create; + STORE_S return_x, lDescription; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_S return_x, lLine; + STORE_F lLine, parm0_x; + STORE_F " +", parm1_x; + CALL2 strcat; + STORE_F lDescription, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, lDescription; + STORE_F lLine, parm0_x; + CALL1 validstring; + IF return_x, -12; + NE_S lDescription, string_null, locked_1174; + IFNOT locked_1174, 21; + STORE_F lSearchCounter, parm0_x; + CALL1 ftos; + INDIRECT_S self, name, locked_1174; + STORE_F "Item_Nex_Avatar_Info", parm0_x; + STORE_F return_x, parm1_x; + STORE_F locked_1174, parm2_x; + CALL3 Menu_CreateItem; + STORE_ENT return_x, lAvatar; + ADDRESS lAvatar, target, locked_1174; + STOREP_S lModel, locked_1174; + ADDRESS lAvatar, link, locked_1174; + STOREP_S lSkin, locked_1174; + ADDRESS lAvatar, picture, locked_1174; + STOREP_S lPicture, locked_1174; + ADDRESS lAvatar, normal, locked_1174; + STOREP_S lName, locked_1174; + ADDRESS lAvatar, text, locked_1174; + STOREP_S lDescription, locked_1174; + STORE_F lAvatar, parm0_x; + CALL1 Menu_LinkItem; + STORE_F lName, parm0_x; + CALL1 String_Free; + STORE_F lPicture, parm0_x; + CALL1 String_Free; + STORE_F lSkin, parm0_x; + CALL1 String_Free; + STORE_F lModel, parm0_x; + CALL1 String_Free; + STORE_F lDescription, parm0_x; + CALL1 String_Free; + STORE_F lHandle, parm0_x; + CALL1 fclose; + ADD_F lSearchCounter, FILE_APPEND, lSearchCounter; + GOTO -116; + STORE_F lSearchHandle, parm0_x; + CALL1 search_end; + STORE_F self, parm0_x; + CALL1 Menu_LinkChildren; + ADDRESS self, minValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS self, stepValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS self, maxValue, locked_1174; + INDIRECT_F lAvatar, orderPos, parm0_x; + CALL1 fabs; + STOREP_F return_x, locked_1174; + DONE; +} + +void () _IDNA_Sync; +void() _IDNA_Sync = asm +{ +local float locked_1174; +local entity lMatch; +local string lSkin; +local string lModel; +local float temp_4; + STORE_F "_cl_playermodel", parm0_x; + CALL1 str_cvar; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lModel; + STORE_F "_cl_playerskin", parm0_x; + CALL1 str_cvar; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lSkin; + INDIRECT_E self, _child, lMatch; + INDIRECT_E lMatch, _next, locked_1174; + IFNOT locked_1174, 11; + INDIRECT_S lMatch, target, locked_1174; + EQ_S locked_1174, lModel, locked_1174; + IFNOT locked_1174, 3; + INDIRECT_S lMatch, link, temp_4; + EQ_S temp_4, lSkin, temp_4; + AND locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 2; + GOTO 3; + INDIRECT_E lMatch, _next, lMatch; + GOTO -11; + IFNOT lMatch, 18; + ADDRESS self, _link, locked_1174; + STOREP_ENT lMatch, locked_1174; + ADDRESS self, _realValue, locked_1174; + INDIRECT_F lMatch, orderPos, parm0_x; + CALL1 fabs; + STOREP_F return_x, locked_1174; + INDIRECT_F self, _realValue, parm0_x; + CALL1 ftos; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, locked_1174; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F locked_1174, parm2_x; + CALL3 String_EntitySet; + STORE_F lModel, parm0_x; + CALL1 String_Free; + STORE_F lSkin, parm0_x; + CALL1 String_Free; + DONE; +} + +void () _IDNA_UpdateLink; +void() _IDNA_UpdateLink = asm +{ +local float locked_1174; +local entity lMatch; +local float lTarget; +local float lCurrent; +local float temp_4; + INDIRECT_E self, _link, locked_1174; + INDIRECT_F locked_1174, orderPos, parm0_x; + CALL1 fabs; + STORE_F return_x, lCurrent; + INDIRECT_F self, _realValue, lTarget; + LT lCurrent, lTarget, locked_1174; + IFNOT locked_1174, 12; + INDIRECT_E self, _link, lMatch; + INDIRECT_E lMatch, _next, locked_1174; + IFNOT locked_1174, 4; + INDIRECT_F lMatch, orderPos, parm0_x; + CALL1 fabs; + NE_F return_x, lTarget, temp_4; + AND locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 3; + INDIRECT_E lMatch, _next, lMatch; + GOTO -8; + GOTO 11; + INDIRECT_E self, _link, lMatch; + INDIRECT_E lMatch, _prev, locked_1174; + IFNOT locked_1174, 4; + INDIRECT_F lMatch, orderPos, parm0_x; + CALL1 fabs; + NE_F return_x, lTarget, temp_4; + AND locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 3; + INDIRECT_E lMatch, _prev, lMatch; + GOTO -8; + ADDRESS self, _link, locked_1174; + STOREP_ENT lMatch, locked_1174; + ADDRESS self, _realValue, locked_1174; + INDIRECT_E self, _link, temp_4; + INDIRECT_F temp_4, orderPos, parm0_x; + CALL1 fabs; + STOREP_F return_x, locked_1174; + INDIRECT_F self, _realValue, parm0_x; + CALL1 ftos; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNA_RawSet; +void() _IDNA_RawSet = asm +{ +local float temp_3; + CALL0 _IDNA_UpdateLink; + INDIRECT_E self, _link, temp_3; + INDIRECT_S temp_3, target, temp_3; + STORE_F "playermodel "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "";", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + INDIRECT_E self, _link, temp_3; + INDIRECT_S temp_3, link, temp_3; + STORE_F "playerskin "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +void () _IDNA_Send; +void() _IDNA_Send = asm +{ +local float temp_3; + CALL0 _IDNA_RawSet; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNA_Test_Start; +void() _IDNA_Test_Start = asm +{ + CALL0 _IDNA_RawSet; + DONE; +} + +void () _IDNA_Test_End; +void() _IDNA_Test_End = asm +{ +local float temp_3; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNA_RawSet; + DONE; +} + +void () _IDNA_Reset; +void() _IDNA_Reset = asm +{ +local float temp_3; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNA_Send; + DONE; +} + +void(float pEvent) Item_Data_Nex_Avatar_DataEvent = asm +{ +local float temp_3; + GOTO 13; + CALL0 _IDNA_Sync; + GOTO 22; + CALL0 _IDNA_Send; + GOTO 20; + CALL0 _IDNA_Reset; + GOTO 18; + CALL0 _IDNA_Test_Start; + GOTO 16; + CALL0 _IDNA_Test_End; + GOTO 14; + CALL0 _IDNA_UpdateLink; + GOTO 12; + IFNOT pEvent, -12; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_TEST_START, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_TEST_END, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATALINK_SET, temp_3; + IF temp_3, -12; + DONE; +} + +void() Item_Data_Nex_Avatar_Spawn = asm +{ +local float temp_3; +local float temp_4; + CALL0 Item_Data_Init; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + ADDRESS self, _reinit, temp_3; + STOREP_FNC _IDNA_Sync, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Nex_Avatar_DataEvent, temp_3; + CALL0 _IDNA_BuildList; + DONE; +} + +void () _IDNN_Sync; +void() _IDNN_Sync = asm +{ +local float temp_3; + STORE_F "_cl_name", parm0_x; + CALL1 str_cvar; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNN_Send; +void() _IDNN_Send = asm +{ +local float temp_3; + INDIRECT_S self, value, temp_3; + STORE_F "name "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNN_Test_Start; +void() _IDNN_Test_Start = asm +{ +local float temp_3; + INDIRECT_S self, value, temp_3; + STORE_F "name "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +void () _IDNN_Test_End; +void() _IDNN_Test_End = asm +{ +local float temp_3; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, temp_3; + STORE_F "name "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +void () _IDNN_Reset; +void() _IDNN_Reset = asm +{ +local float temp_3; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNN_Send; + DONE; +} + +void(float pEvent) Item_Data_Nex_Name_DataEvent = asm +{ +local float temp_3; + GOTO 11; + CALL0 _IDNN_Sync; + GOTO 18; + CALL0 _IDNN_Send; + GOTO 16; + CALL0 _IDNN_Reset; + GOTO 14; + CALL0 _IDNN_Test_Start; + GOTO 12; + CALL0 _IDNN_Test_End; + GOTO 10; + IFNOT pEvent, -10; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_START, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_END, temp_3; + IF temp_3, -10; + DONE; +} + +void() Item_Data_Nex_Name_Spawn = asm +{ +local float temp_3; + CALL0 Item_Data_Init; + ADDRESS self, _reinit, temp_3; + STOREP_FNC _IDNN_Sync, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Nex_Name_DataEvent, temp_3; + DONE; +} + +void () _IDNC_Sync; +void() _IDNC_Sync = asm +{ +local float lPants; +local float temp_3; + STORE_F "_cl_color", parm0_x; + CALL1 cvar; + BITAND return_x, 15.000000, lPants; + STORE_F lPants, parm0_x; + CALL1 ftos; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNC_Send; +void() _IDNC_Send = asm +{ +local float temp_3; + INDIRECT_S self, value, temp_3; + STORE_F "color "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNC_Test_Start; +void() _IDNC_Test_Start = asm +{ +local float temp_3; + INDIRECT_S self, value, temp_3; + STORE_F "color "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +void () _IDNC_Test_End; +void() _IDNC_Test_End = asm +{ +local float temp_3; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, temp_3; + STORE_F "color "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +void () _IDNC_Reset; +void() _IDNC_Reset = asm +{ +local float temp_3; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNN_Send; + DONE; +} + +void(float pEvent) Item_Data_Nex_Color_DataEvent = asm +{ +local float temp_3; + GOTO 11; + CALL0 _IDNC_Sync; + GOTO 18; + CALL0 _IDNC_Send; + GOTO 16; + CALL0 _IDNC_Reset; + GOTO 14; + CALL0 _IDNC_Test_Start; + GOTO 12; + CALL0 _IDNC_Test_End; + GOTO 10; + IFNOT pEvent, -10; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_START, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_END, temp_3; + IF temp_3, -10; + DONE; +} + +void() Item_Data_Nex_Color_Spawn = asm +{ +local float temp_3; + CALL0 Item_Data_Init; + ADDRESS self, _reinit, temp_3; + STOREP_FNC _IDNC_Sync, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Nex_Color_DataEvent, temp_3; + DONE; +} + +void() Item_Nex_Map_Info_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Nex_Map_Info_Spawn = asm +{ +local float temp_3; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, picture, parm0_x; + CALL1 Gfx_Precache; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Nex_Map_Info_Destroy, temp_3; + DONE; +} + +string _Nex_MapList_FullPath; +string _Nex_MapList_Name; +entity _Nex_MapList_Root; +void() Item_Nex_MapDB_EnumFiles = asm +{ +local float locked_1174; +local string lLine; +local string lTitle; +local string lDescription; +local string lName; +local string lStripped; +local string lFilename; +local float lHandle; +local entity lMap; +local float lSearchCounter; +local float lSearchSize; +local float lSearchHandle; +local float temp_4; + STORE_F "maps/*.bsp", parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 search_begin; + STORE_F return_x, lSearchHandle; + LT lSearchHandle, KEY_GAME, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + STORE_F lSearchHandle, parm0_x; + CALL1 search_getsize; + STORE_F return_x, lSearchSize; + STORE_F KEY_GAME, lSearchCounter; + LT lSearchCounter, lSearchSize, locked_1174; + IFNOT locked_1174, 105; + STORE_F lSearchHandle, parm0_x; + STORE_F lSearchCounter, parm1_x; + CALL2 search_getfilename; + STORE_S return_x, lFilename; + STORE_F lFilename, parm0_x; + CALL1 strlen; + SUB_F return_x, CVAR_READONLY, locked_1174; + STORE_F lFilename, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F locked_1174, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lStripped; + STORE_F lStripped, parm0_x; + STORE_F SLIST_SERVERREPLYCOUNT, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lName; + STORE_F lStripped, parm0_x; + STORE_F ".txt", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 fopen; + STORE_F return_x, lHandle; + LT lHandle, KEY_GAME, locked_1174; + IFNOT locked_1174, 11; + STORE_F lName, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lTitle; + STORE_F "--NO INFORMATION AVAILABLE-- +", parm0_x; + STORE_F lFilename, parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lDescription; + GOTO 23; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lTitle; + CALL0 String_Create; + STORE_S return_x, lDescription; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_S return_x, lLine; + STORE_F lLine, parm0_x; + STORE_F " +", parm1_x; + CALL2 strcat; + STORE_F lDescription, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, lDescription; + STORE_F lLine, parm0_x; + CALL1 validstring; + IF return_x, -12; + STORE_F lHandle, parm0_x; + CALL1 fclose; + STORE_F lSearchCounter, parm0_x; + CALL1 ftos; + INDIRECT_S self, name, locked_1174; + STORE_F "Item_Nex_Map_Info", parm0_x; + STORE_F return_x, parm1_x; + STORE_F locked_1174, parm2_x; + CALL3 Menu_CreateItem; + STORE_ENT return_x, lMap; + ADDRESS lMap, link, locked_1174; + STOREP_S lName, locked_1174; + STORE_F lStripped, parm0_x; + CALL1 Gfx_Precache; + IFNOT return_x, 4; + ADDRESS lMap, picture, locked_1174; + STOREP_S lStripped, locked_1174; + GOTO 3; + ADDRESS lMap, picture, locked_1174; + STOREP_S "gfx/m_nomap", locked_1174; + ADDRESS lMap, normal, locked_1174; + STOREP_S lTitle, locked_1174; + ADDRESS lMap, text, locked_1174; + STOREP_S lDescription, locked_1174; + STORE_F _Nex_MapList_FullPath, parm0_x; + STORE_F lName, parm1_x; + CALL2 Util_AltStringPushBack; + STORE_S return_x, _Nex_MapList_FullPath; + STORE_F _Nex_MapList_Name, parm0_x; + STORE_F lTitle, parm1_x; + CALL2 Util_AltStringPushBack; + STORE_S return_x, _Nex_MapList_Name; + STORE_F lMap, parm0_x; + CALL1 Menu_LinkItem; + STORE_F lTitle, parm0_x; + CALL1 String_Free; + STORE_F lName, parm0_x; + CALL1 String_Free; + STORE_F lStripped, parm0_x; + CALL1 String_Free; + STORE_F lDescription, parm0_x; + CALL1 String_Free; + ADD_F lSearchCounter, FILE_APPEND, lSearchCounter; + GOTO -105; + STORE_F lSearchHandle, parm0_x; + CALL1 search_end; + STORE_F self, parm0_x; + CALL1 Menu_LinkChildren; + ADDRESS self, minValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS self, stepValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS self, maxValue, locked_1174; + INDIRECT_F lMap, orderPos, parm0_x; + CALL1 fabs; + STOREP_F return_x, locked_1174; + DONE; +} + +void() Item_Nex_MapDB_Destroy = asm +{ + STORE_F _Nex_MapList_FullPath, parm0_x; + CALL1 String_Free; + STORE_F _Nex_MapList_Name, parm0_x; + CALL1 String_Free; + STORE_ENT null_entity, _Nex_MapList_Root; + DONE; +} + +void() Item_Nex_MapDB_Spawn = asm +{ +local float temp_3; + IFNOT _Nex_MapList_Root, 3; + STORE_F "There is already another Item_Nex_MapDB object!", parm0_x; + CALL1 error; + CALL0 String_Create; + STORE_S return_x, _Nex_MapList_FullPath; + CALL0 String_Create; + STORE_S return_x, _Nex_MapList_Name; + STORE_ENT self, _Nex_MapList_Root; + CALL0 Item_Nex_MapDB_EnumFiles; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Nex_MapDB_Destroy, temp_3; + DONE; +} + +entity(string pPath) Nex_MapDB_GetByPath = asm +{ +local entity lNode; +local float temp_3; + IF _Nex_MapList_Root, 3; + STORE_F "No Item_Nex_MapDB found!", parm0_x; + CALL1 error; + INDIRECT_E _Nex_MapList_Root, _child, lNode; + IFNOT lNode, 7; + INDIRECT_S lNode, link, temp_3; + EQ_S temp_3, pPath, temp_3; + IFNOT temp_3, 2; + RETURN lNode; + INDIRECT_E lNode, _next, lNode; + GOTO -6; + RETURN null_entity; + DONE; +} + +entity(float pIndex) Nex_MapDB_GetByIndex = asm +{ +local entity lNode; +local float temp_3; + IF _Nex_MapList_Root, 3; + STORE_F "No Item_Nex_MapDB found!", parm0_x; + CALL1 error; + STORE_F pIndex, parm0_x; + CALL1 fabs; + STORE_F return_x, pIndex; + INDIRECT_E _Nex_MapList_Root, _child, lNode; + IFNOT lNode, 8; + INDIRECT_F lNode, orderPos, parm0_x; + CALL1 fabs; + EQ_F return_x, pIndex, temp_3; + IFNOT temp_3, 2; + RETURN lNode; + INDIRECT_E lNode, _next, lNode; + GOTO -7; + RETURN null_entity; + DONE; +} + +string() Nex_MapDB_GetPathAltString = asm +{ + RETURN _Nex_MapList_FullPath; + DONE; +} + +string() Nex_MapDB_GetNameAltString = asm +{ + RETURN _Nex_MapList_Name; + DONE; +} + +float(entity pItem) Nex_MapDB_GetIndex = asm +{ +local float temp_3; + INDIRECT_F pItem, orderPos, parm0_x; + CALL1 fabs; + RETURN return_x; + DONE; +} + +void () Item_DataLink_Nex_MapList_Save; +void() Item_DataLink_Nex_MapList_Save = asm +{ +local string lOutput; +local float lIndex; +local float lCount; +local float temp_3; +local float temp_4; + STORE_F " +", parm0_x; + CALL1 String_Zone; + STORE_S return_x, lOutput; + INDIRECT_S self, valueList, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lIndex; + LT lIndex, lCount, temp_3; + IFNOT temp_3, 17; + INDIRECT_S self, valueList, parm0_x; + STORE_F lIndex, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F "'", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "' +", parm2_x; + CALL3 strcat; + STORE_F lOutput, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, lOutput; + STORE_F lIndex, temp_4; + ADD_F lIndex, FILE_APPEND, lIndex; + GOTO -17; + INDIRECT_S self, cvarName, parm0_x; + STORE_F lOutput, parm1_x; + CALL2 cvar_set; + INDIRECT_S self, cvarName, parm0_x; + STORE_F "_index", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + STORE_F "0", parm1_x; + CALL2 cvar_set; + STORE_F lOutput, parm0_x; + CALL1 String_Free; + DONE; +} + +void () Item_DataLink_Nex_MapList_Load; +void() Item_DataLink_Nex_MapList_Load = asm +{ +local float locked_1174; +local float lCount; +local float lCounter; +local entity lMapInfo; +local string lEntry; +local float temp_4; +local float temp_5; + STORE_F self, parm0_x; + CALL1 DataLink_Nex_MapList_Clear; + INDIRECT_S self, cvarName, parm0_x; + CALL1 str_cvar; + STORE_F return_x, parm0_x; + CALL1 tokenize; + STORE_F return_x, lCount; + CALL0 String_Create; + STORE_S return_x, lEntry; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, locked_1174; + IFNOT locked_1174, 35; + STORE_F lCounter, parm0_x; + CALL1 argv; + STORE_F lEntry, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, lEntry; + STORE_F lEntry, parm0_x; + CALL1 Nex_MapDB_GetByPath; + STORE_ENT return_x, lMapInfo; + EQ_E lMapInfo, null_entity, locked_1174; + IFNOT locked_1174, 7; + INDIRECT_S self, cvarName, parm0_x; + STORE_F ": Map '", parm1_x; + STORE_F lEntry, parm2_x; + STORE_F "' not found in database - ignored +", parm3_x; + CALL4 print; + GOTO 15; + ADDRESS self, descList, locked_1174; + INDIRECT_S self, descList, temp_4; + INDIRECT_S lMapInfo, normal, temp_5; + STORE_F temp_4, parm0_x; + STORE_F temp_5, parm1_x; + CALL2 Util_AltStringPushBack; + STOREP_S return_x, locked_1174; + ADDRESS self, valueList, locked_1174; + INDIRECT_S self, valueList, temp_4; + INDIRECT_S lMapInfo, link, temp_5; + STORE_F temp_4, parm0_x; + STORE_F temp_5, parm1_x; + CALL2 Util_AltStringPushBack; + STOREP_S return_x, locked_1174; + STORE_F lCounter, temp_4; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -35; + STORE_F lEntry, parm0_x; + CALL1 String_Free; + STORE_F self, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + CALL0 Nex_MapSelector_Synchronize; + DONE; +} + +void () Item_DataLink_Nex_MapList_ExecString; +void() Item_DataLink_Nex_MapList_ExecString = asm +{ +local float lIndex; +local float lCount; +local float temp_3; +local float temp_4; + INDIRECT_S self, cvarName, temp_3; + INDIRECT_S self, cvarName, temp_4; + STORE_F "set "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "_index" "0" +set "", parm2_x; + STORE_F temp_4, parm3_x; + STORE_F "" +" +", parm4_x; + CALL5 strcat; + STORE_F Data_ExecString, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, Data_ExecString; + INDIRECT_S self, valueList, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lIndex; + LT lIndex, lCount, temp_3; + IFNOT temp_3, 17; + INDIRECT_S self, valueList, parm0_x; + STORE_F lIndex, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F "'", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "' +", parm2_x; + CALL3 strcat; + STORE_F Data_ExecString, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, Data_ExecString; + STORE_F lIndex, temp_4; + ADD_F lIndex, FILE_APPEND, lIndex; + GOTO -17; + STORE_F Data_ExecString, parm0_x; + STORE_F "" +", parm1_x; + CALL2 String_Append; + STORE_S return_x, Data_ExecString; + DONE; +} + +void(float pEvent) Item_DataLink_Nex_MapList_DataEvent = asm +{ +local float locked_1174; +local float temp_4; + GOTO 39; + INDIRECT_S self, cvarName, locked_1174; + NE_S locked_1174, "", locked_1174; + IFNOT locked_1174, 2; + CALL0 Item_DataLink_Nex_MapList_Load; + GOTO 49; + INDIRECT_S self, cvarName, locked_1174; + NE_S locked_1174, "", locked_1174; + IFNOT locked_1174, 2; + CALL0 Item_DataLink_Nex_MapList_Save; + GOTO 44; + ADDRESS self, _realValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + GOTO 41; + GOTO 40; + GOTO 39; + INDIRECT_S self, cvarName, locked_1174; + NE_S locked_1174, "", locked_1174; + IFNOT locked_1174, 2; + CALL0 Item_DataLink_Nex_MapList_ExecString; + GOTO 34; + ADDRESS self, _realValue, locked_1174; + INDIRECT_F self, _realValue, parm0_x; + CALL1 floor; + STOREP_F return_x, locked_1174; + INDIRECT_F self, _realValue, locked_1174; + LT locked_1174, FILE_APPEND, locked_1174; + IFNOT locked_1174, 4; + ADDRESS self, _realValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + GOTO 8; + INDIRECT_F self, _realValue, locked_1174; + INDIRECT_F self, maxValue, temp_4; + GT locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 4; + ADDRESS self, _realValue, locked_1174; + INDIRECT_F self, maxValue, temp_4; + STOREP_F temp_4, locked_1174; + GOTO 16; + IFNOT pEvent, -38; + EQ_F pEvent, ITEM_DATA_SEND, locked_1174; + IF locked_1174, -35; + EQ_F pEvent, ITEM_DATA_RESET, locked_1174; + IF locked_1174, -32; + EQ_F pEvent, ITEM_DATA_TEST_START, locked_1174; + IF locked_1174, -31; + EQ_F pEvent, ITEM_DATA_TEST_END, locked_1174; + IF locked_1174, -32; + EQ_F pEvent, ITEM_DATA_SAVE_EXECSTRING, locked_1174; + IF locked_1174, -33; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1174; + IF locked_1174, -30; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1174; + IF locked_1174, -32; + DONE; +} + +void () IDLNML_Reinit; +void() IDLNML_Reinit = asm +{ + STORE_F self, parm0_x; + STORE_F ITEM_DATA_SYNC, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Item_DataLink_Nex_MapList_Destroy; +void() Item_DataLink_Nex_MapList_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F cvarName, parm1_x; + CALL2 String_EntityFree; + CALL0 Item_DataLink_Switch_Destroy; + DONE; +} + +void() Item_DataLink_Nex_MapList_Spawn = asm +{ +local float temp_3; + CALL0 Item_DataLink_Switch_Init; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F cvarName, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, cvarName, temp_3; + NE_S temp_3, "", temp_3; + IFNOT temp_3, 12; + INDIRECT_S self, cvarName, parm0_x; + STORE_F "", parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 registercvar; + INDIRECT_S self, cvarName, parm0_x; + STORE_F "_index", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + STORE_F "", parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 registercvar; + ADDRESS self, minValue, temp_3; + STOREP_F FILE_APPEND, temp_3; + ADDRESS self, maxValue, temp_3; + STOREP_F FILE_APPEND, temp_3; + ADDRESS self, stepValue, temp_3; + STOREP_F KEY_GAME, temp_3; + ADDRESS self, _reinit, temp_3; + STOREP_FNC IDLNML_Reinit, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_DataLink_Nex_MapList_DataEvent, temp_3; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_DataLink_Nex_MapList_Destroy, temp_3; + CALL0 CtCall_Init; + DONE; +} + +void() Item_DataLink_Nex_MapList_InitWithMapList = asm +{ + CALL0 Nex_MapDB_GetPathAltString; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + CALL0 Nex_MapDB_GetNameAltString; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + STORE_F self, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +void(entity pItem) DataLink_Nex_MapList_UpdateRange = asm +{ +local float locked_1174; +local float temp_4; + ADDRESS pItem, minValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS pItem, maxValue, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + CALL1 Util_GetAltStringCount; + STOREP_F return_x, locked_1174; + INDIRECT_F pItem, maxValue, locked_1174; + GE locked_1174, FILE_APPEND, locked_1174; + IFNOT locked_1174, 4; + ADDRESS pItem, stepValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + GOTO 5; + ADDRESS pItem, maxValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS pItem, stepValue, locked_1174; + STOREP_F KEY_GAME, locked_1174; + DONE; +} + +void(entity pItem, string pName, string pPath) DataLink_Nex_MapList_InsertEntryAfter = asm +{ +local float locked_1174; +local float lIndex; +local float temp_4; + STORE_F pItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F pItem, _realValue, locked_1174; + SUB_F locked_1174, FILE_APPEND, lIndex; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + STORE_F lIndex, parm1_x; + STORE_F pName, parm2_x; + CALL3 Util_InsAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F lIndex, parm1_x; + STORE_F pPath, parm2_x; + CALL3 Util_InsAltStringItem; + STOREP_S return_x, locked_1174; + STORE_F pItem, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +void(entity pItem) DataLink_Nex_MapList_DeleteEntry = asm +{ +local float locked_1174; +local float lIndex; +local float temp_4; + INDIRECT_F pItem, stepValue, locked_1174; + EQ_F locked_1174, KEY_GAME, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + STORE_F pItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F pItem, _realValue, locked_1174; + SUB_F locked_1174, FILE_APPEND, lIndex; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + STORE_F lIndex, parm1_x; + CALL2 Util_DelAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F lIndex, parm1_x; + CALL2 Util_DelAltStringItem; + STOREP_S return_x, locked_1174; + STORE_F pItem, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +void(entity pItem) DataLink_Nex_MapList_MoveEntryUp = asm +{ +local float locked_1020; +local float locked_1174; +local float lIndexOld; +local float lIndexNew; +local string lPath; +local string lName; + STORE_F pItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F pItem, _realValue, locked_1174; + EQ_F locked_1174, FILE_APPEND, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + INDIRECT_F pItem, _realValue, locked_1174; + SUB_F locked_1174, FILE_APPEND, lIndexOld; + SUB_F lIndexOld, KEY_MENU, lIndexNew; + INDIRECT_S pItem, descList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lName; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lPath; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, locked_1020; + STORE_F lName, parm0_x; + CALL1 String_Normal; + STORE_F locked_1020, parm0_x; + STORE_F lIndexNew, parm1_x; + STORE_F return_x, parm2_x; + CALL3 Util_InsAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, locked_1020; + STORE_F lPath, parm0_x; + CALL1 String_Normal; + STORE_F locked_1020, parm0_x; + STORE_F lIndexNew, parm1_x; + STORE_F return_x, parm2_x; + CALL3 Util_InsAltStringItem; + STOREP_S return_x, locked_1174; + ADD_F lIndexOld, FILE_APPEND, lIndexOld; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_DelAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_DelAltStringItem; + STOREP_S return_x, locked_1174; + STORE_F pItem, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +void(entity pItem) DataLink_Nex_MapList_MoveEntryDown = asm +{ +local float locked_1020; +local float locked_1174; +local float lIndexOld; +local float lIndexNew; +local string lPath; +local string lName; + STORE_F pItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F pItem, _realValue, locked_1174; + INDIRECT_F pItem, maxValue, locked_1020; + EQ_F locked_1174, locked_1020, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + INDIRECT_F pItem, _realValue, locked_1174; + SUB_F locked_1174, FILE_APPEND, lIndexOld; + ADD_F lIndexOld, FILE_APPEND, lIndexNew; + INDIRECT_S pItem, descList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lName; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lPath; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, locked_1020; + STORE_F lName, parm0_x; + CALL1 String_Normal; + STORE_F locked_1020, parm0_x; + STORE_F lIndexNew, parm1_x; + STORE_F return_x, parm2_x; + CALL3 Util_InsAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, locked_1020; + STORE_F lPath, parm0_x; + CALL1 String_Normal; + STORE_F locked_1020, parm0_x; + STORE_F lIndexNew, parm1_x; + STORE_F return_x, parm2_x; + CALL3 Util_InsAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_DelAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F lIndexOld, parm1_x; + CALL2 Util_DelAltStringItem; + STOREP_S return_x, locked_1174; + STORE_F pItem, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +void(entity pItem, string pName, string pPath) DataLink_Nex_MapList_SetFirst = asm +{ +local float locked_1174; +local float temp_4; + INDIRECT_F pItem, stepValue, locked_1174; + EQ_F locked_1174, KEY_GAME, locked_1174; + IFNOT locked_1174, 12; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + STORE_F pName, parm1_x; + CALL2 Util_AltStringPush; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F pPath, parm1_x; + CALL2 Util_AltStringPush; + STOREP_S return_x, locked_1174; + GOTO 13; + ADDRESS pItem, descList, locked_1174; + INDIRECT_S pItem, descList, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pName, parm2_x; + CALL3 Util_SetAltStringItem; + STOREP_S return_x, locked_1174; + ADDRESS pItem, valueList, locked_1174; + INDIRECT_S pItem, valueList, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pPath, parm2_x; + CALL3 Util_SetAltStringItem; + STOREP_S return_x, locked_1174; + STORE_F pItem, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +void(entity pItem) DataLink_Nex_MapList_Clear = asm +{ + STORE_F pItem, parm0_x; + STORE_F descList, parm1_x; + STORE_F "", parm2_x; + CALL3 String_EntitySet; + STORE_F pItem, parm0_x; + STORE_F valueList, parm1_x; + STORE_F "", parm2_x; + CALL3 String_EntitySet; + STORE_F pItem, parm0_x; + CALL1 DataLink_Nex_MapList_UpdateRange; + DONE; +} + +string(entity pItem) DataLink_Nex_MapList_GetCurrentName = asm +{ +local float temp_3; +local float temp_4; + STORE_F pItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_S pItem, descList, temp_3; + INDIRECT_F pItem, _realValue, temp_4; + SUB_F temp_4, FILE_APPEND, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 Util_GetAltStringItem; + RETURN return_x; + DONE; +} + +string(entity pItem) DataLink_Nex_MapList_GetCurrentPath = asm +{ +local float temp_3; +local float temp_4; + STORE_F pItem, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_S pItem, valueList, temp_3; + INDIRECT_F pItem, _realValue, temp_4; + SUB_F temp_4, FILE_APPEND, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 Util_GetAltStringItem; + RETURN return_x; + DONE; +} + +void () _IDLNMS_Build; +void() _IDLNMS_Build = asm +{ +local string lLine; +local string lModPath; +local string lModName; +local string lFilename; +local float lHandle; +local float lSearchCounter; +local float lSearchSize; +local float lSearchHandle; +local float temp_3; + STORE_F "/*.modinfo", parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 search_begin; + STORE_F return_x, lSearchHandle; + LT lSearchHandle, KEY_GAME, temp_3; + IFNOT temp_3, 10; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + STORE_F "'progs.dat'", parm2_x; + CALL3 String_EntitySet; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + STORE_F "'Deathmatch'", parm2_x; + CALL3 String_EntitySet; + RETURN offset_0; + STORE_F lSearchHandle, parm0_x; + CALL1 search_getsize; + STORE_F return_x, lSearchSize; + STORE_F KEY_GAME, lSearchCounter; + LT lSearchCounter, lSearchSize, temp_3; + IFNOT temp_3, 71; + STORE_F lSearchHandle, parm0_x; + STORE_F lSearchCounter, parm1_x; + CALL2 search_getfilename; + STORE_S return_x, lFilename; + STORE_F lFilename, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 fopen; + STORE_F return_x, lHandle; + LT lHandle, KEY_GAME, temp_3; + IFNOT temp_3, 6; + STORE_F "Menu: Couldn't open modinfo file '", parm0_x; + STORE_F lFilename, parm1_x; + STORE_F "' +", parm2_x; + CALL3 print; + GOTO 50; + CALL0 String_Create; + STORE_S return_x, lModPath; + CALL0 String_Create; + STORE_S return_x, lModName; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_S return_x, lLine; + STORE_F lLine, parm0_x; + CALL1 validstring; + IF return_x, 2; + GOTO 33; + STORE_F lModPath, parm0_x; + STORE_F lLine, parm1_x; + CALL2 String_Set; + STORE_S return_x, lModPath; + STORE_F lHandle, parm0_x; + CALL1 fgets; + STORE_S return_x, lLine; + STORE_F lLine, parm0_x; + CALL1 validstring; + IF return_x, 2; + GOTO 22; + STORE_F lModName, parm0_x; + STORE_F lLine, parm1_x; + CALL2 String_Set; + STORE_S return_x, lModName; + INDIRECT_S self, valueList, parm0_x; + STORE_F lModPath, parm1_x; + STORE_F " ", parm2_x; + CALL3 strcat; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, descList, parm0_x; + STORE_F lModName, parm1_x; + STORE_F " ", parm2_x; + CALL3 strcat; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO -38; + STORE_F lModPath, parm0_x; + CALL1 String_Free; + STORE_F lModName, parm0_x; + CALL1 String_Free; + STORE_F lHandle, parm0_x; + CALL1 fclose; + ADD_F lSearchCounter, FILE_APPEND, lSearchCounter; + GOTO -71; + STORE_F lSearchHandle, parm0_x; + CALL1 search_end; + DONE; +} + +void() Item_DataLink_Nex_ModSwitch_Spawn = asm +{ +local string lTemp2; +local string lTemp1; +local float temp_3; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityCreate; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + CALL2 String_EntityCreate; + CALL0 _IDLNMS_Build; + INDIRECT_S self, descList, lTemp1; + INDIRECT_S self, valueList, lTemp2; + CALL0 Item_DataLink_TextSwitch_Spawn; + STORE_F lTemp1, parm0_x; + CALL1 String_Free; + STORE_F lTemp2, parm0_x; + CALL1 String_Free; + DONE; +} + +void () IDLNFL_Sync; +void() IDLNFL_Sync = asm +{ +local float locked_1020; +local float locked_1174; +local string lFilename; +local float lCounter; +local float lMaskedLength; +local float lMaskStart; +local float lHandle; +local float lCount; +local float temp_5; + INDIRECT_S self, selected, locked_1174; + INDIRECT_S self, normal, locked_1020; + STORE_F locked_1174, parm0_x; + STORE_F "/*.", parm1_x; + STORE_F locked_1020, parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 search_begin; + STORE_F return_x, lHandle; + LT lHandle, KEY_GAME, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + STORE_F lHandle, parm0_x; + CALL1 search_getsize; + STORE_F return_x, lCount; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + STORE_F "", parm2_x; + CALL3 String_EntitySet; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + STORE_F "", parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, selected, parm0_x; + CALL1 strlen; + ADD_F return_x, FILE_APPEND, lMaskStart; + INDIRECT_S self, normal, parm0_x; + CALL1 strlen; + ADD_F lMaskStart, return_x, locked_1174; + ADD_F locked_1174, FILE_APPEND, lMaskedLength; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, locked_1174; + IFNOT locked_1174, 26; + STORE_F lHandle, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 search_getfilename; + STORE_S return_x, lFilename; + ADDRESS self, valueList, locked_1174; + INDIRECT_S self, valueList, parm0_x; + STORE_F lFilename, parm1_x; + CALL2 Util_AltStringPushBack; + STOREP_S return_x, locked_1174; + ADDRESS self, descList, locked_1174; + INDIRECT_S self, descList, locked_1020; + STORE_F lFilename, parm0_x; + CALL1 strlen; + SUB_F return_x, lMaskedLength, temp_5; + STORE_F lFilename, parm0_x; + STORE_F lMaskStart, parm1_x; + STORE_F temp_5, parm2_x; + CALL3 substring; + STORE_F locked_1020, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Util_AltStringPushBack; + STOREP_S return_x, locked_1174; + STORE_F lCounter, locked_1020; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -26; + ADDRESS self, minValue, locked_1174; + STOREP_F KEY_GAME, locked_1174; + GT lCount, KEY_GAME, locked_1174; + IFNOT locked_1174, 7; + ADDRESS self, stepValue, locked_1174; + STOREP_F FILE_APPEND, locked_1174; + ADDRESS self, maxValue, locked_1174; + SUB_F lCount, FILE_APPEND, locked_1020; + STOREP_F locked_1020, locked_1174; + GOTO 5; + ADDRESS self, stepValue, locked_1174; + STOREP_F KEY_GAME, locked_1174; + ADDRESS self, maxValue, locked_1174; + STOREP_F KEY_GAME, locked_1174; + DONE; +} + +void() Item_DataLink_Nex_FileList_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F selected, parm1_x; + CALL2 String_EntityFree; + CALL0 Item_DataLink_Switch_Destroy; + DONE; +} + +void(float pEvent) Item_DataLink_Nex_FileList_DataEvent = asm +{ +local float temp_3; + GOTO 7; + CALL0 IDLNFL_Sync; + GOTO 8; + CALL0 IDLNFL_Sync; + ADDRESS self, _realValue, temp_3; + STOREP_F KEY_GAME, temp_3; + GOTO 4; + IFNOT pEvent, -6; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -6; + DONE; +} + +void() Item_DataLink_Nex_FileList_Spawn = asm +{ +local float temp_3; + CALL0 Item_DataLink_Switch_Init; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityCreate; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F selected, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, _reinit, temp_3; + STOREP_FNC IDLNFL_Sync, temp_3; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_DataLink_Nex_FileList_Destroy, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_DataLink_Nex_FileList_DataEvent, temp_3; + DONE; +} + +void(entity pItem) Nex_MakeOnlyVisible = asm +{ +local entity lChild; +local float temp_3; +local float temp_4; + INDIRECT_E pItem, _parent, temp_3; + INDIRECT_E temp_3, _child, lChild; + IFNOT lChild, 7; + ADDRESS lChild, flag, temp_3; + INDIRECT_F lChild, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + INDIRECT_E lChild, _next, lChild; + GOTO -6; + ADDRESS pItem, flag, temp_3; + INDIRECT_F pItem, flag, temp_4; + SUB_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + CALL0 Menu_UpdateRunFlags; + DONE; +} + +void () _IDNK_Sync; +void() _IDNK_Sync = asm +{ +local float temp_3; + INDIRECT_S self, target, parm0_x; + CALL1 Key_GetBindList; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNK_Set; +void() _IDNK_Set = asm +{ +local float lCounter; +local float lCount; +local float temp_3; + INDIRECT_S self, value, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + INDIRECT_S self, target, temp_3; + STORE_F KEY_GAME, parm0_x; + STORE_F temp_3, parm1_x; + CALL2 Key_LimitBinds; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_3; + IFNOT temp_3, 16; + INDIRECT_S self, value, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stof; + STORE_F return_x, parm0_x; + CALL1 Key_GetName; + INDIRECT_S self, target, temp_3; + STORE_F return_x, parm0_x; + STORE_F temp_3, parm1_x; + CALL2 Key_Bind; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -16; + DONE; +} + +void () _IDNK_Send; +void() _IDNK_Send = asm +{ +local float temp_3; + CALL0 _IDNK_Set; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNK_Reset; +void() _IDNK_Reset = asm +{ +local float locked_1174; +local string lKey; +local float lCounter; +local float lCount; +local float temp_4; + INDIRECT_S self, defValue, locked_1174; + NOT_S locked_1174, locked_1174; + IFNOT locked_1174, 2; + RETURN offset_0; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F "", parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, defValue, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + INDIRECT_S self, target, locked_1174; + STORE_F KEY_GAME, parm0_x; + STORE_F locked_1174, parm1_x; + CALL2 Key_LimitBinds; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, locked_1174; + IFNOT locked_1174, 26; + INDIRECT_S self, defValue, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lKey; + INDIRECT_S self, target, locked_1174; + STORE_F lKey, parm0_x; + STORE_F locked_1174, parm1_x; + CALL2 Key_Bind; + INDIRECT_S self, value, locked_1174; + STORE_F lKey, parm0_x; + CALL1 Key_GetNum; + STORE_F locked_1174, parm0_x; + STORE_F " '", parm1_x; + STORE_F return_x, parm2_x; + STORE_F "'", parm3_x; + CALL4 strcat; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + STORE_F lKey, parm0_x; + CALL1 String_Free; + STORE_F lCounter, temp_4; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -26; + INDIRECT_S self, value, locked_1174; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F locked_1174, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNK_Test_Start; +void() _IDNK_Test_Start = asm +{ + CALL0 _IDNK_Set; + DONE; +} + +void () _IDNK_Test_End; +void() _IDNK_Test_End = asm +{ +local float temp_3; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNK_Set; + DONE; +} + +void(float pEvent) Item_Data_Nex_Key_DataEvent = asm +{ +local float temp_3; + GOTO 11; + CALL0 _IDNK_Sync; + GOTO 18; + CALL0 _IDNK_Send; + GOTO 16; + CALL0 _IDNK_Reset; + GOTO 14; + CALL0 _IDNK_Test_Start; + GOTO 12; + CALL0 _IDNK_Test_End; + GOTO 10; + IFNOT pEvent, -10; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_START, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_END, temp_3; + IF temp_3, -10; + DONE; +} + +void () Item_Data_Nex_Key_Destroy; +void() Item_Data_Nex_Key_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + CALL0 Item_Data_Destroy; + DONE; +} + +void() Item_Data_Nex_Key_Spawn = asm +{ +local float temp_3; + CALL0 Item_Data_Init; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Data_Nex_Key_Destroy, temp_3; + ADDRESS self, _reinit, temp_3; + STOREP_FNC _IDNK_Sync, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Nex_Key_DataEvent, temp_3; + DONE; +} + +float (float, float) Item_Nex_KeyButton_Key; +float(float pKey, float pAscii) Item_Nex_KeyButton_Key = asm +{ +local float lNum; +local float temp_3; + EQ_F pKey, K_BACKSPACE, temp_3; + IFNOT temp_3, 19; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _target, temp_3; + INDIRECT_S temp_3, value, parm0_x; + CALL1 stof; + STORE_F return_x, lNum; + GE lNum, KEY_GAME, temp_3; + IFNOT temp_3, 8; + STORE_F lNum, parm0_x; + CALL1 Key_GetName; + STORE_F return_x, parm0_x; + CALL1 Key_Unbind; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + RETURN FILE_APPEND; + GOTO 21; + EQ_F pKey, K_UPARROW, temp_3; + IFNOT temp_3, 7; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_SelectPrev; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_SelectPrev; + RETURN FILE_APPEND; + GOTO 13; + EQ_F pKey, K_DOWNARROW, temp_3; + IFNOT temp_3, 7; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_SelectNext; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_SelectNext; + RETURN FILE_APPEND; + GOTO 5; + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 Item_Button_Key; + RETURN return_x; + DONE; +} + +void () Item_Nex_KeyButton_Update; +void() Item_Nex_KeyButton_Update = asm +{ +local float lNum; +local float temp_3; + CALL0 Item_DataUser_Update; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _target, temp_3; + INDIRECT_S temp_3, value, parm0_x; + CALL1 stof; + STORE_F return_x, lNum; + LT lNum, KEY_GAME, temp_3; + IFNOT temp_3, 6; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + STORE_F "-", parm2_x; + CALL3 String_EntitySet; + GOTO 7; + STORE_F lNum, parm0_x; + CALL1 Key_GetName; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + CALL0 Item_Button_Update; + DONE; +} + +void () Item_Nex_KeyButton_Destroy; +void() Item_Nex_KeyButton_Destroy = asm +{ + CALL0 Item_DataUser_Destroy; + CALL0 Item_Button_Destroy; + DONE; +} + +void() Item_Nex_KeyButton_Spawn = asm +{ +local float temp_3; + CALL0 Item_DataUser_Init; + CALL0 Item_Button_Spawn; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Nex_KeyButton_Destroy, temp_3; + ADDRESS self, _update, temp_3; + STOREP_FNC Item_Nex_KeyButton_Update, temp_3; + ADDRESS self, _key, temp_3; + STOREP_FNC Item_Nex_KeyButton_Key, temp_3; + DONE; +} + +void () _IDNR_Sync; +void() _IDNR_Sync = asm +{ +local float temp_3; +local float temp_4; + STORE_F "vid_width", parm0_x; + CALL1 str_cvar; + STORE_F "vid_height", parm0_x; + STORE_F return_x, temp_3; + CALL1 str_cvar; + STORE_F return_x, temp_4; + STORE_F temp_3, return_x; + STORE_F return_x, parm0_x; + STORE_F " ", parm1_x; + STORE_F temp_4, parm2_x; + CALL3 strcat; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () _IDNR_Set; +void() _IDNR_Set = asm +{ +local float temp_3; + INDIRECT_S self, value, parm0_x; + CALL1 tokenize; + STORE_F KEY_GAME, parm0_x; + CALL1 argv; + STORE_F "vid_width", parm0_x; + STORE_F return_x, parm1_x; + CALL2 cvar_set; + STORE_F FILE_APPEND, parm0_x; + CALL1 argv; + STORE_F "vid_height", parm0_x; + STORE_F return_x, parm1_x; + CALL2 cvar_set; + DONE; +} + +void () _IDNR_Send; +void() _IDNR_Send = asm +{ + CALL0 _IDNR_Set; + CALL0 _IDNR_Sync; + DONE; +} + +void () _IDNR_Reset; +void() _IDNR_Reset = asm +{ +local float temp_3; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNR_Send; + DONE; +} + +void () _IDNR_Test_Start; +void() _IDNR_Test_Start = asm +{ + CALL0 _IDNR_Set; + DONE; +} + +void () _IDNR_Test_End; +void() _IDNR_Test_End = asm +{ +local float temp_3; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 _IDNR_Send; + DONE; +} + +void (float) Item_Data_Nex_Resolution_DataEvent; +void(float pEvent) Item_Data_Nex_Resolution_DataEvent = asm +{ +local float temp_3; + GOTO 11; + CALL0 _IDNR_Sync; + GOTO 18; + CALL0 _IDNR_Send; + GOTO 16; + CALL0 _IDNR_Reset; + GOTO 14; + CALL0 _IDNR_Test_Start; + GOTO 12; + CALL0 _IDNR_Test_End; + GOTO 10; + IFNOT pEvent, -10; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_START, temp_3; + IF temp_3, -10; + EQ_F pEvent, ITEM_DATA_TEST_END, temp_3; + IF temp_3, -10; + DONE; +} + +void() Item_Data_Nex_Resolution_Spawn = asm +{ +local float temp_3; + CALL0 Item_Data_Init; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Nex_Resolution_DataEvent, temp_3; + ADDRESS self, _reinit, temp_3; + STOREP_FNC _IDNR_Sync, temp_3; + DONE; +} + +void() Item_Nex_HostCache_Entry_Update = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_F self, stepValue, temp_3; + LE HostCache_ViewCount, temp_3, temp_3; + IFNOT temp_3, 7; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + RETURN offset_0; + GOTO 8; + INDIRECT_F self, flag, temp_3; + BITAND temp_3, FLAG_HIDDEN, temp_3; + IFNOT temp_3, 5; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + SUB_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + INDIRECT_F self, _runFlag, temp_3; + BITAND temp_3, RUNFLAG_CLIPPED, temp_3; + IFNOT temp_3, 2; + RETURN offset_0; + CALL0 Item_Button_Update; + DONE; +} + +void () Item_Nex_HostCache_Entry_Draw; +void() Item_Nex_HostCache_Entry_Draw = asm +{ + CALL0 Item_Window_Draw; + CALL0 Item_Button_Draw; + DONE; +} + +void() Item_Nex_HostCache_Entry_Spawn = asm +{ +local float temp_3; +local float temp_4; + CALL0 Item_Window_Spawn; + CALL0 Item_Button_Spawn; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + INDIRECT_F self, flag, temp_3; + BITAND temp_3, FLAG_NOSELECT, temp_3; + IFNOT temp_3, 5; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + SUB_F temp_4, FLAG_NOSELECT, temp_4; + STOREP_F temp_4, temp_3; + ADDRESS self, _draw, temp_3; + STOREP_FNC Item_Nex_HostCache_Entry_Draw, temp_3; + ADDRESS self, _update, temp_3; + STOREP_FNC Item_Nex_HostCache_Entry_Update, temp_3; + DONE; +} + +void() Item_Nex_HostCache_StringField_Update = asm +{ +local string lString; +local float lMaxLen; +local float temp_3; +local float temp_4; + INDIRECT_E self, _parent, temp_3; + INDIRECT_F temp_3, stepValue, temp_3; + LE HostCache_ViewCount, temp_3, temp_3; + IFNOT temp_3, 2; + RETURN offset_0; + INDIRECT_F self, size_x, temp_3; + INDIRECT_F self, fontSize_x, temp_4; + DIV_F temp_3, temp_4, parm0_x; + CALL1 floor; + STORE_F return_x, lMaxLen; + INDIRECT_F self, _realValue, temp_3; + INDIRECT_E self, _parent, temp_4; + INDIRECT_F temp_4, stepValue, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 gethostcachestring; + STORE_S return_x, lString; + STORE_F lString, parm0_x; + CALL1 strlen; + LT lMaxLen, return_x, temp_3; + IFNOT temp_3, 10; + SUB_F lMaxLen, KEY_UNKNOWN, temp_3; + STORE_F lString, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + STORE_F "...", parm1_x; + CALL2 strcat; + STORE_S return_x, lString; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + STORE_F lString, parm2_x; + CALL3 String_EntitySet; + CALL0 Item_Label_Update; + DONE; +} + +void() Item_Nex_HostCache_StringField_Spawn = asm +{ +local float locked_1174; +local float temp_4; + CALL0 Item_Label_Spawn; + ADDRESS self, _realValue, locked_1174; + INDIRECT_S self, target, parm0_x; + CALL1 gethostcacheindexforkey; + STOREP_F return_x, locked_1174; + ADDRESS self, _update, locked_1174; + STOREP_FNC Item_Nex_HostCache_StringField_Update, locked_1174; + DONE; +} + +void() Item_Nex_HostCache_ValueField_Update = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_E self, _parent, temp_3; + INDIRECT_F temp_3, stepValue, temp_3; + LE HostCache_ViewCount, temp_3, temp_3; + IFNOT temp_3, 2; + RETURN offset_0; + INDIRECT_F self, _realValue, temp_3; + INDIRECT_E self, _parent, temp_4; + INDIRECT_F temp_4, stepValue, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 gethostcachenumber; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + CALL0 Item_Label_Update; + DONE; +} + +void() Item_Nex_HostCache_ValueField_Spawn = asm +{ +local float locked_1174; +local float temp_4; + CALL0 Item_Label_Spawn; + ADDRESS self, _realValue, locked_1174; + INDIRECT_S self, target, parm0_x; + CALL1 gethostcacheindexforkey; + STOREP_F return_x, locked_1174; + ADDRESS self, _update, locked_1174; + STOREP_FNC Item_Nex_HostCache_ValueField_Update, locked_1174; + DONE; +} + +void() Item_Nex_HostCache_Players_Update = asm +{ +local string lMax; +local string lNum; +local float temp_3; + INDIRECT_E self, _parent, temp_3; + INDIRECT_F temp_3, stepValue, temp_3; + LE HostCache_ViewCount, temp_3, temp_3; + IFNOT temp_3, 2; + RETURN offset_0; + INDIRECT_E self, _parent, temp_3; + INDIRECT_F temp_3, stepValue, temp_3; + STORE_F SLIST_FIELD_NUMPLAYERS, parm0_x; + STORE_F temp_3, parm1_x; + CALL2 gethostcachenumber; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_S return_x, lNum; + INDIRECT_E self, _parent, temp_3; + INDIRECT_F temp_3, stepValue, temp_3; + STORE_F SLIST_FIELD_MAXPLAYERS, parm0_x; + STORE_F temp_3, parm1_x; + CALL2 gethostcachenumber; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_S return_x, lMax; + STORE_F lNum, parm0_x; + STORE_F "/", parm1_x; + STORE_F lMax, parm2_x; + CALL3 strcat; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + CALL0 Item_Label_Update; + DONE; +} + +void() Item_Nex_HostCache_Players_Spawn = asm +{ +local float temp_3; + CALL0 Item_Label_Spawn; + ADDRESS self, _update, temp_3; + STOREP_FNC Item_Nex_HostCache_Players_Update, temp_3; + DONE; +} + +void() Item_Nex_Credits_Spawn = asm +{ +local string lLine; +local string lText; +local float lFile; +local float temp_3; + INDIRECT_S self, target, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 fopen; + STORE_F return_x, lFile; + LT lFile, KEY_GAME, temp_3; + IFNOT temp_3, 4; + STORE_F self, parm0_x; + CALL1 Menu_DeleteAfterToggle; + RETURN offset_0; + CALL0 String_Create; + STORE_S return_x, lText; + STORE_F lFile, parm0_x; + CALL1 fgets; + STORE_S return_x, lLine; + STORE_F lLine, parm0_x; + STORE_F " +", parm1_x; + CALL2 strcat; + STORE_F lText, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, lText; + STORE_F lLine, parm0_x; + CALL1 validstring; + IF return_x, -12; + ADDRESS self, text, temp_3; + STOREP_S lText, temp_3; + STORE_F lFile, parm0_x; + CALL1 fclose; + CALL0 Item_MultiLabel_Spawn; + STORE_F lText, parm0_x; + CALL1 String_Free; + DONE; +} + +void () Nex_MessageBox_LeftEvent; +void () Nex_MessageBox_RightEvent; +void(string pTitle, string pText, string pLeftButton, string pRightButton, void () pLeftEvent, void () pRightEvent) Nex_MessageBox = asm +{ +local entity lItem; +local vector temp_0; +local float temp_3; +local float temp_4; + STORE_F "MessageBoxWnd::Layout::Title::Caption", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F normal, parm1_x; + STORE_F pTitle, parm2_x; + CALL3 String_EntitySet; + ADDRESS lItem, size_x, temp_0_x; + STOREP_V '0.000000 0.000000 0.000000', temp_0; + STORE_F "MessageBoxWnd::Layout::Text", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F text, parm1_x; + STORE_F pText, parm2_x; + CALL3 String_EntitySet; + ADDRESS lItem, size_x, temp_0_x; + STOREP_V '0.000000 0.000000 0.000000', temp_0; + STORE_F "MessageBoxWnd::Layout::Buttons::Left", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F normal, parm1_x; + STORE_F pLeftButton, parm2_x; + CALL3 String_EntitySet; + ADDRESS lItem, size_x, temp_0_x; + STOREP_V '0.000000 0.000000 0.000000', temp_0; + STORE_F "MessageBoxWnd::Layout::Buttons::Right", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + STORE_F lItem, parm0_x; + STORE_F normal, parm1_x; + STORE_F pRightButton, parm2_x; + CALL3 String_EntitySet; + ADDRESS lItem, size_x, temp_0_x; + STOREP_V '0.000000 0.000000 0.000000', temp_0; + STORE_F pRightButton, parm0_x; + CALL1 strlen; + EQ_F return_x, KEY_GAME, temp_3; + IFNOT temp_3, 6; + ADDRESS lItem, flag, temp_3; + INDIRECT_F lItem, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + GOTO 8; + INDIRECT_F lItem, flag, temp_3; + BITAND temp_3, FLAG_HIDDEN, temp_3; + IFNOT temp_3, 5; + ADDRESS lItem, flag, temp_3; + INDIRECT_F lItem, flag, temp_4; + SUB_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_FNC pLeftEvent, Nex_MessageBox_LeftEvent; + STORE_FNC pRightEvent, Nex_MessageBox_RightEvent; + STORE_F "MessageBoxWnd", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lItem; + INDIRECT_F lItem, flag, temp_3; + BITAND temp_3, FLAG_HIDDEN, temp_3; + IFNOT temp_3, 5; + ADDRESS lItem, flag, temp_3; + INDIRECT_F lItem, flag, temp_4; + SUB_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_F "MessageBoxWnd::Layout::Buttons::Right", parm0_x; + CALL1 Menu_GetItem; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Menu_Select; + DONE; +} + +void () Nex_MessageBox_Hide; +void() Nex_MessageBox_Hide = asm +{ +local entity lEntity; +local float temp_3; +local float temp_4; + STORE_F "MessageBoxWnd", parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lEntity; + INDIRECT_F lEntity, flag, temp_3; + BITAND temp_3, FLAG_HIDDEN, temp_3; + IF temp_3, 7; + ADDRESS lEntity, flag, temp_3; + INDIRECT_F lEntity, flag, temp_4; + ADD_F temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_Reselect; + DONE; +} + +void () Nex_MessageBox_LeftButton; +void() Nex_MessageBox_LeftButton = asm +{ + IFNOT Nex_MessageBox_LeftEvent, 2; + CALL0 Nex_MessageBox_LeftEvent; + CALL0 Nex_MessageBox_Hide; + DONE; +} + +void () Nex_MessageBox_RightButton; +void() Nex_MessageBox_RightButton = asm +{ + IFNOT Nex_MessageBox_RightEvent, 2; + CALL0 Nex_MessageBox_RightEvent; + CALL0 Nex_MessageBox_Hide; + DONE; +} + +float (float, float) Nex_MessageBox_Key; +float(float pKey, float pAscii) Nex_MessageBox_Key = asm +{ +local float temp_3; + EQ_F pKey, K_ESCAPE, temp_3; + IFNOT temp_3, 3; + CALL0 Nex_MessageBox_RightButton; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Item_Automation_Init = asm +{ +local float temp_3; + ADDRESS self, flag, temp_3; + STOREP_F FLAG_TEMPLATE, temp_3; + STORE_F self, parm0_x; + CALL1 Menu_DeleteAfterFrame; + DONE; +} + +void() Item_Task_Init = asm +{ +local float temp_3; + ADDRESS self, flag, temp_3; + STOREP_F FLAG_HIDDEN, temp_3; + DONE; +} + +void() Item_Automation_ForEach_Spawn = asm +{ +local float locked_1174; +local entity lLink; +local float temp_4; +local float temp_5; + CALL0 Item_Automation_Init; + INDIRECT_S self, link, locked_1174; + EQ_S locked_1174, "", locked_1174; + IFNOT locked_1174, 3; + INDIRECT_E self, _parent, lLink; + GOTO 4; + INDIRECT_S self, link, parm0_x; + CALL1 Menu_GetItem; + STORE_ENT return_x, lLink; + INDIRECT_S self, target, locked_1174; + NOT_S locked_1174, locked_1174; + IF locked_1174, 7; + INDIRECT_S self, target, parm0_x; + STORE_F "_Spawn", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 isfunction; + NOT_F return_x, temp_4; + OR locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 4; + STORE_F "Bad target type!", parm0_x; + CALL1 objerror; + RETURN offset_0; + ADDRESS self, _current, locked_1174; + INDIRECT_E lLink, _child, temp_4; + STOREP_ENT temp_4, locked_1174; + INDIRECT_E self, _current, locked_1174; + IFNOT locked_1174, 12; + INDIRECT_E self, _current, locked_1174; + INDIRECT_S locked_1174, type, locked_1174; + INDIRECT_S self, target, temp_4; + EQ_S locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 2; + CALL0 CtCall_Action; + ADDRESS self, _current, temp_4; + INDIRECT_E self, _current, temp_5; + INDIRECT_E temp_5, _next, temp_5; + STOREP_ENT temp_5, temp_4; + GOTO -12; + DONE; +} + +void() Item_Automation_Job_Spawn = asm +{ + CALL0 Item_Automation_Init; + CALL0 CtCall_Action; + DONE; +} + +void() Item_Task_Job_Spawn = asm +{ +local float temp_3; + CALL0 Item_Task_Init; + ADDRESS self, _reinit, temp_3; + STOREP_FNC CtCall_Reinit, temp_3; + ADDRESS self, _destroy, temp_3; + STOREP_FNC CtCall_Destroy, temp_3; + ADDRESS self, _update, temp_3; + STOREP_FNC CtCall_Update, temp_3; + CALL0 CtCall_Init; + DONE; +} + +void(entity pItem, bool pEvent) Raise_DataEvent = asm +{ +local float locked_1174; +local entity lOld; + INDIRECT_FU pItem, _dataEvent, locked_1174; + IF locked_1174, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pItem, self; + INDIRECT_FU self, _dataEvent, locked_1174; + STORE_F pEvent, parm0_x; + CALL1 locked_1174; + STORE_ENT lOld, self; + DONE; +} + +void() Data_ExecString_BeginUse = asm +{ + CALL0 String_Create; + STORE_S return_x, Data_ExecString; + DONE; +} + +void() Data_ExecString_EndUse = asm +{ + STORE_F Data_ExecString, parm0_x; + CALL1 String_Free; + DONE; +} + +void() Item_Data_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F value, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F defValue, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Data_Init = asm +{ +local float temp_3; +local float temp_4; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F defValue, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + CALL2 String_EntityCreate; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Data_Destroy, temp_3; + DONE; +} + +void() Item_DataLink_Update = asm +{ +local float locked_1174; +local float temp_4; + INDIRECT_S self, link, locked_1174; + EQ_S locked_1174, "", locked_1174; + IFNOT locked_1174, 4; + ADDRESS self, _link, locked_1174; + STOREP_ENT null_entity, locked_1174; + GOTO 10; + INDIRECT_S self, link, locked_1174; + INDIRECT_E self, _link, temp_4; + INDIRECT_S temp_4, name, temp_4; + NE_S locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 5; + ADDRESS self, _link, locked_1174; + INDIRECT_S self, link, parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1174; + DONE; +} + +void() Item_DataLink_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_DataLink_Init = asm +{ +local float temp_3; +local float temp_4; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_DataLink_Update; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_DataLink_Destroy, temp_3; + DONE; +} + +void() Item_DataLink_Switch_Destroy = asm +{ + CALL0 Item_DataLink_Destroy; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_DataLink_Switch_Init = asm +{ +local float temp_3; + CALL0 Item_DataLink_Value_Spawn; + STORE_F self, parm0_x; + STORE_F descList, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_DataLink_Switch_Destroy, temp_3; + DONE; +} + +float(entity pDataLink, float pValue) DataLink_Switch_GetOrdinal = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_F pDataLink, stepValue, temp_3; + EQ_F temp_3, KEY_GAME, temp_3; + IFNOT temp_3, 2; + RETURN KEY_GAME; + INDIRECT_F pDataLink, minValue, temp_3; + SUB_F pValue, temp_3, temp_3; + INDIRECT_F pDataLink, stepValue, temp_4; + DIV_F temp_3, temp_4, temp_3; + RETURN temp_3; + DONE; +} + +void() Item_DataUser_Update = asm +{ +local float locked_1174; +local float temp_4; + INDIRECT_S self, target, locked_1174; + EQ_S locked_1174, "", locked_1174; + IFNOT locked_1174, 4; + ADDRESS self, _target, locked_1174; + STOREP_ENT null_entity, locked_1174; + GOTO 10; + INDIRECT_S self, target, locked_1174; + INDIRECT_E self, _target, temp_4; + INDIRECT_S temp_4, name, temp_4; + NE_S locked_1174, temp_4, locked_1174; + IFNOT locked_1174, 5; + ADDRESS self, _target, locked_1174; + INDIRECT_S self, target, parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1174; + DONE; +} + +void() Item_DataUser_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_DataUser_Init = asm +{ +local float temp_3; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_DataUser_Update; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_DataUser_Destroy, temp_3; + DONE; +} + +void(float pEvent) Item_DataContainer_DataEvent = asm +{ +local entity lItem; +local float temp_3; +local float temp_4; + INDIRECT_E self, _child, lItem; + NE_E lItem, null_entity, temp_3; + IFNOT temp_3, 6; + STORE_F lItem, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E lItem, _next, lItem; + GOTO -6; + DONE; +} + +void() Item_DataContainer_Spawn = asm +{ +local float temp_3; + CALL0 Item_Container_Spawn; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_DataContainer_DataEvent, temp_3; + DONE; +} + +void() Item_Data_Container_Reinit = asm +{ +local float temp_3; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void(float pEvent) Item_Data_Container_DataEvent = asm +{ +local float temp_3; + GOTO 24; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + GOTO 23; + INDIRECT_S self, value, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + GOTO 17; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + GOTO 6; + IFNOT pEvent, -23; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -19; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -15; + DONE; +} + +void() Item_Data_Container_Spawn = asm +{ +local float temp_3; + CALL0 Item_Data_Init; + ADDRESS self, _reinit, temp_3; + STOREP_FNC Item_Data_Container_Reinit, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Container_DataEvent, temp_3; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () Item_Data_Cvar_Sync; +void() Item_Data_Cvar_Sync = asm +{ +local float temp_3; + INDIRECT_S self, cvarName, parm0_x; + CALL1 str_cvar; + STORE_F self, parm0_x; + STORE_F _syncValue, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_S self, _syncValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void () Item_Data_Cvar_Send; +void() Item_Data_Cvar_Send = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_S self, cvarName, temp_3; + INDIRECT_S self, value, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 cvar_set; + CALL0 Item_Data_Cvar_Sync; + DONE; +} + +void () Item_Data_Cvar_Reset; +void() Item_Data_Cvar_Reset = asm +{ +local float temp_3; + INDIRECT_S self, defValue, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + CALL0 Item_Data_Cvar_Send; + DONE; +} + +void () Item_Data_Cvar_Test_Start; +void() Item_Data_Cvar_Test_Start = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_S self, cvarName, temp_3; + INDIRECT_S self, value, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 cvar_set; + DONE; +} + +void () Item_Data_Cvar_Test_End; +void() Item_Data_Cvar_Test_End = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_S self, cvarName, temp_3; + INDIRECT_S self, _syncValue, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + CALL2 cvar_set; + DONE; +} + +void () Item_Data_Cvar_Save_ExecString; +void() Item_Data_Cvar_Save_ExecString = asm +{ +local float temp_3; +local float temp_4; + INDIRECT_S self, cvarName, temp_3; + INDIRECT_S self, value, temp_4; + STORE_F "set "", parm0_x; + STORE_F temp_3, parm1_x; + STORE_F "" "", parm2_x; + STORE_F temp_4, parm3_x; + STORE_F "" +", parm4_x; + CALL5 strcat; + STORE_F Data_ExecString, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, Data_ExecString; + DONE; +} + +void(float pEvent) Item_Data_Cvar_DataEvent = asm +{ +local float temp_3; + GOTO 13; + CALL0 Item_Data_Cvar_Sync; + GOTO 22; + CALL0 Item_Data_Cvar_Send; + GOTO 20; + CALL0 Item_Data_Cvar_Reset; + GOTO 18; + CALL0 Item_Data_Cvar_Test_Start; + GOTO 16; + CALL0 Item_Data_Cvar_Test_End; + GOTO 14; + CALL0 Item_Data_Cvar_Save_ExecString; + GOTO 12; + IFNOT pEvent, -12; + EQ_F pEvent, ITEM_DATA_SEND, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_RESET, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_TEST_START, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_TEST_END, temp_3; + IF temp_3, -12; + EQ_F pEvent, ITEM_DATA_SAVE_EXECSTRING, temp_3; + IF temp_3, -12; + DONE; +} + +void () Item_Data_Cvar_Destroy; +void() Item_Data_Cvar_Destroy = asm +{ + CALL0 Item_Data_Destroy; + STORE_F self, parm0_x; + STORE_F cvarName, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Data_Cvar_Spawn = asm +{ +local float temp_3; +local float temp_4; + STORE_F self, parm0_x; + STORE_F cvarName, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_Data_Init; + ADDRESS self, flag, temp_3; + INDIRECT_F self, flag, temp_4; + BITOR temp_4, FLAG_HIDDEN, temp_4; + STOREP_F temp_4, temp_3; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_Data_Cvar_DataEvent, temp_3; + ADDRESS self, _reinit, temp_3; + STOREP_FNC Item_Data_Cvar_Sync, temp_3; + ADDRESS self, _destroy, temp_3; + STOREP_FNC Item_Data_Cvar_Destroy, temp_3; + DONE; +} + +void() Item_Data_CvarCreateSave_Spawn = asm +{ +local float temp_3; +local float temp_4; + CALL0 Item_Data_Cvar_Spawn; + INDIRECT_S self, cvarName, temp_3; + INDIRECT_S self, defValue, temp_4; + STORE_F temp_3, parm0_x; + STORE_F temp_4, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 registercvar; + DONE; +} + +void (float) Item_DataLink_Text_DataEvent; +void(float pEvent) Item_DataLink_Text_DataEvent = asm +{ +local float temp_3; +local float temp_4; + CALL0 Item_DataLink_Update; + EQ_F pEvent, ITEM_DATALINK_SET, temp_3; + IFNOT temp_3, 26; + INDIRECT_F self, maxValue, temp_3; + GE temp_3, KEY_GAME, temp_3; + IFNOT temp_3, 11; + INDIRECT_S self, value, temp_3; + INDIRECT_F self, maxValue, temp_4; + STORE_F temp_3, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F temp_4, parm2_x; + CALL3 substring; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _link, temp_3; + IFNOT temp_3, 10; + INDIRECT_E self, _link, temp_3; + INDIRECT_S self, value, temp_4; + STORE_F temp_3, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_4, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 33; + INDIRECT_E self, _link, temp_3; + IF temp_3, 3; + RETURN offset_0; + GOTO 29; + EQ_F pEvent, ITEM_DATALINK_GET, temp_3; + IFNOT temp_3, 24; + INDIRECT_E self, _link, temp_3; + INDIRECT_S temp_3, value, temp_3; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_3, parm2_x; + CALL3 String_EntitySet; + INDIRECT_F self, maxValue, temp_3; + GE temp_3, KEY_GAME, temp_3; + IFNOT temp_3, 14; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_S self, value, temp_3; + INDIRECT_F self, maxValue, temp_4; + STORE_F temp_3, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F temp_4, parm2_x; + CALL3 substring; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO 4; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void () Item_DataLink_Text_Spawn; +void() Item_DataLink_Text_Spawn = asm +{ +local float temp_3; + CALL0 Item_DataLink_Init; + ADDRESS self, _dataEvent, temp_3; + STOREP_FNC Item_DataLink_Text_DataEvent, temp_3; + DONE; +} + +void() Item_DataLink_Value_Clamp = asm +{ +local float locked_285; +local float locked_1020; +local float locked_1174; +local float temp_0; +local float temp_1; + INDIRECT_F self, _realValue, locked_1174; + INDIRECT_F self, maxValue, locked_1020; + GT locked_1174, locked_1020, locked_1174; + IFNOT locked_1174, 4; + INDIRECT_F self, maxValue, locked_1020; + INDIRECT_F self, minValue, locked_285; + GT locked_1020, locked_285, locked_1020; + AND locked_1174, locked_1020, locked_1174; + IFNOT locked_1174, 5; + ADDRESS self, _realValue, locked_1174; + INDIRECT_F self, maxValue, locked_1020; + STOREP_F locked_1020, locked_1174; + GOTO 21; + INDIRECT_F self, _realValue, locked_1174; + INDIRECT_F self, minValue, locked_1020; + LT locked_1174, locked_1020, locked_1174; + IFNOT locked_1174, 5; + ADDRESS self, _realValue, locked_1174; + INDIRECT_F self, minValue, locked_1020; + STOREP_F locked_1020, locked_1174; + GOTO 13; + ADDRESS self, _realValue, locked_1174; + INDIRECT_F self, minValue, locked_1020; + INDIRECT_F self, stepValue, locked_285; + INDIRECT_F self, _realValue, temp_1; + INDIRECT_F self, minValue, temp_0; + SUB_F temp_1, temp_0, temp_0; + INDIRECT_F self, stepValue, temp_1; + DIV_F temp_0, temp_1, parm0_x; + CALL1 rint; + MUL_F locked_285, return_x, temp_0; + ADD_F locked_1020, temp_0, temp_0; + STOREP_F temp_0, locked_1174; + DONE; +} + +string () Item_DataLink_ClampedValue; +string() Item_DataLink_ClampedValue = asm +{ +local float locked_1586; +local float lClampedStep; +local float lLen; +local float temp_1; + INDIRECT_F self, stepValue, locked_1586; + INDIRECT_F self, stepValue, parm0_x; + CALL1 floor; + EQ_F locked_1586, return_x, locked_1586; + IFNOT locked_1586, 4; + INDIRECT_F self, _realValue, parm0_x; + CALL1 ftos; + RETURN return_x; + INDIRECT_F self, _realValue, parm0_x; + CALL1 rint; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_F return_x, parm0_x; + CALL1 strlen; + STORE_F return_x, lLen; + INDIRECT_F self, stepValue, locked_1586; + INDIRECT_F self, stepValue, parm0_x; + CALL1 floor; + SUB_F locked_1586, return_x, locked_1586; + DIV_F FILE_APPEND, locked_1586, parm0_x; + CALL1 rint; + STORE_F return_x, lClampedStep; + STORE_F lClampedStep, parm0_x; + CALL1 ftos; + STORE_F return_x, parm0_x; + CALL1 strlen; + ADD_F lLen, return_x, lLen; + INDIRECT_F self, _realValue, parm0_x; + CALL1 ftos; + STORE_F return_x, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F lLen, parm2_x; + CALL3 substring; + RETURN return_x; + DONE; +} + +void (float) Item_DataLink_Value_DataEvent; +void(float pEvent) Item_DataLink_Value_DataEvent = asm +{ +local float locked_1586; +local float temp_1; + CALL0 Item_DataLink_Update; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1586; + IFNOT locked_1586, 19; + CALL0 Item_DataLink_Value_Clamp; + INDIRECT_E self, _link, locked_1586; + IFNOT locked_1586, 15; + INDIRECT_E self, _link, locked_1586; + ADDRESS locked_1586, _realValue, locked_1586; + INDIRECT_F self, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_E self, _link, locked_1586; + INDIRECT_F self, _realValue, parm0_x; + CALL1 ftos; + STORE_F locked_1586, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 25; + INDIRECT_E self, _link, locked_1586; + IF locked_1586, 3; + RETURN offset_0; + GOTO 21; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1586; + IFNOT locked_1586, 16; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_S temp_1, value, parm0_x; + CALL1 stof; + STOREP_F return_x, locked_1586; + CALL0 Item_DataLink_ClampedValue; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + CALL0 Item_DataLink_Value_Clamp; + GOTO 4; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void() Item_DataLink_Value_Spawn = asm +{ +local float temp_0; + CALL0 Item_DataLink_Init; + INDIRECT_F self, stepValue, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 3; + ADDRESS self, stepValue, temp_0; + STOREP_F FILE_APPEND, temp_0; + ADDRESS self, _dataEvent, temp_0; + STOREP_FNC Item_DataLink_Value_DataEvent, temp_0; + DONE; +} + +void(float pEvent) Item_DataLink_TextSwitch_DataEvent = asm +{ +local float locked_1586; +local float lCount; +local float lPos; +local float temp_1; +local float temp_5; + CALL0 Item_DataLink_Update; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1586; + IFNOT locked_1586, 20; + CALL0 Item_DataLink_Value_Clamp; + INDIRECT_E self, _link, locked_1586; + IFNOT locked_1586, 16; + INDIRECT_E self, _link, locked_1586; + INDIRECT_S self, valueList, temp_1; + INDIRECT_F self, _realValue, temp_5; + STORE_F temp_1, parm0_x; + STORE_F temp_5, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F locked_1586, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 76; + INDIRECT_E self, _link, locked_1586; + IF locked_1586, 3; + RETURN offset_0; + GOTO 72; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1586; + IFNOT locked_1586, 67; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_S self, valueList, locked_1586; + INDIRECT_F self, _realValue, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + INDIRECT_E self, _link, locked_1586; + INDIRECT_S locked_1586, value, locked_1586; + EQ_S return_x, locked_1586, locked_1586; + IFNOT locked_1586, 13; + INDIRECT_S self, descList, locked_1586; + INDIRECT_F self, _realValue, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + RETURN offset_0; + INDIRECT_S self, valueList, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lPos; + LT lPos, lCount, locked_1586; + IFNOT locked_1586, 13; + INDIRECT_S self, valueList, parm0_x; + STORE_F lPos, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + INDIRECT_E self, _link, locked_1586; + INDIRECT_S locked_1586, value, locked_1586; + EQ_S return_x, locked_1586, locked_1586; + IFNOT locked_1586, 2; + GOTO 3; + ADD_F lPos, FILE_APPEND, lPos; + GOTO -13; + GT lPos, lCount, locked_1586; + IFNOT locked_1586, 9; + INDIRECT_S self, descList, parm0_x; + CALL1 Util_GetAltStringCount; + GT return_x, lCount, locked_1586; + IFNOT locked_1586, 4; + STORE_F lPos, locked_1586; + ADD_F lPos, FILE_APPEND, lPos; + GOTO 2; + STORE_F KEY_GAME, lPos; + ADDRESS self, _realValue, locked_1586; + STOREP_F lPos, locked_1586; + INDIRECT_S self, descList, parm0_x; + STORE_F lPos, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO 4; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void() Item_DataLink_TextSwitch_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityFree; + CALL0 Item_DataLink_Switch_Destroy; + DONE; +} + +void() Item_DataLink_TextSwitch_Spawn = asm +{ +local float locked_1586; +local float temp_1; + CALL0 Item_DataLink_Switch_Init; + STORE_F self, parm0_x; + STORE_F valueList, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, minValue, locked_1586; + STOREP_F KEY_GAME, locked_1586; + INDIRECT_F self, maxValue, locked_1586; + EQ_F locked_1586, KEY_GAME, locked_1586; + IFNOT locked_1586, 6; + ADDRESS self, maxValue, locked_1586; + INDIRECT_S self, valueList, parm0_x; + CALL1 Util_GetAltStringCount; + SUB_F return_x, FILE_APPEND, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_F self, maxValue, locked_1586; + EQ_F locked_1586, KEY_GAME, locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, stepValue, locked_1586; + STOREP_F KEY_GAME, locked_1586; + GOTO 3; + ADDRESS self, stepValue, locked_1586; + STOREP_F FILE_APPEND, locked_1586; + ADDRESS self, _destroy, locked_1586; + STOREP_FNC Item_DataLink_TextSwitch_Destroy, locked_1586; + ADDRESS self, _dataEvent, locked_1586; + STOREP_FNC Item_DataLink_TextSwitch_DataEvent, locked_1586; + DONE; +} + +void (float) Item_DataLink_ValueSwitch_DataEvent; +void(float pEvent) Item_DataLink_ValueSwitch_DataEvent = asm +{ +local float locked_1586; +local float lPos; +local float temp_1; + CALL0 Item_DataLink_Update; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1586; + IFNOT locked_1586, 19; + CALL0 Item_DataLink_Value_Clamp; + INDIRECT_E self, _link, locked_1586; + IFNOT locked_1586, 15; + INDIRECT_E self, _link, locked_1586; + ADDRESS locked_1586, _realValue, locked_1586; + INDIRECT_F self, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_E self, _link, locked_1586; + INDIRECT_F self, _realValue, parm0_x; + CALL1 ftos; + STORE_F locked_1586, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 36; + INDIRECT_E self, _link, locked_1586; + IF locked_1586, 3; + RETURN offset_0; + GOTO 32; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1586; + IFNOT locked_1586, 27; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_S temp_1, value, parm0_x; + CALL1 stof; + STOREP_F return_x, locked_1586; + CALL0 Item_DataLink_Value_Clamp; + INDIRECT_F self, _realValue, locked_1586; + INDIRECT_F self, minValue, temp_1; + SUB_F locked_1586, temp_1, locked_1586; + INDIRECT_F self, stepValue, temp_1; + DIV_F locked_1586, temp_1, parm0_x; + CALL1 rint; + STORE_F return_x, lPos; + INDIRECT_S self, descList, parm0_x; + STORE_F lPos, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO 4; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void() Item_DataLink_ValueSwitch_Spawn = asm +{ +local float locked_1585; +local float locked_1586; +local float lCount; +local float temp_5; +local float temp_6; + CALL0 Item_DataLink_Switch_Init; + INDIRECT_F self, maxValue, locked_1586; + EQ_F locked_1586, KEY_GAME, locked_1586; + IFNOT locked_1586, 11; + ADDRESS self, maxValue, locked_1586; + INDIRECT_F self, minValue, locked_1585; + INDIRECT_S self, descList, parm0_x; + CALL1 Util_GetAltStringCount; + SUB_F return_x, FILE_APPEND, temp_5; + INDIRECT_F self, stepValue, temp_6; + MUL_F temp_5, temp_6, temp_5; + ADD_F locked_1585, temp_5, locked_1585; + STOREP_F locked_1585, locked_1586; + GOTO 15; + INDIRECT_S self, descList, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + IFNOT lCount, 9; + ADDRESS self, stepValue, locked_1586; + INDIRECT_F self, maxValue, locked_1585; + INDIRECT_F self, minValue, temp_5; + SUB_F locked_1585, temp_5, locked_1585; + SUB_F lCount, FILE_APPEND, temp_5; + DIV_F locked_1585, temp_5, locked_1585; + STOREP_F locked_1585, locked_1586; + GOTO 3; + ADDRESS self, stepValue, locked_1586; + STOREP_F KEY_GAME, locked_1586; + ADDRESS self, _dataEvent, locked_1586; + STOREP_FNC Item_DataLink_ValueSwitch_DataEvent, locked_1586; + ADDRESS self, _destroy, locked_1586; + STOREP_FNC Item_DataLink_Switch_Destroy, locked_1586; + DONE; +} + +void (float) Item_DataLink_FastResync_DataEvent; +void(float pEvent) Item_DataLink_FastResync_DataEvent = asm +{ +local float temp_0; +local float temp_1; + EQ_F pEvent, ITEM_DATALINK_GET, temp_0; + IFNOT temp_0, 19; + INDIRECT_F self, _presstime, temp_0; + NE_F temp_0, Timer_Time, temp_0; + IFNOT temp_0, 6; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATA_SYNC, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _link, temp_0; + INDIRECT_S temp_0, value, temp_0; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + GOTO 18; + EQ_F pEvent, ITEM_DATALINK_SET, temp_0; + IFNOT temp_0, 13; + INDIRECT_E self, _link, temp_0; + IFNOT temp_0, 10; + INDIRECT_E self, _link, temp_0; + INDIRECT_S self, value, temp_1; + STORE_F temp_0, parm0_x; + STORE_F value, parm1_x; + STORE_F temp_1, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 4; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void() Item_DataLink_FastResync_Spawn = asm +{ +local float temp_0; +local float temp_1; + CALL0 Item_DataLink_Init; + ADDRESS self, _presstime, temp_0; + SUB_F Timer_Time, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, _dataEvent, temp_0; + STOREP_FNC Item_DataLink_FastResync_DataEvent, temp_0; + DONE; +} + +void (float) Item_DataLink_TextValue_DataEvent; +void(float pEvent) Item_DataLink_TextValue_DataEvent = asm +{ +local float locked_1586; +local float temp_1; + CALL0 Item_DataLink_Update; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1586; + IFNOT locked_1586, 14; + INDIRECT_E self, _link, locked_1586; + ADDRESS locked_1586, _realValue, locked_1586; + INDIRECT_S self, value, parm0_x; + CALL1 stof; + STOREP_F return_x, locked_1586; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + GOTO 39; + INDIRECT_E self, _link, locked_1586; + IF locked_1586, 3; + RETURN offset_0; + GOTO 35; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1586; + IFNOT locked_1586, 20; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _link, locked_1586; + INDIRECT_F locked_1586, _realValue, locked_1586; + INDIRECT_F self, _realValue, temp_1; + NE_F locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 11; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_E self, _link, locked_1586; + INDIRECT_S locked_1586, value, locked_1586; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F locked_1586, parm2_x; + CALL3 String_EntitySet; + GOTO 14; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_E self, _link, locked_1586; + INDIRECT_S locked_1586, value, locked_1586; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F locked_1586, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void() Item_DataLink_TextValue_Spawn = asm +{ +local float temp_0; +local float temp_1; + CALL0 Item_DataLink_Init; + ADDRESS self, _dataEvent, temp_0; + STOREP_FNC Item_DataLink_TextValue_DataEvent, temp_0; + ADDRESS self, _realValue, temp_0; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +float () _IDLTT_ConvertTime; +float() _IDLTT_ConvertTime = asm +{ +local float lCounter; +local float lCount; +local float lCurrent; +local float lTotal; +local float temp_0; + STORE_F KEY_GAME, lTotal; + INDIRECT_S self, value, parm0_x; + CALL1 tokenize; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 16; + STORE_F lCounter, parm0_x; + CALL1 argv; + STORE_F return_x, parm0_x; + CALL1 stof; + STORE_F return_x, lCurrent; + MUL_F lTotal, 60.000000, temp_0; + ADD_F temp_0, lCurrent, lTotal; + ADD_F lCounter, FILE_APPEND, lCounter; + STORE_F lCounter, parm0_x; + CALL1 argv; + NE_S return_x, ":", temp_0; + IFNOT temp_0, 2; + GOTO 3; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -16; + STORE_F lTotal, parm0_x; + CALL1 rint; + RETURN return_x; + DONE; +} + +string () _IDLTT_MakeString; +string() _IDLTT_MakeString = asm +{ +local float lCurrent; +local float lTotal; +local string lString; +local float temp_0; + INDIRECT_F self, _realValue, parm0_x; + CALL1 rint; + STORE_F return_x, lTotal; + STORE_S "", lString; + STORE_F lTotal, parm0_x; + STORE_F 60.000000, parm1_x; + CALL2 mod; + STORE_F return_x, lCurrent; + EQ_S lString, "", temp_0; + IFNOT temp_0, 7; + STORE_F lCurrent, parm0_x; + CALL1 ftos; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lString; + GOTO 11; + STORE_F lCurrent, parm0_x; + CALL1 ftos; + STORE_F return_x, parm0_x; + STORE_F ":", parm1_x; + STORE_F lString, parm2_x; + CALL3 strcat; + STORE_F lString, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, lString; + DIV_F lTotal, 60.000000, parm0_x; + CALL1 floor; + STORE_F return_x, lTotal; + IF lTotal, -25; + RETURN lString; + DONE; +} + +void (float) Item_DataLink_TextTime_DataEvent; +void(float pEvent) Item_DataLink_TextTime_DataEvent = asm +{ +local float locked_1586; +local float temp_1; + CALL0 Item_DataLink_Update; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1586; + IFNOT locked_1586, 13; + INDIRECT_E self, _link, locked_1586; + ADDRESS locked_1586, _realValue, locked_1586; + CALL0 _IDLTT_ConvertTime; + STOREP_F return_x, locked_1586; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + GOTO 41; + INDIRECT_E self, _link, locked_1586; + IF locked_1586, 3; + RETURN offset_0; + GOTO 37; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1586; + IFNOT locked_1586, 21; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _link, locked_1586; + INDIRECT_F locked_1586, _realValue, locked_1586; + INDIRECT_F self, _realValue, temp_1; + NE_F locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 12; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + CALL0 _IDLTT_MakeString; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO 15; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, locked_1586; + CALL0 _IDLTT_MakeString; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + DONE; +} + +void() Item_DataLink_TextTime_Spawn = asm +{ +local float temp_0; +local float temp_1; + CALL0 Item_DataLink_Init; + ADDRESS self, _dataEvent, temp_0; + STOREP_FNC Item_DataLink_TextTime_DataEvent, temp_0; + ADDRESS self, _realValue, temp_0; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +void (float) Item_DataLink_AltString_DataEvent; +void(float pEvent) Item_DataLink_AltString_DataEvent = asm +{ +local float locked_1586; +local float temp_1; +local float temp_5; +local float temp_6; + CALL0 Item_DataLink_Update; + INDIRECT_E self, _link, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + EQ_F pEvent, ITEM_DATALINK_SET, locked_1586; + IFNOT locked_1586, 16; + INDIRECT_E self, _link, locked_1586; + ADDRESS locked_1586, value, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_S temp_1, value, temp_1; + INDIRECT_F self, stepValue, temp_5; + INDIRECT_S self, value, temp_6; + STORE_F temp_1, parm0_x; + STORE_F temp_5, parm1_x; + STORE_F temp_6, parm2_x; + CALL3 Util_SetAltStringItem; + STOREP_S return_x, locked_1586; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + GOTO 22; + EQ_F pEvent, ITEM_DATALINK_GET, locked_1586; + IFNOT locked_1586, 17; + INDIRECT_E self, _link, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _link, locked_1586; + INDIRECT_S locked_1586, value, locked_1586; + INDIRECT_F self, stepValue, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F self, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO 4; + INDIRECT_E self, _link, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + DONE; +} + +void() Item_DataLink_AltString_Spawn = asm +{ +local float temp_0; + CALL0 Item_DataLink_Init; + ADDRESS self, _dataEvent, temp_0; + STOREP_FNC Item_DataLink_AltString_DataEvent, temp_0; + DONE; +} + +void (float) Item_DataLink_Router_DataEvent; +void(float pEvent) Item_DataLink_Router_DataEvent = asm +{ +local entity lChild; +local float temp_0; +local float temp_1; + GOTO 29; + INDIRECT_E self, _child, lChild; + IFNOT lChild, 9; + ADDRESS lChild, _realValue, temp_0; + INDIRECT_F self, _realValue, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lChild, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E lChild, _next, lChild; + GOTO -8; + INDIRECT_E self, _child, temp_0; + IFNOT temp_0, 8; + INDIRECT_E self, _child, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _realValue, temp_0; + INDIRECT_E self, _child, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STOREP_F temp_1, temp_0; + GOTO 14; + INDIRECT_E self, _child, lChild; + IFNOT lChild, 6; + STORE_F lChild, parm0_x; + STORE_F pEvent, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E lChild, _next, lChild; + GOTO -5; + GOTO 6; + EQ_F pEvent, ITEM_DATALINK_SET, temp_0; + IF temp_0, -29; + EQ_F pEvent, ITEM_DATALINK_GET, temp_0; + IF temp_0, -21; + GOTO -12; + DONE; +} + +void() Item_DataLink_Router_Spawn = asm +{ +local float temp_0; + CALL0 Item_DataLink_Init; + ADDRESS self, _dataEvent, temp_0; + STOREP_FNC Item_DataLink_Router_DataEvent, temp_0; + DONE; +} + +float(float pKey, float pAscii) Item_Window_Key = asm +{ + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 CtCall_Key; + IFNOT return_x, 2; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Item_Window_Draw = asm +{ +local vector lColor; +local entity lChild; +local float temp_0; +local vector temp_2; +local vector temp_3; + IF sys_debug, 2; + RETURN offset_0; + INDIRECT_F self, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_MOUSEINAREA, temp_0; + IFNOT temp_0, 56; + IFNOT sys_debug_area, 50; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, size_x, temp_3; + STORE_V temp_2, parm0; + STORE_V temp_3, parm1; + STORE_V '0.200000 0.000000 0.000000', parm2; + STORE_F ITEM_BUTTON_ACTIONTIME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Fill; + INDIRECT_E self, _child, lChild; + IFNOT lChild, 40; + INDIRECT_F lChild, _runFlag, temp_0; + BITAND temp_0, 96.000000, temp_0; + NOT_F temp_0, temp_0; + IF temp_0, 2; + GOTO 33; + INDIRECT_F lChild, orderPos, parm0_x; + CALL1 fabs; + ADD_F return_x, SLIST_SERVERREPLYCOUNT, parm0_x; + STORE_F K_TAB, parm1_x; + CALL2 mod; + DIV_F return_x, 8.000000, lColor_x; + INDIRECT_F lChild, orderPos, temp_0; + MUL_F temp_0, 8.000000, parm0_x; + CALL1 fabs; + STORE_F return_x, parm0_x; + STORE_F K_TAB, parm1_x; + CALL2 mod; + DIV_F return_x, 8.000000, lColor_y; + INDIRECT_F lChild, orderPos, temp_0; + MUL_F temp_0, SLIST_SORTDESCENDING, parm0_x; + CALL1 fabs; + STORE_F return_x, parm0_x; + STORE_F K_TAB, parm1_x; + CALL2 mod; + DIV_F return_x, 8.000000, lColor_z; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, origin_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + INDIRECT_V lChild, pos_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + INDIRECT_V lChild, size_x, temp_3; + STORE_V temp_2, parm0; + STORE_V temp_3, parm1; + STORE_V lColor, parm2; + STORE_F ITEM_BUTTON_ACTIONTIME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Fill; + INDIRECT_E lChild, _next, lChild; + GOTO -39; + IFNOT sys_debug_mouse, 5; + INDIRECT_V self, origin_x, temp_2; + SUB_V Menu_Cursor_Position, temp_2, temp_2; + INDIRECT_V self, pos_x, temp_3; + SUB_V temp_2, temp_3, sys_debug_cursor_localpos; + DONE; +} + +void() Item_Window_Spawn = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_NOSELECT, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_Window_Key, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Window_Draw, temp_0; + DONE; +} + +void() Item_Reference_Update = asm +{ +local float locked_1586; +local float temp_1; + INDIRECT_S self, link, locked_1586; + EQ_S locked_1586, "", locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, _child, locked_1586; + STOREP_ENT null_entity, locked_1586; + RETURN offset_0; + INDIRECT_S self, link, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_S temp_1, name, temp_1; + NE_S locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, _link, locked_1586; + INDIRECT_S self, link, parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1586; + ADDRESS self, _child, locked_1586; + INDIRECT_E self, _link, temp_1; + STOREP_ENT temp_1, locked_1586; + INDIRECT_E self, _child, locked_1586; + ADDRESS locked_1586, _parent, locked_1586; + STOREP_ENT self, locked_1586; + DONE; +} + +void() Item_Reference_Draw = asm +{ +local vector temp_2; +local vector temp_3; + IFNOT sys_debug_ref, 9; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, size_x, temp_3; + STORE_V temp_2, parm0; + STORE_V temp_3, parm1; + STORE_V '0.000000 0.000000 0.200000', parm2; + STORE_F FILE_APPEND, parm3_x; + STORE_F FILE_APPEND, parm4_x; + CALL5 Menu_Fill; + DONE; +} + +void() Item_Reference_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Reference_Spawn = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_NOSELECT, temp_1; + BITOR temp_1, FLAG_EMBEDDED, temp_1; + STOREP_F temp_1, temp_0; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_Reference_Update; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Reference_Destroy, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Reference_Draw, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_Reference_Update, temp_0; + DONE; +} + +void() Item_Layout_Update = asm +{ +local vector lCurrent; +local entity lChild; +local float temp_0; +local float temp_1; + STORE_V '0.000000 0.000000 0.000000', lCurrent; + INDIRECT_E self, _child, lChild; + IFNOT lChild, 92; + INDIRECT_F lChild, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_HIDDEN, temp_0; + IFNOT temp_0, 2; + GOTO 86; + INDIRECT_F self, direction_y, temp_0; + IFNOT temp_0, 33; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_FIRST, temp_0; + IFNOT temp_0, 2; + INDIRECT_E lChild, _child, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 7; + ADDRESS lChild, pos_x, temp_0; + INDIRECT_E lChild, _child, temp_1; + INDIRECT_F temp_1, size_x, temp_1; + SUB_F lCurrent_x, temp_1, temp_1; + STOREP_F temp_1, temp_0; + GOTO 20; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 4; + ADDRESS lChild, pos_x, temp_0; + STOREP_F lCurrent_x, temp_0; + GOTO 14; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_CENTER, temp_0; + IFNOT temp_0, 7; + ADDRESS lChild, pos_x, temp_0; + INDIRECT_F lChild, size_x, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + SUB_F lCurrent_x, temp_1, temp_1; + STOREP_F temp_1, temp_0; + GOTO 5; + ADDRESS lChild, pos_x, temp_0; + INDIRECT_F lChild, size_x, temp_1; + SUB_F lCurrent_x, temp_1, temp_1; + STOREP_F temp_1, temp_0; + GOTO 3; + ADDRESS lChild, pos_x, temp_0; + STOREP_F lCurrent_x, temp_0; + INDIRECT_F self, direction_x, temp_0; + IFNOT temp_0, 33; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 4; + ADDRESS lChild, pos_y, temp_0; + STOREP_F lCurrent_y, temp_0; + GOTO 26; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_CENTER, temp_0; + IFNOT temp_0, 7; + ADDRESS lChild, pos_y, temp_0; + INDIRECT_F lChild, size_y, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + SUB_F lCurrent_y, temp_1, temp_1; + STOREP_F temp_1, temp_0; + GOTO 17; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_FIRST, temp_0; + IFNOT temp_0, 2; + INDIRECT_E lChild, _child, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 7; + ADDRESS lChild, pos_y, temp_0; + INDIRECT_E lChild, _child, temp_1; + INDIRECT_F temp_1, size_y, temp_1; + SUB_F lCurrent_y, temp_1, temp_1; + STOREP_F temp_1, temp_0; + GOTO 5; + ADDRESS lChild, pos_y, temp_0; + INDIRECT_F lChild, size_y, temp_1; + SUB_F lCurrent_y, temp_1, temp_1; + STOREP_F temp_1, temp_0; + GOTO 3; + ADDRESS lChild, pos_y, temp_0; + STOREP_F lCurrent_y, temp_0; + INDIRECT_F self, direction_x, temp_0; + IFNOT temp_0, 6; + INDIRECT_F lChild, size_x, temp_0; + INDIRECT_F self, direction_x, temp_1; + ADD_F temp_0, temp_1, temp_0; + ADD_F lCurrent_x, temp_0, lCurrent_x; + GOTO 7; + INDIRECT_F self, direction_y, temp_0; + IFNOT temp_0, 5; + INDIRECT_F lChild, size_y, temp_0; + INDIRECT_F self, direction_y, temp_1; + ADD_F temp_0, temp_1, temp_0; + ADD_F lCurrent_y, temp_0, lCurrent_y; + INDIRECT_E lChild, _next, lChild; + GOTO -91; + DONE; +} + +void() Item_Layout_Spawn = asm +{ +local float temp_0; + CALL0 Item_Window_Spawn; + CALL0 Item_Layout_Update; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_Layout_Update, temp_0; + DONE; +} + +void() Item_Arrangement_CalculateSize = asm +{ +local entity lChild; +local vector lMax; +local vector lMin; +local float temp_0; +local float temp_1; +local vector temp_2; +local vector temp_3; + STORE_V '0.000000 0.000000 0.000000', lMax; + STORE_F INFINITY, lMin_x; + STORE_F INFINITY, lMin_y; + INDIRECT_E self, _child, lChild; + IFNOT lChild, 31; + INDIRECT_F lChild, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_HIDDEN, temp_0; + IFNOT temp_0, 2; + GOTO 25; + INDIRECT_F lChild, pos_x, temp_0; + STORE_F lMin_x, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 min; + STORE_F return_x, lMin_x; + INDIRECT_F lChild, pos_y, temp_0; + STORE_F lMin_y, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 min; + STORE_F return_x, lMin_y; + INDIRECT_F lChild, pos_x, temp_0; + INDIRECT_F lChild, size_x, temp_1; + ADD_F temp_0, temp_1, temp_0; + STORE_F lMax_x, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 max; + STORE_F return_x, lMax_x; + INDIRECT_F lChild, pos_y, temp_0; + INDIRECT_F lChild, size_y, temp_1; + ADD_F temp_0, temp_1, temp_0; + STORE_F lMax_y, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 max; + STORE_F return_x, lMax_y; + INDIRECT_E lChild, _next, lChild; + GOTO -30; + ADDRESS self, size_x, temp_2_x; + SUB_V lMax, lMin, temp_3; + STOREP_V temp_3_x, temp_2; + DONE; +} + +void() Item_Arrangement_Update = asm +{ +local float temp_0; +local float temp_1; + CALL0 Item_Layout_Update; + CALL0 Item_Arrangement_CalculateSize; + INDIRECT_F self, direction_x, temp_0; + IFNOT temp_0, 23; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 4; + ADDRESS self, origin_y, temp_0; + STOREP_F KEY_GAME, temp_0; + GOTO 16; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_CENTER, temp_0; + IF temp_0, 3; + INDIRECT_F self, alignment, temp_1; + EQ_F temp_1, ITEM_ALIGN_FIRST, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 6; + ADDRESS self, origin_y, temp_0; + INDIRECT_F self, size_y, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + STOREP_F temp_1, temp_0; + GOTO 4; + ADDRESS self, origin_y, temp_0; + INDIRECT_F self, size_y, temp_1; + STOREP_F temp_1, temp_0; + GOTO 3; + ADDRESS self, origin_y, temp_0; + STOREP_F KEY_GAME, temp_0; + INDIRECT_F self, direction_y, temp_0; + IFNOT temp_0, 23; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 4; + ADDRESS self, origin_x, temp_0; + STOREP_F KEY_GAME, temp_0; + GOTO 16; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_CENTER, temp_0; + IF temp_0, 3; + INDIRECT_F self, alignment, temp_1; + EQ_F temp_1, ITEM_ALIGN_FIRST, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 6; + ADDRESS self, origin_x, temp_0; + INDIRECT_F self, size_x, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + STOREP_F temp_1, temp_0; + GOTO 4; + ADDRESS self, origin_x, temp_0; + INDIRECT_F self, size_x, temp_1; + STOREP_F temp_1, temp_0; + GOTO 3; + ADDRESS self, origin_x, temp_0; + STOREP_F KEY_GAME, temp_0; + DONE; +} + +void() Item_Arrangement_Spawn = asm +{ +local float temp_0; + CALL0 Item_Layout_Spawn; + CALL0 Item_Arrangement_Update; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_Arrangement_Update, temp_0; + DONE; +} + +void() Item_ScrollWindow_Update = asm +{ +local float locked_1586; +local entity lParent; +local float lOldLevel; +local float lLevel; +local float temp_1; +local float temp_5; +local float temp_6; + INDIRECT_F self, _runFlag, locked_1586; + BITAND locked_1586, 96.000000, locked_1586; + NOT_F locked_1586, locked_1586; + NOT_F locked_1586, locked_1586; + IF locked_1586, 6; + INDIRECT_E self, _child, temp_1; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 _Menu_IsEmbeddedParentOf; + NOT_F return_x, temp_1; + OR locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, _link, locked_1586; + STOREP_ENT null_entity, locked_1586; + RETURN offset_0; + INDIRECT_E self, _link, locked_1586; + EQ_E locked_1586, Menu_ActiveItem, locked_1586; + IFNOT locked_1586, 3; + RETURN offset_0; + GOTO 3; + ADDRESS self, _link, locked_1586; + STOREP_ENT Menu_ActiveItem, locked_1586; + INDIRECT_F Menu_ActiveItem, pos_y, lLevel; + INDIRECT_E Menu_ActiveItem, _parent, lParent; + NE_E lParent, self, locked_1586; + IFNOT locked_1586, 7; + INDIRECT_F lParent, origin_y, locked_1586; + INDIRECT_F lParent, pos_y, temp_1; + ADD_F locked_1586, temp_1, locked_1586; + ADD_F lLevel, locked_1586, lLevel; + INDIRECT_E lParent, _parent, lParent; + GOTO -7; + INDIRECT_F self, origin_y, locked_1586; + SUB_F KEY_GAME, locked_1586, lOldLevel; + INDIRECT_F Menu_ActiveItem, size_y, locked_1586; + INDIRECT_F self, size_y, temp_1; + GT locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 4; + INDIRECT_F Menu_ActiveItem, size_y, temp_1; + ADD_F lLevel, temp_1, temp_1; + GT temp_1, lOldLevel, temp_1; + AND locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 4; + INDIRECT_F self, size_y, temp_1; + ADD_F temp_1, lOldLevel, temp_1; + LT lLevel, temp_1, temp_1; + AND locked_1586, temp_1, locked_1586; + IF locked_1586, 9; + GE lLevel, lOldLevel, temp_1; + IFNOT temp_1, 6; + INDIRECT_F Menu_ActiveItem, size_y, temp_5; + ADD_F lLevel, temp_5, temp_5; + INDIRECT_F self, size_y, temp_6; + ADD_F lOldLevel, temp_6, temp_6; + LT temp_5, temp_6, temp_5; + AND temp_1, temp_5, temp_1; + OR locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 2; + RETURN offset_0; + LT lOldLevel, lLevel, locked_1586; + IFNOT locked_1586, 6; + ADDRESS self, origin_y, locked_1586; + INDIRECT_F self, direction_x, temp_1; + SUB_F temp_1, lLevel, temp_1; + STOREP_F temp_1, locked_1586; + GOTO 7; + ADDRESS self, origin_y, locked_1586; + INDIRECT_F self, size_y, temp_1; + INDIRECT_F self, direction_x, temp_5; + SUB_F temp_1, temp_5, temp_1; + SUB_F temp_1, lLevel, temp_1; + STOREP_F temp_1, locked_1586; + ADDRESS self, origin_y, locked_1586; + INDIRECT_F self, size_y, temp_1; + INDIRECT_E self, _child, temp_5; + INDIRECT_F temp_5, size_y, temp_5; + SUB_F temp_1, temp_5, temp_1; + INDIRECT_F self, origin_y, temp_5; + STORE_F temp_1, parm0_x; + STORE_F temp_5, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 bound; + STOREP_F return_x, locked_1586; + DONE; +} + +void () Item_ScrollWindow_Reinit; +void() Item_ScrollWindow_Reinit = asm +{ +local float temp_0; + ADDRESS self, origin_y, temp_0; + STOREP_F KEY_GAME, temp_0; + DONE; +} + +void() Item_ScrollWindow_Spawn = asm +{ +local float temp_0; + CALL0 Item_Window_Spawn; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_ScrollWindow_Update, temp_0; + ADDRESS self, _reinit, temp_0; + STOREP_FNC Item_ScrollWindow_Reinit, temp_0; + DONE; +} + +void() Item_EventWindow_Spawn = asm +{ +local float temp_0; + CALL0 Item_Window_Spawn; + ADDRESS self, _destroy, temp_0; + STOREP_FNC CtCall_Destroy, temp_0; + ADDRESS self, _reinit, temp_0; + STOREP_FNC CtCall_Reinit, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC CtCall_Update, temp_0; + CALL0 CtCall_Init; + DONE; +} + +void() Item_Frame_Spawn = asm +{ +local float temp_0; +local float temp_1; + CALL0 Item_Window_Spawn; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + SUB_F temp_1, FLAG_NOSELECT, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +float () _IL_GetItemUnderCursor; +float() _IL_GetItemUnderCursor = asm +{ +local float locked_1586; +local float lLines; +local float lStart; +local float lItem; +local float temp_1; +local float temp_5; + INDIRECT_F self, size_y, locked_1586; + INDIRECT_F self, fontSize_y, temp_1; + ADD_F temp_1, KEY_MENU, temp_1; + DIV_F locked_1586, temp_1, parm0_x; + CALL1 floor; + STORE_F return_x, lLines; + INDIRECT_E self, _target, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 DataLink_Switch_GetOrdinal; + DIV_F lLines, KEY_MENU, locked_1586; + SUB_F return_x, locked_1586, parm0_x; + CALL1 floor; + STORE_F KEY_GAME, parm0_x; + STORE_F return_x, parm1_x; + CALL2 max; + STORE_F return_x, lStart; + INDIRECT_F self, pos_y, locked_1586; + SUB_F Menu_Cursor_Position_y, locked_1586, locked_1586; + INDIRECT_F self, fontSize_y, temp_1; + ADD_F temp_1, KEY_MENU, temp_1; + DIV_F locked_1586, temp_1, parm0_x; + CALL1 floor; + STORE_F return_x, lItem; + ADD_F lStart, lItem, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_E self, _target, temp_5; + INDIRECT_F temp_5, maxValue, temp_5; + STORE_F temp_1, parm0_x; + STORE_F temp_5, parm1_x; + CALL2 DataLink_Switch_GetOrdinal; + STORE_F locked_1586, parm0_x; + STORE_F return_x, parm1_x; + CALL2 min; + STORE_F return_x, lItem; + RETURN lItem; + DONE; +} + +void() Item_List_Draw = asm +{ +local float locked_1586; +local string lText; +local float lItemUnderCursor; +local vector lPos; +local float lEnd; +local float lLine; +local float lLines; +local float lStart; +local float temp_1; +local vector temp_2; +local vector temp_3; +local float temp_5; + INDIRECT_E self, _target, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F self, size_y, locked_1586; + INDIRECT_F self, fontSize_y, temp_1; + ADD_F temp_1, KEY_MENU, temp_1; + DIV_F locked_1586, temp_1, parm0_x; + CALL1 floor; + STORE_F return_x, lLines; + INDIRECT_E self, _target, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 DataLink_Switch_GetOrdinal; + DIV_F lLines, KEY_MENU, locked_1586; + SUB_F return_x, locked_1586, parm0_x; + CALL1 floor; + STORE_F KEY_GAME, parm0_x; + STORE_F return_x, parm1_x; + CALL2 max; + STORE_F return_x, lStart; + ADD_F lStart, lLines, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_E self, _target, temp_5; + INDIRECT_F temp_5, maxValue, temp_5; + STORE_F temp_1, parm0_x; + STORE_F temp_5, parm1_x; + CALL2 DataLink_Switch_GetOrdinal; + STORE_F locked_1586, parm0_x; + STORE_F return_x, parm1_x; + CALL2 min; + STORE_F return_x, lEnd; + INDIRECT_F self, _state, locked_1586; + EQ_F locked_1586, ITEM_STATE_NORMAL, locked_1586; + IFNOT locked_1586, 3; + STORE_F ERR_CANNOTOPEN, lItemUnderCursor; + GOTO 3; + CALL0 _IL_GetItemUnderCursor; + STORE_F return_x, lItemUnderCursor; + INDIRECT_V self, pos_x, temp_2; + ADD_V '0.000000 1.000000 0.000000', temp_2, lPos; + STORE_F lStart, lLine; + LE lLine, lEnd, locked_1586; + IFNOT locked_1586, 89; + INDIRECT_E self, _target, locked_1586; + INDIRECT_S locked_1586, descList, parm0_x; + STORE_F lLine, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_S return_x, lText; + INDIRECT_E self, _target, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 DataLink_Switch_GetOrdinal; + EQ_F lLine, return_x, locked_1586; + IFNOT locked_1586, 43; + INDIRECT_F self, _state, locked_1586; + EQ_F locked_1586, ITEM_STATE_SELECTED, locked_1586; + IFNOT locked_1586, 13; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, colorSelected_x, temp_3; + INDIRECT_F self, alphas_y, locked_1586; + INDIRECT_F self, drawFlags_y, temp_1; + STORE_V lPos, parm0; + STORE_F lText, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1586, parm4_x; + STORE_F temp_1, parm5_x; + CALL6 Menu_DrawString; + GOTO 27; + INDIRECT_F self, _state, locked_1586; + EQ_F locked_1586, ITEM_STATE_PRESSED, locked_1586; + IFNOT locked_1586, 13; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, colorPressed_x, temp_3; + INDIRECT_F self, alphas_z, locked_1586; + INDIRECT_F self, drawFlags_z, temp_1; + STORE_V lPos, parm0; + STORE_F lText, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1586, parm4_x; + STORE_F temp_1, parm5_x; + CALL6 Menu_DrawString; + GOTO 12; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, colorInactive_x, temp_3; + INDIRECT_F self, alphaInactive, locked_1586; + INDIRECT_F self, drawFlagInactive, temp_1; + STORE_V lPos, parm0; + STORE_F lText, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1586, parm4_x; + STORE_F temp_1, parm5_x; + CALL6 Menu_DrawString; + GOTO 26; + EQ_F lLine, lItemUnderCursor, locked_1586; + IFNOT locked_1586, 13; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, colorInactive_x, temp_3; + INDIRECT_F self, alphaInactive, locked_1586; + INDIRECT_F self, drawFlagInactive, temp_1; + STORE_V lPos, parm0; + STORE_F lText, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1586, parm4_x; + STORE_F temp_1, parm5_x; + CALL6 Menu_DrawString; + GOTO 12; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, color_x, temp_3; + INDIRECT_F self, alphas_x, locked_1586; + INDIRECT_F self, drawFlags_x, temp_1; + STORE_V lPos, parm0; + STORE_F lText, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1586, parm4_x; + STORE_F temp_1, parm5_x; + CALL6 Menu_DrawString; + INDIRECT_F self, fontSize_y, locked_1586; + ADD_F lPos_y, locked_1586, locked_1586; + ADD_F locked_1586, KEY_MENU, lPos_y; + STORE_F lText, parm0_x; + CALL1 String_Free; + STORE_F lLine, temp_1; + ADD_F lLine, FILE_APPEND, lLine; + GOTO -89; + DONE; +} + +void() Item_List_Update = asm +{ +local float temp_0; + CALL0 Item_DataUser_Update; + INDIRECT_F self, _presstime, temp_0; + ADD_F temp_0, ITEM_BUTTON_ACTIONTIME, temp_0; + GT temp_0, Timer_Time, temp_0; + IFNOT temp_0, 4; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_PRESSED, temp_0; + GOTO 8; + EQ_E Menu_ActiveItem, self, temp_0; + IFNOT temp_0, 4; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_SELECTED, temp_0; + GOTO 3; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_NORMAL, temp_0; + DONE; +} + +void(float pSelect, float pUser) Item_List_Select = asm +{ +local float temp_0; + IFNOT pSelect, 1; + AND pSelect, pUser, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Play; + DONE; +} + +float(float pKey, float pAscii) Item_List_Key = asm +{ +local float lSelected; +local float temp_0; +local float temp_1; + EQ_F pKey, K_DOWNARROW, temp_0; + IFNOT temp_0, 16; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Play; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + RETURN FILE_APPEND; + GOTO 49; + EQ_F pKey, K_UPARROW, temp_0; + IFNOT temp_0, 16; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Play; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + RETURN FILE_APPEND; + GOTO 32; + EQ_F pKey, K_MOUSE1, temp_0; + IFNOT temp_0, 30; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Play; + CALL0 _IL_GetItemUnderCursor; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, stepValue, temp_0; + MUL_F return_x, temp_0, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + ADD_F temp_0, temp_1, lSelected; + INDIRECT_F self, _presstime, temp_0; + ADD_F temp_0, ITEM_BUTTON_ACTIONTIME, temp_0; + GT temp_0, Timer_Time, temp_0; + IFNOT temp_0, 4; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + EQ_F lSelected, temp_1, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 3; + CALL0 CtCall_Action; + GOTO 9; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + STOREP_F lSelected, temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Item_List_Destroy = asm +{ + CALL0 CtCall_Destroy; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundPressed, parm1_x; + CALL2 String_EntityFree; + CALL0 Item_DataUser_Destroy; + DONE; +} + +void() Item_List_Spawn = asm +{ +local float temp_0; + CALL0 Item_DataUser_Init; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundPressed, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Precache; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Precache; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_List_Draw, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_List_Update, temp_0; + ADDRESS self, _select, temp_0; + STOREP_FNC Item_List_Select, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_List_Key, temp_0; + ADDRESS self, _reinit, temp_0; + STOREP_FNC CtCall_Reinit, temp_0; + CALL0 CtCall_Init; + DONE; +} + +float (string) _IB_IsPicture; +float(string pString) _IB_IsPicture = asm +{ +local float temp_0; + STORE_F pString, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 substring; + EQ_S return_x, "$", temp_0; + RETURN temp_0; + DONE; +} + +string (string) _IB_GetPath; +string(string pString) _IB_GetPath = asm +{ + STORE_F pString, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F 1000.000000, parm2_x; + CALL3 substring; + RETURN return_x; + DONE; +} + +vector (string) _IB_GetSize; +vector(string pString) _IB_GetSize = asm +{ +local vector lSize; +local float temp_0; + STORE_F pString, parm0_x; + CALL1 _IB_IsPicture; + IFNOT return_x, 6; + STORE_F pString, parm0_x; + CALL1 _IB_GetPath; + STORE_F return_x, parm0_x; + CALL1 Gfx_GetImageSize; + RETURN return_x; + STORE_F pString, parm0_x; + CALL1 strlen; + INDIRECT_F self, fontSize_x, temp_0; + MUL_F return_x, temp_0, lSize_x; + INDIRECT_F self, fontSize_y, lSize_y; + STORE_F KEY_GAME, lSize_z; + RETURN lSize_x; + DONE; +} + +vector () _IB_GetMaxSize; +vector() _IB_GetMaxSize = asm +{ +local vector lSize; +local vector lPressed; +local vector lSelected; +local vector lNormal; +local float temp_0; + INDIRECT_S self, normal, parm0_x; + CALL1 _IB_GetSize; + STORE_V return, lNormal; + INDIRECT_S self, selected, parm0_x; + CALL1 _IB_GetSize; + STORE_V return, lSelected; + INDIRECT_S self, pressed, parm0_x; + CALL1 _IB_GetSize; + STORE_V return, lPressed; + STORE_F lNormal_x, parm0_x; + STORE_F lSelected_x, parm1_x; + STORE_F lPressed_x, parm2_x; + CALL3 max; + STORE_F return_x, lSize_x; + STORE_F lNormal_y, parm0_x; + STORE_F lSelected_y, parm1_x; + STORE_F lPressed_y, parm2_x; + CALL3 max; + STORE_F return_x, lSize_y; + STORE_F KEY_GAME, lSize_z; + RETURN lSize_x; + DONE; +} + +void (string, vector, float, float) _IB_Draw; +void(string pName, vector pColor, float pAlpha, float pDrawFlag) _IB_Draw = asm +{ +local vector lMaxSize; +local vector lPos; +local vector lSize; +local float temp_0; +local float temp_1; +local vector temp_2; + STORE_F pName, parm0_x; + CALL1 _IB_GetSize; + STORE_V return, lSize; + CALL0 _IB_GetMaxSize; + STORE_V return, lMaxSize; + STORE_F pName, parm0_x; + CALL1 _IB_IsPicture; + IFNOT return_x, 7; + INDIRECT_F self, size_x, temp_0; + DIV_F temp_0, lMaxSize_x, temp_0; + MUL_F lSize_x, temp_0, lSize_x; + INDIRECT_F self, size_y, temp_0; + DIV_F temp_0, lMaxSize_y, temp_0; + MUL_F lSize_y, temp_0, lSize_y; + INDIRECT_F self, pos_y, lPos_y; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 2; + INDIRECT_F self, pos_x, lPos_x; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_CENTER, temp_0; + IFNOT temp_0, 7; + INDIRECT_F self, pos_x, temp_0; + INDIRECT_F self, size_x, temp_1; + SUB_F temp_1, lSize_x, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + ADD_F temp_0, temp_1, lPos_x; + GOTO 10; + INDIRECT_F self, alignment, temp_0; + EQ_F temp_0, ITEM_ALIGN_RIGHT, temp_0; + IFNOT temp_0, 6; + INDIRECT_F self, pos_x, temp_0; + INDIRECT_F self, size_x, temp_1; + ADD_F temp_0, temp_1, temp_0; + SUB_F temp_0, lSize_x, lPos_x; + GOTO 2; + INDIRECT_F self, pos_x, lPos_x; + STORE_F pName, parm0_x; + CALL1 _IB_IsPicture; + IFNOT return_x, 11; + STORE_F pName, parm0_x; + CALL1 _IB_GetPath; + STORE_V lPos, parm0; + STORE_F return_x, parm1_x; + STORE_V lSize, parm2; + STORE_V pColor, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pDrawFlag, parm5_x; + CALL6 Menu_DrawPicture; + GOTO 9; + INDIRECT_V self, fontSize_x, temp_2; + STORE_V lPos, parm0; + STORE_F pName, parm1_x; + STORE_V temp_2, parm2; + STORE_V pColor, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pDrawFlag, parm5_x; + CALL6 Menu_DrawString; + DONE; +} + +void() Item_Button_Draw = asm +{ +local string lText; +local float temp_0; +local float temp_1; +local vector temp_2; +local float temp_5; + INDIRECT_F self, _state, temp_0; + EQ_F temp_0, ITEM_STATE_NORMAL, temp_0; + IFNOT temp_0, 11; + INDIRECT_S self, normal, temp_0; + INDIRECT_V self, color_x, temp_2; + INDIRECT_F self, alphas_x, temp_1; + INDIRECT_F self, drawFlags_x, temp_5; + STORE_F temp_0, parm0_x; + STORE_V temp_2, parm1; + STORE_F temp_1, parm2_x; + STORE_F temp_5, parm3_x; + CALL4 _IB_Draw; + GOTO 41; + INDIRECT_F self, _state, temp_0; + EQ_F temp_0, ITEM_STATE_SELECTED, temp_0; + IFNOT temp_0, 16; + INDIRECT_S self, selected, temp_0; + NE_S temp_0, string_null, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, selected, lText; + GOTO 2; + INDIRECT_S self, normal, lText; + INDIRECT_V self, colorSelected_x, temp_2; + INDIRECT_F self, alphas_y, temp_0; + INDIRECT_F self, drawFlags_y, temp_1; + STORE_F lText, parm0_x; + STORE_V temp_2, parm1; + STORE_F temp_0, parm2_x; + STORE_F temp_1, parm3_x; + CALL4 _IB_Draw; + GOTO 23; + INDIRECT_F self, _state, temp_0; + EQ_F temp_0, ITEM_STATE_PRESSED, temp_0; + IFNOT temp_0, 20; + INDIRECT_S self, pressed, temp_0; + NE_S temp_0, string_null, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, pressed, lText; + GOTO 7; + INDIRECT_S self, selected, temp_0; + NE_S temp_0, string_null, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, selected, lText; + GOTO 2; + INDIRECT_S self, normal, lText; + INDIRECT_V self, colorPressed_x, temp_2; + INDIRECT_F self, alphas_z, temp_0; + INDIRECT_F self, drawFlags_z, temp_1; + STORE_F lText, parm0_x; + STORE_V temp_2, parm1; + STORE_F temp_0, parm2_x; + STORE_F temp_1, parm3_x; + CALL4 _IB_Draw; + DONE; +} + +void () _IB_Calc; +void() _IB_Calc = asm +{ +local float locked_1292; +local float temp_0; + INDIRECT_V self, size_x, locked_1292; + EQ_V locked_1292, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 4; + ADDRESS self, size_x, locked_1292; + CALL0 _IB_GetMaxSize; + STOREP_V return_x, locked_1292; + DONE; +} + +void() Item_Button_Update = asm +{ +local float temp_0; + CALL0 Item_Link_Update; + CALL0 _IB_Calc; + INDIRECT_F self, _presstime, temp_0; + ADD_F temp_0, ITEM_BUTTON_ACTIONTIME, temp_0; + GT temp_0, Timer_Time, temp_0; + IFNOT temp_0, 4; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_PRESSED, temp_0; + GOTO 8; + CALL0 Item_Link_IsSelected; + IFNOT return_x, 4; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_SELECTED, temp_0; + GOTO 3; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_NORMAL, temp_0; + DONE; +} + +void(float pSelect, float pUser) Item_Button_Select = asm +{ +local float temp_0; + IFNOT pSelect, 1; + AND pSelect, pUser, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Play; + DONE; +} + +float(float pKey, float pAscii) Item_Button_Key = asm +{ +local float temp_0; +local float temp_1; + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 Item_Link_Key; + IFNOT return_x, 2; + RETURN FILE_APPEND; + EQ_F pKey, K_SPACE, temp_0; + IF temp_0, 2; + EQ_F pKey, K_ENTER, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + EQ_F pKey, K_MOUSE1, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 7; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Play; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + CALL0 CtCall_Action; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Item_Button_Destroy = asm +{ + CALL0 CtCall_Destroy; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F selected, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F pressed, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundPressed, parm1_x; + CALL2 String_EntityFree; + CALL0 Item_Link_Destroy; + DONE; +} + +void() Item_Button_Spawn = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, _presstime, temp_0; + SUB_F Timer_Time, FILE_APPEND, temp_1; + SUB_F temp_1, ITEM_BUTTON_ACTIONTIME, temp_1; + STOREP_F temp_1, temp_0; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F selected, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F pressed, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundPressed, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_Link_Init; + INDIRECT_S self, normal, parm0_x; + CALL1 _IB_IsPicture; + IFNOT return_x, 5; + INDIRECT_S self, normal, parm0_x; + CALL1 _IB_GetPath; + STORE_F return_x, parm0_x; + CALL1 Gfx_Precache; + INDIRECT_S self, selected, parm0_x; + CALL1 _IB_IsPicture; + IFNOT return_x, 5; + INDIRECT_S self, selected, parm0_x; + CALL1 _IB_GetPath; + STORE_F return_x, parm0_x; + CALL1 Gfx_Precache; + INDIRECT_S self, pressed, parm0_x; + CALL1 _IB_IsPicture; + IFNOT return_x, 5; + INDIRECT_S self, pressed, parm0_x; + CALL1 _IB_GetPath; + STORE_F return_x, parm0_x; + CALL1 Gfx_Precache; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Precache; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Precache; + CALL0 _IB_Calc; + ADDRESS self, _reinit, temp_0; + STOREP_FNC CtCall_Reinit, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Button_Destroy, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_Button_Key, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Button_Draw, temp_0; + ADDRESS self, _select, temp_0; + STOREP_FNC Item_Button_Select, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_Button_Update, temp_0; + CALL0 CtCall_Init; + DONE; +} + +void() Item_EditBox_Draw = asm +{ +local float lAlpha; +local vector lCursor; +local float temp_0; +local float temp_1; +local vector temp_2; +local vector temp_3; +local vector temp_4; +local float temp_5; + INDIRECT_E self, _target, temp_0; + IF temp_0, 2; + RETURN offset_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F self, _state, temp_0; + EQ_F temp_0, ITEM_STATE_NORMAL, temp_0; + IFNOT temp_0, 18; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, origin_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, temp_0; + INDIRECT_V self, fontSize_x, temp_3; + INDIRECT_V self, color_x, temp_4; + INDIRECT_F self, alphas_x, temp_1; + INDIRECT_F self, drawFlags_x, temp_5; + STORE_V temp_2, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_3, parm2; + STORE_V temp_4, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawString; + RETURN offset_0; + INDIRECT_F self, _cursorPos, temp_0; + INDIRECT_F self, fontSize_x, temp_1; + MUL_F temp_0, temp_1, lCursor_x; + INDIRECT_F self, fontSize_y, lCursor_y; + MUL_F Timer_Time, 1000.000000, parm0_x; + STORE_F 500.000000, parm1_x; + CALL2 mod; + GT return_x, 250.000000, temp_0; + IFNOT temp_0, 3; + STORE_F FILE_APPEND, lAlpha; + GOTO 2; + STORE_F KEY_GAME, lAlpha; + INDIRECT_F self, _state, temp_0; + EQ_F temp_0, ITEM_STATE_SELECTED, temp_0; + IFNOT temp_0, 35; + INDIRECT_F self, sizeCursor_y, temp_0; + SUB_F lCursor_y, temp_0, lCursor_y; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, origin_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, temp_0; + INDIRECT_V self, fontSize_x, temp_3; + INDIRECT_V self, colorSelected_x, temp_4; + INDIRECT_F self, alphas_y, temp_1; + INDIRECT_F self, drawFlags_y, temp_5; + STORE_V temp_2, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_3, parm2; + STORE_V temp_4, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawString; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, origin_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + ADD_V temp_2, lCursor, temp_2; + INDIRECT_V self, sizeCursor_x, temp_3; + INDIRECT_V self, colorCursor_x, temp_4; + INDIRECT_F self, alphasCursor_x, temp_0; + MUL_F temp_0, lAlpha, temp_0; + INDIRECT_F self, drawFlagsCursor_x, temp_1; + STORE_V temp_2, parm0; + STORE_V temp_3, parm1; + STORE_V temp_4, parm2; + STORE_F temp_0, parm3_x; + STORE_F temp_1, parm4_x; + CALL5 Menu_Fill; + GOTO 34; + INDIRECT_F self, sizeCursorFlash_y, temp_0; + SUB_F lCursor_y, temp_0, lCursor_y; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, origin_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, temp_0; + INDIRECT_V self, fontSize_x, temp_3; + INDIRECT_V self, colorPressed_x, temp_4; + INDIRECT_F self, alphas_z, temp_1; + INDIRECT_F self, drawFlags_z, temp_5; + STORE_V temp_2, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_3, parm2; + STORE_V temp_4, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawString; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, origin_x, temp_3; + ADD_V temp_2, temp_3, temp_2; + ADD_V temp_2, lCursor, temp_2; + INDIRECT_V self, sizeCursorFlash_x, temp_3; + INDIRECT_V self, colorCursorFlash_x, temp_4; + INDIRECT_F self, alphasCursor_y, temp_0; + MUL_F temp_0, lAlpha, temp_0; + INDIRECT_F self, drawFlagsCursor_y, temp_1; + STORE_V temp_2, parm0; + STORE_V temp_3, parm1; + STORE_V temp_4, parm2; + STORE_F temp_0, parm3_x; + STORE_F temp_1, parm4_x; + CALL5 Menu_Fill; + DONE; +} + +void() Item_EditBox_Update = asm +{ +local float locked_1585; +local float locked_1586; +local float temp_5; +local float temp_6; + CALL0 Item_DataUser_Update; + INDIRECT_F self, _presstime, locked_1586; + ADD_F locked_1586, ITEM_EDITBOX_FLASHTIME, locked_1586; + GT locked_1586, Timer_Time, locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, _state, locked_1586; + STOREP_F ITEM_STATE_PRESSED, locked_1586; + GOTO 8; + EQ_E Menu_ActiveItem, self, locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, _state, locked_1586; + STOREP_F ITEM_STATE_SELECTED, locked_1586; + GOTO 3; + ADDRESS self, _state, locked_1586; + STOREP_F ITEM_STATE_NORMAL, locked_1586; + INDIRECT_E self, _target, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _cursorPos, locked_1586; + INDIRECT_F self, _cursorPos, locked_1585; + INDIRECT_E self, _target, temp_5; + INDIRECT_S temp_5, value, parm0_x; + CALL1 strlen; + STORE_F KEY_GAME, parm0_x; + STORE_F locked_1585, parm1_x; + STORE_F return_x, parm2_x; + CALL3 bound; + STOREP_F return_x, locked_1586; + ADDRESS self, origin_y, locked_1586; + STOREP_F KEY_GAME, locked_1586; + INDIRECT_F self, _cursorPos, locked_1586; + ADD_F locked_1586, ITEM_EDITBOX_SCROLLDISTANCE, locked_1586; + INDIRECT_F self, size_x, locked_1585; + INDIRECT_F self, fontSize_x, temp_5; + DIV_F locked_1585, temp_5, locked_1585; + GT locked_1586, locked_1585, locked_1586; + IFNOT locked_1586, 8; + INDIRECT_E self, _target, locked_1585; + INDIRECT_F locked_1585, maxValue, locked_1585; + SUB_F locked_1585, ITEM_EDITBOX_SCROLLDISTANCE, locked_1585; + INDIRECT_F self, size_x, temp_5; + INDIRECT_F self, fontSize_x, temp_6; + DIV_F temp_5, temp_6, temp_5; + GT locked_1585, temp_5, locked_1585; + AND locked_1586, locked_1585, locked_1586; + IFNOT locked_1586, 13; + ADDRESS self, origin_x, locked_1586; + INDIRECT_F self, fontSize_x, locked_1585; + INDIRECT_F self, size_x, temp_5; + INDIRECT_F self, fontSize_x, temp_6; + DIV_F temp_5, temp_6, parm0_x; + CALL1 floor; + INDIRECT_F self, _cursorPos, temp_5; + SUB_F return_x, temp_5, temp_5; + SUB_F temp_5, ITEM_EDITBOX_SCROLLDISTANCE, temp_5; + MUL_F locked_1585, temp_5, locked_1585; + STOREP_F locked_1585, locked_1586; + GOTO 3; + ADDRESS self, origin_x, locked_1586; + STOREP_F KEY_GAME, locked_1586; + DONE; +} + +void () _IEB_RemoveChar; +void() _IEB_RemoveChar = asm +{ +local string lValue; +local string lTemp; +local float temp_0; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, lValue; + INDIRECT_F self, _cursorPos, temp_0; + STORE_F lValue, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 strcat; + STORE_S return_x, lTemp; + INDIRECT_F self, _cursorPos, temp_0; + ADD_F temp_0, FILE_APPEND, temp_0; + STORE_F lValue, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F lTemp, parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_S return_x, lTemp; + INDIRECT_E self, _target, parm0_x; + STORE_F value, parm1_x; + STORE_F lTemp, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_S self, soundKey, parm0_x; + CALL1 Sound_Play; + DONE; +} + +void (float) _IEB_InsertChar; +void(float pAscii) _IEB_InsertChar = asm +{ +local string lTemp; +local string lValue; +local float temp_0; +local float temp_1; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, lValue; + INDIRECT_F self, _cursorPos, temp_0; + STORE_F lValue, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 substring; + STORE_F pAscii, parm0_x; + STORE_F return_x, temp_0; + CALL1 chr; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F return_x, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 strcat; + STORE_S return_x, lTemp; + INDIRECT_F self, _cursorPos, temp_0; + STORE_F lValue, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F lTemp, parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_S return_x, lTemp; + INDIRECT_E self, _target, parm0_x; + STORE_F value, parm1_x; + STORE_F lTemp, parm2_x; + CALL3 String_EntitySet; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + ADDRESS self, _cursorPos, temp_0; + INDIRECT_F self, _cursorPos, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_S self, soundKey, parm0_x; + CALL1 Sound_Play; + DONE; +} + +float(float pKey, float pAscii) Item_EditBox_Key = asm +{ +local float locked_1586; +local float temp_1; + INDIRECT_E self, _target, locked_1586; + IF locked_1586, 3; + RETURN KEY_GAME; + GOTO 67; + EQ_F pKey, K_ENTER, locked_1586; + IFNOT locked_1586, 6; + CALL0 CtCall_Action; + INDIRECT_S self, soundKey, parm0_x; + CALL1 Sound_Play; + RETURN FILE_APPEND; + GOTO 60; + EQ_F pKey, K_LEFTARROW, locked_1586; + IFNOT locked_1586, 11; + INDIRECT_F self, _cursorPos, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, _cursorPos, locked_1586; + INDIRECT_F self, _cursorPos, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_S self, soundMove, parm0_x; + CALL1 Sound_Play; + RETURN FILE_APPEND; + GOTO 48; + EQ_F pKey, K_RIGHTARROW, locked_1586; + IFNOT locked_1586, 15; + INDIRECT_F self, _cursorPos, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_S temp_1, value, parm0_x; + CALL1 strlen; + LT locked_1586, return_x, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, _cursorPos, locked_1586; + INDIRECT_F self, _cursorPos, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_S self, soundMove, parm0_x; + CALL1 Sound_Play; + RETURN FILE_APPEND; + GOTO 32; + EQ_F pKey, K_BACKSPACE, locked_1586; + IFNOT locked_1586, 11; + INDIRECT_F self, _cursorPos, locked_1586; + GT locked_1586, KEY_GAME, locked_1586; + IFNOT locked_1586, 6; + ADDRESS self, _cursorPos, locked_1586; + INDIRECT_F self, _cursorPos, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, locked_1586; + CALL0 _IEB_RemoveChar; + RETURN FILE_APPEND; + GOTO 20; + EQ_F pKey, K_DEL, locked_1586; + IFNOT locked_1586, 10; + INDIRECT_F self, _cursorPos, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_S temp_1, value, parm0_x; + CALL1 strlen; + LT locked_1586, return_x, locked_1586; + IFNOT locked_1586, 2; + CALL0 _IEB_RemoveChar; + RETURN FILE_APPEND; + GOTO 9; + LE 30.000000, pAscii, locked_1586; + IFNOT locked_1586, 2; + LE pAscii, 126.000000, temp_1; + AND locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 4; + STORE_F pAscii, parm0_x; + CALL1 _IEB_InsertChar; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void(float pSelect, float pUser) Item_EditBox_Select = asm +{ +local float temp_0; + STORE_F pSelect, parm0_x; + STORE_F pUser, parm1_x; + CALL2 CtCall_Select; + IFNOT pSelect, 1; + AND pSelect, pUser, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Play; + DONE; +} + +void() Item_EditBox_Destroy = asm +{ + CALL0 CtCall_Destroy; + CALL0 Item_DataUser_Destroy; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundKey, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundMove, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_EditBox_Reinit = asm +{ +local float temp_0; + ADDRESS self, _cursorPos, temp_0; + STOREP_F KEY_GAME, temp_0; + CALL0 CtCall_Reinit; + DONE; +} + +void() Item_EditBox_Spawn = asm +{ +local float locked_1585; +local float locked_1586; +local vector temp_2; +local float temp_5; + CALL0 Item_DataUser_Init; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundKey, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundMove, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Precache; + INDIRECT_S self, soundKey, parm0_x; + CALL1 Sound_Precache; + INDIRECT_S self, soundMove, parm0_x; + CALL1 Sound_Precache; + INDIRECT_V self, size_x, temp_2; + EQ_V temp_2, '0.000000 0.000000 0.000000', locked_1586; + IFNOT locked_1586, 2; + INDIRECT_E self, _target, locked_1585; + AND locked_1586, locked_1585, locked_1586; + IFNOT locked_1586, 4; + INDIRECT_E self, _target, locked_1585; + INDIRECT_F locked_1585, maxValue, locked_1585; + GE locked_1585, KEY_GAME, locked_1585; + AND locked_1586, locked_1585, locked_1586; + IFNOT locked_1586, 16; + ADDRESS self, size_x, locked_1586; + INDIRECT_F self, fontSize_x, locked_1585; + INDIRECT_E self, _target, temp_5; + INDIRECT_F temp_5, maxValue, temp_5; + MUL_F locked_1585, temp_5, locked_1585; + INDIRECT_F self, sizeCursor_x, temp_5; + INDIRECT_V self, sizeCursorFlash_x, temp_2; + STORE_F temp_5, parm0_x; + STORE_V temp_2, parm1; + CALL2 max; + ADD_F locked_1585, return_x, locked_1585; + STOREP_F locked_1585, locked_1586; + ADDRESS self, size_y, locked_1586; + INDIRECT_F self, fontSize_y, locked_1585; + STOREP_F locked_1585, locked_1586; + ADDRESS self, _reinit, locked_1586; + STOREP_FNC Item_EditBox_Reinit, locked_1586; + ADDRESS self, _destroy, locked_1586; + STOREP_FNC Item_EditBox_Destroy, locked_1586; + ADDRESS self, _key, locked_1586; + STOREP_FNC Item_EditBox_Key, locked_1586; + ADDRESS self, _draw, locked_1586; + STOREP_FNC Item_EditBox_Draw, locked_1586; + ADDRESS self, _select, locked_1586; + STOREP_FNC Item_EditBox_Select, locked_1586; + ADDRESS self, _update, locked_1586; + STOREP_FNC Item_EditBox_Update, locked_1586; + CALL0 CtCall_Init; + DONE; +} + +void () _IL_Calc; +void() _IL_Calc = asm +{ +local float locked_1585; +local float locked_1586; +local vector temp_2; +local float temp_5; + INDIRECT_V self, size_x, temp_2; + EQ_V temp_2, '0.000000 0.000000 0.000000', locked_1586; + IFNOT locked_1586, 11; + ADDRESS self, size_x, locked_1586; + INDIRECT_F self, fontSize_x, locked_1585; + INDIRECT_S self, text, parm0_x; + CALL1 strlen; + MUL_F locked_1585, return_x, locked_1585; + STOREP_F locked_1585, locked_1586; + ADDRESS self, size_y, locked_1586; + INDIRECT_F self, fontSize_y, locked_1585; + STOREP_F locked_1585, locked_1586; + GOTO 13; + INDIRECT_V self, fontSize_x, temp_2; + EQ_V temp_2, '0.000000 0.000000 0.000000', locked_1586; + IFNOT locked_1586, 10; + ADDRESS self, fontSize_x, locked_1586; + INDIRECT_F self, size_x, locked_1585; + INDIRECT_S self, text, parm0_x; + CALL1 strlen; + DIV_F locked_1585, return_x, locked_1585; + STOREP_F locked_1585, locked_1586; + ADDRESS self, fontSize_y, locked_1586; + INDIRECT_F self, size_y, locked_1585; + STOREP_F locked_1585, locked_1586; + DONE; +} + +void() Item_Label_Update = asm +{ + CALL0 _IL_Calc; + DONE; +} + +void() Item_Label_Draw = asm +{ +local float locked_1585; +local float locked_1586; +local vector lAligned; +local vector temp_2; +local vector temp_3; +local float temp_5; + INDIRECT_F self, alignment, locked_1586; + EQ_F locked_1586, KEY_GAME, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_F self, pos_x, lAligned_x; + GOTO 27; + INDIRECT_F self, alignment, locked_1586; + BITAND locked_1586, ITEM_ALIGN_CENTER, locked_1586; + IFNOT locked_1586, 11; + INDIRECT_F self, pos_x, locked_1586; + INDIRECT_F self, size_x, locked_1585; + INDIRECT_S self, text, parm0_x; + CALL1 strlen; + INDIRECT_F self, fontSize_x, temp_5; + MUL_F return_x, temp_5, temp_5; + SUB_F locked_1585, temp_5, locked_1585; + DIV_F locked_1585, KEY_MENU, locked_1585; + ADD_F locked_1586, locked_1585, lAligned_x; + GOTO 14; + INDIRECT_F self, alignment, locked_1586; + BITAND locked_1586, ITEM_ALIGN_RIGHT, locked_1586; + IFNOT locked_1586, 10; + INDIRECT_F self, pos_x, locked_1586; + INDIRECT_F self, size_x, locked_1585; + ADD_F locked_1586, locked_1585, locked_1586; + INDIRECT_S self, text, parm0_x; + CALL1 strlen; + INDIRECT_F self, fontSize_x, locked_1585; + MUL_F return_x, locked_1585, locked_1585; + SUB_F locked_1586, locked_1585, lAligned_x; + GOTO 2; + INDIRECT_F self, pos_x, lAligned_x; + INDIRECT_F self, pos_y, lAligned_y; + INDIRECT_S self, text, locked_1586; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, color_x, temp_3; + INDIRECT_F self, alpha, locked_1585; + INDIRECT_F self, drawFlag, temp_5; + STORE_V lAligned, parm0; + STORE_F locked_1586, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1585, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawString; + DONE; +} + +void() Item_Label_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Label_Spawn = asm +{ +local float temp_0; +local float temp_1; +local float temp_5; + INDIRECT_F self, flag, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 5; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_DRAWUPDATEONLY, temp_1; + STOREP_F temp_1, temp_0; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityZone; + CALL0 _IL_Calc; + INDIRECT_F self, alignment, temp_0; + BITAND temp_0, ITEM_ALIGN_FIX_CENTER, temp_0; + IFNOT temp_0, 8; + ADDRESS self, pos_x, temp_0; + INDIRECT_F self, pos_x, temp_1; + INDIRECT_F self, size_x, temp_5; + DIV_F temp_5, KEY_MENU, temp_5; + SUB_F temp_1, temp_5, temp_1; + STOREP_F temp_1, temp_0; + GOTO 9; + INDIRECT_F self, alignment, temp_0; + BITAND temp_0, ITEM_ALIGN_FIX_LEFT, temp_0; + IFNOT temp_0, 6; + ADDRESS self, pos_x, temp_0; + INDIRECT_F self, pos_x, temp_1; + INDIRECT_F self, size_x, temp_5; + SUB_F temp_1, temp_5, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Label_Destroy, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Label_Draw, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_Label_Update, temp_0; + DONE; +} + +void () _IML_Calc; +void() _IML_Calc = asm +{ +local vector lLine; +local float lLineNumber; +local float lMaxWidth; +local float temp_0; +local float temp_1; + STORE_F KEY_GAME, lMaxWidth; + STORE_F KEY_GAME, lLineNumber; + STORE_V '0.000000 0.000000 0.000000', lLine; + INDIRECT_F self, wrap, temp_0; + IFNOT temp_0, 9; + INDIRECT_S self, text, temp_0; + INDIRECT_F self, wrap, temp_1; + STORE_F temp_0, parm0_x; + STORE_V lLine, parm1; + STORE_F temp_1, parm2_x; + CALL3 Util_GetEndOfWrappedLine; + STORE_V return, lLine; + GOTO 5; + INDIRECT_S self, text, parm0_x; + STORE_V lLine, parm1; + CALL2 Util_GetEndOfLine; + STORE_V return, lLine; + ADD_F lLineNumber, FILE_APPEND, lLineNumber; + STORE_F lMaxWidth, parm0_x; + STORE_F lLine_z, parm1_x; + CALL2 max; + STORE_F return_x, lMaxWidth; + NE_F lLine_x, lLine_y, temp_0; + IF temp_0, -20; + ADDRESS self, size_x, temp_0; + INDIRECT_F self, fontSize_x, temp_1; + MUL_F lMaxWidth, temp_1, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, size_y, temp_0; + INDIRECT_F self, fontSize_y, temp_1; + MUL_F lLineNumber, temp_1, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +void (vector, string) _IML_DrawLine; +void(vector pPosition, string pText) _IML_DrawLine = asm +{ +local float locked_1585; +local float locked_1586; +local vector temp_2; +local vector temp_3; +local float temp_5; + INDIRECT_F self, alignment, locked_1586; + EQ_F locked_1586, ITEM_ALIGN_CENTER, locked_1586; + IFNOT locked_1586, 11; + INDIRECT_F self, pos_x, locked_1586; + INDIRECT_F self, size_x, locked_1585; + STORE_F pText, parm0_x; + CALL1 strlen; + INDIRECT_F self, fontSize_x, temp_5; + MUL_F return_x, temp_5, temp_5; + SUB_F locked_1585, temp_5, locked_1585; + DIV_F locked_1585, KEY_MENU, locked_1585; + ADD_F locked_1586, locked_1585, pPosition_x; + GOTO 14; + INDIRECT_F self, alignment, locked_1586; + EQ_F locked_1586, ITEM_ALIGN_RIGHT, locked_1586; + IFNOT locked_1586, 10; + INDIRECT_F self, pos_x, locked_1586; + INDIRECT_F self, size_x, locked_1585; + ADD_F locked_1586, locked_1585, locked_1586; + STORE_F pText, parm0_x; + CALL1 strlen; + INDIRECT_F self, fontSize_x, locked_1585; + MUL_F return_x, locked_1585, locked_1585; + SUB_F locked_1586, locked_1585, pPosition_x; + GOTO 2; + INDIRECT_F self, pos_x, pPosition_x; + INDIRECT_V self, fontSize_x, temp_2; + INDIRECT_V self, color_x, temp_3; + INDIRECT_F self, alpha, locked_1586; + INDIRECT_F self, drawFlag, locked_1585; + STORE_V pPosition, parm0; + STORE_F pText, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F locked_1586, parm4_x; + STORE_F locked_1585, parm5_x; + CALL6 Menu_DrawString; + DONE; +} + +void() Item_MultiLabel_Draw = asm +{ +local vector lLine; +local vector lPosition; +local float temp_0; +local float temp_1; + INDIRECT_F self, pos_y, lPosition_y; + STORE_V '0.000000 0.000000 0.000000', lLine; + INDIRECT_F self, wrap, temp_0; + IFNOT temp_0, 9; + INDIRECT_S self, text, temp_0; + INDIRECT_F self, wrap, temp_1; + STORE_F temp_0, parm0_x; + STORE_V lLine, parm1; + STORE_F temp_1, parm2_x; + CALL3 Util_GetEndOfWrappedLine; + STORE_V return, lLine; + GOTO 5; + INDIRECT_S self, text, parm0_x; + STORE_V lLine, parm1; + CALL2 Util_GetEndOfLine; + STORE_V return, lLine; + INDIRECT_S self, text, temp_0; + SUB_F lLine_x, lLine_z, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STORE_F temp_0, parm0_x; + STORE_F temp_1, parm1_x; + STORE_F lLine_z, parm2_x; + CALL3 substring; + STORE_V lPosition, parm0; + STORE_F return_x, parm1_x; + CALL2 _IML_DrawLine; + INDIRECT_F self, fontSize_y, temp_0; + ADD_F lPosition_y, temp_0, lPosition_y; + NE_F lLine_x, lLine_y, temp_0; + IF temp_0, -27; + DONE; +} + +void() Item_MultiLabel_Update = asm +{ +local float temp_0; +local vector temp_2; + INDIRECT_V self, size_x, temp_2; + EQ_V temp_2, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 2; + CALL0 _IML_Calc; + DONE; +} + +void() Item_MultiLabel_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_MultiLabel_Spawn = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_F self, flag, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 5; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_DRAWUPDATEONLY, temp_1; + STOREP_F temp_1, temp_0; + STORE_F self, parm0_x; + STORE_F text, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_MultiLabel_Update; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_MultiLabel_Destroy, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_MultiLabel_Draw, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_MultiLabel_Update, temp_0; + DONE; +} + +void() Item_Picture_Draw = asm +{ +local float temp_0; +local float temp_1; +local vector temp_2; +local vector temp_3; +local vector temp_4; +local float temp_5; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_S self, picture, temp_0; + INDIRECT_V self, size_x, temp_3; + INDIRECT_V self, color_x, temp_4; + INDIRECT_F self, alpha, temp_1; + INDIRECT_F self, drawFlag, temp_5; + STORE_V temp_2, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_3, parm2; + STORE_V temp_4, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawPicture; + DONE; +} + +void() Item_Picture_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Picture_Spawn = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_S self, picture, temp_0; + NOT_S temp_0, temp_0; + IFNOT temp_0, 4; + STORE_F self, parm0_x; + CALL1 Menu_DeleteAfterFrame; + RETURN offset_0; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, picture, parm0_x; + CALL1 Gfx_Precache; + INDIRECT_F self, flag, temp_0; + EQ_F temp_0, KEY_GAME, temp_0; + IFNOT temp_0, 5; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_NOSELECT, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Picture_Destroy, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Picture_Draw, temp_0; + DONE; +} + +void() Item_Rect_Draw = asm +{ +local float temp_0; +local float temp_1; +local vector temp_2; +local vector temp_3; +local vector temp_4; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, size_x, temp_3; + INDIRECT_V self, color_x, temp_4; + INDIRECT_F self, alpha, temp_0; + INDIRECT_F self, drawFlag, temp_1; + STORE_V temp_2, parm0; + STORE_V temp_3, parm1; + STORE_V temp_4, parm2; + STORE_F temp_0, parm3_x; + STORE_F temp_1, parm4_x; + CALL5 Menu_Fill; + DONE; +} + +void() Item_Rect_Spawn = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_NOSELECT, temp_1; + STOREP_F temp_1, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Rect_Draw, temp_0; + DONE; +} + +float () _IS_GetValue; +float() _IS_GetValue = asm +{ +local entity lLink; +local float lValue; +local float temp_0; +local float temp_1; +local float temp_5; + INDIRECT_E self, _target, temp_0; + IF temp_0, 2; + RETURN KEY_GAME; + INDIRECT_E self, _target, lLink; + STORE_F lLink, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_F lLink, maxValue, temp_0; + INDIRECT_F lLink, minValue, temp_1; + LE temp_0, temp_1, temp_0; + IFNOT temp_0, 3; + STORE_F KEY_GAME, lValue; + GOTO 8; + INDIRECT_F lLink, _realValue, temp_0; + INDIRECT_F lLink, minValue, temp_1; + SUB_F temp_0, temp_1, temp_0; + INDIRECT_F lLink, maxValue, temp_1; + INDIRECT_F lLink, minValue, temp_5; + SUB_F temp_1, temp_5, temp_1; + DIV_F temp_0, temp_1, lValue; + RETURN lValue; + DONE; +} + +void(float pSelect, float pUser) Item_Slider_Select = asm +{ +local float temp_0; + BITAND pSelect, pUser, temp_0; + IFNOT temp_0, 3; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Play; + DONE; +} + +void() Item_Slider_Draw = asm +{ +local vector lSliderPos; +local float lValue; +local float temp_0; +local float temp_1; +local vector temp_2; +local vector temp_3; +local vector temp_4; +local float temp_5; +local float temp_6; + CALL0 _IS_GetValue; + STORE_F return_x, lValue; + INDIRECT_F self, pos_x, temp_0; + INDIRECT_F self, size_x, temp_1; + INDIRECT_F self, proportions_x, temp_5; + INDIRECT_F self, proportions_y, temp_6; + MUL_F lValue, temp_6, temp_6; + ADD_F temp_5, temp_6, temp_5; + MUL_F temp_1, temp_5, temp_1; + ADD_F temp_0, temp_1, temp_0; + INDIRECT_F self, sizeSlider_x, temp_1; + MUL_F lValue, temp_1, temp_1; + SUB_F temp_0, temp_1, lSliderPos_x; + INDIRECT_F self, pos_y, temp_0; + INDIRECT_F self, size_y, temp_1; + INDIRECT_F self, sizeSlider_y, temp_5; + SUB_F temp_1, temp_5, temp_1; + INDIRECT_F self, direction_y, temp_5; + INDIRECT_F self, direction_x, temp_6; + SUB_F temp_5, temp_6, temp_5; + MUL_F temp_5, lValue, temp_5; + SUB_F FILE_APPEND, temp_5, temp_5; + INDIRECT_F self, direction_x, temp_6; + SUB_F temp_5, temp_6, temp_5; + MUL_F temp_1, temp_5, temp_1; + ADD_F temp_0, temp_1, lSliderPos_y; + EQ_E Menu_ActiveItem, self, temp_0; + IFNOT temp_0, 27; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_S self, picture, temp_0; + INDIRECT_V self, size_x, temp_3; + INDIRECT_V self, colorSelected_x, temp_4; + INDIRECT_F self, alphas_y, temp_1; + INDIRECT_F self, drawFlags_y, temp_5; + STORE_V temp_2, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_3, parm2; + STORE_V temp_4, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawPicture; + INDIRECT_S self, pictureSlider, temp_0; + INDIRECT_V self, sizeSlider_x, temp_2; + INDIRECT_V self, colorSelected_x, temp_3; + INDIRECT_F self, alphas_y, temp_1; + INDIRECT_F self, drawFlags_y, temp_5; + STORE_V lSliderPos, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawPicture; + GOTO 26; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_S self, picture, temp_0; + INDIRECT_V self, size_x, temp_3; + INDIRECT_V self, color_x, temp_4; + INDIRECT_F self, alphas_x, temp_1; + INDIRECT_F self, drawFlags_x, temp_5; + STORE_V temp_2, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_3, parm2; + STORE_V temp_4, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawPicture; + INDIRECT_S self, pictureSlider, temp_0; + INDIRECT_V self, sizeSlider_x, temp_2; + INDIRECT_V self, color_x, temp_3; + INDIRECT_F self, alphas_x, temp_1; + INDIRECT_F self, drawFlags_x, temp_5; + STORE_V lSliderPos, parm0; + STORE_F temp_0, parm1_x; + STORE_V temp_2, parm2; + STORE_V temp_3, parm3; + STORE_F temp_1, parm4_x; + STORE_F temp_5, parm5_x; + CALL6 Menu_DrawPicture; + DONE; +} + +void (float) _IS_Change; +void(float pValue) _IS_Change = asm +{ +local float temp_0; +local float temp_1; + LT pValue, KEY_GAME, temp_0; + IFNOT temp_0, 4; + INDIRECT_S self, soundDecrease, parm0_x; + CALL1 Sound_Play; + GOTO 3; + INDIRECT_S self, soundIncrease, parm0_x; + CALL1 Sound_Play; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + ADD_F temp_1, pValue, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + CALL0 CtCall_Action; + DONE; +} + +float(float pKey, float pAscii) Item_Slider_Key = asm +{ +local float lValue; +local float lPos; +local float temp_0; +local float temp_1; +local vector temp_2; +local vector temp_3; +local float temp_5; + INDIRECT_E self, _target, temp_0; + IF temp_0, 2; + RETURN KEY_GAME; + GOTO 73; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, stepValue, temp_0; + SUB_F KEY_GAME, temp_0, parm0_x; + CALL1 _IS_Change; + RETURN FILE_APPEND; + GOTO 73; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, stepValue, parm0_x; + CALL1 _IS_Change; + RETURN FILE_APPEND; + GOTO 68; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, size_x, temp_3; + STORE_V Menu_Cursor_Position, parm0; + STORE_V temp_2, parm1; + STORE_V temp_3, parm2; + CALL3 Util_InRect; + IF return_x, 2; + RETURN KEY_GAME; + INDIRECT_F self, pos_x, temp_0; + SUB_F Menu_Cursor_Position_x, temp_0, temp_0; + INDIRECT_F self, size_x, temp_1; + DIV_F temp_0, temp_1, lPos; + INDIRECT_F self, proportions_x, temp_0; + LE lPos, temp_0, temp_0; + IFNOT temp_0, 6; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, stepValue, temp_0; + SUB_F KEY_GAME, temp_0, parm0_x; + CALL1 _IS_Change; + GOTO 41; + INDIRECT_F self, proportions_x, temp_0; + INDIRECT_F self, proportions_y, temp_1; + ADD_F temp_0, temp_1, temp_0; + LE lPos, temp_0, temp_0; + IFNOT temp_0, 2; + INDIRECT_F self, proportions_y, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 30; + INDIRECT_F self, pos_x, temp_0; + SUB_F Menu_Cursor_Position_x, temp_0, temp_0; + INDIRECT_F self, sizeSlider_x, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + SUB_F temp_0, temp_1, temp_0; + INDIRECT_F self, size_x, temp_1; + INDIRECT_F self, proportions_x, temp_5; + MUL_F temp_1, temp_5, temp_1; + SUB_F temp_0, temp_1, lValue; + INDIRECT_F self, size_x, temp_0; + INDIRECT_F self, proportions_y, temp_1; + MUL_F temp_0, temp_1, temp_0; + INDIRECT_F self, sizeSlider_x, temp_1; + SUB_F temp_0, temp_1, temp_0; + DIV_F lValue, temp_0, lValue; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, maxValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + SUB_F temp_0, temp_1, temp_0; + MUL_F lValue, temp_0, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + ADD_F temp_0, temp_1, lValue; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, _realValue, temp_0; + SUB_F lValue, temp_0, parm0_x; + CALL1 _IS_Change; + GOTO 4; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, stepValue, parm0_x; + CALL1 _IS_Change; + RETURN FILE_APPEND; + EQ_F pKey, K_LEFTARROW, temp_0; + IF temp_0, -73; + EQ_F pKey, K_RIGHTARROW, temp_0; + IF temp_0, -69; + EQ_F pKey, K_MOUSE1, temp_0; + IF temp_0, -66; + RETURN KEY_GAME; + DONE; +} + +void() Item_Slider_Destroy = asm +{ + CALL0 CtCall_Destroy; + CALL0 Item_DataUser_Destroy; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F pictureSlider, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundIncrease, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F soundDecrease, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Slider_Spawn = asm +{ +local float locked_1292; +local float temp_0; + STORE_F self, parm0_x; + STORE_F picture, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F pictureSlider, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundSelected, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundIncrease, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F soundDecrease, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_DataUser_Init; + INDIRECT_S self, picture, parm0_x; + CALL1 Gfx_Precache; + INDIRECT_S self, pictureSlider, parm0_x; + CALL1 Gfx_Precache; + INDIRECT_S self, soundSelected, parm0_x; + CALL1 Sound_Precache; + INDIRECT_S self, soundIncrease, parm0_x; + CALL1 Sound_Precache; + INDIRECT_S self, soundDecrease, parm0_x; + CALL1 Sound_Precache; + INDIRECT_V self, size_x, locked_1292; + EQ_V locked_1292, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 5; + ADDRESS self, size_x, locked_1292; + INDIRECT_S self, picture, parm0_x; + CALL1 Gfx_GetImageSize; + STOREP_V return_x, locked_1292; + INDIRECT_V self, sizeSlider_x, locked_1292; + EQ_V locked_1292, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 5; + ADDRESS self, sizeSlider_x, locked_1292; + INDIRECT_S self, pictureSlider, parm0_x; + CALL1 Gfx_GetImageSize; + STOREP_V return_x, locked_1292; + ADDRESS self, _reinit, temp_0; + STOREP_FNC CtCall_Reinit, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Slider_Destroy, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_Slider_Key, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_Slider_Draw, temp_0; + ADDRESS self, _select, temp_0; + STOREP_FNC Item_Slider_Select, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_DataUser_Update, temp_0; + CALL0 CtCall_Init; + DONE; +} + +void() Item_ValueButton_Update = asm +{ +local float temp_0; +local vector temp_2; + CALL0 Item_DataUser_Update; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_GET, parm1_x; + CALL2 Raise_DataEvent; + INDIRECT_E self, _target, temp_0; + INDIRECT_S temp_0, value, temp_0; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 String_EntitySet; + ADDRESS self, size_x, temp_2_x; + STOREP_V '0.000000 0.000000 0.000000', temp_2; + CALL0 Item_Button_Update; + DONE; +} + +void() Item_ValueButton_Destroy = asm +{ + CALL0 Item_DataUser_Destroy; + CALL0 Item_Button_Destroy; + DONE; +} + +void() Item_ValueButton_Spawn = asm +{ +local float temp_0; + CALL0 Item_DataUser_Init; + CALL0 Item_Button_Spawn; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_ValueButton_Destroy, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_ValueButton_Update, temp_0; + DONE; +} + +float(float pKey, float pAscii) Item_FloatingArea_Key = asm +{ +local float temp_0; +local float temp_1; + EQ_F pKey, K_MOUSE1, temp_0; + IF temp_0, 2; + EQ_F pKey, K_ENTER, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 11; + INDIRECT_F self, _state, temp_0; + NE_F temp_0, ITEM_STATE_PRESSED, temp_0; + IFNOT temp_0, 4; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_PRESSED, temp_0; + GOTO 3; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_NORMAL, temp_0; + RETURN FILE_APPEND; + GOTO 5; + EQ_F pKey, K_ESCAPE, temp_0; + IFNOT temp_0, 3; + ADDRESS self, _state, temp_0; + STOREP_F ITEM_STATE_NORMAL, temp_0; + RETURN KEY_GAME; + DONE; +} + +void() Item_FloatingArea_Update = asm +{ +local float locked_1586; +local float temp_1; +local vector temp_2; +local vector temp_3; + INDIRECT_S self, target, locked_1586; + NOT_S locked_1586, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, _state, locked_1586; + STOREP_F ITEM_STATE_NORMAL, locked_1586; + RETURN offset_0; + GOTO 10; + INDIRECT_S self, target, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_S temp_1, name, temp_1; + NE_S locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, _target, locked_1586; + INDIRECT_S self, target, parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1586; + INDIRECT_F self, _state, locked_1586; + EQ_F locked_1586, ITEM_STATE_PRESSED, locked_1586; + IFNOT locked_1586, 8; + INDIRECT_E self, _target, locked_1586; + ADDRESS locked_1586, pos_x, temp_2_x; + INDIRECT_E self, _target, locked_1586; + INDIRECT_V locked_1586, pos_x, temp_3; + ADD_V temp_3, Cursor_Relative, temp_3; + STOREP_V temp_3_x, temp_2; + GOTO 5; + EQ_E Menu_ActiveItem, self, locked_1586; + IFNOT locked_1586, 3; + ADDRESS self, _state, locked_1586; + STOREP_F ITEM_STATE_SELECTED, locked_1586; + DONE; +} + +void () Item_FloatingArea_Destroy; +void() Item_FloatingArea_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void (float, float) Item_FloatingArea_Select; +void(float pSelect, float pUser) Item_FloatingArea_Select = asm +{ +local float temp_0; +local float temp_1; + NOT_F pSelect, temp_0; + IFNOT temp_0, 3; + INDIRECT_F self, _state, temp_1; + EQ_F temp_1, ITEM_STATE_PRESSED, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + STORE_F self, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Menu_CorrectSelection; + DONE; +} + +void() Item_FloatingArea_Spawn = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_CHILDDRAWUPDATEONLY, temp_1; + STOREP_F temp_1, temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_FloatingArea_Update, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_FloatingArea_Key, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_FloatingArea_Destroy, temp_0; + ADDRESS self, _select, temp_0; + STOREP_FNC Item_FloatingArea_Select, temp_0; + DONE; +} + +float(float pKey, float pAscii) Item_SwitchButton_Key = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_E self, _target, temp_0; + IF temp_0, 2; + RETURN KEY_GAME; + EQ_F pKey, K_SPACE, temp_0; + IF temp_0, 2; + EQ_F pKey, K_ENTER, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + EQ_F pKey, K_MOUSE1, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + EQ_F pKey, K_RIGHTARROW, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 28; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Play; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + ADD_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, maxValue, temp_1; + GT temp_0, temp_1, temp_0; + IFNOT temp_0, 6; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + CALL0 CtCall_Action; + RETURN FILE_APPEND; + GOTO 35; + EQ_F pKey, K_BACKSPACE, temp_0; + IF temp_0, 2; + EQ_F pKey, K_MOUSE2, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + EQ_F pKey, K_LEFTARROW, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 27; + INDIRECT_S self, soundPressed, parm0_x; + CALL1 Sound_Play; + ADDRESS self, _presstime, temp_0; + STOREP_F Timer_Time, temp_0; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, _realValue, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, temp_0; + INDIRECT_F temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, minValue, temp_1; + LT temp_0, temp_1, temp_0; + IFNOT temp_0, 6; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, _realValue, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, maxValue, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_E self, _target, parm0_x; + STORE_F ITEM_DATALINK_SET, parm1_x; + CALL2 Raise_DataEvent; + CALL0 CtCall_Action; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Item_SwitchButton_Spawn = asm +{ +local float temp_0; + CALL0 Item_ValueButton_Spawn; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_SwitchButton_Key, temp_0; + DONE; +} + +float _VSB_UP_HEIGHT; +float _VSB_DOWN_HEIGHT; +float _VSB_PRECISION; +float _VSB_MINHEIGHT; +float _VSB_CLICKAREA_COLOR_x; +float _VSB_CLICKAREA_COLOR_y; +float _VSB_CLICKAREA_COLOR_z; +vector _VSB_CLICKAREA_COLOR; +float _VSB_SCOLLER_COLOR_x; +float _VSB_SCOLLER_COLOR_y; +float _VSB_SCOLLER_COLOR_z; +vector _VSB_SCOLLER_COLOR; +float _VSB_SCROLLAREA_COLOR_x; +float _VSB_SCROLLAREA_COLOR_y; +float _VSB_SCROLLAREA_COLOR_z; +vector _VSB_SCROLLAREA_COLOR; +float () _IVSB_GetSizeOfScroller; +float() _IVSB_GetSizeOfScroller = asm +{ +local float lScrollerSize; +local float lTotalSize; +local float lVisibleSize; +local float lScrollerRange; +local float temp_0; + INDIRECT_E self, _target, temp_0; + INDIRECT_E temp_0, _child, temp_0; + INDIRECT_F temp_0, size_y, lTotalSize; + INDIRECT_F self, size_y, lVisibleSize; + INDIRECT_F self, size_y, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, lScrollerRange; + MUL_F lVisibleSize, lScrollerRange, temp_0; + DIV_F temp_0, lTotalSize, lScrollerSize; + STORE_F _VSB_MINHEIGHT, parm0_x; + STORE_F lScrollerSize, parm1_x; + CALL2 max; + STORE_F return_x, lScrollerSize; + RETURN lScrollerSize; + DONE; +} + +void() Item_VScrollBar_Draw = asm +{ +local vector lSize; +local vector lPosition; +local float temp_0; +local float temp_1; +local vector temp_2; +local float temp_5; +local float temp_6; + INDIRECT_E self, _target, temp_0; + EQ_E temp_0, null_entity, temp_0; + IFNOT temp_0, 2; + RETURN offset_0; + INDIRECT_V self, pos_x, lPosition; + INDIRECT_V self, size_x, lSize; + STORE_F _VSB_UP_HEIGHT, lSize_y; + STORE_V lPosition, parm0; + STORE_V lSize, parm1; + STORE_V _VSB_CLICKAREA_COLOR, parm2; + STORE_F FILE_APPEND, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Fill; + INDIRECT_F self, pos_y, temp_0; + ADD_F temp_0, _VSB_UP_HEIGHT, lPosition_y; + INDIRECT_F self, size_y, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, lSize_y; + STORE_V lPosition, parm0; + STORE_V lSize, parm1; + STORE_V _VSB_SCROLLAREA_COLOR, parm2; + STORE_F FILE_APPEND, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Fill; + INDIRECT_F self, pos_y, temp_0; + INDIRECT_F self, size_y, temp_1; + ADD_F temp_0, temp_1, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, lPosition_y; + STORE_F _VSB_UP_HEIGHT, lSize_y; + STORE_V lPosition, parm0; + STORE_V lSize, parm1; + STORE_V _VSB_CLICKAREA_COLOR, parm2; + STORE_F FILE_APPEND, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Fill; + CALL0 _IVSB_GetSizeOfScroller; + STORE_F return_x, lSize_y; + INDIRECT_F self, pos_y, temp_0; + ADD_F temp_0, _VSB_UP_HEIGHT, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, origin_y, temp_1; + INDIRECT_F self, size_y, temp_5; + SUB_F temp_5, _VSB_UP_HEIGHT, temp_5; + SUB_F temp_5, _VSB_UP_HEIGHT, temp_5; + SUB_F temp_5, lSize_y, temp_5; + MUL_F temp_1, temp_5, temp_1; + INDIRECT_E self, _target, temp_5; + INDIRECT_E temp_5, _child, temp_5; + INDIRECT_F temp_5, size_y, temp_5; + INDIRECT_F self, size_y, temp_6; + SUB_F temp_5, temp_6, temp_5; + DIV_F temp_1, temp_5, temp_1; + SUB_F temp_0, temp_1, lPosition_y; + STORE_V lPosition, parm0; + STORE_V lSize, parm1; + STORE_V _VSB_SCOLLER_COLOR, parm2; + STORE_F FILE_APPEND, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Fill; + DONE; +} + +void () _IVSB_RangeBound; +void() _IVSB_RangeBound = asm +{ +local float locked_1586; +local float temp_1; +local float temp_5; + INDIRECT_E self, _target, locked_1586; + ADDRESS locked_1586, origin_y, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_E temp_1, _child, temp_1; + INDIRECT_F temp_1, size_y, temp_1; + INDIRECT_F self, size_y, temp_5; + SUB_F temp_1, temp_5, temp_1; + SUB_F KEY_GAME, temp_1, temp_1; + INDIRECT_E self, _target, temp_5; + INDIRECT_F temp_5, origin_y, temp_5; + STORE_F temp_1, parm0_x; + STORE_F temp_5, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 bound; + STOREP_F return_x, locked_1586; + DONE; +} + +void () _IVSB_ScrollUp; +void() _IVSB_ScrollUp = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, origin_y, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, origin_y, temp_1; + ADD_F temp_1, SLIST_SERVERREPLYCOUNT, temp_1; + STOREP_F temp_1, temp_0; + CALL0 _IVSB_RangeBound; + DONE; +} + +void () _IVSB_ScrollDown; +void() _IVSB_ScrollDown = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, origin_y, temp_0; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, origin_y, temp_1; + SUB_F temp_1, SLIST_SERVERREPLYCOUNT, temp_1; + STOREP_F temp_1, temp_0; + CALL0 _IVSB_RangeBound; + DONE; +} + +void (float) _IVSB_MouseSelect; +void(float lLevel) _IVSB_MouseSelect = asm +{ +local float lScrollerSize; +local float lTotalSize; +local float lVisibleSize; +local float lScrollerRange; +local float temp_0; +local float temp_1; +local float temp_5; + INDIRECT_E self, _target, temp_0; + INDIRECT_E temp_0, _child, temp_0; + INDIRECT_F temp_0, size_y, lTotalSize; + INDIRECT_F self, size_y, lVisibleSize; + INDIRECT_F self, size_y, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, lScrollerRange; + CALL0 _IVSB_GetSizeOfScroller; + STORE_F return_x, lScrollerSize; + SUB_F lLevel, _VSB_UP_HEIGHT, temp_0; + DIV_F lScrollerSize, KEY_MENU, temp_1; + SUB_F temp_0, temp_1, lLevel; + INDIRECT_E self, _target, temp_0; + ADDRESS temp_0, origin_y, temp_0; + SUB_F lTotalSize, lVisibleSize, temp_1; + MUL_F lLevel, temp_1, temp_1; + SUB_F lScrollerRange, lScrollerSize, temp_5; + DIV_F temp_1, temp_5, temp_1; + SUB_F KEY_GAME, temp_1, temp_1; + STOREP_F temp_1, temp_0; + CALL0 _IVSB_RangeBound; + DONE; +} + +float(float pKey, float Ascii) Item_VScrollBar_Key = asm +{ +local float lLevel; +local float temp_0; +local vector temp_2; +local vector temp_3; + INDIRECT_E self, _target, temp_0; + EQ_E temp_0, null_entity, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + EQ_F pKey, K_UPARROW, temp_0; + IFNOT temp_0, 4; + CALL0 _IVSB_ScrollUp; + RETURN FILE_APPEND; + GOTO 41; + EQ_F pKey, K_DOWNARROW, temp_0; + IFNOT temp_0, 4; + CALL0 _IVSB_ScrollDown; + RETURN FILE_APPEND; + GOTO 36; + EQ_F pKey, K_MOUSE1, temp_0; + IFNOT temp_0, 25; + INDIRECT_V self, pos_x, temp_2; + INDIRECT_V self, size_x, temp_3; + STORE_V Menu_Cursor_Position, parm0; + STORE_V temp_2, parm1; + STORE_V temp_3, parm2; + CALL3 Util_InRect; + IF return_x, 2; + RETURN KEY_GAME; + INDIRECT_F self, pos_y, temp_0; + SUB_F Menu_Cursor_Position_y, temp_0, lLevel; + LT lLevel, _VSB_UP_HEIGHT, temp_0; + IFNOT temp_0, 3; + CALL0 _IVSB_ScrollUp; + GOTO 9; + INDIRECT_F self, size_y, temp_0; + SUB_F temp_0, _VSB_UP_HEIGHT, temp_0; + GE lLevel, temp_0, temp_0; + IFNOT temp_0, 3; + CALL0 _IVSB_ScrollDown; + GOTO 3; + STORE_F lLevel, parm0_x; + CALL1 _IVSB_MouseSelect; + RETURN FILE_APPEND; + GOTO 10; + EQ_F pKey, K_MWHEELUP, temp_0; + IFNOT temp_0, 4; + CALL0 _IVSB_ScrollUp; + RETURN FILE_APPEND; + GOTO 5; + EQ_F pKey, K_MWHEELDOWN, temp_0; + IFNOT temp_0, 3; + CALL0 _IVSB_ScrollDown; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Item_VScrollBar_Update = asm +{ +local float locked_1586; +local float temp_1; + INDIRECT_S self, target, locked_1586; + EQ_S locked_1586, "", locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, _target, locked_1586; + STOREP_ENT null_entity, locked_1586; + GOTO 10; + INDIRECT_S self, target, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_S temp_1, name, temp_1; + NE_S locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, _target, locked_1586; + INDIRECT_S self, target, parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1586; + INDIRECT_E self, _target, locked_1586; + EQ_E locked_1586, null_entity, locked_1586; + IFNOT locked_1586, 2; + RETURN offset_0; + ADDRESS self, size_y, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_F temp_1, size_y, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_F self, size_y, locked_1586; + INDIRECT_E self, _target, temp_1; + INDIRECT_E temp_1, _child, temp_1; + INDIRECT_F temp_1, size_y, temp_1; + GE locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 6; + ADDRESS self, flag, locked_1586; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, locked_1586; + GOTO 8; + INDIRECT_F self, flag, locked_1586; + BITAND locked_1586, FLAG_HIDDEN, locked_1586; + IFNOT locked_1586, 5; + ADDRESS self, flag, locked_1586; + INDIRECT_F self, flag, temp_1; + SUB_F temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, locked_1586; + DONE; +} + +void () Item_VScrollBar_Destroy; +void() Item_VScrollBar_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_VScrollBar_Spawn = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F target, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_VScrollBar_Update; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_VScrollBar_Update, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_VScrollBar_Key, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC Item_VScrollBar_Draw, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_VScrollBar_Destroy, temp_0; + DONE; +} + +void() Item_Cinematic_Destroy = asm +{ +local float temp_0; + INDIRECT_S self, normal, parm0_x; + CALL1 cin_close; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityFree; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Cinematic_Init = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityZone; + STORE_F self, parm0_x; + STORE_F normal, parm1_x; + CALL2 String_EntityZone; + INDIRECT_S self, link, temp_0; + INDIRECT_S self, normal, temp_1; + STORE_F temp_0, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 cin_open; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Cinematic_Destroy, temp_0; + DONE; +} + +void() Item_Cinematic_Loop_Spawn = asm +{ +local float temp_0; + CALL0 Item_Cinematic_Init; + INDIRECT_S self, normal, parm0_x; + STORE_F KEY_MENU, parm1_x; + CALL2 cin_setstate; + DONE; +} + +void() Item_Container_Spawn = asm +{ +local float temp_0; +local float temp_1; + ADDRESS self, flag, temp_0; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +void () Item_Custom_Spawn; +void() Item_Custom_Spawn = asm +{ +local float temp_0; + ADDRESS self, _reinit, temp_0; + STOREP_FNC CtCall_Reinit, temp_0; + ADDRESS self, _destroy, temp_0; + STOREP_FNC CtCall_Destroy, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC CtCall_Key, temp_0; + ADDRESS self, _draw, temp_0; + STOREP_FNC CtCall_Draw, temp_0; + ADDRESS self, _mouseEnter, temp_0; + STOREP_FNC CtCall_MouseEnter, temp_0; + ADDRESS self, _mouseLeave, temp_0; + STOREP_FNC CtCall_MouseLeave, temp_0; + ADDRESS self, _select, temp_0; + STOREP_FNC CtCall_Select, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC CtCall_Update, temp_0; + CALL0 CtCall_Init; + DONE; +} + +void() Item_Link_Update = asm +{ +local float locked_1586; +local float temp_1; + INDIRECT_S self, link, locked_1586; + EQ_S locked_1586, "", locked_1586; + IFNOT locked_1586, 4; + ADDRESS self, _link, locked_1586; + STOREP_ENT null_entity, locked_1586; + GOTO 14; + INDIRECT_S self, link, locked_1586; + INDIRECT_E self, _link, temp_1; + INDIRECT_S temp_1, name, temp_1; + NE_S locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 9; + ADDRESS self, _link, locked_1586; + INDIRECT_S self, link, parm0_x; + CALL1 Menu_GetItem; + STOREP_ENT return_x, locked_1586; + ADDRESS self, flag, locked_1586; + INDIRECT_F self, flag, temp_1; + BITOR temp_1, FLAG_NOSELECT, temp_1; + STOREP_F temp_1, locked_1586; + DONE; +} + +float(float pKey, float pAscii) Item_Link_Key = asm +{ +local float temp_0; + INDIRECT_E self, _link, temp_0; + IFNOT temp_0, 6; + INDIRECT_E self, _link, parm0_x; + STORE_F pKey, parm1_x; + STORE_F pAscii, parm2_x; + CALL3 Raise_Key; + RETURN return_x; + RETURN KEY_GAME; + DONE; +} + +void() Item_Link_MouseEnter = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_E self, _link, temp_0; + IFNOT temp_0, 5; + INDIRECT_E self, _link, temp_1; + INDIRECT_F temp_1, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_NOSELECT, temp_1; + NOT_F temp_1, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + INDIRECT_E self, _link, parm0_x; + STORE_F FILE_APPEND, parm1_x; + CALL2 Menu_Select; + DONE; +} + +float() Item_Link_IsSelected = asm +{ +local float temp_0; + EQ_E Menu_ActiveItem, self, temp_0; + IFNOT temp_0, 2; + RETURN FILE_APPEND; + INDIRECT_E self, _link, temp_0; + IFNOT temp_0, 5; + INDIRECT_E self, _link, temp_0; + EQ_E Menu_ActiveItem, temp_0, temp_0; + RETURN temp_0; + GOTO 2; + RETURN KEY_GAME; + DONE; +} + +void() Item_Link_Destroy = asm +{ + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityFree; + DONE; +} + +void() Item_Link_Init = asm +{ +local float temp_0; + STORE_F self, parm0_x; + STORE_F link, parm1_x; + CALL2 String_EntityZone; + CALL0 Item_Link_Update; + ADDRESS self, _destroy, temp_0; + STOREP_FNC Item_Link_Destroy, temp_0; + ADDRESS self, _key, temp_0; + STOREP_FNC Item_Link_Key, temp_0; + ADDRESS self, _mouseEnter, temp_0; + STOREP_FNC Item_Link_MouseEnter, temp_0; + ADDRESS self, _update, temp_0; + STOREP_FNC Item_Link_MouseEnter, temp_0; + DONE; +} + +void(entity pEntity, void () pPopFunction) Menu_History_Push = asm +{ +local entity lHistory; +local float temp_0; + STORE_FNC Util_NullFunction, Menu_KeyHook; + CALL0 spawn; + STORE_ENT return_x, lHistory; + ADDRESS lHistory, type, temp_0; + STOREP_S "MMANAGER_HISTORY", temp_0; + ADDRESS lHistory, _prev, temp_0; + STOREP_ENT Menu_History, temp_0; + ADDRESS lHistory, _child, temp_0; + STOREP_ENT Menu_ActiveItem, temp_0; + ADDRESS lHistory, _parent, temp_0; + STOREP_ENT Menu_ActiveWindow, temp_0; + ADDRESS lHistory, _next, temp_0; + STOREP_ENT pEntity, temp_0; + ADDRESS lHistory, _destroy, temp_0; + STOREP_FNC pPopFunction, temp_0; + STORE_ENT lHistory, Menu_History; + DONE; +} + +void() Menu_History_Pop = asm +{ +local entity lTemp; +local float temp_0; + EQ_E Menu_History, null_entity, temp_0; + IFNOT temp_0, 2; + RETURN offset_0; + STORE_FNC Util_NullFunction, Menu_KeyHook; + INDIRECT_E Menu_History, _child, Menu_ActiveItem; + INDIRECT_E Menu_History, _parent, Menu_ActiveWindow; + STORE_ENT Menu_History, lTemp; + STORE_F lTemp, parm0_x; + CALL1 Raise_Destroy; + INDIRECT_E Menu_History, _prev, Menu_History; + STORE_F lTemp, parm0_x; + CALL1 remove; + DONE; +} + +float(entity pEntity) Menu_History_Verify = asm +{ +local float temp_0; + EQ_E Menu_History, null_entity, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + INDIRECT_E Menu_History, _next, temp_0; + EQ_E temp_0, pEntity, temp_0; + IFNOT temp_0, 2; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void() Menu_History_Clear = asm +{ +local entity lEntity; +local float temp_0; + STORE_ENT null_entity, lEntity; + STORE_F lEntity, parm0_x; + STORE_F type, parm1_x; + STORE_F "MMANAGER_HISTORY", parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 4; + STORE_F lEntity, parm0_x; + CALL1 remove; + GOTO -9; + STORE_ENT null_entity, Menu_History; + DONE; +} + +void (float, float) _Menu_Process_Debug_Filter; +void(float pMode, float pSelectState) _Menu_Process_Debug_Filter = asm +{ +local float temp_0; +local float temp_1; + IF sys_debug_process, 3; + STORE_F KEY_GAME, _menu_process_filtered; + GOTO 5; + IFNOT sys_debug_process_filter, 3; + BITAND pMode, sys_debug_process_filter, _menu_process_filtered; + GOTO 2; + STORE_F FILE_APPEND, _menu_process_filtered; + EQ_F _menu_process_filtered, MENU_PROCESS_MOUSE, temp_0; + IFNOT temp_0, 2; + EQ_F pSelectState, MENU_SELECT_NEVER, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + STORE_F KEY_GAME, _menu_process_filtered; + DONE; +} + +void() Menu_Process_Setup = asm +{ + STORE_V '0.000000 0.000000 0.000000', Menu_Origin; + STORE_V '0.000000 0.000000 0.000000', Menu_Clip_Position; + STORE_V '0.000000 0.000000 0.000000', Menu_Clip_Size; + DONE; +} + +void (entity) _Menu_Env_LoadClipArea; +void(entity pItem) _Menu_Env_LoadClipArea = asm +{ +local float temp_0; +local float temp_1; +local vector temp_2; + INDIRECT_V pItem, _cache_clip_pos_x, Menu_Clip_Position; + INDIRECT_V pItem, _cache_clip_size_x, Menu_Clip_Size; + IFNOT sys_debug_mgfx, 1; + AND sys_debug_mgfx, _menu_process_filtered, temp_0; + IFNOT temp_0, 14; + STORE_V Menu_Clip_Position, parm0; + CALL1 vtos; + STORE_V Menu_Clip_Size, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F "MGFX Loaded clip area = (", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "; ", parm2_x; + STORE_F temp_1, parm3_x; + STORE_F ") +", parm4_x; + CALL5 print; + DONE; +} + +void (entity) _Menu_Env_LoadOrigin; +void(entity pItem) _Menu_Env_LoadOrigin = asm +{ +local float temp_0; +local vector temp_2; + INDIRECT_V pItem, _cache_origin_x, Menu_Origin; + SUB_V Cursor_Position, Menu_Origin, Menu_Cursor_Position; + IFNOT sys_debug_mgfx, 1; + AND sys_debug_mgfx, _menu_process_filtered, temp_0; + IFNOT temp_0, 7; + STORE_V Menu_Origin, parm0; + CALL1 vtos; + STORE_F "MGFX Loaded org = ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " +", parm2_x; + CALL3 print; + DONE; +} + +void (entity) _Menu_Env_Reload; +void(entity pItem) _Menu_Env_Reload = asm +{ +local float locked_1585; +local float temp_0; +local vector temp_2; +local float temp_5; + INDIRECT_V pItem, _cache_origin_x, Menu_Origin; + SUB_V Cursor_Position, Menu_Origin, Menu_Cursor_Position; + INDIRECT_V pItem, _cache_clip_pos_x, Menu_Clip_Position; + INDIRECT_V pItem, _cache_clip_size_x, Menu_Clip_Size; + IFNOT sys_debug_mgfx, 1; + AND sys_debug_mgfx, _menu_process_filtered, temp_0; + IFNOT temp_0, 21; + STORE_V Menu_Origin, parm0; + CALL1 vtos; + STORE_V Menu_Clip_Position, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, locked_1585; + STORE_F temp_0, return_x; + STORE_V Menu_Clip_Size, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, temp_5; + STORE_F temp_0, return_x; + STORE_F "MGFX Reloaded env for: org = ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "; clip area = (", parm2_x; + STORE_F locked_1585, parm3_x; + STORE_F "; ", parm4_x; + STORE_F temp_5, parm5_x; + STORE_F ") +", parm6_x; + CALL7 print; + DONE; +} + +void () _MGX_SetClipArea; +void() _MGX_SetClipArea = asm +{ +local float temp_0; +local float temp_1; + EQ_V Menu_Clip_Position, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 2; + EQ_V Menu_Clip_Size, '0.000000 0.000000 0.000000', temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 3; + CALL0 Gfx_ResetClipArea; + GOTO 6; + STORE_F Menu_Clip_Position_x, parm0_x; + STORE_F Menu_Clip_Position_y, parm1_x; + STORE_F Menu_Clip_Size_x, parm2_x; + STORE_F Menu_Clip_Size_y, parm3_x; + CALL4 Gfx_SetClipArea; + DONE; +} + +void (entity) _Menu_Env_SetupClipArea; +void(entity pItem) _Menu_Env_SetupClipArea = asm +{ +local vector lSize; +local vector lPos; +local vector lDelta; +local float temp_0; +local float temp_1; +local vector temp_2; + INDIRECT_V pItem, pos_x, lPos; + INDIRECT_V pItem, size_x, lSize; + NE_V lPos, '0.000000 0.000000 0.000000', temp_0; + IF temp_0, 2; + NE_V lSize, '0.000000 0.000000 0.000000', temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 22; + NE_V Menu_Clip_Position, '0.000000 0.000000 0.000000', temp_0; + IF temp_0, 2; + NE_V Menu_Clip_Size, '0.000000 0.000000 0.000000', temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 15; + ADD_V Menu_Origin, lPos, lPos; + STORE_V lPos, parm0; + STORE_V Menu_Clip_Position, parm1; + STORE_V Menu_Clip_Size, parm2; + CALL3 Util_GetClipDelta; + STORE_V return, lDelta; + ADD_V lPos, lDelta, lPos; + SUB_V lSize, lDelta, temp_2; + STORE_V lPos, parm0; + STORE_V temp_2, parm1; + STORE_V Menu_Clip_Position, parm2; + STORE_V Menu_Clip_Size, parm3; + CALL4 Util_ClipRect; + STORE_V return, lSize; + STORE_V lPos, Menu_Clip_Position; + STORE_V lSize, Menu_Clip_Size; + ADDRESS pItem, _cache_clip_pos_x, temp_2_x; + STOREP_V Menu_Clip_Position_x, temp_2; + ADDRESS pItem, _cache_clip_size_x, temp_2_x; + STOREP_V Menu_Clip_Size_x, temp_2; + IFNOT sys_debug_mgfx, 1; + AND sys_debug_mgfx, _menu_process_filtered, temp_0; + IFNOT temp_0, 26; + INDIRECT_V pItem, pos_x, parm0; + CALL1 vtos; + INDIRECT_V pItem, size_x, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F "MGFX Setup clip area: (", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "; ", parm2_x; + STORE_F temp_1, parm3_x; + CALL4 print; + STORE_V Menu_Clip_Position, parm0; + CALL1 vtos; + STORE_V Menu_Clip_Size, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F ") clipped to (", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "; ", parm2_x; + STORE_F temp_1, parm3_x; + STORE_F ") +", parm4_x; + CALL5 print; + DONE; +} + +void (entity) _Menu_Env_SetupOrigin; +void(entity pItem) _Menu_Env_SetupOrigin = asm +{ +local float temp_0; +local vector temp_2; +local vector temp_3; + INDIRECT_V pItem, origin_x, temp_2; + ADD_V Menu_Origin, temp_2, temp_2; + INDIRECT_V pItem, pos_x, temp_3; + ADD_V temp_2, temp_3, Menu_Origin; + ADDRESS pItem, _cache_origin_x, temp_2_x; + STOREP_V Menu_Origin_x, temp_2; + IFNOT sys_debug_mgfx, 1; + AND sys_debug_mgfx, _menu_process_filtered, temp_0; + IFNOT temp_0, 7; + STORE_V Menu_Origin, parm0; + CALL1 vtos; + STORE_F "MGFX Setup org = ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " +", parm2_x; + CALL3 print; + DONE; +} + +void (entity) _Menu_ProcessRunFlag; +void(entity pItem) _Menu_ProcessRunFlag = asm +{ +local entity lChild; +local float temp_0; + IFNOT _menu_process_filtered, 8; + INDIRECT_S pItem, name, temp_0; + STORE_F "R ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 print; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_SetupClipArea; + STORE_F pItem, parm0_x; + CALL1 Menu_SetRunFlag; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_SetupOrigin; + INDIRECT_E pItem, _child, lChild; + IFNOT lChild, 10; + STORE_F pItem, parm0_x; + STORE_F lChild, parm1_x; + CALL2 Menu_InheritRunFlag; + STORE_F lChild, parm0_x; + CALL1 _Menu_ProcessRunFlag; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_Reload; + INDIRECT_E lChild, _next, lChild; + GOTO -9; + DONE; +} + +void (entity) _Menu_ProcessDraw; +void(entity pItem) _Menu_ProcessDraw = asm +{ +local entity lChild; +local float temp_0; + IFNOT _menu_process_filtered, 8; + INDIRECT_S pItem, name, temp_0; + STORE_F "D ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " ", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, 96.000000, temp_0; + NOT_F temp_0, temp_0; + IF temp_0, 5; + IFNOT _menu_process_filtered, 3; + STORE_F "Failed (Not visible) +", parm0_x; + CALL1 print; + RETURN offset_0; + IFNOT _menu_process_filtered, 3; + STORE_F " +", parm0_x; + CALL1 print; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadClipArea; + CALL0 _MGX_SetClipArea; + STORE_F pItem, parm0_x; + CALL1 Raise_Draw; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadOrigin; + INDIRECT_E pItem, _child, lChild; + IFNOT lChild, 8; + STORE_F lChild, parm0_x; + CALL1 _Menu_ProcessDraw; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_Reload; + CALL0 _MGX_SetClipArea; + INDIRECT_E lChild, _next, lChild; + GOTO -7; + DONE; +} + +void (entity) _Menu_ProcessUpdate; +void(entity pItem) _Menu_ProcessUpdate = asm +{ +local entity lChild; +local float temp_0; + IFNOT _menu_process_filtered, 8; + INDIRECT_S pItem, name, temp_0; + STORE_F "U ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " ", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWONLY, temp_0; + IFNOT temp_0, 5; + IFNOT _menu_process_filtered, 3; + STORE_F "Failed (RUNFLAG_CHILDDRAWONLY) +", parm0_x; + CALL1 print; + RETURN offset_0; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadClipArea; + STORE_F pItem, parm0_x; + CALL1 Raise_Update; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_HIDDEN, temp_0; + IFNOT temp_0, 5; + IFNOT _menu_process_filtered, 3; + STORE_F "Aborted branching (RUNFLAG_HIDDEN) +", parm0_x; + CALL1 print; + RETURN offset_0; + IFNOT _menu_process_filtered, 3; + STORE_F " +", parm0_x; + CALL1 print; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadOrigin; + INDIRECT_E pItem, _child, lChild; + IFNOT lChild, 7; + STORE_F lChild, parm0_x; + CALL1 _Menu_ProcessUpdate; + STORE_F lChild, parm0_x; + CALL1 _Menu_Env_Reload; + INDIRECT_E lChild, _next, lChild; + GOTO -6; + DONE; +} + +void (entity, bool) _Menu_ProcessMouse; +void(entity pItem, bool pSelectMode) _Menu_ProcessMouse = asm +{ +local float locked_1586; +local entity lChild; +local float temp_1; +local float temp_5; + IFNOT _menu_process_filtered, 21; + STORE_F "M ", parm0_x; + CALL1 print; + GOTO 10; + STORE_F "S ", parm0_x; + CALL1 print; + GOTO 12; + STORE_F "A ", parm0_x; + CALL1 print; + GOTO 9; + STORE_F "N ", parm0_x; + CALL1 print; + GOTO 6; + IFNOT pSelectMode, -9; + EQ_F pSelectMode, MENU_SELECT_ALWAYS, locked_1586; + IF locked_1586, -8; + EQ_F pSelectMode, MENU_SELECT_NEVER, locked_1586; + IF locked_1586, -7; + INDIRECT_S pItem, name, parm0_x; + STORE_F " ", parm1_x; + CALL2 print; + INDIRECT_F pItem, _runFlag, locked_1586; + BITAND locked_1586, 96.000000, locked_1586; + NOT_F locked_1586, locked_1586; + IF locked_1586, 5; + IFNOT _menu_process_filtered, 3; + STORE_F "Failed (Not visible) +", parm0_x; + CALL1 print; + RETURN offset_0; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadClipArea; + STORE_V Cursor_Position, parm0; + STORE_V Menu_Clip_Position, parm1; + STORE_V Menu_Clip_Size, parm2; + CALL3 Util_InRect; + IF return_x, 5; + EQ_V Menu_Clip_Position, '0.000000 0.000000 0.000000', locked_1586; + IFNOT locked_1586, 2; + EQ_V Menu_Clip_Size, '0.000000 0.000000 0.000000', temp_1; + AND locked_1586, temp_1, locked_1586; + OR return_x, locked_1586, locked_1586; + IFNOT locked_1586, 34; + ADDRESS pItem, _runFlag, locked_1586; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_MOUSEINAREA, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_F pItem, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_HADMOUSE, locked_1586; + NOT_F locked_1586, locked_1586; + IFNOT locked_1586, 3; + STORE_F pItem, parm0_x; + CALL1 Menu_HasEvents; + AND locked_1586, return_x, locked_1586; + IFNOT locked_1586, 3; + STORE_F pItem, parm0_x; + CALL1 Raise_MouseEnter; + NE_F pSelectMode, MENU_SELECT_NEVER, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_F pItem, flag, temp_1; + BITAND temp_1, FLAG_SEALOFFMOUSE, temp_1; + AND locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 2; + STORE_ENT null_entity, Menu_ActiveItem; + EQ_F pSelectMode, MENU_SELECT_ALWAYS, locked_1586; + IF locked_1586, 7; + INDIRECT_F pItem, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_NOSELECT, temp_1; + NOT_F temp_1, temp_1; + IFNOT temp_1, 2; + EQ_F pSelectMode, MENU_SELECT_SELECTABLE, temp_5; + AND temp_1, temp_5, temp_1; + OR locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 2; + STORE_ENT pItem, Menu_ActiveItem; + GOTO 14; + INDIRECT_F pItem, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_HADMOUSE, locked_1586; + IFNOT locked_1586, 3; + STORE_F pItem, parm0_x; + CALL1 Menu_HasEvents; + AND locked_1586, return_x, locked_1586; + IFNOT locked_1586, 3; + STORE_F pItem, parm0_x; + CALL1 Raise_MouseLeave; + IFNOT _menu_process_filtered, 3; + STORE_F "Aborted branching (Outside the clip area) +", parm0_x; + CALL1 print; + RETURN offset_0; + IFNOT _menu_process_filtered, 3; + STORE_F " +", parm0_x; + CALL1 print; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadOrigin; + INDIRECT_E pItem, _child, lChild; + IFNOT lChild, 21; + INDIRECT_F pItem, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_CHILDDRAWUPDATEONLY, locked_1586; + NOT_F locked_1586, locked_1586; + IF locked_1586, 4; + INDIRECT_F pItem, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_CHILDDRAWONLY, temp_1; + NOT_F temp_1, temp_1; + OR locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 5; + STORE_F lChild, parm0_x; + STORE_F pSelectMode, parm1_x; + CALL2 _Menu_ProcessMouse; + GOTO 4; + STORE_F lChild, parm0_x; + STORE_F MENU_SELECT_NEVER, parm1_x; + CALL2 _Menu_ProcessMouse; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_Reload; + INDIRECT_E lChild, _next, lChild; + GOTO -20; + DONE; +} + +float (float) _Menu_Process_Debug_Return; +float(float pRetValue) _Menu_Process_Debug_Return = asm +{ +local float temp_0; + IFNOT _menu_process_filtered, 17; + GOTO 10; + STORE_F "MENU_EVENT_CONTINUE +", parm0_x; + CALL1 print; + GOTO 13; + STORE_F "MENU_EVENT_RAISEPARENT +", parm0_x; + CALL1 print; + GOTO 10; + STORE_F "MENU_EVENT_PROCESSED +", parm0_x; + CALL1 print; + GOTO 7; + IFNOT pRetValue, -9; + IFNOT pRetValue, -10; + EQ_F pRetValue, MENU_EVENT_RAISEPARENT, temp_0; + IF temp_0, -9; + EQ_F pRetValue, MENU_EVENT_PROCESSED, temp_0; + IF temp_0, -8; + RETURN pRetValue; + DONE; +} + +bool (entity, float, float) _Menu_ProcessKey; +bool(entity pItem, float pKey, float pAscii) _Menu_ProcessKey = asm +{ +local float lResult; +local entity lChild; +local float temp_0; +local float temp_1; + IFNOT _menu_process_filtered, 12; + STORE_F pKey, parm0_x; + CALL1 ftos; + INDIRECT_S pItem, name, temp_0; + STORE_F "K ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " ", parm2_x; + STORE_F temp_0, parm3_x; + STORE_F " ", parm4_x; + CALL5 strcat; + STORE_F return_x, parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWUPDATEONLY, temp_0; + IF temp_0, 3; + INDIRECT_F pItem, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_CHILDDRAWONLY, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + STORE_F MENU_EVENT_CONTINUE, parm0_x; + CALL1 _Menu_Process_Debug_Return; + RETURN return_x; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadClipArea; + EQ_E Menu_ActiveItem, pItem, temp_0; + IFNOT temp_0, 12; + STORE_F pItem, parm0_x; + STORE_F pKey, parm1_x; + STORE_F pAscii, parm2_x; + CALL3 Raise_Key; + IFNOT return_x, 3; + STORE_F MENU_EVENT_PROCESSED, lResult; + GOTO 2; + STORE_F MENU_EVENT_RAISEPARENT, lResult; + STORE_F lResult, parm0_x; + CALL1 _Menu_Process_Debug_Return; + RETURN return_x; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_LoadOrigin; + INDIRECT_E pItem, _child, lChild; + IFNOT lChild, 30; + STORE_F lChild, parm0_x; + STORE_F pKey, parm1_x; + STORE_F pAscii, parm2_x; + CALL3 _Menu_ProcessKey; + STORE_F return_x, lResult; + STORE_F pItem, parm0_x; + CALL1 _Menu_Env_Reload; + EQ_F lResult, MENU_EVENT_PROCESSED, temp_0; + IFNOT temp_0, 5; + STORE_F MENU_EVENT_PROCESSED, parm0_x; + CALL1 _Menu_Process_Debug_Return; + RETURN return_x; + GOTO 15; + EQ_F lResult, MENU_EVENT_RAISEPARENT, temp_0; + IFNOT temp_0, 13; + STORE_F pItem, parm0_x; + STORE_F pKey, parm1_x; + STORE_F pAscii, parm2_x; + CALL3 Raise_Key; + IFNOT return_x, 5; + STORE_F MENU_EVENT_PROCESSED, parm0_x; + CALL1 _Menu_Process_Debug_Return; + RETURN return_x; + GOTO 4; + STORE_F MENU_EVENT_RAISEPARENT, parm0_x; + CALL1 _Menu_Process_Debug_Return; + RETURN return_x; + INDIRECT_E lChild, _next, lChild; + GOTO -29; + STORE_F MENU_EVENT_CONTINUE, parm0_x; + CALL1 _Menu_Process_Debug_Return; + RETURN return_x; + DONE; +} + +float(entity pItem, float pMode, float pSelectMode, float pKey, float pAscii) Menu_Process = asm +{ +local float lResult; +local vector lOrigin; +local vector lPos; +local vector lSize; +local float temp_0; +local vector temp_2; + STORE_V Menu_Clip_Size, lSize; + STORE_V Menu_Clip_Position, lPos; + STORE_V Menu_Origin, lOrigin; + STORE_F pMode, parm0_x; + STORE_F pSelectMode, parm1_x; + CALL2 _Menu_Process_Debug_Filter; + STORE_F KEY_GAME, lResult; + GOTO 20; + STORE_F pItem, parm0_x; + CALL1 _Menu_ProcessRunFlag; + GOTO 27; + STORE_F pItem, parm0_x; + CALL1 _Menu_ProcessUpdate; + GOTO 24; + STORE_F pItem, parm0_x; + CALL1 _Menu_ProcessDraw; + GOTO 21; + STORE_F pItem, parm0_x; + STORE_F pSelectMode, parm1_x; + CALL2 _Menu_ProcessMouse; + GOTO 17; + STORE_F pItem, parm0_x; + STORE_F pKey, parm1_x; + STORE_F pAscii, parm2_x; + CALL3 _Menu_ProcessKey; + STORE_F return_x, lResult; + GOTO 11; + EQ_F pMode, MENU_PROCESS_RUNFLAG, temp_0; + IF temp_0, -20; + EQ_F pMode, MENU_PROCESS_UPDATE, temp_0; + IF temp_0, -19; + EQ_F pMode, MENU_PROCESS_DRAW, temp_0; + IF temp_0, -18; + EQ_F pMode, MENU_PROCESS_MOUSE, temp_0; + IF temp_0, -17; + EQ_F pMode, MENU_PROCESS_KEY, temp_0; + IF temp_0, -15; + STORE_V lSize, Menu_Clip_Size; + STORE_V lPos, Menu_Clip_Position; + STORE_V lOrigin, Menu_Origin; + SUB_V Cursor_Position, Menu_Origin, Menu_Cursor_Position; + EQ_F pMode, MENU_PROCESS_DRAW, temp_0; + IFNOT temp_0, 2; + CALL0 _MGX_SetClipArea; + RETURN lResult; + DONE; +} + +void() Menu_Frame = asm +{ +local entity lOld; +local float temp_0; + CALL0 Sys_Debug_Frame; + IFNOT sys_debug_halt, 2; + RETURN offset_0; + CALL0 Menu_UpdateRunFlags; + CALL0 Menu_Process_Setup; + NE_V Cursor_Relative, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 22; + STORE_ENT Menu_ActiveItem, lOld; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_MOUSE, parm1_x; + STORE_F MENU_SELECT_SELECTABLE, parm2_x; + STORE_F KEY_GAME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Process; + IF Menu_ActiveItem, 3; + STORE_ENT lOld, Menu_ActiveItem; + GOTO 11; + NE_E lOld, Menu_ActiveItem, temp_0; + IFNOT temp_0, 9; + STORE_F lOld, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Raise_Select; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Raise_Select; + GOTO 7; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_MOUSE, parm1_x; + STORE_F MENU_SELECT_NEVER, parm2_x; + STORE_F KEY_GAME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Process; + CALL0 Menu_Process_Setup; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_UPDATE, parm1_x; + STORE_F KEY_GAME, parm2_x; + STORE_F KEY_GAME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Process; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_CollectGarbage; + DONE; +} + +void() Menu_Draw = asm +{ +local float temp_0; + IFNOT sys_debug_halt, 2; + RETURN offset_0; + INDIRECT_F Menu_ActiveWindow, _runFlag, temp_0; + BITAND temp_0, 96.000000, temp_0; + IF temp_0, 8; + CALL0 Menu_Process_Setup; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_DRAW, parm1_x; + STORE_F KEY_GAME, parm2_x; + STORE_F KEY_GAME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Process; + CALL0 Sys_Debug_Draw; + DONE; +} + +void(float pKey, float pAscii) Menu_Key = asm +{ +local float locked_1586; +local entity lOld; +local float temp_1; + IFNOT sys_debug_halt, 2; + RETURN offset_0; + NE_FNC Menu_KeyHook, Util_NullFunction, locked_1586; + IFNOT locked_1586, 5; + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 Menu_KeyHook; + RETURN offset_0; + LE K_MOUSE1, pKey, locked_1586; + IFNOT locked_1586, 2; + LE pKey, K_MOUSE10, temp_1; + AND locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 23; + STORE_ENT Menu_ActiveItem, lOld; + STORE_ENT null_entity, Menu_ActiveItem; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_MOUSE, parm1_x; + STORE_F MENU_SELECT_SELECTABLE, parm2_x; + STORE_F KEY_GAME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Process; + IF Menu_ActiveItem, 4; + STORE_ENT lOld, Menu_ActiveItem; + RETURN offset_0; + GOTO 11; + NE_E lOld, Menu_ActiveItem, locked_1586; + IFNOT locked_1586, 9; + STORE_F lOld, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Raise_Select; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Raise_Select; + EQ_E Menu_ActiveItem, null_entity, locked_1586; + IFNOT locked_1586, 3; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_Reselect; + INDIRECT_F Menu_ActiveItem, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_NOSELECT, locked_1586; + NOT_F locked_1586, locked_1586; + NOT_F locked_1586, locked_1586; + IFNOT locked_1586, 2; + NE_E Menu_ActiveItem, Menu_ActiveWindow, temp_1; + AND locked_1586, temp_1, locked_1586; + IF locked_1586, 8; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_KEY, parm1_x; + STORE_F KEY_GAME, parm2_x; + STORE_F pKey, parm3_x; + STORE_F pAscii, parm4_x; + CALL5 Menu_Process; + NE_F return_x, MENU_EVENT_PROCESSED, temp_1; + OR locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 25; + EQ_F pKey, K_ESCAPE, locked_1586; + IFNOT locked_1586, 10; + BITAND gamestatus, CVAR_READONLY, locked_1586; + IFNOT locked_1586, 4; + STORE_F " K_ESCAPE wasnt processed! +", parm0_x; + CALL1 error; + GOTO 4; + CALL0 Menu_Toggle; + STORE_F "menu_restart +", parm0_x; + CALL1 cmd; + GOTO 14; + BITAND gamestatus, CVAR_READONLY, locked_1586; + IFNOT locked_1586, 12; + STORE_F pKey, parm0_x; + CALL1 ftos; + STORE_F " Key ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " ('", parm2_x; + CALL3 print; + STORE_F pAscii, parm0_x; + CALL1 chr; + STORE_F return_x, parm0_x; + STORE_F "') wasn't processed! +", parm1_x; + CALL2 print; + DONE; +} + +float() Menu_Toggle = asm +{ +local float temp_0; +local float temp_1; + BITAND gamestatus, KEY_MENU, temp_0; + IF temp_0, 2; + BITAND gamestatus, CVAR_READONLY, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + CALL0 m_hide; + RETURN FILE_APPEND; + GOTO 2; + RETURN KEY_GAME; + DONE; +} + +void(entity pEntity) Raise_Reinit = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _reinit, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _reinit, locked_1586; + CALL0 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +void(entity pEntity) Raise_Destroy = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _destroy, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _destroy, locked_1586; + CALL0 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +bool(entity pEntity, float pKey, float pAscii) Raise_Key = asm +{ +local float locked_1586; +local bool lResult; +local entity lOld; + INDIRECT_FU pEntity, _key, locked_1586; + IF locked_1586, 2; + RETURN KEY_GAME; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _key, locked_1586; + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 locked_1586; + STORE_F return_x, lResult; + STORE_ENT lOld, self; + RETURN lResult; + DONE; +} + +void(entity pEntity) Raise_Draw = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _draw, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _draw, locked_1586; + CALL0 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +void(entity pEntity) Raise_MouseEnter = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _mouseEnter, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _mouseEnter, locked_1586; + CALL0 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +void(entity pEntity) Raise_MouseLeave = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _mouseLeave, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _mouseLeave, locked_1586; + CALL0 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +void(entity pEntity) Raise_Update = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _update, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _update, locked_1586; + CALL0 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +void(entity pEntity, float pSelect, float pUser) Raise_Select = asm +{ +local float locked_1586; +local entity lOld; + INDIRECT_FU pEntity, _select, locked_1586; + IF locked_1586, 2; + RETURN offset_0; + STORE_ENT self, lOld; + STORE_ENT pEntity, self; + INDIRECT_FU self, _select, locked_1586; + STORE_F pSelect, parm0_x; + STORE_F pUser, parm1_x; + CALL2 locked_1586; + STORE_ENT lOld, self; + DONE; +} + +void() CtCall_Init = asm +{ +local float locked_1586; + INDIRECT_FU self, init, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, init, locked_1586; + CALL0 locked_1586; + DONE; +} + +void() CtCall_Reinit = asm +{ +local float locked_1586; + INDIRECT_FU self, reinit, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, reinit, locked_1586; + CALL0 locked_1586; + DONE; +} + +void() CtCall_Destroy = asm +{ +local float locked_1586; + INDIRECT_FU self, destroy, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, destroy, locked_1586; + CALL0 locked_1586; + DONE; +} + +float(float pKey, float pAscii) CtCall_Key = asm +{ +local float locked_1586; + INDIRECT_FU self, key, locked_1586; + IFNOT locked_1586, 6; + INDIRECT_FU self, key, locked_1586; + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 locked_1586; + RETURN return_x; + RETURN KEY_GAME; + DONE; +} + +void() CtCall_Draw = asm +{ +local float locked_1586; + INDIRECT_FU self, draw, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, draw, locked_1586; + CALL0 locked_1586; + DONE; +} + +void() CtCall_MouseEnter = asm +{ +local float locked_1586; + INDIRECT_FU self, mouseEnter, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, mouseEnter, locked_1586; + CALL0 locked_1586; + DONE; +} + +void() CtCall_MouseLeave = asm +{ +local float locked_1586; + INDIRECT_FU self, mouseLeave, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, mouseLeave, locked_1586; + CALL0 locked_1586; + DONE; +} + +void() CtCall_Action = asm +{ +local float locked_1586; + INDIRECT_FU self, action, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, action, locked_1586; + CALL0 locked_1586; + DONE; +} + +void() CtCall_Update = asm +{ +local float locked_1586; + INDIRECT_FU self, update, locked_1586; + IFNOT locked_1586, 3; + INDIRECT_FU self, update, locked_1586; + CALL0 locked_1586; + DONE; +} + +void(float pSelect, float pUser) CtCall_Select = asm +{ +local float locked_1586; + INDIRECT_FU self, select, locked_1586; + IFNOT locked_1586, 5; + INDIRECT_FU self, select, locked_1586; + STORE_F pSelect, parm0_x; + STORE_F pUser, parm1_x; + CALL2 locked_1586; + DONE; +} + +void() DefCt_Reinit = asm +{ + DONE; +} + +void() DefCt_Destroy = asm +{ + DONE; +} + +float(float pKey, float pAscii) DefCt_Key = asm +{ + RETURN KEY_GAME; + DONE; +} + +void() DefCt_Draw = asm +{ + DONE; +} + +void() DefCt_MouseEnter = asm +{ + DONE; +} + +void() DefCt_MouseLeave = asm +{ + DONE; +} + +void () DefCt_Action; +void() DefCt_Action = asm +{ + DONE; +} + +void(float pSelect, float pUser) DefCt_Select = asm +{ + DONE; +} + +void() DefCt_Update = asm +{ + DONE; +} + +void (float, string) _Menu_Structure_Debug; +void(float pLevel, string pText) _Menu_Structure_Debug = asm +{ +local float temp_0; + LE pLevel, sys_debug_structure, temp_0; + IFNOT temp_0, 3; + STORE_F pText, parm0_x; + CALL1 print; + DONE; +} + +void (float) _Menu_Select; +void(float pUser) _Menu_Select = asm +{ + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + DONE; +} + +entity(entity pItem) _Menu_GetParent = asm +{ +local float temp_0; + INDIRECT_E pItem, _parent, temp_0; + IF temp_0, 2; + RETURN null_entity; + INDIRECT_E pItem, _parent, temp_0; + INDIRECT_F temp_0, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IFNOT temp_0, 4; + INDIRECT_E pItem, _parent, parm0_x; + CALL1 _Menu_GetParent; + RETURN return_x; + INDIRECT_E pItem, _parent, temp_0; + RETURN temp_0; + DONE; +} + +bool(entity pItem, entity pParent) _Menu_IsEmbeddedParentOf = asm +{ +local float temp_0; + INDIRECT_E pItem, _parent, temp_0; + EQ_E temp_0, pParent, temp_0; + IFNOT temp_0, 2; + RETURN FILE_APPEND; + INDIRECT_E pItem, _parent, temp_0; + INDIRECT_F temp_0, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IFNOT temp_0, 5; + INDIRECT_E pItem, _parent, parm0_x; + STORE_F pParent, parm1_x; + CALL2 _Menu_IsEmbeddedParentOf; + RETURN return_x; + RETURN KEY_GAME; + DONE; +} + +entity(entity pItem) _Menu_GetFirst = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_F pItem, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IFNOT temp_0, 2; + INDIRECT_E pItem, _child, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + INDIRECT_E pItem, _child, parm0_x; + CALL1 _Menu_GetFirst; + RETURN return_x; + RETURN pItem; + DONE; +} + +entity(entity pItem) _Menu_GetLast = asm +{ +local entity lNode; +local float temp_0; +local float temp_1; + INDIRECT_F pItem, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IFNOT temp_0, 2; + INDIRECT_E pItem, _child, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 9; + INDIRECT_E pItem, _child, lNode; + INDIRECT_E lNode, _next, temp_0; + IFNOT temp_0, 3; + INDIRECT_E lNode, _next, lNode; + GOTO -3; + STORE_F lNode, parm0_x; + CALL1 _Menu_GetLast; + RETURN return_x; + RETURN pItem; + DONE; +} + +entity(entity pItem) _Menu_GetNext = asm +{ +local entity lNext; +local float temp_0; +local float temp_1; + INDIRECT_E pItem, _next, lNext; + IFNOT lNext, 4; + STORE_F lNext, parm0_x; + CALL1 _Menu_GetFirst; + RETURN return_x; + INDIRECT_E pItem, _parent, temp_0; + INDIRECT_F temp_0, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IFNOT temp_0, 3; + INDIRECT_E pItem, _parent, temp_1; + NE_E temp_1, Menu_ActiveWindow, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 5; + INDIRECT_E pItem, _parent, parm0_x; + CALL1 _Menu_GetNext; + RETURN return_x; + GOTO 2; + RETURN null_entity; + DONE; +} + +entity(entity pItem) _Menu_GetPrev = asm +{ +local entity lPrev; +local float temp_0; +local float temp_1; + INDIRECT_E pItem, _prev, lPrev; + IFNOT lPrev, 4; + STORE_F lPrev, parm0_x; + CALL1 _Menu_GetLast; + RETURN return_x; + INDIRECT_E pItem, _parent, temp_0; + INDIRECT_F temp_0, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IFNOT temp_0, 3; + INDIRECT_E pItem, _parent, temp_1; + NE_E temp_1, Menu_ActiveWindow, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 5; + INDIRECT_E pItem, _parent, parm0_x; + CALL1 _Menu_GetPrev; + RETURN return_x; + GOTO 2; + RETURN null_entity; + DONE; +} + +void() _Menu_SelectNext = asm +{ +local float locked_1586; +local entity lTemp; +local float temp_1; + IF Menu_ActiveItem, 5; + STORE_F FILE_APPEND, parm0_x; + STORE_F "_SelectNext: Bad Menu_ActiveItem! +", parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN offset_0; + STORE_ENT Menu_ActiveItem, lTemp; + STORE_F lTemp, parm0_x; + CALL1 _Menu_GetNext; + STORE_ENT return_x, lTemp; + NE_E return_x, null_entity, locked_1586; + IFNOT locked_1586, 15; + INDIRECT_F lTemp, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_NOSELECT, locked_1586; + IF locked_1586, 11; + STORE_ENT lTemp, Menu_ActiveItem; + INDIRECT_S lTemp, name, locked_1586; + STORE_F "_SelectNext: ", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN offset_0; + GOTO -18; + STORE_ENT Menu_ActiveItem, lTemp; + STORE_F lTemp, parm0_x; + CALL1 _Menu_GetPrev; + IFNOT return_x, 8; + STORE_F lTemp, parm0_x; + STORE_F return_x, locked_1586; + CALL1 _Menu_GetPrev; + STORE_F return_x, temp_1; + STORE_F locked_1586, return_x; + STORE_ENT temp_1, lTemp; + GOTO -9; + NE_E lTemp, Menu_ActiveItem, locked_1586; + IFNOT locked_1586, 18; + INDIRECT_F lTemp, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_NOSELECT, locked_1586; + IF locked_1586, 11; + STORE_ENT lTemp, Menu_ActiveItem; + INDIRECT_S lTemp, name, locked_1586; + STORE_F "_SelectNext after loop: ", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN offset_0; + STORE_F lTemp, parm0_x; + CALL1 _Menu_GetNext; + STORE_ENT return_x, lTemp; + GOTO -18; + DONE; +} + +void() _Menu_SelectPrev = asm +{ +local float locked_1586; +local entity lTemp; +local float temp_1; + IF Menu_ActiveItem, 5; + STORE_F FILE_APPEND, parm0_x; + STORE_F "_SelectPrev: Bad Menu_ActiveItem! +", parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN offset_0; + STORE_ENT Menu_ActiveItem, lTemp; + STORE_F lTemp, parm0_x; + CALL1 _Menu_GetPrev; + STORE_ENT return_x, lTemp; + NE_E return_x, null_entity, locked_1586; + IFNOT locked_1586, 15; + INDIRECT_F lTemp, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_NOSELECT, locked_1586; + IF locked_1586, 11; + STORE_ENT lTemp, Menu_ActiveItem; + INDIRECT_S lTemp, name, locked_1586; + STORE_F "_SelectPrev: ", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN offset_0; + GOTO -18; + STORE_ENT Menu_ActiveItem, lTemp; + STORE_F lTemp, parm0_x; + CALL1 _Menu_GetNext; + IFNOT return_x, 8; + STORE_F lTemp, parm0_x; + STORE_F return_x, locked_1586; + CALL1 _Menu_GetNext; + STORE_F return_x, temp_1; + STORE_F locked_1586, return_x; + STORE_ENT temp_1, lTemp; + GOTO -9; + NE_E lTemp, Menu_ActiveItem, locked_1586; + IFNOT locked_1586, 18; + INDIRECT_F lTemp, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_NOSELECT, locked_1586; + IF locked_1586, 11; + STORE_ENT lTemp, Menu_ActiveItem; + INDIRECT_S lTemp, name, locked_1586; + STORE_F "_SelectPrev after loop: ", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN offset_0; + STORE_F lTemp, parm0_x; + CALL1 _Menu_GetPrev; + STORE_ENT return_x, lTemp; + GOTO -18; + DONE; +} + +float() _Menu_SelectUp = asm +{ +local entity lNode; +local entity lParent; +local entity lSelected; +local float temp_0; + STORE_ENT Menu_ActiveItem, lSelected; + IF lSelected, 5; + STORE_F FILE_APPEND, parm0_x; + STORE_F "_SelectUp: Bad Menu_ActiveItem! +", parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN KEY_GAME; + EQ_E lSelected, Menu_ActiveWindow, temp_0; + IFNOT temp_0, 18; + STORE_F KEY_MENU, parm0_x; + STORE_F "_SelectUp: Selecting up current active window.. +", parm1_x; + CALL2 _Menu_Structure_Debug; + EQ_E Menu_History, null_entity, temp_0; + IFNOT temp_0, 9; + STORE_F KEY_MENU, parm0_x; + STORE_F "_SelectUp: Empty history -> toggling menu.. +", parm1_x; + CALL2 _Menu_Structure_Debug; + CALL0 Menu_Toggle; + IF return_x, 3; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_Reselect; + RETURN FILE_APPEND; + STORE_F KEY_MENU, parm0_x; + STORE_F "_SelectUp: Popping history.. +", parm1_x; + CALL2 _Menu_Structure_Debug; + CALL0 Menu_History_Pop; + STORE_F lSelected, parm0_x; + CALL1 _Menu_GetParent; + STORE_ENT return_x, lParent; + IF lParent, 5; + STORE_F KEY_MENU, parm0_x; + STORE_F "_SelectUp: No parent and not active window! +", parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN KEY_GAME; + INDIRECT_F lParent, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_NOSELECT, temp_0; + IF temp_0, 11; + STORE_ENT lParent, Menu_ActiveItem; + INDIRECT_S lParent, name, temp_0; + STORE_F "_SelectUp: first parent: ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN FILE_APPEND; + EQ_E lParent, Menu_ActiveWindow, temp_0; + IFNOT temp_0, 16; + STORE_ENT Menu_ActiveWindow, Menu_ActiveItem; + INDIRECT_S Menu_ActiveItem, name, temp_0; + STORE_F "_SelectUp: select up parent: ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F KEY_MENU, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + CALL0 _Menu_SelectUp; + IFNOT return_x, 2; + RETURN FILE_APPEND; + STORE_ENT lSelected, Menu_ActiveItem; + RETURN KEY_GAME; + GOTO 7; + INDIRECT_E lParent, _parent, temp_0; + IF temp_0, 5; + STORE_F FILE_APPEND, parm0_x; + STORE_F "_SelectUp: No parent of parent and not active window! +", parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN KEY_GAME; + STORE_F lParent, parm0_x; + CALL1 _Menu_GetParent; + STORE_ENT return_x, Menu_ActiveItem; + INDIRECT_S Menu_ActiveItem, name, temp_0; + STORE_F "_SelectUp: SelectDown on parent of parent '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "' +", parm2_x; + CALL3 strcat; + STORE_F KEY_MENU, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + CALL0 _Menu_SelectDown; + STORE_ENT Menu_ActiveItem, lNode; + IFNOT lNode, 14; + INDIRECT_E lNode, _parent, temp_0; + EQ_E temp_0, lParent, temp_0; + IFNOT temp_0, 9; + STORE_F lSelected, parm0_x; + CALL1 _Menu_GetParent; + STORE_ENT return_x, Menu_ActiveItem; + CALL0 _Menu_SelectUp; + IFNOT return_x, 2; + RETURN FILE_APPEND; + STORE_ENT lSelected, Menu_ActiveItem; + RETURN KEY_GAME; + INDIRECT_E lNode, _parent, lNode; + GOTO -13; + RETURN FILE_APPEND; + DONE; +} + +void (entity) _Menu_PrintRunFlag; +float() _Menu_SelectDown = asm +{ +local entity lChild; +local entity lParent; +local float temp_0; + STORE_ENT Menu_ActiveItem, lParent; + IF lParent, 5; + STORE_F FILE_APPEND, parm0_x; + STORE_F "_SelectDown: Bad Menu_ActiveItem! +", parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN KEY_GAME; + INDIRECT_E lParent, _child, parm0_x; + CALL1 _Menu_GetFirst; + STORE_ENT return_x, lChild; + IFNOT lChild, 20; + INDIRECT_F lChild, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_NOSELECT, temp_0; + IF temp_0, 13; + STORE_ENT lChild, Menu_ActiveItem; + STORE_F lChild, parm0_x; + CALL1 _Menu_PrintRunFlag; + INDIRECT_S lChild, name, temp_0; + STORE_F "_SelectDown: ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + RETURN FILE_APPEND; + STORE_F lChild, parm0_x; + CALL1 _Menu_GetNext; + STORE_ENT return_x, lChild; + GOTO -19; + INDIRECT_E lParent, _child, parm0_x; + CALL1 _Menu_GetFirst; + STORE_ENT return_x, lChild; + IFNOT lChild, 20; + INDIRECT_F lChild, flag, temp_0; + BITAND temp_0, FLAG_EMBEDDED, temp_0; + IF temp_0, 13; + STORE_ENT lChild, Menu_ActiveItem; + INDIRECT_S Menu_ActiveItem, name, temp_0; + STORE_F "_SelectDown: Try child: ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F KEY_MENU, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + CALL0 _Menu_SelectDown; + IFNOT return_x, 2; + RETURN FILE_APPEND; + STORE_F lChild, parm0_x; + CALL1 _Menu_GetNext; + STORE_ENT return_x, lChild; + GOTO -19; + STORE_ENT lParent, Menu_ActiveItem; + RETURN KEY_GAME; + DONE; +} + +void() _Menu_Reselect = asm +{ + STORE_ENT Menu_ActiveWindow, Menu_ActiveItem; + CALL0 _Menu_SelectDown; + DONE; +} + +void(float pUser) Menu_SelectNext = asm +{ + STORE_F Menu_ActiveItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + CALL0 _Menu_SelectNext; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + DONE; +} + +void(float pUser) Menu_SelectPrev = asm +{ + STORE_F Menu_ActiveItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + CALL0 _Menu_SelectPrev; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + DONE; +} + +float(float pUser) Menu_SelectUp = asm +{ +local entity lOld; + STORE_ENT Menu_ActiveItem, lOld; + CALL0 _Menu_SelectUp; + IFNOT return_x, 10; + STORE_F lOld, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +float(float pUser) Menu_SelectDown = asm +{ +local entity lOld; + STORE_ENT Menu_ActiveItem, lOld; + CALL0 _Menu_SelectDown; + IFNOT return_x, 10; + STORE_F lOld, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void(entity pItem, bool pUser) Menu_Select = asm +{ +local float temp_0; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + INDIRECT_S pItem, name, temp_0; + STORE_F "Menu_Select: ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F FILE_APPEND, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Menu_Structure_Debug; + STORE_ENT pItem, Menu_ActiveItem; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + DONE; +} + +void(entity pItem, bool pUser) Menu_CorrectSelection = asm +{ +local float temp_0; + NE_E Menu_ActiveItem, pItem, temp_0; + IFNOT temp_0, 4; + STORE_F pItem, parm0_x; + STORE_F pUser, parm1_x; + CALL2 Menu_Select; + DONE; +} + +void(float pUser) Menu_Reselect = asm +{ + STORE_F Menu_ActiveItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + CALL0 _Menu_Reselect; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + DONE; +} + +void(entity pMenu, float pMakeActive, float pUser) Menu_JumpToWindow = asm +{ +local float temp_0; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + INDIRECT_E pMenu, _child, temp_0; + IF temp_0, 6; + INDIRECT_S pMenu, name, temp_0; + STORE_F "Cant jump to ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " ! +", parm2_x; + CALL3 error; + IFNOT pMakeActive, 5; + STORE_F pMenu, parm0_x; + STORE_F Util_NullFunction, parm1_x; + CALL2 Menu_History_Push; + STORE_ENT pMenu, Menu_ActiveWindow; + STORE_ENT pMenu, Menu_ActiveItem; + CALL0 _Menu_SelectDown; + IF return_x, 6; + INDIRECT_S pMenu, name, temp_0; + STORE_F "Couldn't jump to ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " ! +", parm2_x; + CALL3 error; + STORE_F Menu_ActiveItem, parm0_x; + STORE_F FILE_APPEND, parm1_x; + STORE_F pUser, parm2_x; + CALL3 Raise_Select; + DONE; +} + +entity(entity pOrigin, string pName, bool pThrow) Menu_GetItemEx = asm +{ +local float lCounter; +local float lCount; +local string lToken; +local string lFirstTwo; +local entity lItem; +local float temp_0; +local float temp_1; + STORE_F pName, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F KEY_MENU, parm2_x; + CALL3 substring; + STORE_S return_x, lFirstTwo; + EQ_S lFirstTwo, "::", temp_0; + IFNOT temp_0, 11; + STORE_F pName, parm0_x; + STORE_F KEY_MENU, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F return_x, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lItem; + GOTO 65; + EQ_S lFirstTwo, "##", temp_0; + IFNOT temp_0, 40; + STORE_ENT pOrigin, lItem; + STORE_F pName, parm0_x; + STORE_F KEY_MENU, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 tokenize; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 1; + AND temp_0, lItem, temp_0; + IFNOT temp_0, 26; + STORE_F lCounter, parm0_x; + CALL1 argv; + STORE_S return_x, lToken; + EQ_S lToken, "up", temp_0; + IFNOT temp_0, 3; + INDIRECT_E lItem, _parent, lItem; + GOTO 17; + EQ_S lToken, "down", temp_0; + IFNOT temp_0, 3; + INDIRECT_E lItem, _child, lItem; + GOTO 13; + EQ_S lToken, "next", temp_0; + IFNOT temp_0, 3; + INDIRECT_E lItem, _next, lItem; + GOTO 9; + EQ_S lToken, "prev", temp_0; + IFNOT temp_0, 3; + INDIRECT_E lItem, _prev, lItem; + GOTO 5; + STORE_F "Bad direction link(bad token): '", parm0_x; + STORE_F pName, parm1_x; + STORE_F "'!", parm2_x; + CALL3 error; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -28; + GOTO 24; + STORE_ENT null_entity, lItem; + NOT_ENT lItem, temp_0; + IFNOT temp_0, 3; + INDIRECT_E pOrigin, _parent, pOrigin; + NE_E pOrigin, null_entity, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 11; + INDIRECT_S pOrigin, name, parm0_x; + STORE_F "::", parm1_x; + STORE_F pName, parm2_x; + CALL3 strcat; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F return_x, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lItem; + GOTO -15; + IF lItem, 6; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F pName, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lItem; + EQ_E lItem, null_entity, temp_0; + IFNOT temp_0, 1; + AND temp_0, pThrow, temp_0; + IFNOT temp_0, 5; + STORE_F "Couldn't find item '", parm0_x; + STORE_F pName, parm1_x; + STORE_F "'!", parm2_x; + CALL3 error; + RETURN lItem; + DONE; +} + +entity(entity pOrigin, string pName, bool pThrow) Menu_GetChildEx = asm +{ +local entity lItem; +local float temp_0; + IFNOT pOrigin, 11; + INDIRECT_S pOrigin, name, parm0_x; + STORE_F "::", parm1_x; + STORE_F pName, parm2_x; + CALL3 strcat; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F return_x, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lItem; + GOTO 6; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F pName, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lItem; + EQ_E lItem, null_entity, temp_0; + IFNOT temp_0, 1; + AND temp_0, pThrow, temp_0; + IFNOT temp_0, 5; + STORE_F "Couldn't find item '", parm0_x; + STORE_F pName, parm1_x; + STORE_F "'!", parm2_x; + CALL3 error; + RETURN lItem; + DONE; +} + +entity(string pName) Menu_GetItem = asm +{ + STORE_F self, parm0_x; + STORE_F pName, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Menu_GetItemEx; + RETURN return_x; + DONE; +} + +entity(string pName) Menu_GetChild = asm +{ + STORE_F self, parm0_x; + STORE_F pName, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 Menu_GetChildEx; + RETURN return_x; + DONE; +} + +void(entity pWindow) Menu_EmptyWindow = asm +{ +local entity lChild; +local float temp_0; + INDIRECT_E pWindow, _child, lChild; + IFNOT lChild, 9; + STORE_F lChild, parm0_x; + CALL1 Menu_EmptyWindow; + STORE_F lChild, parm0_x; + CALL1 Raise_Destroy; + STORE_F lChild, parm0_x; + CALL1 remove; + INDIRECT_E lChild, _next, lChild; + GOTO -8; + ADDRESS pWindow, _child, temp_0; + STOREP_ENT null_entity, temp_0; + DONE; +} + +void(entity pEntity) Menu_RemoveItem = asm +{ +local entity lParent; +local float temp_0; + INDIRECT_E pEntity, _parent, lParent; + STORE_F pEntity, parm0_x; + CALL1 Menu_EmptyWindow; + STORE_F pEntity, parm0_x; + CALL1 Raise_Destroy; + STORE_F pEntity, parm0_x; + CALL1 remove; + IFNOT lParent, 3; + STORE_F lParent, parm0_x; + CALL1 Menu_LinkChildren; + DONE; +} + +void(entity pItem) _Menu_PrintRunFlag = asm +{ +local float temp_0; + IFNOT sys_debug_runflag, 48; + INDIRECT_S pItem, name, temp_0; + STORE_F " ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " Runflags: ", parm2_x; + CALL3 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_TEMPLATE, temp_0; + IFNOT temp_0, 3; + STORE_F "TEMPLATE ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_MOUSEINAREA, temp_0; + IFNOT temp_0, 3; + STORE_F "MOUSEINAREA ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_HADMOUSE, temp_0; + IFNOT temp_0, 3; + STORE_F "HADMOUSE ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWONLY, temp_0; + IFNOT temp_0, 3; + STORE_F "CHILDDRAWONLY ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWUPDATEONLY, temp_0; + IFNOT temp_0, 3; + STORE_F "CHILDDRAWUPDATEONLY ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_HIDDEN, temp_0; + IFNOT temp_0, 3; + STORE_F "HIDDEN ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CLIPPED, temp_0; + IFNOT temp_0, 3; + STORE_F "CLIPPED ", parm0_x; + CALL1 print; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_NOSELECT, temp_0; + IFNOT temp_0, 3; + STORE_F "NOSELECT ", parm0_x; + CALL1 print; + STORE_F " +", parm0_x; + CALL1 print; + DONE; +} + +void(entity pItem) Menu_SetRunFlag = asm +{ +local float lRunFlag; +local float lFlag; +local float temp_0; +local float temp_1; +local float temp_5; + INDIRECT_F pItem, flag, lFlag; + BITAND lFlag, FLAG_TEMPLATE, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_TEMPLATE, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pItem, _runFlag, lRunFlag; + BITAND lRunFlag, RUNFLAG_MOUSEINAREA, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + SUB_F lRunFlag, RUNFLAG_MOUSEINAREA, temp_1; + BITOR temp_1, RUNFLAG_HADMOUSE, temp_1; + STOREP_F temp_1, temp_0; + EQ_V Menu_Clip_Size, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 2; + NE_V Menu_Clip_Position, '0.000000 0.000000 0.000000', temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_CLIPPED, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pItem, _runFlag, lRunFlag; + BITAND lFlag, FLAG_HIDDEN, temp_0; + IF temp_0, 2; + BITAND lRunFlag, RUNFLAG_TEMPLATE, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 6; + BITAND lFlag, FLAG_SERVERONLY, temp_1; + IFNOT temp_1, 3; + BITAND gamestatus, FILE_APPEND, temp_5; + NOT_F temp_5, temp_5; + AND temp_1, temp_5, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 6; + BITAND lFlag, FLAG_CONNECTEDONLY, temp_1; + IFNOT temp_1, 3; + BITAND gamestatus, KEY_MENU, temp_5; + NOT_F temp_5, temp_5; + AND temp_1, temp_5, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 6; + BITAND lFlag, FLAG_DEVELOPERONLY, temp_1; + IFNOT temp_1, 3; + BITAND gamestatus, CVAR_READONLY, temp_5; + NOT_F temp_5, temp_5; + AND temp_1, temp_5, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + ADDRESS pItem, _runFlag, temp_0; + BITOR lRunFlag, RUNFLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pItem, _runFlag, lRunFlag; + BITAND lFlag, FLAG_NOSELECT, temp_0; + IF temp_0, 2; + BITAND lFlag, FLAG_DRAWONLY, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + BITAND lFlag, FLAG_DRAWUPDATEONLY, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + BITAND lFlag, FLAG_EMBEDDED, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + BITAND lRunFlag, RUNFLAG_TEMPLATE, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + BITAND lRunFlag, RUNFLAG_HIDDEN, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + BITAND lRunFlag, RUNFLAG_CHILDDRAWONLY, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 2; + BITAND lRunFlag, RUNFLAG_CHILDDRAWUPDATEONLY, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + ADDRESS pItem, _runFlag, temp_0; + BITOR lRunFlag, RUNFLAG_NOSELECT, temp_1; + STOREP_F temp_1, temp_0; + STORE_F pItem, parm0_x; + CALL1 _Menu_PrintRunFlag; + DONE; +} + +void(entity pParent, entity pItem) Menu_InheritRunFlag = asm +{ +local float temp_0; +local float temp_1; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITAND temp_1, 3588.000000, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pParent, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_TEMPLATE, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_TEMPLATE, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pParent, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWONLY, temp_0; + IF temp_0, 3; + INDIRECT_F pParent, flag, temp_1; + BITAND temp_1, FLAG_CHILDDRAWONLY, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_CHILDDRAWONLY, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pParent, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWUPDATEONLY, temp_0; + IF temp_0, 3; + INDIRECT_F pParent, flag, temp_1; + BITAND temp_1, FLAG_CHILDDRAWUPDATEONLY, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_CHILDDRAWUPDATEONLY, temp_1; + STOREP_F temp_1, temp_0; + INDIRECT_F pParent, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_HIDDEN, temp_0; + IFNOT temp_0, 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_HIDDEN, temp_1; + STOREP_F temp_1, temp_0; + DONE; +} + +void() Menu_UpdateRunFlags = asm +{ +local vector lOrg; +local vector lSize; +local vector lPos; +local float temp_0; +local float temp_1; +local vector temp_2; + STORE_V Menu_Clip_Position, lPos; + STORE_V Menu_Clip_Size, lSize; + STORE_V Menu_Origin, lOrg; + CALL0 Menu_Process_Setup; + ADDRESS Menu_ActiveWindow, _runFlag, temp_0; + INDIRECT_F Menu_ActiveWindow, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_MOUSEINAREA, temp_1; + STOREP_F temp_1, temp_0; + STORE_F Menu_ActiveWindow, parm0_x; + STORE_F MENU_PROCESS_RUNFLAG, parm1_x; + STORE_F KEY_GAME, parm2_x; + STORE_F KEY_GAME, parm3_x; + STORE_F KEY_GAME, parm4_x; + CALL5 Menu_Process; + STORE_V lSize, Menu_Clip_Size; + STORE_V lPos, Menu_Clip_Position; + STORE_V lOrg, Menu_Origin; + SUB_V Cursor_Position, Menu_Origin, Menu_Cursor_Position; + DONE; +} + +float(entity pEntity) Menu_HasEvents = asm +{ +local float temp_0; + INDIRECT_F pEntity, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWONLY, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + INDIRECT_F pEntity, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_CHILDDRAWUPDATEONLY, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + INDIRECT_F pEntity, flag, temp_0; + BITAND temp_0, FLAG_DRAWONLY, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + INDIRECT_F pEntity, flag, temp_0; + BITAND temp_0, FLAG_DRAWUPDATEONLY, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + RETURN FILE_APPEND; + DONE; +} + +void (vector, vector, vector, float, float, string) _Mgfx_Debug_Info; +void(vector pPos, vector pSize, vector pColor, float pAlpha, float pDrawFlag, string pText) _Mgfx_Debug_Info = asm +{ +local float locked_1585; +local float temp_0; +local float temp_5; + IF sys_debug_mgfx, 2; + RETURN offset_0; + STORE_F pText, parm0_x; + CALL1 String_Zone; + STORE_S return_x, pText; + STORE_V pPos, parm0; + CALL1 vtos; + STORE_V pSize, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, locked_1585; + STORE_F temp_0, return_x; + STORE_V pColor, parm0; + STORE_F return_x, temp_0; + CALL1 vtos; + STORE_F return_x, temp_5; + STORE_F temp_0, return_x; + STORE_F "MGFX output: ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " - ", parm2_x; + STORE_F locked_1585, parm3_x; + STORE_F " C", parm4_x; + STORE_F temp_5, parm5_x; + CALL6 print; + STORE_F pAlpha, parm0_x; + CALL1 ftos; + STORE_F pDrawFlag, parm0_x; + STORE_F return_x, temp_0; + CALL1 ftos; + STORE_F return_x, locked_1585; + STORE_F temp_0, return_x; + STORE_F " A", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " X", parm2_x; + STORE_F locked_1585, parm3_x; + STORE_F " ", parm4_x; + STORE_F pText, parm5_x; + STORE_F " +", parm6_x; + CALL7 print; + STORE_F pText, parm0_x; + CALL1 String_Free; + DONE; +} + +vector(vector pPos) Menu_MenToOrg = asm +{ +local vector temp_2; + SUB_V pPos, Menu_Origin, temp_2; + RETURN temp_2_x; + DONE; +} + +vector(vector pPos) Menu_OrgToMen = asm +{ +local vector temp_2; + ADD_V pPos, Menu_Origin, temp_2; + RETURN temp_2_x; + DONE; +} + +vector(vector pPos) Menu_ConToOrg = asm +{ + STORE_V pPos, parm0; + CALL1 Gfx_ConToMen; + STORE_V return, pPos; + STORE_V pPos, parm0; + CALL1 Menu_MenToOrg; + RETURN return_x; + DONE; +} + +vector(vector pPos) Menu_OrgToCon = asm +{ + STORE_V pPos, parm0; + CALL1 Menu_OrgToMen; + STORE_V return, pPos; + STORE_V pPos, parm0; + CALL1 Gfx_MenToCon; + RETURN return_x; + DONE; +} + +float(vector pPosition, float pCharacter, vector pScale, vector pRGB, float pAlpha, float pFlag) Menu_DrawCharacter = asm +{ + STORE_F pCharacter, parm0_x; + CALL1 ftos; + STORE_F "DrawChar: ", parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_V pPosition, parm0; + STORE_V pScale, parm1; + STORE_V pRGB, parm2; + STORE_F pAlpha, parm3_x; + STORE_F pFlag, parm4_x; + STORE_F return_x, parm5_x; + CALL6 _Mgfx_Debug_Info; + STORE_V pPosition, parm0; + CALL1 Menu_OrgToMen; + STORE_V return, pPosition; + STORE_V pPosition, parm0; + STORE_F pCharacter, parm1_x; + STORE_V pScale, parm2; + STORE_V pRGB, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pFlag, parm5_x; + CALL6 Gfx_DrawCharacter; + RETURN return_x; + DONE; +} + +float(vector pPosition, string pText, vector pScale, vector pRGB, float pAlpha, float pFlag) Menu_DrawString = asm +{ +local float temp_0; + NOT_S pText, temp_0; + IFNOT temp_0, 2; + RETURN FILE_APPEND; + STORE_F "DrawString: ", parm0_x; + STORE_F pText, parm1_x; + CALL2 strcat; + STORE_V pPosition, parm0; + STORE_V pScale, parm1; + STORE_V pRGB, parm2; + STORE_F pAlpha, parm3_x; + STORE_F pFlag, parm4_x; + STORE_F return_x, parm5_x; + CALL6 _Mgfx_Debug_Info; + STORE_V pPosition, parm0; + CALL1 Menu_OrgToMen; + STORE_V return, pPosition; + STORE_V pPosition, parm0; + STORE_F pText, parm1_x; + STORE_V pScale, parm2; + STORE_V pRGB, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pFlag, parm5_x; + CALL6 Gfx_DrawString; + RETURN return_x; + DONE; +} + +float(vector pPosition, string pPicture, vector pSize, vector pRGB, float pAlpha, float pFlag) Menu_DrawPicture = asm +{ + STORE_F "DrawPicture: ", parm0_x; + STORE_F pPicture, parm1_x; + CALL2 strcat; + STORE_V pPosition, parm0; + STORE_V pSize, parm1; + STORE_V pRGB, parm2; + STORE_F pAlpha, parm3_x; + STORE_F pFlag, parm4_x; + STORE_F return_x, parm5_x; + CALL6 _Mgfx_Debug_Info; + STORE_V pPosition, parm0; + CALL1 Menu_OrgToMen; + STORE_V return, pPosition; + STORE_V pPosition, parm0; + STORE_F pPicture, parm1_x; + STORE_V pSize, parm2; + STORE_V pRGB, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pFlag, parm5_x; + CALL6 Gfx_DrawPic; + RETURN return_x; + DONE; +} + +float(vector pPosition, vector pSize, vector pRGB, float pAlpha, float pFlag) Menu_Fill = asm +{ + STORE_V pPosition, parm0; + STORE_V pSize, parm1; + STORE_V pRGB, parm2; + STORE_F pAlpha, parm3_x; + STORE_F pFlag, parm4_x; + STORE_F "Fill", parm5_x; + CALL6 _Mgfx_Debug_Info; + STORE_V pPosition, parm0; + CALL1 Menu_OrgToMen; + STORE_V return, pPosition; + STORE_V pPosition, parm0; + STORE_V pSize, parm1; + STORE_V pRGB, parm2; + STORE_F pAlpha, parm3_x; + STORE_F pFlag, parm4_x; + CALL5 Gfx_Fill; + RETURN return_x; + DONE; +} + +void(float pX, float pY, float pWidth, float pHeight) Menu_SetClipArea = asm +{ +local vector lSize; +local vector lDelta; +local vector lPosition; +local vector temp_2; + STORE_F pX, lPosition_x; + STORE_F pY, lPosition_y; + STORE_V lPosition, parm0; + CALL1 Menu_OrgToMen; + STORE_V return, lPosition; + STORE_F pWidth, lSize_x; + STORE_F pHeight, lSize_y; + STORE_V lPosition, parm0; + STORE_V Menu_Clip_Position, parm1; + STORE_V Menu_Clip_Size, parm2; + CALL3 Util_GetClipDelta; + STORE_V return, lDelta; + ADD_V lPosition, lDelta, lPosition; + SUB_V lSize, lDelta, temp_2; + STORE_V lPosition, parm0; + STORE_V temp_2, parm1; + STORE_V Menu_Clip_Position, parm2; + STORE_V Menu_Clip_Size, parm3; + CALL4 Util_ClipRect; + STORE_V return, lSize; + STORE_F lPosition_x, parm0_x; + STORE_F lPosition_y, parm1_x; + STORE_F pWidth, parm2_x; + STORE_F pHeight, parm3_x; + CALL4 Gfx_SetClipArea; + DONE; +} + +void() Menu_ResetClipArea = asm +{ +local float temp_0; +local float temp_1; + EQ_V Menu_Clip_Position, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 2; + EQ_V Menu_Clip_Size, '0.000000 0.000000 0.000000', temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 3; + CALL0 Gfx_ResetClipArea; + GOTO 6; + STORE_F Menu_Clip_Position_x, parm0_x; + STORE_F Menu_Clip_Position_y, parm1_x; + STORE_F Menu_Clip_Size_x, parm2_x; + STORE_F Menu_Clip_Size_y, parm3_x; + CALL4 Gfx_SetClipArea; + DONE; +} + +void() Menu_Init = asm +{ + CALL0 Sys_Debug_Init; + CALL0 Sys_Debug_Frame; + CALL0 Menu_InitGarbageStats; + CALL0 Menu_Load; + DONE; +} + +void() Menu_Load = asm +{ + STORE_F MENU_MAINFILE, parm0_x; + CALL1 Parser_ParseMenu; + CALL0 Menu_LinkWindows; + DONE; +} + +entity (entity, FIELD TYPE, string, FIELD TYPE, float) finddef; +entity(entity pStart, .string pFind1, string pMatch, .float pFind2, float pMatch2) finddef = asm +{ +local float temp_0; + STORE_F pStart, parm0_x; + STORE_F pFind1, parm1_x; + STORE_F pMatch, parm2_x; + CALL3 findstring; + STORE_ENT return_x, pStart; + EQ_E pStart, null_entity, temp_0; + IFNOT temp_0, 2; + GOTO 6; + INDIRECT_F pStart, pFind2, temp_0; + EQ_F temp_0, pMatch2, temp_0; + IFNOT temp_0, 2; + GOTO 2; + GOTO -12; + RETURN pStart; + DONE; +} + +void(entity pParent) Menu_LinkChildren = asm +{ +local entity lOPrevious; +local entity lOverwrite; +local entity lNext; +local entity lPrevious; +local float lOrder; +local entity lChild; +local float temp_0; +local float temp_1; + INDIRECT_S pParent, name, temp_0; + STORE_F parent, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 findchainstring; + STORE_ENT return_x, lChild; + EQ_E lChild, null_entity, temp_0; + IFNOT temp_0, 2; + RETURN offset_0; + STORE_ENT null_entity, lPrevious; + IFNOT lChild, 7; + INDIRECT_E lChild, chain, lNext; + ADDRESS lChild, chain, temp_0; + STOREP_ENT lPrevious, temp_0; + STORE_ENT lChild, lPrevious; + STORE_ENT lNext, lChild; + GOTO -6; + STORE_ENT lPrevious, lChild; + STORE_F FILE_APPEND, lOrder; + STORE_ENT null_entity, lPrevious; + IFNOT lChild, 45; + INDIRECT_S pParent, name, temp_0; + STORE_F null_entity, parm0_x; + STORE_F parent, parm1_x; + STORE_F temp_0, parm2_x; + STORE_F orderPos, parm3_x; + STORE_F lOrder, parm4_x; + CALL5 finddef; + STORE_ENT return_x, lOverwrite; + EQ_E lOverwrite, lChild, temp_0; + IFNOT temp_0, 4; + ADDRESS lChild, orderPos, temp_0; + STOREP_F lOrder, temp_0; + GOTO 17; + IFNOT lOverwrite, 13; + STORE_F null_entity, parm0_x; + STORE_F chain, parm1_x; + STORE_F lOverwrite, parm2_x; + CALL3 findentity; + STORE_ENT return_x, lOPrevious; + ADDRESS lOPrevious, chain, temp_0; + INDIRECT_E lOverwrite, chain, temp_1; + STOREP_ENT temp_1, temp_0; + ADDRESS lOverwrite, chain, temp_0; + STOREP_ENT lChild, temp_0; + STORE_ENT lOverwrite, lChild; + GOTO 4; + ADDRESS lChild, orderPos, temp_0; + SUB_F KEY_GAME, lOrder, temp_1; + STOREP_F temp_1, temp_0; + IFNOT lPrevious, 4; + ADDRESS lPrevious, _next, temp_0; + STOREP_ENT lChild, temp_0; + GOTO 3; + ADDRESS pParent, _child, temp_0; + STOREP_ENT lChild, temp_0; + ADDRESS lChild, _prev, temp_0; + STOREP_ENT lPrevious, temp_0; + ADDRESS lChild, _parent, temp_0; + STOREP_ENT pParent, temp_0; + STORE_ENT lChild, lPrevious; + INDIRECT_E lChild, chain, lChild; + STORE_F lOrder, temp_0; + ADD_F lOrder, FILE_APPEND, lOrder; + GOTO -44; + ADDRESS lPrevious, _next, temp_0; + STOREP_ENT null_entity, temp_0; + DONE; +} + +void() Menu_LinkWindows = asm +{ +local entity lEntity; +local float temp_0; +local float temp_1; + STORE_F "Loading defaults if necessary +", parm0_x; + CALL1 dprint; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F MENU_NORMAL_NAME, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + EQ_E lEntity, null_entity, temp_0; + IFNOT temp_0, 3; + STORE_F MENU_NORMAL_DEFAULT, parm0_x; + CALL1 loadfromdata; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F MENU_NORMAL_NAME, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + EQ_E lEntity, null_entity, temp_0; + IFNOT temp_0, 3; + STORE_F "Bad MENU_NORMAL_DEFAULT! +", parm0_x; + CALL1 error; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F MENU_INGAME_NAME, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + EQ_E lEntity, null_entity, temp_0; + IFNOT temp_0, 3; + STORE_F MENU_INGAME_DEFAULT, parm0_x; + CALL1 loadfromdata; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F MENU_INGAME_NAME, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + EQ_E lEntity, null_entity, temp_0; + IFNOT temp_0, 3; + STORE_F "Bad MENU_INGAME_DEFAULT! +", parm0_x; + CALL1 error; + STORE_F "Verifying that every name is used only once +", parm0_x; + CALL1 dprint; + STORE_ENT null_entity, lEntity; + STORE_F lEntity, parm0_x; + CALL1 nextent; + STORE_ENT return_x, lEntity; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 19; + STORE_ENT lEntity, self; + INDIRECT_S lEntity, name, temp_0; + STORE_F self, parm0_x; + STORE_F name, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 findstring; + STORE_ENT return_x, self; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 9; + NE_E self, null_entity, temp_0; + IFNOT temp_0, 6; + INDIRECT_S lEntity, name, temp_0; + STORE_F "Name ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " already used! +", parm2_x; + CALL3 objerror; + GOTO -15; + GOTO -22; + STORE_F "Verification of: name, type and parent fields +", parm0_x; + CALL1 dprint; + STORE_ENT null_entity, self; + STORE_F self, parm0_x; + CALL1 nextent; + STORE_ENT return_x, self; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 46; + INDIRECT_S self, name, temp_0; + EQ_S temp_0, "", temp_0; + IFNOT temp_0, 4; + STORE_F "Name is missing! +", parm0_x; + CALL1 objerror; + GOTO -10; + INDIRECT_S self, type, temp_0; + EQ_S temp_0, "", temp_0; + IFNOT temp_0, 4; + STORE_F "Type is missing! +", parm0_x; + CALL1 objerror; + GOTO -16; + INDIRECT_S self, type, parm0_x; + STORE_F "_Spawn", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 isfunction; + IF return_x, 7; + INDIRECT_S self, type, temp_0; + STORE_F "Control ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " not found! +", parm2_x; + CALL3 objerror; + GOTO -28; + INDIRECT_S self, parent, temp_0; + NE_S temp_0, "", temp_0; + IFNOT temp_0, 16; + INDIRECT_S self, parent, temp_0; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + EQ_E lEntity, null_entity, temp_0; + IFNOT temp_0, 7; + INDIRECT_S self, parent, temp_0; + STORE_F "Item ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F " not found! +", parm2_x; + CALL3 objerror; + GOTO -45; + GOTO 3; + ADDRESS self, _parent, temp_0; + STOREP_ENT null_entity, temp_0; + GOTO -49; + STORE_F "Building the child lists +", parm0_x; + CALL1 dprint; + STORE_ENT null_entity, lEntity; + STORE_F lEntity, parm0_x; + CALL1 nextent; + STORE_ENT return_x, lEntity; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 4; + STORE_F lEntity, parm0_x; + CALL1 Menu_LinkChildren; + GOTO -7; + STORE_F "Calling the type functions +", parm0_x; + CALL1 dprint; + STORE_ENT null_entity, lEntity; + STORE_F lEntity, parm0_x; + CALL1 nextent; + STORE_ENT return_x, lEntity; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 21; + STORE_ENT lEntity, self; + INDIRECT_F self, flag, temp_0; + BITAND temp_0, FLAG_TEMPLATE, temp_0; + NOT_F temp_0, temp_0; + IFNOT temp_0, 4; + INDIRECT_F self, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_SPAWNED, temp_1; + NOT_F temp_1, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 10; + INDIRECT_S self, type, parm0_x; + STORE_F "_Spawn", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 callfunction; + ADDRESS self, _runFlag, temp_0; + INDIRECT_F self, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_SPAWNED, temp_1; + STOREP_F temp_1, temp_0; + GOTO -24; + STORE_F "Linking windows finished. +", parm0_x; + CALL1 dprint; + DONE; +} + +void(entity pItem) Menu_LinkItem = asm +{ +local float locked_1586; +local entity lOldSelf; +local entity lEntity; +local float temp_1; +local float temp_5; + INDIRECT_F pItem, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_SPAWNED, locked_1586; + IFNOT locked_1586, 2; + RETURN offset_0; + INDIRECT_S pItem, type, locked_1586; + EQ_S locked_1586, "", locked_1586; + IFNOT locked_1586, 7; + STORE_F pItem, parm0_x; + CALL1 etos; + STORE_F "LinkItem: Type is missing (", parm0_x; + STORE_F return_x, parm1_x; + STORE_F ")! +", parm2_x; + CALL3 error; + INDIRECT_S pItem, type, parm0_x; + STORE_F "_Spawn", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 isfunction; + IF return_x, 10; + INDIRECT_S pItem, type, locked_1586; + STORE_F pItem, parm0_x; + CALL1 etos; + STORE_F "LinkItem: Control ", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F " not found (", parm2_x; + STORE_F return_x, parm3_x; + STORE_F ")! +", parm4_x; + CALL5 error; + STORE_ENT null_entity, lEntity; + INDIRECT_S pItem, name, locked_1586; + STORE_F lEntity, parm0_x; + STORE_F name, parm1_x; + STORE_F locked_1586, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lEntity; + NE_E return_x, null_entity, locked_1586; + IFNOT locked_1586, 20; + NE_E lEntity, pItem, locked_1586; + IFNOT locked_1586, 17; + INDIRECT_S pItem, name, locked_1586; + STORE_F pItem, parm0_x; + CALL1 etos; + STORE_F lEntity, parm0_x; + STORE_F return_x, temp_1; + CALL1 etos; + STORE_F return_x, temp_5; + STORE_F temp_1, return_x; + STORE_F "LinkItem: Name '", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F "' already in use (", parm2_x; + STORE_F return_x, parm3_x; + STORE_F ", ", parm4_x; + STORE_F temp_5, parm5_x; + STORE_F ")!", parm6_x; + CALL7 error; + GOTO -26; + INDIRECT_S pItem, parent, locked_1586; + NE_S locked_1586, "", locked_1586; + IFNOT locked_1586, 20; + ADDRESS pItem, _parent, locked_1586; + INDIRECT_S pItem, parent, temp_1; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F temp_1, parm2_x; + CALL3 findstring; + STOREP_ENT return_x, locked_1586; + INDIRECT_E pItem, _parent, locked_1586; + IF locked_1586, 10; + INDIRECT_S pItem, parent, locked_1586; + STORE_F pItem, parm0_x; + CALL1 etos; + STORE_F "LinkItem: Couldnt find parent '", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F "' (", parm2_x; + STORE_F return_x, parm3_x; + STORE_F ")!", parm4_x; + CALL5 error; + GOTO 3; + ADDRESS pItem, _parent, locked_1586; + STOREP_ENT null_entity, locked_1586; + STORE_F pItem, parm0_x; + CALL1 Menu_LinkChildren; + INDIRECT_E pItem, _child, lEntity; + IFNOT lEntity, 5; + STORE_F lEntity, parm0_x; + CALL1 Menu_LinkItem; + INDIRECT_E lEntity, _next, lEntity; + GOTO -4; + STORE_ENT self, lOldSelf; + STORE_ENT pItem, self; + INDIRECT_F self, flag, locked_1586; + BITAND locked_1586, FLAG_TEMPLATE, locked_1586; + IF locked_1586, 10; + INDIRECT_S self, type, parm0_x; + STORE_F "_Spawn", parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 callfunction; + ADDRESS self, _runFlag, locked_1586; + INDIRECT_F self, _runFlag, temp_1; + BITOR temp_1, RUNFLAG_SPAWNED, temp_1; + STOREP_F temp_1, locked_1586; + STORE_ENT lOldSelf, self; + DONE; +} + +void() Menu_Hide = asm +{ + STORE_F Menu_ActiveItem, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 Raise_Select; + STORE_F FILE_APPEND, parm0_x; + CALL1 Menu_CollectGarbage; + CALL0 Menu_ResetGarbageStats; + DONE; +} + +void() Menu_PerformReinit = asm +{ +local float temp_0; +local float temp_1; +local float temp_5; + CALL0 Menu_History_Clear; + STORE_FNC Util_NullFunction, Menu_KeyHook; + STORE_ENT null_entity, self; + STORE_F self, parm0_x; + CALL1 nextent; + STORE_ENT return_x, self; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 27; + INDIRECT_S self, parent, temp_0; + EQ_S temp_0, "", temp_0; + IFNOT temp_0, 4; + ADDRESS self, _parent, temp_0; + STOREP_ENT null_entity, temp_0; + GOTO 18; + INDIRECT_E self, _parent, temp_0; + INDIRECT_S temp_0, name, temp_0; + INDIRECT_S self, parent, temp_1; + NE_S temp_0, temp_1, temp_0; + IFNOT temp_0, 13; + INDIRECT_S self, parent, temp_0; + INDIRECT_S self, name, temp_1; + INDIRECT_E self, _parent, temp_5; + INDIRECT_S temp_5, name, temp_5; + STORE_F "Parent (should be ", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F ") of menu item ", parm2_x; + STORE_F temp_1, parm3_x; + STORE_F " changed to ", parm4_x; + STORE_F temp_5, parm5_x; + STORE_F " ! +", parm6_x; + CALL7 objerror; + STORE_F self, parm0_x; + CALL1 Raise_Reinit; + GOTO -30; + IFNOT MENU_ALLOWINGAME, 2; + BITAND gamestatus, KEY_MENU, temp_0; + AND MENU_ALLOWINGAME, temp_0, temp_0; + IFNOT temp_0, 7; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F MENU_INGAME_NAME, parm2_x; + CALL3 findstring; + STORE_ENT return_x, Menu_ActiveWindow; + GOTO 6; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F MENU_NORMAL_NAME, parm2_x; + CALL3 findstring; + STORE_ENT return_x, Menu_ActiveWindow; + CALL0 Menu_UpdateRunFlags; + STORE_F KEY_GAME, parm0_x; + CALL1 Menu_Reselect; + DONE; +} + +void() Menu_Shutdown = asm +{ +local float temp_0; + STORE_ENT null_entity, self; + STORE_F self, parm0_x; + CALL1 nextent; + STORE_ENT return_x, self; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 4; + STORE_F self, parm0_x; + CALL1 Raise_Destroy; + GOTO -7; + DONE; +} + +entity(string pType, string pName, string pParent) Menu_CreateItem = asm +{ +local entity lItem; +local float temp_0; + NOT_S pType, temp_0; + IFNOT temp_0, 5; + STORE_F "Bad pType '", parm0_x; + STORE_F pType, parm1_x; + STORE_F "'!", parm2_x; + CALL3 error; + NOT_S pName, temp_0; + IFNOT temp_0, 5; + STORE_F "Bad pName '", parm0_x; + STORE_F pName, parm1_x; + STORE_F "'!", parm2_x; + CALL3 error; + CALL0 spawn; + STORE_ENT return_x, lItem; + STORE_F pParent, parm0_x; + STORE_F "::", parm1_x; + STORE_F pName, parm2_x; + CALL3 strcat; + STORE_F "{ type "", parm0_x; + STORE_F pType, parm1_x; + STORE_F "" name "", parm2_x; + STORE_F return_x, parm3_x; + STORE_F "" parent "", parm4_x; + STORE_F pParent, parm5_x; + STORE_F "" }", parm6_x; + CALL7 strcat; + STORE_F lItem, parm0_x; + STORE_F return_x, parm1_x; + CALL2 parseentitydata; + RETURN lItem; + DONE; +} + +entity(entity pTemplate, string pName, string pParent, bool pTree) Menu_DeriveItem = asm +{ +local float locked_1586; +local string lName; +local entity lChild; +local entity lItem; +local float temp_1; + IF pTemplate, 3; + STORE_F "Null pTemplate!", parm0_x; + CALL1 error; + NOT_S pName, locked_1586; + IFNOT locked_1586, 5; + STORE_F "Bad pName '", parm0_x; + STORE_F pName, parm1_x; + STORE_F "'!", parm2_x; + CALL3 error; + CALL0 spawn; + STORE_ENT return_x, lItem; + STORE_F pTemplate, parm0_x; + STORE_F lItem, parm1_x; + CALL2 copyentity; + INDIRECT_F lItem, flag, locked_1586; + BITAND locked_1586, FLAG_TEMPLATE, locked_1586; + IFNOT locked_1586, 5; + ADDRESS lItem, flag, locked_1586; + INDIRECT_F lItem, flag, temp_1; + SUB_F temp_1, FLAG_TEMPLATE, temp_1; + STOREP_F temp_1, locked_1586; + INDIRECT_F lItem, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_SPAWNED, locked_1586; + IFNOT locked_1586, 5; + ADDRESS lItem, _runFlag, locked_1586; + INDIRECT_F lItem, _runFlag, temp_1; + SUB_F temp_1, RUNFLAG_SPAWNED, temp_1; + STOREP_F temp_1, locked_1586; + STORE_F pParent, parm0_x; + STORE_F "::", parm1_x; + STORE_F pName, parm2_x; + CALL3 strcat; + STORE_F "{ name "", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "" parent "", parm2_x; + STORE_F pParent, parm3_x; + STORE_F "" }", parm4_x; + CALL5 strcat; + STORE_F lItem, parm0_x; + STORE_F return_x, parm1_x; + CALL2 parseentitydata; + IFNOT pTree, 24; + INDIRECT_E pTemplate, _child, lChild; + IFNOT lChild, 22; + INDIRECT_S lChild, name, locked_1586; + INDIRECT_S lChild, parent, parm0_x; + CALL1 strlen; + ADD_F return_x, KEY_MENU, temp_1; + STORE_F locked_1586, parm0_x; + STORE_F temp_1, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lName; + INDIRECT_S lItem, name, locked_1586; + STORE_F lChild, parm0_x; + STORE_F lName, parm1_x; + STORE_F locked_1586, parm2_x; + STORE_F FILE_APPEND, parm3_x; + CALL4 Menu_DeriveItem; + STORE_F lName, parm0_x; + CALL1 String_Free; + INDIRECT_E lChild, _next, lChild; + GOTO -21; + RETURN lItem; + DONE; +} + +void(entity pItem, string pData) Menu_AddEntityData = asm +{ + STORE_F pItem, parm0_x; + STORE_F pData, parm1_x; + CALL2 parseentitydata; + DONE; +} + +void(entity pWindow) Menu_LinkWindow = asm +{ + STORE_F pWindow, parm0_x; + CALL1 Menu_LinkItem; + DONE; +} + +void() Sys_Debug_Init = asm +{ + STORE_F SYSTEM_CVAR_VERSION_BUILDDATE, parm0_x; + STORE_F "", parm1_x; + STORE_F CVAR_READONLY, parm2_x; + CALL3 registercvar; + STORE_F SYSTEM_CVAR_VERSION_BUILDDATE, parm0_x; + STORE_F SYSTEM_CVAR_VERSION_BUILDDATE_VALUE, parm1_x; + CALL2 cvar_set; + STORE_F SYSTEM_CVAR_VERSION_BUILDTIME, parm0_x; + STORE_F "", parm1_x; + STORE_F CVAR_READONLY, parm2_x; + CALL3 registercvar; + STORE_F SYSTEM_CVAR_VERSION_BUILDTIME, parm0_x; + STORE_F SYSTEM_CVAR_VERSION_BUILDTIME_VALUE, parm1_x; + CALL2 cvar_set; + STORE_F SYSTEM_CVAR_VERSION, parm0_x; + STORE_F "", parm1_x; + STORE_F CVAR_READONLY, parm2_x; + CALL3 registercvar; + STORE_F SYSTEM_CVAR_VERSION, parm0_x; + STORE_F SYSTEM_CVAR_VERSION_VALUE, parm1_x; + CALL2 cvar_set; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_REF, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_RUNFLAG, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_PROCESS, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_MGFX, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_STRUCTURE, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F SYSTEM_CVAR_DEBUG_PARSER, parm0_x; + STORE_F SYSTEM_CVAR_DEBUG_PARSER_DEFAULT, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F SYSTEM_CVAR_DEBUG_PROCESS_FILTER, parm0_x; + STORE_F SYSTEM_CVAR_DEBUG_PROCESS_FILTER_DEFAULT, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_SOUND, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F SYSTEM_CVAR_DEBUG_DUMP_NAMES, parm0_x; + STORE_F "0", parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_AREA, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_STEP, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F SYSTEM_CVAR_DEBUG_MOUSE, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + DONE; +} + +void() Sys_Debug_Frame = asm +{ +local float lStep; +local float lTemp2; +local float lTemp1; +local float temp_0; + STORE_F SYSTEM_CVAR_DEBUG, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug; + IFNOT sys_debug, 155; + STORE_F SYSTEM_CVAR_DEBUG_REF, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_ref; + STORE_F SYSTEM_CVAR_DEBUG_AREA, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_area; + STORE_F SYSTEM_CVAR_DEBUG_SOUND, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_sound; + STORE_F SYSTEM_CVAR_DEBUG_STRUCTURE, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_structure; + STORE_F SYSTEM_CVAR_DEBUG_MOUSE, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_mouse; + STORE_F SYSTEM_CVAR_DEBUG_STEP, parm0_x; + CALL1 cvar; + STORE_F return_x, lStep; + EQ_F lStep, FILE_APPEND, temp_0; + IFNOT temp_0, 3; + STORE_F FILE_APPEND, sys_debug_halt; + GOTO 16; + EQ_F lStep, KEY_MENU, temp_0; + IFNOT temp_0, 13; + STORE_F KEY_GAME, sys_debug_halt; + STORE_F SYSTEM_CVAR_DEBUG_STEP, parm0_x; + STORE_F "1", parm1_x; + CALL2 cvar_set; + CALL0 gettime; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_F "Menu: -- Step: Time:", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " +", parm2_x; + CALL3 print; + GOTO 2; + STORE_F KEY_GAME, sys_debug_halt; + STORE_F SYSTEM_CVAR_DEBUG_RUNFLAG, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_runflag; + GOTO 8; + STORE_F KEY_GAME, sys_debug_runflag; + GOTO 11; + STORE_F SYSTEM_CVAR_DEBUG_RUNFLAG, parm0_x; + STORE_F "0", parm1_x; + CALL2 cvar_set; + STORE_F FILE_APPEND, sys_debug_runflag; + GOTO 6; + IFNOT sys_debug_runflag, -7; + EQ_F sys_debug_runflag, FILE_APPEND, temp_0; + IF temp_0, -7; + EQ_F sys_debug_runflag, KEY_MENU, temp_0; + IF temp_0, -6; + STORE_F SYSTEM_CVAR_DEBUG_PROCESS, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_process; + GOTO 8; + STORE_F KEY_GAME, sys_debug_process; + GOTO 11; + STORE_F SYSTEM_CVAR_DEBUG_PROCESS, parm0_x; + STORE_F "0", parm1_x; + CALL2 cvar_set; + STORE_F FILE_APPEND, sys_debug_process; + GOTO 6; + IFNOT sys_debug_process, -7; + EQ_F sys_debug_process, FILE_APPEND, temp_0; + IF temp_0, -7; + EQ_F sys_debug_process, KEY_MENU, temp_0; + IF temp_0, -6; + STORE_F SYSTEM_CVAR_DEBUG_MGFX, parm0_x; + CALL1 cvar; + STORE_F return_x, sys_debug_mgfx; + GOTO 8; + STORE_F KEY_GAME, sys_debug_mgfx; + GOTO 11; + STORE_F SYSTEM_CVAR_DEBUG_MGFX, parm0_x; + STORE_F "0", parm1_x; + CALL2 cvar_set; + STORE_F FILE_APPEND, sys_debug_mgfx; + GOTO 6; + IFNOT sys_debug_mgfx, -7; + EQ_F sys_debug_mgfx, FILE_APPEND, temp_0; + IF temp_0, -7; + EQ_F sys_debug_mgfx, KEY_MENU, temp_0; + IF temp_0, -6; + STORE_F SYSTEM_CVAR_DEBUG_PROCESS_FILTER, parm0_x; + CALL1 str_cvar; + STORE_F return_x, parm0_x; + CALL1 tokenize; + STORE_F return_x, lTemp1; + STORE_F KEY_GAME, sys_debug_process_filter; + STORE_F KEY_GAME, lTemp2; + LT lTemp2, lTemp1, temp_0; + IFNOT temp_0, 32; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "runflag", temp_0; + IFNOT temp_0, 3; + BITOR sys_debug_process_filter, MENU_PROCESS_RUNFLAG, sys_debug_process_filter; + GOTO 24; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "draw", temp_0; + IFNOT temp_0, 3; + BITOR sys_debug_process_filter, MENU_PROCESS_DRAW, sys_debug_process_filter; + GOTO 18; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "update", temp_0; + IFNOT temp_0, 3; + BITOR sys_debug_process_filter, MENU_PROCESS_UPDATE, sys_debug_process_filter; + GOTO 12; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "mouse", temp_0; + IFNOT temp_0, 3; + BITOR sys_debug_process_filter, MENU_PROCESS_MOUSE, sys_debug_process_filter; + GOTO 6; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "key", temp_0; + IFNOT temp_0, 2; + BITOR sys_debug_process_filter, MENU_PROCESS_KEY, sys_debug_process_filter; + ADD_F lTemp2, FILE_APPEND, lTemp2; + GOTO -32; + STORE_F SYSTEM_CVAR_DEBUG_PARSER, parm0_x; + CALL1 str_cvar; + STORE_F return_x, parm0_x; + CALL1 tokenize; + STORE_F return_x, lTemp1; + STORE_F KEY_GAME, sys_debug_parser; + STORE_F KEY_GAME, lTemp2; + LT lTemp2, lTemp1, temp_0; + IFNOT temp_0, 20; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "info", temp_0; + IFNOT temp_0, 3; + BITOR sys_debug_parser, PARSER_INFO, sys_debug_parser; + GOTO 12; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "high", temp_0; + IFNOT temp_0, 3; + BITOR sys_debug_parser, PARSER_HIGH, sys_debug_parser; + GOTO 6; + STORE_F lTemp2, parm0_x; + CALL1 argv; + EQ_S return_x, "low", temp_0; + IFNOT temp_0, 2; + BITOR sys_debug_parser, PARSER_LOW, sys_debug_parser; + ADD_F lTemp2, FILE_APPEND, lTemp2; + GOTO -20; + GOTO 12; + STORE_F KEY_GAME, sys_debug_halt; + STORE_F KEY_GAME, sys_debug_ref; + STORE_F KEY_GAME, sys_debug_area; + STORE_F KEY_GAME, sys_debug_sound; + STORE_F KEY_GAME, sys_debug_runflag; + STORE_F KEY_GAME, sys_debug_process; + STORE_F KEY_GAME, sys_debug_mgfx; + STORE_F KEY_GAME, sys_debug_structure; + STORE_F KEY_GAME, sys_debug_parser; + STORE_F KEY_GAME, sys_debug_process_filter; + STORE_F KEY_GAME, sys_debug_mouse; + STORE_F SYSTEM_CVAR_DEBUG_DUMP_NAMES, parm0_x; + CALL1 cvar; + IFNOT return_x, 5; + CALL0 Sys_Debug_DumpNames; + STORE_F SYSTEM_CVAR_DEBUG_DUMP_NAMES, parm0_x; + STORE_F "0", parm1_x; + CALL2 cvar_set; + STORE_V '-1.000000 -1.000000 -1.000000', sys_debug_cursor_localpos; + DONE; +} + +void() Sys_Debug_Draw = asm +{ +local float temp_0; +local float temp_1; + EQ_F sys_debug_mouse, FILE_APPEND, temp_0; + IFNOT temp_0, 27; + STORE_F sys_debug_cursor_localpos_x, parm0_x; + CALL1 floor; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_F sys_debug_cursor_localpos_y, parm0_x; + STORE_F return_x, temp_0; + CALL1 floor; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F temp_1, parm0_x; + STORE_F return_x, temp_0; + CALL1 ftos; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F return_x, parm0_x; + STORE_F " ", parm1_x; + STORE_F temp_1, parm2_x; + CALL3 strcat; + STORE_V '1.000000 0.000000 0.000000', parm0; + STORE_F return_x, parm1_x; + STORE_V '9.000000 9.000000 0.000000', parm2; + STORE_V '0.800000 0.800000 0.800000', parm3; + STORE_F FILE_APPEND, parm4_x; + STORE_F FILE_APPEND, parm5_x; + CALL6 Cursor_PrintInfo; + GOTO 28; + EQ_F sys_debug_mouse, KEY_MENU, temp_0; + IFNOT temp_0, 26; + STORE_F Cursor_Position_x, parm0_x; + CALL1 floor; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_F Cursor_Position_y, parm0_x; + STORE_F return_x, temp_0; + CALL1 floor; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F temp_1, parm0_x; + STORE_F return_x, temp_0; + CALL1 ftos; + STORE_F return_x, temp_1; + STORE_F temp_0, return_x; + STORE_F return_x, parm0_x; + STORE_F " ", parm1_x; + STORE_F temp_1, parm2_x; + CALL3 strcat; + STORE_V '1.000000 0.000000 0.000000', parm0; + STORE_F return_x, parm1_x; + STORE_V '9.000000 9.000000 0.000000', parm2; + STORE_V '0.800000 0.800000 0.800000', parm3; + STORE_F FILE_APPEND, parm4_x; + STORE_F FILE_APPEND, parm5_x; + CALL6 Cursor_PrintInfo; + DONE; +} + +void() Sys_Debug_DumpNames = asm +{ +local entity lNode; +local float temp_0; + STORE_F "Menu: Dumping names.. +", parm0_x; + CALL1 print; + STORE_ENT null_entity, lNode; + STORE_F lNode, parm0_x; + CALL1 nextent; + STORE_ENT return_x, lNode; + NE_E return_x, null_entity, temp_0; + IFNOT temp_0, 11; + STORE_F lNode, parm0_x; + CALL1 etos; + INDIRECT_S lNode, name, temp_0; + STORE_F "Menu: ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " <-> ", parm2_x; + STORE_F temp_0, parm3_x; + STORE_F " +", parm4_x; + CALL5 print; + GOTO -14; + STORE_F " +", parm0_x; + CALL1 print; + DONE; +} + +void () Parser_Define_Spawn; +void() Parser_Define_Spawn = asm +{ + DONE; +} + +void () Parser_TokenizeLine; +void() Parser_TokenizeLine = asm +{ + STORE_F Parser_Line, parm0_x; + CALL1 tokenize; + STORE_F return_x, Parser_NumTokens; + STORE_F KEY_GAME, Parser_TokenNum; + DONE; +} + +float() Parser_GetToken = asm +{ +local string lLine; +local float temp_0; + GE Parser_TokenNum, Parser_NumTokens, temp_0; + IFNOT temp_0, 22; + STORE_F Parser_File, parm0_x; + CALL1 fgets; + STORE_S return_x, lLine; + ADD_F Parser_LineNumber, FILE_APPEND, Parser_LineNumber; + NOT_S lLine, temp_0; + IFNOT temp_0, 8; + STORE_F lLine, parm0_x; + CALL1 validstring; + IF return_x, 3; + RETURN KEY_GAME; + GOTO 3; + CALL0 Parser_GetToken; + RETURN return_x; + STORE_F Parser_Line, parm0_x; + STORE_F lLine, parm1_x; + CALL2 String_Set; + STORE_S return_x, Parser_Line; + CALL0 Parser_TokenizeLine; + CALL0 Parser_GetToken; + RETURN return_x; + GOTO 9; + STORE_F Parser_TokenNum, parm0_x; + CALL1 argv; + STORE_F Parser_Token, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, Parser_Token; + STORE_F Parser_TokenNum, temp_0; + ADD_F Parser_TokenNum, FILE_APPEND, Parser_TokenNum; + STORE_F "Read token '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F PARSER_LOW, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + CALL0 Parser_GetTokenType; + STORE_F return_x, Parser_TokenType; + EQ_F Parser_TokenType, PARSER_TT_BRACKETOPEN, temp_0; + IFNOT temp_0, 4; + CALL0 Parser_ProcessDefine; + CALL0 Parser_GetToken; + RETURN return_x; + RETURN FILE_APPEND; + DONE; +} + +float() Parser_GetTokenType = asm +{ +local float temp_0; + EQ_S Parser_Token, "Item", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_ITEM; + GOTO 48; + EQ_S Parser_Token, "Template", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_TEMPLATE; + GOTO 44; + EQ_S Parser_Token, "Derive", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_DERIVE; + GOTO 40; + EQ_S Parser_Token, "DeriveTemplate", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_DERIVETEMPLATE; + GOTO 36; + EQ_S Parser_Token, "#define", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_DEFINE; + GOTO 32; + EQ_S Parser_Token, "Ignore", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_IGNORE; + GOTO 28; + EQ_S Parser_Token, "#undef", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_UNDEF; + GOTO 24; + EQ_S Parser_Token, "Namespace", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_NAMESPACE; + GOTO 20; + EQ_S Parser_Token, "#include", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_INCLUDE; + GOTO 16; + EQ_S Parser_Token, "}", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_BRACECLOSE; + GOTO 12; + EQ_S Parser_Token, "{", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_BRACEOPEN; + GOTO 8; + EQ_S Parser_Token, "[", temp_0; + IFNOT temp_0, 3; + RETURN PARSER_TT_BRACKETOPEN; + GOTO 4; + EQ_S Parser_Token, "]", temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_BRACKETCLOSE; + RETURN PARSER_TT_TOKEN; + DONE; +} + +void (float, string) _Parser_Print; +void(float pLevel, string pText) _Parser_Print = asm +{ +local float temp_0; +local float temp_1; + EQ_F pLevel, KEY_GAME, temp_0; + IF temp_0, 2; + BITAND sys_debug_parser, pLevel, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 5; + STORE_F "Parser: ", parm0_x; + STORE_F pText, parm1_x; + STORE_F " +", parm2_x; + CALL3 print; + DONE; +} + +void(float pLevel, string pInfo) Parser_Print = asm +{ +local float temp_0; +local float temp_1; + EQ_F pLevel, KEY_GAME, temp_0; + IF temp_0, 2; + BITAND sys_debug_parser, pLevel, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 11; + STORE_F Parser_LineNumber, parm0_x; + CALL1 ftos; + STORE_F "Parser: ", parm0_x; + STORE_F Parser_Filename, parm1_x; + STORE_F ":", parm2_x; + STORE_F return_x, parm3_x; + STORE_F ": ", parm4_x; + STORE_F pInfo, parm5_x; + STORE_F " +", parm6_x; + CALL7 print; + DONE; +} + +void(string pInfo) Parser_Error = asm +{ + STORE_F Parser_LineNumber, parm0_x; + CALL1 ftos; + STORE_F "Parser: ", parm0_x; + STORE_F Parser_Filename, parm1_x; + STORE_F ":", parm2_x; + STORE_F return_x, parm3_x; + STORE_F ": Error: '", parm4_x; + CALL5 print; + STORE_F Parser_Token, parm0_x; + STORE_F "' not expected (", parm1_x; + STORE_F pInfo, parm2_x; + STORE_F ")! +", parm3_x; + CALL4 print; + STORE_F Parser_File, parm0_x; + CALL1 fclose; + STORE_F "Error in the menu parser!", parm0_x; + CALL1 error; + DONE; +} + +void () ArrayGet*PARSER_TT_TEXT; +void(float pType) Parser_Expect = asm +{ +local float temp_0; +local float temp_1; +local float temp_5; + CALL0 Parser_GetToken; + NOT_F return_x, temp_0; + IF temp_0, 5; + NE_F Parser_TokenType, pType, temp_1; + IFNOT temp_1, 2; + NE_F Parser_TokenType, PARSER_TT_BRACKETOPEN, temp_5; + AND temp_1, temp_5, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 8; + SUB_F pType, PARSER_TT_ITEM, parm0_x; + CALL1 ArrayGet*PARSER_TT_TEXT; + STORE_F "expected ", parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 Parser_Error; + DONE; +} + +void(string pNamespace) Parser_IncludeFile = asm +{ +local float lTokenNum; +local float lNumTokens; +local float lLineNumber; +local float lFile; +local string lLine; +local string lFilename; +local float temp_0; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_F "#include: Including file '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F PARSER_INFO, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F Parser_Token, parm0_x; + CALL1 Util_AltStringPrepare; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F " {'", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F Parser_FileList, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Append; + STORE_S return_x, Parser_FileList; + STORE_S Parser_Filename, lFilename; + STORE_S Parser_Line, lLine; + STORE_F Parser_File, lFile; + STORE_F Parser_LineNumber, lLineNumber; + STORE_F Parser_NumTokens, lNumTokens; + STORE_F Parser_TokenNum, lTokenNum; + SUB_F Parser_IncludeDepth, FILE_APPEND, Parser_IncludeDepth; + GT Parser_IncludeDepth, K_SPACE, temp_0; + IFNOT temp_0, 5; + STORE_F KEY_GAME, parm0_x; + STORE_F "#include: Maximum depth reached!", parm1_x; + CALL2 Parser_Print; + GOTO 4; + STORE_F Parser_Token, parm0_x; + STORE_F pNamespace, parm1_x; + CALL2 Parser_ParseFile; + SUB_F Parser_IncludeDepth, FILE_APPEND, Parser_IncludeDepth; + STORE_S lFilename, Parser_Filename; + STORE_S lLine, Parser_Line; + STORE_F lFile, Parser_File; + STORE_F lLineNumber, Parser_LineNumber; + CALL0 Parser_TokenizeLine; + STORE_F lNumTokens, Parser_NumTokens; + STORE_F lTokenNum, Parser_TokenNum; + STORE_F Parser_FileList, parm0_x; + STORE_F "}", parm1_x; + CALL2 String_Append; + STORE_S return_x, Parser_FileList; + DONE; +} + +void() Parser_ParseDefine = asm +{ +local float locked_1586; +local float lOldLine; +local entity lDefine; +local float temp_1; + STORE_F KEY_MENU, parm0_x; + STORE_F "Parsing #define...", parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_ENT Parser_DefineChain, lDefine; + IFNOT lDefine, 16; + INDIRECT_S lDefine, name, locked_1586; + EQ_S Parser_Token, locked_1586, locked_1586; + IFNOT locked_1586, 11; + STORE_F "#define: [", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "] already defined!", parm2_x; + CALL3 strcat; + STORE_F PARSER_INFO, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + RETURN offset_0; + INDIRECT_E lDefine, chain, lDefine; + GOTO -15; + CALL0 spawn; + STORE_ENT return_x, lDefine; + ADDRESS lDefine, type, locked_1586; + STOREP_S "Parser_Define", locked_1586; + ADDRESS lDefine, name, locked_1586; + STORE_F Parser_Token, parm0_x; + CALL1 String_Zone; + STOREP_S return_x, locked_1586; + STORE_F lDefine, parm0_x; + STORE_F value, parm1_x; + CALL2 String_EntityZone; + STORE_F Parser_LineNumber, lOldLine; + CALL0 Parser_GetToken; + IF return_x, 3; + GOTO 21; + GOTO 19; + NE_F lOldLine, Parser_LineNumber, locked_1586; + IFNOT locked_1586, 4; + SUB_F Parser_TokenNum, FILE_APPEND, Parser_TokenNum; + GOTO 16; + GOTO 14; + EQ_S Parser_Token, "\", locked_1586; + IFNOT locked_1586, 3; + ADD_F lOldLine, FILE_APPEND, lOldLine; + GOTO 10; + INDIRECT_S lDefine, value, parm0_x; + STORE_F """, parm1_x; + STORE_F Parser_Token, parm2_x; + STORE_F "" ", parm3_x; + CALL4 strcat; + STORE_F lDefine, parm0_x; + STORE_F value, parm1_x; + STORE_F return_x, parm2_x; + CALL3 String_EntitySet; + GOTO -22; + INDIRECT_S lDefine, name, locked_1586; + INDIRECT_S lDefine, value, temp_1; + STORE_F " Name = '", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F "' Replacement = '", parm2_x; + STORE_F temp_1, parm3_x; + STORE_F "'", parm4_x; + CALL5 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + ADDRESS lDefine, chain, locked_1586; + STOREP_ENT Parser_DefineChain, locked_1586; + STORE_ENT lDefine, Parser_DefineChain; + STORE_F PARSER_HIGH, parm0_x; + STORE_F "Done parsing #define", parm1_x; + CALL2 Parser_Print; + DONE; +} + +void() Parser_ParseUndef = asm +{ +local entity lPrevious; +local entity lEntity; +local float temp_0; +local float temp_1; + STORE_F PARSER_HIGH, parm0_x; + STORE_F "Parsing #undef...", parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_ENT null_entity, lPrevious; + STORE_ENT Parser_DefineChain, lEntity; + IFNOT lEntity, 27; + INDIRECT_S lEntity, name, temp_0; + EQ_S temp_0, Parser_Token, temp_0; + IFNOT temp_0, 21; + IFNOT lPrevious, 5; + ADDRESS lPrevious, chain, temp_0; + INDIRECT_E lEntity, chain, temp_1; + STOREP_ENT temp_1, temp_0; + GOTO 2; + INDIRECT_E lEntity, chain, Parser_DefineChain; + STORE_F "#undef: Removed [", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "]", parm2_x; + CALL3 strcat; + STORE_F PARSER_INFO, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + INDIRECT_S lEntity, name, parm0_x; + CALL1 String_Free; + INDIRECT_S lEntity, value, parm0_x; + CALL1 String_Free; + STORE_F lEntity, parm0_x; + CALL1 remove; + RETURN offset_0; + STORE_ENT lEntity, lPrevious; + INDIRECT_E lEntity, chain, lEntity; + GOTO -26; + STORE_F "#undef: [", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "] not found!", parm2_x; + CALL3 strcat; + STORE_F PARSER_INFO, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + DONE; +} + +void() Parser_ProcessDefine = asm +{ +local entity lDefine; +local string lConstant; +local float temp_0; +local float temp_1; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_F Parser_Token, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lConstant; + STORE_F PARSER_TT_BRACKETCLOSE, parm0_x; + CALL1 Parser_Expect; + STORE_F "Processing [", parm0_x; + STORE_F lConstant, parm1_x; + STORE_F "]...", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_ENT Parser_DefineChain, lDefine; + IFNOT lDefine, 41; + INDIRECT_S lDefine, name, temp_0; + EQ_S temp_0, lConstant, temp_0; + IFNOT temp_0, 36; + INDIRECT_S lDefine, value, temp_0; + STORE_F " ", parm0_x; + STORE_F temp_0, parm1_x; + CALL2 strcat; + STORE_F Parser_Line, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, Parser_Line; + STORE_F "Replacing with '", parm0_x; + STORE_F Parser_Line, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + LT Parser_TokenNum, Parser_NumTokens, temp_0; + IFNOT temp_0, 15; + STORE_F Parser_TokenNum, parm0_x; + CALL1 argv; + STORE_F Parser_Line, parm0_x; + STORE_F " "", parm1_x; + STORE_F return_x, parm2_x; + STORE_F """, parm3_x; + CALL4 strcat; + STORE_F Parser_Line, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, Parser_Line; + STORE_F Parser_TokenNum, temp_1; + ADD_F Parser_TokenNum, FILE_APPEND, Parser_TokenNum; + GOTO -15; + CALL0 Parser_TokenizeLine; + STORE_F lConstant, parm0_x; + CALL1 String_Free; + RETURN offset_0; + INDIRECT_E lDefine, chain, lDefine; + GOTO -40; + STORE_F lConstant, parm0_x; + CALL1 String_Normal; + STORE_F Parser_Token, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, Parser_Token; + STORE_F "#define: Couldn't find constant '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "'!", parm2_x; + CALL3 strcat; + STORE_F KEY_GAME, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F "constant not found", parm0_x; + CALL1 Parser_Error; + DONE; +} + +void(string pNamespace) Parser_ParseDefinition = asm +{ +local entity lEntity; +local float temp_0; +local float temp_1; + EQ_F Parser_TokenType, PARSER_TT_ITEM, temp_0; + IFNOT temp_0, 4; + STORE_F pNamespace, parm0_x; + CALL1 Parser_ParseItem; + GOTO 50; + EQ_F Parser_TokenType, PARSER_TT_TEMPLATE, temp_0; + IFNOT temp_0, 9; + STORE_F pNamespace, parm0_x; + CALL1 Parser_ParseItem; + STORE_ENT return_x, lEntity; + ADDRESS lEntity, flag, temp_0; + INDIRECT_F lEntity, flag, temp_1; + BITOR temp_1, FLAG_TEMPLATE, temp_1; + STOREP_F temp_1, temp_0; + GOTO 40; + EQ_F Parser_TokenType, PARSER_TT_DEFINE, temp_0; + IFNOT temp_0, 3; + CALL0 Parser_ParseDefine; + GOTO 36; + EQ_F Parser_TokenType, PARSER_TT_DERIVE, temp_0; + IFNOT temp_0, 4; + STORE_F pNamespace, parm0_x; + CALL1 Parser_DeriveItem; + GOTO 31; + EQ_F Parser_TokenType, PARSER_TT_DERIVETEMPLATE, temp_0; + IFNOT temp_0, 9; + STORE_F pNamespace, parm0_x; + CALL1 Parser_DeriveItem; + STORE_ENT return_x, lEntity; + ADDRESS lEntity, flag, temp_0; + INDIRECT_F lEntity, flag, temp_1; + BITOR temp_1, FLAG_TEMPLATE, temp_1; + STOREP_F temp_1, temp_0; + GOTO 21; + EQ_F Parser_TokenType, PARSER_TT_UNDEF, temp_0; + IFNOT temp_0, 3; + CALL0 Parser_ParseUndef; + GOTO 17; + EQ_F Parser_TokenType, PARSER_TT_NAMESPACE, temp_0; + IFNOT temp_0, 4; + STORE_F pNamespace, parm0_x; + CALL1 Parser_ParseNamespace; + GOTO 12; + EQ_F Parser_TokenType, PARSER_TT_INCLUDE, temp_0; + IFNOT temp_0, 4; + STORE_F pNamespace, parm0_x; + CALL1 Parser_IncludeFile; + GOTO 7; + EQ_F Parser_TokenType, PARSER_TT_IGNORE, temp_0; + IFNOT temp_0, 3; + CALL0 Parser_ParseIgnore; + GOTO 3; + STORE_F "couldn't find type in Parser_ParseDef", parm0_x; + CALL1 Parser_Error; + DONE; +} + +void() Parser_ParseIgnore = asm +{ +local float lBraceCount; +local float temp_0; + STORE_F PARSER_TT_BRACEOPEN, parm0_x; + CALL1 Parser_Expect; + STORE_F FILE_APPEND, lBraceCount; + GT lBraceCount, KEY_GAME, temp_0; + IFNOT temp_0, 13; + CALL0 Parser_GetToken; + IF return_x, 3; + GOTO 10; + GOTO 8; + EQ_F Parser_TokenType, PARSER_TT_BRACEOPEN, temp_0; + IFNOT temp_0, 3; + ADD_F lBraceCount, FILE_APPEND, lBraceCount; + GOTO 4; + EQ_F Parser_TokenType, PARSER_TT_BRACECLOSE, temp_0; + IFNOT temp_0, 2; + SUB_F lBraceCount, FILE_APPEND, lBraceCount; + GOTO -13; + DONE; +} + +entity(string pNamespace) Parser_ParseItem = asm +{ +local entity lEntity; +local string lEntityText; +local string lNamespace; +local float temp_0; + STORE_F PARSER_HIGH, parm0_x; + STORE_F "Parsing item..", parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_F "{ "type" "Item_", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "" ", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lEntityText; + STORE_F " Type = '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + NE_S pNamespace, "", temp_0; + IFNOT temp_0, 9; + STORE_F pNamespace, parm0_x; + STORE_F "::", parm1_x; + STORE_F Parser_Token, parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lNamespace; + GOTO 4; + STORE_F Parser_Token, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lNamespace; + STORE_F lEntityText, parm0_x; + STORE_F ""name" "", parm1_x; + STORE_F lNamespace, parm2_x; + STORE_F "" ", parm3_x; + CALL4 strcat; + STORE_F lEntityText, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, lEntityText; + STORE_F lEntityText, parm0_x; + STORE_F ""parent" "", parm1_x; + STORE_F pNamespace, parm2_x; + STORE_F "" ", parm3_x; + CALL4 strcat; + STORE_F lEntityText, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, lEntityText; + STORE_F " Name = '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "' Parent = '", parm2_x; + STORE_F pNamespace, parm3_x; + STORE_F "' Namespace = '", parm4_x; + STORE_F lNamespace, parm5_x; + STORE_F "'", parm6_x; + CALL7 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_BRACEOPEN, parm0_x; + CALL1 Parser_Expect; + STORE_F lNamespace, parm0_x; + STORE_F lEntityText, parm1_x; + CALL2 Parser_ParseEntity; + STORE_S return_x, lEntityText; + CALL0 spawn; + STORE_ENT return_x, lEntity; + STORE_F lEntity, parm0_x; + STORE_F lEntityText, parm1_x; + CALL2 parseentitydata; + STORE_F lEntityText, parm0_x; + CALL1 String_Free; + STORE_F lNamespace, parm0_x; + CALL1 String_Free; + INDIRECT_S lEntity, name, temp_0; + STORE_F "Parsing '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "' finished", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + RETURN lEntity; + DONE; +} + +void(entity pSource, entity pTarget) Parser_CloneChildren = asm +{ +local float locked_1585; +local float locked_1586; +local string lModifierString; +local entity lClone; +local entity lNode; +local float temp_5; + STORE_ENT null_entity, lNode; + INDIRECT_S pSource, name, locked_1586; + STORE_F lNode, parm0_x; + STORE_F parent, parm1_x; + STORE_F locked_1586, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lNode; + NE_E return_x, null_entity, locked_1586; + IFNOT locked_1586, 37; + CALL0 spawn; + STORE_ENT return_x, lClone; + STORE_F lNode, parm0_x; + STORE_F lClone, parm1_x; + CALL2 copyentity; + INDIRECT_F lClone, flag, locked_1586; + BITAND locked_1586, FLAG_TEMPLATE, locked_1586; + IFNOT locked_1586, 5; + ADDRESS lClone, flag, locked_1586; + INDIRECT_F lClone, flag, locked_1585; + SUB_F locked_1585, FLAG_TEMPLATE, locked_1585; + STOREP_F locked_1585, locked_1586; + INDIRECT_S pTarget, name, locked_1586; + INDIRECT_S lNode, name, locked_1585; + INDIRECT_S pSource, name, parm0_x; + CALL1 strlen; + STORE_F locked_1585, parm0_x; + STORE_F return_x, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + INDIRECT_S pTarget, name, locked_1585; + STORE_F "{ name "", parm0_x; + STORE_F locked_1586, parm1_x; + STORE_F return_x, parm2_x; + STORE_F "" parent "", parm3_x; + STORE_F locked_1585, parm4_x; + STORE_F "" }", parm5_x; + CALL6 strcat; + STORE_S return_x, lModifierString; + STORE_F lClone, parm0_x; + STORE_F lModifierString, parm1_x; + CALL2 parseentitydata; + STORE_F lNode, parm0_x; + STORE_F lClone, parm1_x; + CALL2 Parser_CloneChildren; + GOTO -43; + DONE; +} + +entity(string pNamespace) Parser_DeriveItem = asm +{ +local entity lEntity; +local string lBaseName; +local entity lBase; +local string lEntityText; +local string lNamespace; +local float temp_0; +local float temp_1; + STORE_F PARSER_HIGH, parm0_x; + STORE_F "Parsing derived item..", parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_F Parser_Token, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F KEY_MENU, parm2_x; + CALL3 substring; + EQ_S return_x, "::", temp_0; + IFNOT temp_0, 12; + STORE_F Parser_Token, parm0_x; + CALL1 strlen; + SUB_F return_x, KEY_MENU, temp_0; + STORE_F Parser_Token, parm0_x; + STORE_F KEY_MENU, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lBaseName; + GOTO 24; + EQ_S pNamespace, "", temp_0; + IFNOT temp_0, 5; + STORE_F Parser_Token, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lBaseName; + GOTO 18; + STORE_F pNamespace, parm0_x; + STORE_F "::", parm1_x; + STORE_F Parser_Token, parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lBaseName; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F lBaseName, parm2_x; + CALL3 findstring; + EQ_E return_x, null_entity, temp_0; + IFNOT temp_0, 5; + STORE_F lBaseName, parm0_x; + STORE_F Parser_Token, parm1_x; + CALL2 String_Set; + STORE_S return_x, lBaseName; + STORE_F " Base = '", parm0_x; + STORE_F lBaseName, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F null_entity, parm0_x; + STORE_F name, parm1_x; + STORE_F lBaseName, parm2_x; + CALL3 findstring; + STORE_ENT return_x, lBase; + EQ_E lBase, null_entity, temp_0; + IFNOT temp_0, 3; + STORE_F "couldnt find item", parm0_x; + CALL1 Parser_Error; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + NE_S pNamespace, "", temp_0; + IFNOT temp_0, 9; + STORE_F pNamespace, parm0_x; + STORE_F "::", parm1_x; + STORE_F Parser_Token, parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lNamespace; + GOTO 4; + STORE_F Parser_Token, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lNamespace; + STORE_F "{ "name" "", parm0_x; + STORE_F lNamespace, parm1_x; + STORE_F "" ", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lEntityText; + STORE_F lEntityText, parm0_x; + STORE_F ""parent" "", parm1_x; + STORE_F pNamespace, parm2_x; + STORE_F "" ", parm3_x; + CALL4 strcat; + STORE_F lEntityText, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, lEntityText; + STORE_F " Name = '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "' Parent = '", parm2_x; + STORE_F pNamespace, parm3_x; + STORE_F "' Namespace = '", parm4_x; + STORE_F lNamespace, parm5_x; + STORE_F "'", parm6_x; + CALL7 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_BRACEOPEN, parm0_x; + CALL1 Parser_Expect; + STORE_F lNamespace, parm0_x; + STORE_F lEntityText, parm1_x; + CALL2 Parser_ParseEntity; + STORE_S return_x, lEntityText; + CALL0 spawn; + STORE_ENT return_x, lEntity; + STORE_F lBase, parm0_x; + STORE_F lEntity, parm1_x; + CALL2 copyentity; + INDIRECT_F lEntity, flag, temp_0; + BITAND temp_0, FLAG_TEMPLATE, temp_0; + IFNOT temp_0, 5; + ADDRESS lEntity, flag, temp_0; + INDIRECT_F lEntity, flag, temp_1; + SUB_F temp_1, FLAG_TEMPLATE, temp_1; + STOREP_F temp_1, temp_0; + STORE_F lEntity, parm0_x; + STORE_F lEntityText, parm1_x; + CALL2 parseentitydata; + STORE_F lEntityText, parm0_x; + CALL1 String_Free; + STORE_F lNamespace, parm0_x; + CALL1 String_Free; + STORE_F lBaseName, parm0_x; + CALL1 String_Free; + STORE_F lBase, parm0_x; + STORE_F lEntity, parm1_x; + CALL2 Parser_CloneChildren; + INDIRECT_S lEntity, name, temp_0; + STORE_F "Parsing '", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "' finished", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + RETURN lEntity; + DONE; +} + +string(string pNamespace, string pEntityText) Parser_ParseEntity = asm +{ +local float temp_0; + CALL0 Parser_GetToken; + IFNOT return_x, 31; + EQ_F Parser_TokenType, PARSER_TT_TOKEN, temp_0; + IFNOT temp_0, 22; + STORE_F pEntityText, parm0_x; + STORE_F """, parm1_x; + STORE_F Parser_Token, parm2_x; + STORE_F "" ", parm3_x; + CALL4 strcat; + STORE_F pEntityText, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, pEntityText; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + STORE_F pEntityText, parm0_x; + STORE_F """, parm1_x; + STORE_F Parser_Token, parm2_x; + STORE_F "" ", parm3_x; + CALL4 strcat; + STORE_F pEntityText, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + STORE_S return_x, pEntityText; + GOTO 7; + EQ_F Parser_TokenType, PARSER_TT_BRACECLOSE, temp_0; + IFNOT temp_0, 3; + GOTO 5; + GOTO 3; + STORE_F pNamespace, parm0_x; + CALL1 Parser_ParseDefinition; + GOTO -31; + STORE_F pEntityText, parm0_x; + STORE_F " }", parm1_x; + CALL2 String_Append; + RETURN return_x; + DONE; +} + +void(string pNamespace) Parser_ParseNamespace = asm +{ +local string lNamespace; +local float temp_0; + STORE_F PARSER_HIGH, parm0_x; + STORE_F "Parsing Namespace...", parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_TOKEN, parm0_x; + CALL1 Parser_Expect; + NE_S pNamespace, "", temp_0; + IFNOT temp_0, 9; + STORE_F pNamespace, parm0_x; + STORE_F "::", parm1_x; + STORE_F Parser_Token, parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lNamespace; + GOTO 4; + STORE_F Parser_Token, parm0_x; + CALL1 String_Zone; + STORE_S return_x, lNamespace; + STORE_F " Subnamespace = '", parm0_x; + STORE_F Parser_Token, parm1_x; + STORE_F "' New namespace = '", parm2_x; + STORE_F lNamespace, parm3_x; + STORE_F "'", parm4_x; + CALL5 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F PARSER_TT_BRACEOPEN, parm0_x; + CALL1 Parser_Expect; + CALL0 Parser_GetToken; + IFNOT return_x, 7; + EQ_F Parser_TokenType, PARSER_TT_BRACECLOSE, temp_0; + IFNOT temp_0, 2; + GOTO 4; + STORE_F lNamespace, parm0_x; + CALL1 Parser_ParseDefinition; + GOTO -7; + STORE_F "Finished parsing Namespace. Namespace = '", parm0_x; + STORE_F pNamespace, parm1_x; + STORE_F "'", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Parser_Print; + STORE_F lNamespace, parm0_x; + CALL1 String_Free; + DONE; +} + +void(string pFilename, string pNamespace) Parser_ParseFile = asm +{ +local float temp_0; + STORE_F pFilename, parm0_x; + CALL1 String_Zone; + STORE_S return_x, Parser_Filename; + STORE_F Parser_Filename, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 fopen; + STORE_F return_x, Parser_File; + EQ_F Parser_File, ERR_CANNOTOPEN, temp_0; + IFNOT temp_0, 6; + STORE_F "Parser: Couldn't open ", parm0_x; + STORE_F Parser_Filename, parm1_x; + STORE_F " +", parm2_x; + CALL3 print; + RETURN offset_0; + CALL0 String_Create; + STORE_S return_x, Parser_Line; + STORE_F KEY_GAME, Parser_LineNumber; + STORE_F KEY_GAME, Parser_TokenNum; + STORE_F KEY_GAME, Parser_NumTokens; + CALL0 Parser_GetToken; + IFNOT return_x, 4; + STORE_F pNamespace, parm0_x; + CALL1 Parser_ParseDefinition; + GOTO -4; + STORE_F Parser_File, parm0_x; + CALL1 fclose; + STORE_F Parser_Filename, parm0_x; + CALL1 String_Free; + STORE_F Parser_Line, parm0_x; + CALL1 String_Free; + DONE; +} + +void() Parser_Init = asm +{ + CALL0 String_Create; + STORE_S return_x, Parser_Token; + STORE_ENT null_entity, Parser_DefineChain; + STORE_F KEY_GAME, Parser_IncludeDepth; + CALL0 String_Create; + STORE_S return_x, Parser_FileList; + DONE; +} + +void() Parser_Quit = asm +{ +local entity lNext; +local float temp_0; + STORE_F PARSER_HIGH, parm0_x; + STORE_F "Deleting #defines:", parm1_x; + CALL2 _Parser_Print; + IFNOT Parser_DefineChain, 18; + INDIRECT_E Parser_DefineChain, chain, lNext; + INDIRECT_S Parser_DefineChain, name, temp_0; + STORE_F " [", parm0_x; + STORE_F temp_0, parm1_x; + STORE_F "]", parm2_x; + CALL3 strcat; + STORE_F PARSER_HIGH, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Parser_Print; + INDIRECT_S Parser_DefineChain, name, parm0_x; + CALL1 String_Free; + INDIRECT_S Parser_DefineChain, value, parm0_x; + CALL1 String_Free; + STORE_F Parser_DefineChain, parm0_x; + CALL1 remove; + STORE_ENT lNext, Parser_DefineChain; + GOTO -17; + STORE_F Parser_Token, parm0_x; + CALL1 String_Free; + STORE_F Parser_FileList, parm0_x; + CALL1 String_Free; + DONE; +} + +void(string pMain) Parser_ParseMenu = asm +{ + CALL0 Parser_Init; + STORE_F pMain, parm0_x; + CALL1 String_Zone; + STORE_S return_x, pMain; + STORE_F Parser_FileList, parm0_x; + STORE_F pMain, parm1_x; + CALL2 Util_AltStringPush; + STORE_S return_x, Parser_FileList; + STORE_F pMain, parm0_x; + STORE_F "", parm1_x; + CALL2 Parser_ParseFile; + STORE_F "Files parsed: ", parm0_x; + STORE_F Parser_FileList, parm1_x; + CALL2 strcat; + STORE_F PARSER_INFO, parm0_x; + STORE_F return_x, parm1_x; + CALL2 _Parser_Print; + STORE_F pMain, parm0_x; + CALL1 String_Free; + CALL0 Parser_Quit; + DONE; +} + +void() Menu_InitGarbageStats = asm +{ + STORE_F KEY_GAME, Menu_GarbageFrameCount; + STORE_F KEY_GAME, Menu_GarbageToggleCount; + DONE; +} + +void() Menu_ResetGarbageStats = asm +{ + IFNOT Menu_GarbageFrameCount, 7; + STORE_F Menu_GarbageFrameCount, parm0_x; + CALL1 ftos; + STORE_F "Menu: GC: ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " items marked for frame deletion but couldnt be reached! +", parm2_x; + CALL3 print; + IFNOT Menu_GarbageToggleCount, 7; + STORE_F Menu_GarbageToggleCount, parm0_x; + CALL1 ftos; + STORE_F "Menu: GC: ", parm0_x; + STORE_F return_x, parm1_x; + STORE_F " items marked for toggle delition but couldnt be reached! +", parm2_x; + CALL3 print; + STORE_F KEY_GAME, Menu_GarbageFrameCount; + STORE_F KEY_GAME, Menu_GarbageToggleCount; + DONE; +} + +float(entity pItem) Menu_CheckForGarbage = asm +{ +local float temp_0; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_DELETEFRAME, temp_0; + IFNOT temp_0, 5; + STORE_F pItem, parm0_x; + CALL1 Menu_RemoveItem; + SUB_F Menu_GarbageFrameCount, FILE_APPEND, Menu_GarbageFrameCount; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void(float pToggle) Menu_CollectGarbage = asm +{ +local float locked_1586; +local entity lNode; +local float temp_1; + STORE_ENT null_entity, lNode; + IFNOT pToggle, 25; + IF Menu_GarbageFrameCount, 1; + OR Menu_GarbageFrameCount, Menu_GarbageToggleCount, locked_1586; + IFNOT locked_1586, 5; + STORE_F lNode, parm0_x; + CALL1 nextent; + STORE_ENT return_x, lNode; + NE_E return_x, null_entity, temp_1; + AND locked_1586, temp_1, locked_1586; + IFNOT locked_1586, 15; + INDIRECT_F lNode, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_DELETEFRAME, locked_1586; + IFNOT locked_1586, 5; + STORE_F lNode, parm0_x; + CALL1 Menu_RemoveItem; + SUB_F Menu_GarbageFrameCount, FILE_APPEND, Menu_GarbageFrameCount; + GOTO 7; + INDIRECT_F lNode, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_DELETETOGGLE, locked_1586; + IFNOT locked_1586, 4; + STORE_F lNode, parm0_x; + CALL1 Menu_RemoveItem; + SUB_F Menu_GarbageToggleCount, FILE_APPEND, Menu_GarbageToggleCount; + GOTO -22; + GOTO 15; + IFNOT Menu_GarbageFrameCount, 5; + STORE_F lNode, parm0_x; + CALL1 nextent; + STORE_ENT return_x, lNode; + NE_E return_x, null_entity, locked_1586; + AND Menu_GarbageFrameCount, locked_1586, locked_1586; + IFNOT locked_1586, 8; + INDIRECT_F lNode, _runFlag, locked_1586; + BITAND locked_1586, RUNFLAG_DELETEFRAME, locked_1586; + IFNOT locked_1586, 4; + STORE_F lNode, parm0_x; + CALL1 Menu_RemoveItem; + SUB_F Menu_GarbageFrameCount, FILE_APPEND, Menu_GarbageFrameCount; + GOTO -13; + DONE; +} + +void(entity pItem) Menu_DeleteAfterFrame = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_DELETEFRAME, temp_0; + IF temp_0, 16; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_DELETETOGGLE, temp_0; + IFNOT temp_0, 8; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + ADD_F temp_1, RUNFLAG_DELETEFRAME, temp_1; + SUB_F temp_1, RUNFLAG_DELETETOGGLE, temp_1; + STOREP_F temp_1, temp_0; + SUB_F Menu_GarbageToggleCount, FILE_APPEND, Menu_GarbageToggleCount; + GOTO 5; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F pItem, _runFlag, temp_1; + ADD_F temp_1, RUNFLAG_DELETEFRAME, temp_1; + STOREP_F temp_1, temp_0; + ADD_F Menu_GarbageFrameCount, FILE_APPEND, Menu_GarbageFrameCount; + DONE; +} + +void(entity pItem) Menu_DeleteAfterToggle = asm +{ +local float temp_0; +local float temp_1; + INDIRECT_F pItem, _runFlag, temp_0; + BITAND temp_0, RUNFLAG_DELETEFRAME, temp_0; + IF temp_0, 3; + INDIRECT_F pItem, _runFlag, temp_1; + BITAND temp_1, RUNFLAG_DELETETOGGLE, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + RETURN offset_0; + ADDRESS pItem, _runFlag, temp_0; + INDIRECT_F self, _runFlag, temp_1; + ADD_F temp_1, RUNFLAG_DELETETOGGLE, temp_1; + STOREP_F temp_1, temp_0; + ADD_F Menu_GarbageToggleCount, FILE_APPEND, Menu_GarbageToggleCount; + DONE; +} + +void() Key_Init = asm +{ + DONE; +} + +void() Key_Quit = asm +{ + DONE; +} + +void() Key_Display = asm +{ + STORE_F KEY_MENU, parm0_x; + CALL1 setkeydest; + DONE; +} + +void() Key_Update = asm +{ +local float temp_0; + CALL0 getkeydest; + NE_F return_x, KEY_MENU, temp_0; + IFNOT temp_0, 2; + CALL0 m_hide; + DONE; +} + +void() Key_Hide = asm +{ + STORE_F KEY_GAME, parm0_x; + CALL1 setkeydest; + DONE; +} + +void(string pKey) Key_Unbind = asm +{ + STORE_F "unbind ", parm0_x; + STORE_F pKey, parm1_x; + STORE_F " +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +string(float pKey) Key_GetName = asm +{ + STORE_F pKey, parm0_x; + CALL1 keynumtostring; + RETURN return_x; + DONE; +} + +float(string pKey) Key_GetNum = asm +{ + STORE_F pKey, parm0_x; + CALL1 stringtokeynum; + RETURN return_x; + DONE; +} + +string(string pCommand) Key_GetBindList = asm +{ + STORE_F pCommand, parm0_x; + CALL1 findkeysforcommand; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + RETURN return_x; + DONE; +} + +void(string pKey, string pCommand) Key_Bind = asm +{ + STORE_F "bind "", parm0_x; + STORE_F pKey, parm1_x; + STORE_F "" "", parm2_x; + STORE_F pCommand, parm3_x; + STORE_F "" +", parm4_x; + CALL5 strcat; + STORE_F return_x, parm0_x; + CALL1 cmd; + DONE; +} + +void(float pNum, string pCommand) Key_LimitBinds = asm +{ +local float lValue; +local float lMaxnum; +local float lCounter; +local string lAltlist; +local float temp_0; +local float temp_1; + STORE_F pCommand, parm0_x; + CALL1 Key_GetBindList; + STORE_S return_x, lAltlist; + STORE_F lAltlist, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lMaxnum; + STORE_F KEY_GAME, lCounter; + LT lCounter, lMaxnum, temp_0; + IFNOT temp_0, 20; + STORE_F lAltlist, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stof; + STORE_F return_x, lValue; + EQ_F lValue, ERR_CANNOTOPEN, temp_0; + IFNOT temp_0, 2; + GOTO 9; + GE lCounter, pNum, temp_0; + IFNOT temp_0, 5; + STORE_F lValue, parm0_x; + CALL1 Key_GetName; + STORE_F return_x, parm0_x; + CALL1 Key_Unbind; + ADD_F lCounter, FILE_APPEND, lCounter; + GOTO -20; + STORE_F lAltlist, parm0_x; + CALL1 String_Free; + DONE; +} + +void() Cursor_Init = asm +{ + STORE_F CURSOR_PATH, parm0_x; + CALL1 Gfx_Precache; + IFNOT return_x, 3; + STORE_S CURSOR_PATH, Cursor_Current; + GOTO 4; + STORE_S "ui/mousepointer.tga", Cursor_Current; + STORE_F Cursor_Current, parm0_x; + CALL1 Gfx_Precache; + STORE_V '0.000000 0.000000 0.000000', Cursor_Relative; + STORE_V '0.000000 0.000000 0.000000', Cursor_Position; + STORE_FNC Cursor_DefaultAnimation, Cursor_Animation; + DONE; +} + +void() Cursor_Quit = asm +{ + DONE; +} + +void() Cursor_Display = asm +{ + STORE_F FILE_APPEND, parm0_x; + CALL1 setmousetarget; + DONE; +} + +void() Cursor_Hide = asm +{ + STORE_F KEY_MENU, parm0_x; + CALL1 setmousetarget; + DONE; +} + +void() Cursor_Draw = asm +{ +local vector lSize; +local vector lPos; +local float temp_0; +local vector temp_2; + STORE_F Cursor_Current, parm0_x; + CALL1 Gfx_GetImageSize; + MUL_VF return, FILE_APPEND, lSize; + MUL_F lSize_x, Cursor_Offset_x, temp_0; + ADD_F Cursor_Position_x, temp_0, lPos_x; + MUL_F lSize_y, Cursor_Offset_y, temp_0; + ADD_F Cursor_Position_y, temp_0, lPos_y; + STORE_F KEY_GAME, lPos_z; + STORE_V lPos, parm0; + STORE_F Cursor_Current, parm1_x; + STORE_V lSize, parm2; + STORE_V Cursor_Color, parm3; + STORE_F FILE_APPEND, parm4_x; + STORE_F KEY_GAME, parm5_x; + CALL6 Gfx_DrawPic; + DONE; +} + +void() Cursor_Update = asm +{ +local vector lRelPos; +local float temp_0; + CALL0 getmousepos; + STORE_V return, lRelPos; + STORE_V lRelPos, parm0; + CALL1 Gfx_ConToMen; + STORE_V return, lRelPos; + MUL_F lRelPos_x, Cursor_Speed_x, Cursor_Relative_x; + MUL_F lRelPos_y, Cursor_Speed_y, Cursor_Relative_y; + ADD_F Cursor_Position_x, Cursor_Relative_x, temp_0; + STORE_F KEY_GAME, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F Gfx_Menu_Width, parm2_x; + CALL3 bound; + SUB_F return_x, Cursor_Position_x, Cursor_Relative_x; + ADD_F Cursor_Position_y, Cursor_Relative_y, temp_0; + STORE_F KEY_GAME, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F Gfx_Menu_Height, parm2_x; + CALL3 bound; + SUB_F return_x, Cursor_Position_y, Cursor_Relative_y; + ADD_F Cursor_Position_x, Cursor_Relative_x, Cursor_Position_x; + ADD_F Cursor_Position_y, Cursor_Relative_y, Cursor_Position_y; + STORE_F KEY_GAME, Cursor_Position_z; + CALL0 Cursor_Animation; + DONE; +} + +void() Cursor_DefaultAnimation = asm +{ + DONE; +} + +void(vector pRelPos, string pText, vector pScale, vector pColor, float pAlpha, float pDrawFlag) Cursor_PrintInfo = asm +{ +local float locked_1586; +local vector lSize; +local vector lPosition; +local float temp_1; +local vector temp_2; + STORE_F Cursor_Current, parm0_x; + CALL1 Gfx_GetImageSize; + MUL_VF return, FILE_APPEND, lSize; + NE_F pRelPos_x, KEY_GAME, locked_1586; + IFNOT locked_1586, 28; + GT pRelPos_x, KEY_GAME, locked_1586; + IFNOT locked_1586, 7; + ADD_F Cursor_Offset_x, 0.500000, locked_1586; + DIV_F pRelPos_x, KEY_MENU, temp_1; + ADD_F locked_1586, temp_1, locked_1586; + MUL_F lSize_x, locked_1586, locked_1586; + ADD_F Cursor_Position_x, locked_1586, lPosition_x; + GOTO 12; + LT pRelPos_x, KEY_GAME, locked_1586; + IFNOT locked_1586, 10; + ADD_F Cursor_Offset_x, 0.500000, locked_1586; + DIV_F pRelPos_x, KEY_MENU, temp_1; + ADD_F locked_1586, temp_1, locked_1586; + MUL_F lSize_x, locked_1586, locked_1586; + ADD_F Cursor_Position_x, locked_1586, locked_1586; + STORE_F pText, parm0_x; + CALL1 strlen; + MUL_F pScale_x, return_x, temp_1; + SUB_F locked_1586, temp_1, lPosition_x; + ADD_F Cursor_Offset_y, 0.500000, locked_1586; + DIV_F pRelPos_y, KEY_MENU, temp_1; + ADD_F locked_1586, temp_1, locked_1586; + MUL_F lSize_y, locked_1586, locked_1586; + ADD_F Cursor_Position_y, locked_1586, locked_1586; + DIV_F pScale_y, KEY_MENU, temp_1; + SUB_F locked_1586, temp_1, lPosition_y; + GOTO 9; + ADD_F Cursor_Offset_x, 0.500000, locked_1586; + MUL_F lSize_x, locked_1586, locked_1586; + ADD_F Cursor_Position_x, locked_1586, locked_1586; + STORE_F pText, parm0_x; + CALL1 strlen; + MUL_F pScale_x, return_x, temp_1; + DIV_F temp_1, KEY_MENU, temp_1; + SUB_F locked_1586, temp_1, lPosition_x; + NE_F pRelPos_y, KEY_GAME, locked_1586; + IFNOT locked_1586, 17; + GT pRelPos_y, KEY_GAME, locked_1586; + IFNOT locked_1586, 8; + ADD_F Cursor_Offset_y, 0.500000, locked_1586; + DIV_F pRelPos_y, KEY_MENU, temp_1; + SUB_F locked_1586, temp_1, locked_1586; + MUL_F lSize_y, locked_1586, locked_1586; + ADD_F Cursor_Position_y, locked_1586, locked_1586; + SUB_F locked_1586, pScale_y, lPosition_y; + GOTO 8; + LT pRelPos_y, KEY_GAME, locked_1586; + IFNOT locked_1586, 6; + ADD_F Cursor_Offset_y, 0.500000, locked_1586; + DIV_F pRelPos_y, KEY_MENU, temp_1; + SUB_F locked_1586, temp_1, locked_1586; + MUL_F lSize_y, locked_1586, locked_1586; + ADD_F Cursor_Position_y, locked_1586, lPosition_y; + STORE_V lPosition, parm0; + STORE_F pText, parm1_x; + STORE_V pScale, parm2; + STORE_V pColor, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pDrawFlag, parm5_x; + CALL6 Gfx_DrawString; + DONE; +} + +void (string) _Sound_DPrint; +void(string pText) _Sound_DPrint = asm +{ + IFNOT sys_debug_sound, 3; + STORE_F pText, parm0_x; + CALL1 print; + DONE; +} + +float(string pSnd) Sound_Precache = asm +{ +local float temp_0; + STORE_F "Precaching sound '", parm0_x; + STORE_F pSnd, parm1_x; + STORE_F "' +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 _Sound_DPrint; + EQ_S pSnd, "", temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + STORE_F pSnd, parm0_x; + CALL1 precache_sound; + NE_S pSnd, return_x, temp_0; + IFNOT temp_0, 3; + RETURN KEY_GAME; + GOTO 2; + RETURN FILE_APPEND; + DONE; +} + +void(string pSnd) Sound_Free = asm +{ + DONE; +} + +void(string pSnd) Sound_Play = asm +{ + STORE_F "Playing sound '", parm0_x; + STORE_F pSnd, parm1_x; + STORE_F "' +", parm2_x; + CALL3 strcat; + STORE_F return_x, parm0_x; + CALL1 _Sound_DPrint; + STORE_F pSnd, parm0_x; + CALL1 localsound; + DONE; +} + +float _Gfx_FPS; +float _Gfx_LastTime; +float _Gfx_FrameCount; +void () _Gfx_UpdateFPS; +void() _Gfx_UpdateFPS = asm +{ +local float lDeltaTime; +local float temp_0; + ADD_F _Gfx_FrameCount, FILE_APPEND, _Gfx_FrameCount; + SUB_F Timer_Time, _Gfx_LastTime, lDeltaTime; + LT FILE_APPEND, lDeltaTime, temp_0; + IFNOT temp_0, 4; + DIV_F _Gfx_FrameCount, lDeltaTime, _Gfx_FPS; + STORE_F Timer_Time, _Gfx_LastTime; + STORE_F KEY_GAME, _Gfx_FrameCount; + DONE; +} + +void () _Gfx_UpdateRes; +void() _Gfx_UpdateRes = asm +{ +local float temp_0; + STORE_F "vid_conwidth", parm0_x; + CALL1 cvar; + STORE_F return_x, Gfx_Real_Width; + STORE_F "vid_conheight", parm0_x; + CALL1 cvar; + STORE_F return_x, Gfx_Real_Height; + STORE_F CVAR_SCMENU_MENU_WIDTH, parm0_x; + CALL1 cvar; + STORE_F return_x, Gfx_Menu_Width; + STORE_F CVAR_SCMENU_MENU_HEIGHT, parm0_x; + CALL1 cvar; + STORE_F return_x, Gfx_Menu_Height; + EQ_F Gfx_Menu_Width, KEY_GAME, temp_0; + IFNOT temp_0, 2; + STORE_F SLIST_LEGACY_LINE1, Gfx_Menu_Width; + EQ_F Gfx_Menu_Height, KEY_GAME, temp_0; + IFNOT temp_0, 2; + STORE_F K_JOY1, Gfx_Menu_Height; + DONE; +} + +void() Gfx_Init = asm +{ +local string lHeight; +local string lWidth; + STORE_F SLIST_LEGACY_LINE1, parm0_x; + CALL1 ftos; + STORE_S return_x, lWidth; + STORE_F K_JOY1, parm0_x; + CALL1 ftos; + STORE_S return_x, lHeight; + STORE_F CVAR_SCMENU_MENU_WIDTH, parm0_x; + STORE_F lWidth, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 registercvar; + STORE_F CVAR_SCMENU_MENU_HEIGHT, parm0_x; + STORE_F lHeight, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 registercvar; + STORE_F KEY_GAME, parm0_x; + CALL1 ftos; + STORE_F CVAR_SCMENU_SHOWFPS, parm0_x; + STORE_F return_x, parm1_x; + STORE_F KEY_GAME, parm2_x; + CALL3 registercvar; + CALL0 _Gfx_UpdateRes; + DONE; +} + +void() Gfx_Quit = asm +{ + DONE; +} + +void() Gfx_Display = asm +{ + CALL0 Gfx_ResetClipArea; + DONE; +} + +void() Gfx_Hide = asm +{ + DONE; +} + +void() Gfx_Update = asm +{ + CALL0 _Gfx_UpdateRes; + CALL0 _Gfx_UpdateFPS; + DONE; +} + +void() Gfx_Draw = asm +{ +local vector lPosition; +local vector lScale; +local string lText; +local float temp_0; + STORE_F CVAR_SCMENU_SHOWFPS, parm0_x; + CALL1 cvar; + IFNOT return_x, 21; + STORE_F _Gfx_FPS, parm0_x; + CALL1 floor; + STORE_F return_x, parm0_x; + CALL1 ftos; + STORE_F "FPS: ", parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_S return_x, lText; + STORE_V '15.000000 15.000000 0.000000', lScale; + STORE_F KEY_GAME, lPosition_x; + SUB_F Gfx_Menu_Height, lScale_y, temp_0; + SUB_F temp_0, SLIST_SERVERREPLYCOUNT, lPosition_y; + STORE_F KEY_GAME, lPosition_z; + STORE_V lPosition, parm0; + STORE_F lText, parm1_x; + STORE_V lScale, parm2; + STORE_V Cursor_Color, parm3; + STORE_F FILE_APPEND, parm4_x; + STORE_F KEY_GAME, parm5_x; + CALL6 Gfx_DrawString; + DONE; +} + +float(string pPic) Gfx_IsCached = asm +{ + STORE_F pPic, parm0_x; + CALL1 iscachedpic; + RETURN return_x; + DONE; +} + +float(string pPic) Gfx_Precache = asm +{ +local float temp_0; + EQ_S pPic, "", temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + STORE_F pPic, parm0_x; + CALL1 iscachedpic; + IFNOT return_x, 2; + RETURN FILE_APPEND; + STORE_F pPic, parm0_x; + CALL1 precache_pic; + EQ_S return_x, pPic, temp_0; + IFNOT temp_0, 2; + RETURN FILE_APPEND; + RETURN KEY_GAME; + DONE; +} + +void(string pPic) Gfx_Free = asm +{ + DONE; +} + +vector(string pPic) Gfx_GetImageSize = asm +{ + STORE_F pPic, parm0_x; + CALL1 drawgetimagesize; + RETURN return_x; + DONE; +} + +vector(vector pPos) Gfx_ConToMen = asm +{ +local float temp_0; + MUL_F pPos_x, Gfx_Menu_Width, temp_0; + DIV_F temp_0, Gfx_Real_Width, pPos_x; + MUL_F pPos_y, Gfx_Menu_Height, temp_0; + DIV_F temp_0, Gfx_Real_Height, pPos_y; + STORE_F KEY_GAME, pPos_z; + RETURN pPos_x; + DONE; +} + +vector(vector pPos) Gfx_MenToCon = asm +{ +local float temp_0; + MUL_F pPos_x, Gfx_Real_Width, temp_0; + DIV_F temp_0, Gfx_Menu_Width, pPos_x; + MUL_F pPos_y, Gfx_Real_Height, temp_0; + DIV_F temp_0, Gfx_Menu_Height, pPos_y; + STORE_F KEY_GAME, pPos_z; + RETURN pPos_x; + DONE; +} + +void() Gfx_ResetClipArea = asm +{ + CALL0 drawresetcliparea; + DONE; +} + +vector (vector) _Gfx_FitCenter; +vector(vector pPosition) _Gfx_FitCenter = asm +{ +local vector temp_2; + ADD_V pPosition, '0.375000 0.375000 0.000000', temp_2; + RETURN temp_2_x; + DONE; +} + +float(vector pPosition, float pCharacter, vector pScale, vector pRGB, float pAlpha, float pFlag) Gfx_DrawCharacter = asm +{ + STORE_V pPosition, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, parm0; + CALL1 _Gfx_FitCenter; + STORE_V return, pPosition; + STORE_V pScale, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, pScale; + STORE_V pPosition, parm0; + STORE_F pCharacter, parm1_x; + STORE_V pScale, parm2; + STORE_V pRGB, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pFlag, parm5_x; + CALL6 drawcharacter; + RETURN return_x; + DONE; +} + +float(vector pPosition, string pText, vector pScale, vector pRGB, float pAlpha, float pFlag) Gfx_DrawString = asm +{ + STORE_V pPosition, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, parm0; + CALL1 _Gfx_FitCenter; + STORE_V return, pPosition; + STORE_V pScale, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, pScale; + STORE_V pPosition, parm0; + STORE_F pText, parm1_x; + STORE_V pScale, parm2; + STORE_V pRGB, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pFlag, parm5_x; + CALL6 drawstring; + RETURN return_x; + DONE; +} + +float(vector pPosition, string pPicture, vector pSize, vector pRGB, float pAlpha, float pFlag) Gfx_DrawPic = asm +{ + STORE_V pPosition, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, parm0; + CALL1 _Gfx_FitCenter; + STORE_V return, pPosition; + STORE_V pSize, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, pSize; + STORE_V pPosition, parm0; + STORE_F pPicture, parm1_x; + STORE_V pSize, parm2; + STORE_V pRGB, parm3; + STORE_F pAlpha, parm4_x; + STORE_F pFlag, parm5_x; + CALL6 drawpic; + RETURN return_x; + DONE; +} + +float(vector pPosition, vector pSize, vector pRGB, float pAlpha, float pFlag) Gfx_Fill = asm +{ + STORE_V pPosition, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, parm0; + CALL1 _Gfx_FitCenter; + STORE_V return, pPosition; + STORE_V pSize, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, pSize; + STORE_V pPosition, parm0; + STORE_V pSize, parm1; + STORE_V pRGB, parm2; + STORE_F pAlpha, parm3_x; + STORE_F pFlag, parm4_x; + CALL5 drawfill; + RETURN return_x; + DONE; +} + +void(float pX, float pY, float pWidth, float pHeight) Gfx_SetClipArea = asm +{ +local vector lSize; +local vector lPosition; +local vector temp_2; + STORE_F pX, lPosition_x; + STORE_F pY, lPosition_y; + STORE_F pWidth, lSize_x; + STORE_F pHeight, lSize_y; + STORE_V lPosition, parm0; + CALL1 Gfx_MenToCon; + STORE_V return, parm0; + CALL1 _Gfx_FitCenter; + STORE_V return, lPosition; + STORE_V lSize, parm0; + CALL1 Gfx_MenToCon; + ADD_V return, Cursor_Speed, lSize; + STORE_F lPosition_x, parm0_x; + STORE_F lPosition_y, parm1_x; + STORE_F lSize_x, parm2_x; + STORE_F lSize_y, parm3_x; + CALL4 drawsetcliparea; + DONE; +} + +float _Timer_LastTime; +void() Timer_Init = asm +{ + CALL0 gettime; + STORE_F return_x, Timer_Time; + STORE_F KEY_GAME, Timer_Delta; + DONE; +} + +void() Timer_Update = asm +{ +local float temp_0; + STORE_F Timer_Time, _Timer_LastTime; + CALL0 gettime; + STORE_F return_x, Timer_Time; + SUB_F Timer_Time, _Timer_LastTime, Timer_Delta; + DONE; +} + +void() Timer_Quit = asm +{ + DONE; +} + +void() HostCache_Init = asm +{ + STORE_F "cname", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_CNAME; + STORE_F "ping", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_PING; + STORE_F "game", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_GAME; + STORE_F "mod", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_MOD; + STORE_F "map", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_MAP; + STORE_F "name", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_NAME; + STORE_F "maxplayers", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_MAXPLAYERS; + STORE_F "numplayers", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_NUMPLAYERS; + STORE_F "protocol", parm0_x; + CALL1 gethostcacheindexforkey; + STORE_F return_x, SLIST_FIELD_PROTOCOL; + DONE; +} + +void() HostCache_Update = asm +{ + STORE_F KEY_GAME, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_ViewCount; + STORE_F FILE_APPEND, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_TotalCount; + STORE_F KEY_MENU, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_MasterQueryCount; + STORE_F KEY_UNKNOWN, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_MasterReplyCount; + STORE_F CVAR_READONLY, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_ServerQueryCount; + STORE_F SLIST_SERVERREPLYCOUNT, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_ServerReplyCount; + STORE_F SLIST_SORTFIELD, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_SortField; + STORE_F SLIST_SORTDESCENDING, parm0_x; + CALL1 gethostcachevalue; + STORE_F return_x, HostCache_SortDescending; + DONE; +} + +void() HostCache_ResortViewSet = asm +{ + CALL0 resorthostcache; + CALL0 HostCache_Update; + DONE; +} + +void() HostCache_RefreshHostCache = asm +{ + CALL0 refreshhostcache; + CALL0 HostCache_Update; + DONE; +} + +string() Property_Create = asm +{ + CALL0 String_Create; + RETURN return_x; + DONE; +} + +string(string pString) Property_Zone = asm +{ + STORE_F pString, parm0_x; + CALL1 String_Zone; + RETURN return_x; + DONE; +} + +string(string pString) Propery_Free = asm +{ + STORE_F pString, parm0_x; + CALL1 String_Free; + RETURN return_x; + DONE; +} + +float(string pString) Property_Validate = asm +{ +local float lCount; +local float temp_0; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + DIV_F lCount, KEY_MENU, parm0_x; + CALL1 rint; + DIV_F lCount, KEY_MENU, temp_0; + NE_F return_x, temp_0, temp_0; + IFNOT temp_0, 7; + STORE_F "Property_Validate", parm0_x; + STORE_F "Invalid property string "", parm1_x; + STORE_F pString, parm2_x; + STORE_F ""! +", parm3_x; + CALL4 dprint; + RETURN KEY_GAME; + RETURN FILE_APPEND; + DONE; +} + +float(string pString, string pName) Property_Exists = asm +{ +local float lCounter; +local float lCount; +local float temp_0; + IF FILE_APPEND, 2; + RETURN KEY_GAME; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 11; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + EQ_S return_x, pName, temp_0; + IFNOT temp_0, 2; + RETURN FILE_APPEND; + ADD_F lCounter, KEY_MENU, lCounter; + GOTO -11; + RETURN KEY_GAME; + DONE; +} + +string(string pString, string pName, string pInitValue) Property_Register = asm +{ +local float lCounter; +local float lCount; +local float temp_0; + IF FILE_APPEND, 2; + RETURN pString; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 11; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + EQ_S return_x, pName, temp_0; + IFNOT temp_0, 2; + RETURN pString; + ADD_F lCounter, KEY_MENU, lCounter; + GOTO -11; + STORE_F pString, parm0_x; + STORE_F pInitValue, parm1_x; + CALL2 Util_AltStringPush; + STORE_S return_x, pString; + STORE_F pString, parm0_x; + STORE_F pName, parm1_x; + CALL2 Util_AltStringPush; + STORE_S return_x, pString; + RETURN pString; + DONE; +} + +string(string pString, string pName, string pValue) Property_Set = asm +{ +local float lCounter; +local float lCount; +local float temp_0; + IF FILE_APPEND, 2; + RETURN pString; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 16; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + EQ_S return_x, pName, temp_0; + IFNOT temp_0, 7; + ADD_F lCounter, FILE_APPEND, temp_0; + STORE_F pString, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F pValue, parm2_x; + CALL3 Util_SetAltStringItem; + RETURN return_x; + ADD_F lCounter, KEY_MENU, lCounter; + GOTO -16; + STORE_F "Property_Set", parm0_x; + STORE_F "The property "", parm1_x; + STORE_F pName, parm2_x; + STORE_F "" hasn't been declared! +pString = "", parm3_x; + STORE_F pString, parm4_x; + STORE_F """, parm5_x; + CALL6 dprint; + RETURN pString; + DONE; +} + +string(string pString, string pOldName, string pNewName) Property_Rename = asm +{ +local float lCounter; +local float lCount; +local float temp_0; + IF FILE_APPEND, 2; + RETURN pString; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 15; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + EQ_S return_x, pOldName, temp_0; + IFNOT temp_0, 6; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + STORE_F pNewName, parm2_x; + CALL3 Util_SetAltStringItem; + RETURN return_x; + ADD_F lCounter, KEY_MENU, lCounter; + GOTO -15; + STORE_F "Property_Rename", parm0_x; + STORE_F "The property "", parm1_x; + STORE_F pOldName, parm2_x; + STORE_F "" hasn't been declared! +pString = "", parm3_x; + STORE_F pString, parm4_x; + STORE_F """, parm5_x; + CALL6 dprint; + RETURN pString; + DONE; +} + +string(string pString, string pName) Property_Delete = asm +{ +local float lCounter; +local float lCount; +local float temp_0; + IF FILE_APPEND, 2; + RETURN pString; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 19; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + EQ_S return_x, pName, temp_0; + IFNOT temp_0, 10; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_DelAltStringItem; + STORE_S return_x, pString; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_DelAltStringItem; + STORE_S return_x, pString; + RETURN pString; + ADD_F lCounter, KEY_MENU, lCounter; + GOTO -19; + STORE_F "Property_Delete", parm0_x; + STORE_F "The property "", parm1_x; + STORE_F pName, parm2_x; + STORE_F "" hasn't been declared! +pString = "", parm3_x; + STORE_F pString, parm4_x; + STORE_F """, parm5_x; + CALL6 dprint; + RETURN pString; + DONE; +} + +string(string pString, string pName) Property_Get = asm +{ +local float lCounter; +local float lCount; +local float temp_0; + IF FILE_APPEND, 2; + RETURN pString; + STORE_F pString, parm0_x; + CALL1 Util_GetAltStringCount; + STORE_F return_x, lCount; + STORE_F KEY_GAME, lCounter; + LT lCounter, lCount, temp_0; + IFNOT temp_0, 15; + STORE_F pString, parm0_x; + STORE_F lCounter, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + EQ_S return_x, pName, temp_0; + IFNOT temp_0, 6; + ADD_F lCounter, FILE_APPEND, temp_0; + STORE_F pString, parm0_x; + STORE_F temp_0, parm1_x; + CALL2 Util_GetAltStringItem; + RETURN return_x; + ADD_F lCounter, KEY_MENU, lCounter; + GOTO -15; + STORE_F "The property "", parm0_x; + STORE_F pName, parm1_x; + STORE_F "" hasn't been declared! +pString = "", parm2_x; + STORE_F pString, parm3_x; + STORE_F """, parm4_x; + CALL5 dprint; + STORE_F "", parm0_x; + CALL1 String_Zone; + RETURN return_x; + DONE; +} + +string(string pString, string pName) Property_GetString = asm +{ + STORE_F pString, parm0_x; + STORE_F pName, parm1_x; + CALL2 Property_Get; + RETURN return_x; + DONE; +} + +float(string pString, string pName) Property_GetFloat = asm +{ + STORE_F pString, parm0_x; + STORE_F pName, parm1_x; + CALL2 Property_Get; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stof; + RETURN return_x; + DONE; +} + +vector(string pString, string pName) Property_GetVector = asm +{ + STORE_F pString, parm0_x; + STORE_F pName, parm1_x; + CALL2 Property_Get; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stov; + RETURN return_x; + DONE; +} + +entity(string pString, string pName) Property_GetEntity = asm +{ + STORE_F pString, parm0_x; + STORE_F pName, parm1_x; + CALL2 Property_GetFloat; + STORE_F return_x, parm0_x; + CALL1 ftoe; + RETURN return_x; + DONE; +} + +vector(string pText, vector pLast) Util_GetEndOfLine = asm +{ +local string lChar; +local float temp_0; + STORE_F pLast_y, pLast_x; + STORE_F KEY_GAME, pLast_z; + STORE_F pText, parm0_x; + STORE_F pLast_x, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 substring; + STORE_S return_x, lChar; + EQ_S lChar, " +", temp_0; + IFNOT temp_0, 5; + ADD_F pLast_x, FILE_APPEND, pLast_y; + SUB_F pLast_x, FILE_APPEND, pLast_x; + RETURN pLast_x; + GOTO 9; + EQ_S lChar, "", temp_0; + IFNOT temp_0, 5; + SUB_F pLast_x, FILE_APPEND, pLast_x; + STORE_F pLast_x, pLast_y; + RETURN pLast_x; + GOTO 3; + ADD_F pLast_x, FILE_APPEND, pLast_x; + ADD_F pLast_z, FILE_APPEND, pLast_z; + GOTO -19; + DONE; +} + +vector(string pText, vector pLast, float pWrapLength) Util_GetEndOfWrappedLine = asm +{ +local string lChar; +local float temp_0; + STORE_F pLast_y, pLast_x; + STORE_F KEY_GAME, pLast_z; + STORE_F pText, parm0_x; + STORE_F pLast_x, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 substring; + STORE_S return_x, lChar; + EQ_S lChar, " +", temp_0; + IFNOT temp_0, 5; + SUB_F pLast_x, FILE_APPEND, pLast_x; + ADD_F pLast_x, KEY_MENU, pLast_y; + RETURN pLast_x; + GOTO 14; + EQ_S lChar, "", temp_0; + IFNOT temp_0, 5; + SUB_F pLast_x, FILE_APPEND, pLast_x; + STORE_F pLast_x, pLast_y; + RETURN pLast_x; + GOTO 8; + ADD_F pLast_x, FILE_APPEND, pLast_x; + ADD_F pLast_z, FILE_APPEND, pLast_z; + SUB_F pWrapLength, FILE_APPEND, pWrapLength; + IF pWrapLength, 4; + STORE_F pLast_x, pLast_y; + SUB_F pLast_x, FILE_APPEND, pLast_x; + RETURN pLast_x; + GOTO -24; + DONE; +} + +float _m_uid_counter; +string() Util_CreateUID = asm +{ +local string lName; +local float temp_0; + STORE_F _m_uid_counter, parm0_x; + CALL1 ftos; + STORE_F "M_UID_", parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 strzone; + STORE_S return_x, lName; + ADD_F _m_uid_counter, FILE_APPEND, _m_uid_counter; + RETURN lName; + DONE; +} + +string(float pNum) Util_GetUIDName = asm +{ +local string lName; + STORE_F pNum, parm0_x; + CALL1 ftos; + STORE_F "M_UID_", parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_F return_x, parm0_x; + CALL1 strzone; + STORE_S return_x, lName; + RETURN lName; + DONE; +} + +float(string pUid) Util_GetUIDNum = asm +{ +local string lNum; + STORE_F pUid, parm0_x; + STORE_F SLIST_SORTFIELD, parm1_x; + STORE_F 100000.000000, parm2_x; + CALL3 substring; + STORE_S return_x, lNum; + STORE_F lNum, parm0_x; + CALL1 stof; + RETURN return_x; + DONE; +} + +string() String_Create = asm +{ + STORE_F "", parm0_x; + CALL1 strzone; + RETURN return_x; + DONE; +} + +string(string pStr) String_Zone = asm +{ + STORE_F pStr, parm0_x; + CALL1 strzone; + RETURN return_x; + DONE; +} + +string(string pStr) String_Normal = asm +{ +local string lResult; + STORE_F pStr, parm0_x; + CALL1 strcat; + STORE_S return_x, lResult; + STORE_F pStr, parm0_x; + CALL1 strunzone; + RETURN lResult; + DONE; +} + +string(string pStr) String_Free = asm +{ + STORE_F pStr, parm0_x; + CALL1 strunzone; + RETURN ""; + DONE; +} + +void(entity pEntity, .string pField) String_EntityCreate = asm +{ +local float locked_1586; + ADDRESS pEntity, pField, locked_1586; + STORE_F "", parm0_x; + CALL1 strzone; + STOREP_S return_x, locked_1586; + DONE; +} + +void(entity pEntity, .string pField) String_EntityZone = asm +{ +local float locked_1586; +local float temp_1; + ADDRESS pEntity, pField, locked_1586; + INDIRECT_S pEntity, pField, parm0_x; + CALL1 strzone; + STOREP_S return_x, locked_1586; + DONE; +} + +void(entity pEntity, .string pField, string pSet) String_EntitySet = asm +{ +local float locked_1586; + INDIRECT_S pEntity, pField, parm0_x; + CALL1 strunzone; + ADDRESS pEntity, pField, locked_1586; + STORE_F pSet, parm0_x; + CALL1 strzone; + STOREP_S return_x, locked_1586; + DONE; +} + +void(entity pEntity, .string pField) String_EntityFree = asm +{ +local float temp_0; + INDIRECT_S pEntity, pField, parm0_x; + CALL1 strunzone; + ADDRESS pEntity, pField, temp_0; + STOREP_S "", temp_0; + DONE; +} + +string(string pStr, string pApp) String_Append = asm +{ + STORE_F pStr, parm0_x; + STORE_F pApp, parm1_x; + CALL2 strcat; + STORE_F pStr, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +string(string pStr, float pStart, float pLength) String_Substring = asm +{ + STORE_F pStr, parm0_x; + STORE_F pStart, parm1_x; + STORE_F pLength, parm2_x; + CALL3 substring; + STORE_F return_x, parm0_x; + CALL1 strzone; + RETURN return_x; + DONE; +} + +string(string pStr, string pSet) String_Set = asm +{ + STORE_F pStr, parm0_x; + CALL1 strunzone; + STORE_F pSet, parm0_x; + CALL1 strzone; + RETURN return_x; + DONE; +} + +bool(vector pPoint, vector pPos, vector pSize) Util_InRect = asm +{ +local float temp_0; +local float temp_1; + LT pPoint_x, pPos_x, temp_0; + IF temp_0, 2; + LT pPoint_y, pPos_y, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 3; + ADD_F pPos_x, pSize_x, temp_1; + GT pPoint_x, temp_1, temp_1; + OR temp_0, temp_1, temp_0; + IF temp_0, 3; + ADD_F pPos_y, pSize_y, temp_1; + GT pPoint_y, temp_1, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + RETURN FILE_APPEND; + DONE; +} + +bool(vector pPos1, vector pSize1, vector pPos2, vector pSize2) Util_RectInRect = asm +{ +local vector lFPos2; +local vector lFPos1; +local float temp_0; +local float temp_1; +local vector temp_2; + ADD_V pPos1, pSize1, lFPos1; + ADD_V pPos2, pSize2, lFPos2; + LE pPos1_x, lFPos2_x, temp_0; + IFNOT temp_0, 2; + LE pPos2_x, lFPos1_x, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + LE pPos1_y, lFPos2_y, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + LE pPos2_y, lFPos1_y, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + RETURN KEY_GAME; + RETURN FILE_APPEND; + DONE; +} + +vector(vector pPoint, vector pClipPos, vector pClipSize) Util_GetClipDelta = asm +{ +local vector lPoint; +local float temp_0; + ADD_F pClipPos_x, pClipSize_x, temp_0; + STORE_F pClipPos_x, parm0_x; + STORE_F pPoint_x, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 bound; + SUB_F return_x, pPoint_x, lPoint_x; + ADD_F pClipPos_y, pClipSize_y, temp_0; + STORE_F pClipPos_y, parm0_x; + STORE_F pPoint_y, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 bound; + SUB_F return_x, pPoint_y, lPoint_y; + STORE_F KEY_GAME, lPoint_z; + RETURN lPoint_x; + DONE; +} + +vector(vector pPos, vector pSize, vector pClipPos, vector pClipSize) Util_ClipRect = asm +{ +local vector lSize; +local float temp_0; +local float temp_1; + ADD_F pPos_x, pSize_x, temp_0; + ADD_F pClipPos_x, pClipSize_x, temp_1; + STORE_F temp_0, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 min; + SUB_F return_x, pPos_x, lSize_x; + ADD_F pPos_y, pSize_y, temp_0; + ADD_F pClipPos_y, pClipSize_y, temp_1; + STORE_F temp_0, parm0_x; + STORE_F temp_1, parm1_x; + CALL2 min; + SUB_F return_x, pPos_y, lSize_y; + STORE_F KEY_GAME, lSize_z; + LE lSize_x, KEY_GAME, temp_0; + IF temp_0, 2; + LE lSize_y, KEY_GAME, temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 2; + RETURN '0.000000 0.000000 0.000000'; + RETURN lSize_x; + DONE; +} + +string(string pStack) Util_ClipStack_Reset = asm +{ + STORE_F pStack, parm0_x; + CALL1 String_Free; + CALL0 String_Create; + RETURN return_x; + DONE; +} + +string(string pStack, vector pPos, vector pSize) Util_ClipStack_Push = asm +{ +local vector lDelta; +local vector lOldSize; +local vector lOldPos; +local float temp_0; +local float temp_1; +local vector temp_2; + STORE_F pStack, parm0_x; + CALL1 Util_ClipStack_GetPosition; + STORE_V return, lOldPos; + STORE_F pStack, parm0_x; + CALL1 Util_ClipStack_GetSize; + STORE_V return, lOldSize; + EQ_V pPos, '0.000000 0.000000 0.000000', temp_0; + IFNOT temp_0, 2; + EQ_V pSize, '0.000000 0.000000 0.000000', temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 4; + STORE_V lOldPos, pPos; + STORE_V lOldSize, pSize; + GOTO 19; + NE_V lOldPos, '0.000000 0.000000 0.000000', temp_0; + IF temp_0, 2; + NE_V lOldSize, '0.000000 0.000000 0.000000', temp_1; + OR temp_0, temp_1, temp_0; + IFNOT temp_0, 14; + STORE_V pPos, parm0; + STORE_V lOldPos, parm1; + STORE_V lOldSize, parm2; + CALL3 Util_GetClipDelta; + STORE_V return, lDelta; + ADD_V pPos, lDelta, pPos; + SUB_V pSize, lDelta, temp_2; + STORE_V pPos, parm0; + STORE_V temp_2, parm1; + STORE_V lOldPos, parm2; + STORE_V lOldSize, parm3; + CALL4 Util_ClipRect; + STORE_V return, pSize; + STORE_V pSize, parm0; + CALL1 vtos; + STORE_F pStack, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Util_AltStringPush; + STORE_S return_x, pStack; + STORE_V pPos, parm0; + CALL1 vtos; + STORE_F pStack, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Util_AltStringPush; + STORE_S return_x, pStack; + RETURN pStack; + DONE; +} + +string(string pStack) Util_ClipStack_Pop = asm +{ + STORE_F pStack, parm0_x; + CALL1 Util_AltStringPop; + STORE_S return_x, pStack; + STORE_F pStack, parm0_x; + CALL1 Util_AltStringPop; + STORE_S return_x, pStack; + RETURN pStack; + DONE; +} + +vector(string pStack) Util_ClipStack_GetPosition = asm +{ + STORE_F pStack, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stov; + RETURN return_x; + DONE; +} + +vector(string pStack) Util_ClipStack_GetSize = asm +{ + STORE_F pStack, parm0_x; + STORE_F FILE_APPEND, parm1_x; + CALL2 Util_GetAltStringItem; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stov; + RETURN return_x; + DONE; +} + +string(string pStack) Util_OriginStack_Reset = asm +{ + STORE_F pStack, parm0_x; + CALL1 String_Free; + CALL0 String_Create; + RETURN return_x; + DONE; +} + +string(string pStack, vector pOrigin) Util_OriginStack_Push = asm +{ + STORE_V pOrigin, parm0; + CALL1 vtos; + STORE_F pStack, parm0_x; + STORE_F return_x, parm1_x; + CALL2 Util_AltStringPush; + RETURN return_x; + DONE; +} + +string(string pStack) Util_OriginStack_Pop = asm +{ + STORE_F pStack, parm0_x; + CALL1 Util_AltStringPop; + RETURN return_x; + DONE; +} + +vector(string pStack) Util_OriginStack_Get = asm +{ + STORE_F pStack, parm0_x; + CALL1 Util_GetAltStringTop; + STORE_F return_x, parm0_x; + CALL1 String_Normal; + STORE_F return_x, parm0_x; + CALL1 stov; + RETURN return_x; + DONE; +} + +float(string pStr) Util_GetAltStringCount = asm +{ + STORE_F pStr, parm0_x; + CALL1 altstr_count; + RETURN return_x; + DONE; +} + +string(string pStr, float pCount) Util_GetAltStringItem = asm +{ + STORE_F pStr, parm0_x; + STORE_F pCount, parm1_x; + CALL2 altstr_get; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + RETURN return_x; + DONE; +} + +string(string pAlt, float pIndex, string pSet) Util_SetAltStringItem = asm +{ + STORE_F pAlt, parm0_x; + STORE_F pIndex, parm1_x; + STORE_F pSet, parm2_x; + CALL3 altstr_set; + STORE_F pAlt, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +string(string pAlt, float pIndex) Util_DelAltStringItem = asm +{ +local string lOut; +local string lLetter; +local float lLength; +local float lStart; +local float lPosition; +local float lCount; +local float temp_0; +local float temp_1; + MUL_F pIndex, KEY_MENU, temp_0; + ADD_F temp_0, FILE_APPEND, pIndex; + STORE_F KEY_GAME, lPosition; + STORE_F KEY_GAME, lCount; + STORE_F pAlt, parm0_x; + CALL1 strlen; + STORE_F return_x, lLength; + LT lPosition, lLength, temp_0; + IFNOT temp_0, 2; + LT lCount, pIndex, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 15; + STORE_F pAlt, parm0_x; + STORE_F lPosition, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 substring; + STORE_S return_x, lLetter; + EQ_S lLetter, "'", temp_0; + IFNOT temp_0, 3; + ADD_F lCount, FILE_APPEND, lCount; + GOTO 4; + EQ_S lLetter, "\", temp_0; + IFNOT temp_0, 2; + ADD_F lPosition, FILE_APPEND, lPosition; + ADD_F lPosition, FILE_APPEND, lPosition; + GOTO -18; + NE_F lCount, pIndex, temp_0; + IFNOT temp_0, 2; + RETURN pAlt; + STORE_F lPosition, lStart; + LT lPosition, lLength, temp_0; + IFNOT temp_0, 16; + STORE_F pAlt, parm0_x; + STORE_F lPosition, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 substring; + STORE_S return_x, lLetter; + EQ_S lLetter, "'", temp_0; + IFNOT temp_0, 3; + GOTO 8; + GOTO 4; + EQ_S lLetter, "\", temp_0; + IFNOT temp_0, 2; + ADD_F lPosition, FILE_APPEND, lPosition; + STORE_F lPosition, temp_1; + ADD_F lPosition, FILE_APPEND, lPosition; + GOTO -16; + GT lStart, KEY_GAME, temp_0; + IFNOT temp_0, 7; + SUB_F lStart, FILE_APPEND, temp_0; + STORE_F pAlt, parm0_x; + STORE_F KEY_GAME, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 substring; + STORE_S return_x, lOut; + SUB_F lLength, FILE_APPEND, temp_0; + LT lPosition, temp_0, temp_0; + IFNOT temp_0, 12; + ADD_F lPosition, FILE_APPEND, temp_0; + SUB_F lLength, lPosition, temp_1; + SUB_F temp_1, FILE_APPEND, temp_1; + STORE_F pAlt, parm0_x; + STORE_F temp_0, parm1_x; + STORE_F temp_1, parm2_x; + CALL3 substring; + STORE_F lOut, parm0_x; + STORE_F return_x, parm1_x; + CALL2 strcat; + STORE_S return_x, lOut; + STORE_F pAlt, parm0_x; + STORE_F lOut, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +string(string pAlt, float pIndex, string pSet) Util_InsAltStringItem = asm +{ + STORE_F pAlt, parm0_x; + STORE_F pIndex, parm1_x; + STORE_F pSet, parm2_x; + CALL3 altstr_ins; + STORE_F pAlt, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +string(string pString) Util_AltStringPrepare = asm +{ + STORE_F pString, parm0_x; + CALL1 altstr_prepare; + STORE_F return_x, parm0_x; + CALL1 String_Zone; + RETURN return_x; + DONE; +} + +string(string pAlt, string pPush) Util_AltStringPush = asm +{ + STORE_F pPush, parm0_x; + CALL1 altstr_prepare; + STORE_F "'", parm0_x; + STORE_F return_x, parm1_x; + STORE_F "'", parm2_x; + STORE_F pAlt, parm3_x; + CALL4 strcat; + STORE_F pAlt, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +string(string pAlt, string pPush) Util_AltStringPushBack = asm +{ + STORE_F pPush, parm0_x; + CALL1 altstr_prepare; + STORE_F pAlt, parm0_x; + STORE_F "'", parm1_x; + STORE_F return_x, parm2_x; + STORE_F "'", parm3_x; + CALL4 strcat; + STORE_F pAlt, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +string(string pAlt) Util_GetAltStringTop = asm +{ + STORE_F pAlt, parm0_x; + STORE_F KEY_GAME, parm1_x; + CALL2 Util_GetAltStringItem; + RETURN return_x; + DONE; +} + +string(string pAlt) Util_AltStringPop = asm +{ +local string lChar; +local float lLength; +local float lCount; +local float lPos; +local float temp_0; +local float temp_1; + STORE_F KEY_GAME, lCount; + STORE_F pAlt, parm0_x; + CALL1 strlen; + STORE_F return_x, lLength; + STORE_F KEY_GAME, lPos; + LT lPos, lLength, temp_0; + IFNOT temp_0, 2; + LT lCount, KEY_MENU, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 18; + STORE_F pAlt, parm0_x; + STORE_F lPos, parm1_x; + STORE_F FILE_APPEND, parm2_x; + CALL3 substring; + STORE_S return_x, lChar; + EQ_S lChar, "\", temp_0; + IFNOT temp_0, 4; + STORE_F lPos, temp_0; + ADD_F lPos, FILE_APPEND, lPos; + GOTO 5; + EQ_S lChar, "'", temp_0; + IFNOT temp_0, 3; + STORE_F lCount, temp_0; + ADD_F lCount, FILE_APPEND, lCount; + STORE_F lPos, temp_1; + ADD_F lPos, FILE_APPEND, lPos; + GOTO -21; + SUB_F lLength, lPos, temp_0; + STORE_F pAlt, parm0_x; + STORE_F lPos, parm1_x; + STORE_F temp_0, parm2_x; + CALL3 substring; + STORE_F pAlt, parm0_x; + STORE_F return_x, parm1_x; + CALL2 String_Set; + RETURN return_x; + DONE; +} + +void() Util_NullFunction = asm +{ + DONE; +} + +float() Util_TrueFunction = asm +{ + RETURN FILE_APPEND; + DONE; +} + +float() Util_FalseFunction = asm +{ + RETURN KEY_GAME; + DONE; +} + +string() Util_StringFuntion = asm +{ + RETURN ""; + DONE; +} + +vector() Util_VectorFunction = asm +{ + RETURN '0.000000 0.000000 0.000000'; + DONE; +} + +entity() Util_EntityFunction = asm +{ + RETURN null_entity; + DONE; +} + +void () m_updategamestate; +void() m_updategamestate = asm +{ +local float temp_0; + STORE_F KEY_GAME, gamestatus; + CALL0 isserver; + IFNOT return_x, 2; + BITOR gamestatus, FILE_APPEND, gamestatus; + CALL0 clientstate; + EQ_F return_x, KEY_MENU, temp_0; + IFNOT temp_0, 2; + BITOR gamestatus, KEY_MENU, gamestatus; + STORE_F "developer", parm0_x; + CALL1 cvar; + IFNOT return_x, 2; + BITOR gamestatus, CVAR_READONLY, gamestatus; + DONE; +} + +void() m_init = asm +{ + CALL0 Gfx_Init; + CALL0 Cursor_Init; + CALL0 Key_Init; + CALL0 HostCache_Init; + CALL0 Menu_Init; + DONE; +} + +void(float pKey, float pAscii) m_keydown = asm +{ +local float temp_0; + IF Menu_Active, 2; + RETURN offset_0; + STORE_F pKey, parm0_x; + STORE_F pAscii, parm1_x; + CALL2 Menu_Key; + DONE; +} + +void () m_frame; +void() m_frame = asm +{ + CALL0 Timer_Update; + CALL0 HostCache_Update; + CALL0 Key_Update; + CALL0 Gfx_Update; + CALL0 Cursor_Update; + CALL0 Menu_Frame; + DONE; +} + +void() m_draw = asm +{ +local float temp_0; +local float temp_1; + CALL0 m_updategamestate; + IF Menu_Active, 11; + BITAND gamestatus, KEY_MENU, temp_0; + NOT_F temp_0, temp_0; + IFNOT temp_0, 3; + BITAND gamestatus, CVAR_READONLY, temp_1; + NOT_F temp_1, temp_1; + AND temp_0, temp_1, temp_0; + IFNOT temp_0, 3; + CALL0 m_display; + GOTO 2; + RETURN offset_0; + CALL0 m_frame; + CALL0 Menu_Draw; + CALL0 Cursor_Draw; + CALL0 Gfx_Draw; + DONE; +} + +void() m_display = asm +{ + STORE_F FILE_APPEND, Menu_Active; + CALL0 m_updategamestate; + CALL0 Gfx_Display; + CALL0 Cursor_Display; + CALL0 Key_Display; + CALL0 Menu_PerformReinit; + DONE; +} + +void() m_hide = asm +{ + CALL0 Gfx_Hide; + CALL0 Cursor_Hide; + CALL0 Key_Hide; + CALL0 Menu_Hide; + STORE_F KEY_GAME, Menu_Active; + DONE; +} + +void() m_toggle = asm +{ + CALL0 Timer_Update; + IFNOT Menu_Active, 3; + CALL0 m_hide; + GOTO 2; + CALL0 m_display; + DONE; +} + +void() m_shutdown = asm +{ + CALL0 Timer_Update; + CALL0 Menu_Shutdown; + CALL0 Timer_Quit; + CALL0 Key_Quit; + CALL0 Cursor_Quit; + CALL0 Gfx_Quit; + STORE_F KEY_GAME, parm0_x; + CALL1 setkeydest; + STORE_F KEY_MENU, parm0_x; + CALL1 setmousetarget; + DONE; +} + +void() ArrayGet*PARSER_TT_TEXT = asm +{ +local float indexg___; +local float temp_0; + BITAND offset_2806, offset_2806, offset_2806; + LT offset_2806, 7.500000, temp_0; + IFNOT temp_0, 24; + LT offset_2806, 3.500000, temp_0; + IFNOT temp_0, 10; + LT offset_2806, 0.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT; + LT offset_2806, ITEM_EDITBOX_SCROLLDISTANCE, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[1]; + LT offset_2806, 2.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[2]; + LT offset_2806, 3.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[3]; + LT offset_2806, 4.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[4]; + LT offset_2806, 5.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[5]; + LT offset_2806, 6.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[6]; + LT offset_2806, 10.500000, temp_0; + IFNOT temp_0, 10; + LT offset_2806, 7.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[7]; + LT offset_2806, 8.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[8]; + LT offset_2806, 9.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[9]; + LT offset_2806, 10.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[10]; + LT offset_2806, 11.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[11]; + LT offset_2806, 12.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[12]; + LT offset_2806, 13.500000, temp_0; + IFNOT temp_0, 2; + RETURN PARSER_TT_TEXT[13]; + RETURN KEY_GAME; + DONE; +} + diff --git a/TeamNexuiz/menu/qcc.bat b/TeamNexuiz/menu/qcc.bat new file mode 100644 index 000000000..cc39c5d46 --- /dev/null +++ b/TeamNexuiz/menu/qcc.bat @@ -0,0 +1,2 @@ +qcc.exe +pause diff --git a/TeamNexuiz/menu/qcc.exe b/TeamNexuiz/menu/qcc.exe new file mode 100644 index 0000000000000000000000000000000000000000..256ca229845e548beb172518364f9accf2c6e03f GIT binary patch literal 208896 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
O>#~9=VeZ;G?<(X??%i_P_G`!0b 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%0Ak3B;PUG|SBlslwH39BbA+igc zxY6mN&wq?lJO8BilVPjE@r5>NY*!9QZ6F@^isG|DKX^+Mhz>JDCY;kboLXf1L~C?Mo6hQ2S}~W zB(qL_`&OEO9Aa`Sr29&;Fg0SyT;0*qOS}4p%?G~)$~&wT5du@n-H?m8uNqFno&?|Q zilV5ylUEpXMmCl&u!`fJH6kc>@878^L}|Z{kL8H5v-Wr#EoEg;ti{;@=EV^DsPD>52B7xk=q)7h3a^lC}u`D#@6^#3T&Xj z%xK_d3aqEVM%)!x+Jd*WIt zD!VOqCiAWUn4U2OTwKrCC4Tpa-@W4ZMe*Ave!Io*5%GHrzx>GkVQh`^E~V054F@R3 zY#BTKc^47H(-DY~q88b0q1n-B$B!e?*b~@JWo&{qd9G*@Z4<18>epL98Mz~nlf!t- z4B@e1nHARBql`fqgTFtoy2K;VwzG@kNzLFjWzw3K&srwh(^?EcvzQI+3~!gVJVQ82 z#7-1Fmp~_!x)*O)m^y0oN_qEx;-l2N3%^bCM+8%?YoSOQ(1JlV8UErRzfvh3cZ>tn#>kTh1L%$>Ig4nBbAReccRTc$LVpRWkB^?wGrb?7s5vJ2ED-9Wy zTwVBfIaeS(R!AC%C}o_s9=~*f(($ zY8_HBWk$KEuT;}pw|M>SEVNPfh zr}yC|xmHBkWX74fh%3gEtC5jjx+It+7pCDWq-_gt}v zA@BsDkCj`}u80R71?Z-OESFK#+fe}L73AZ2hQcl@C zF@z!;n9=dYM~w=Ps_R;4lR6LHXj|NVc#|152y#+3gAw(by#5=ME` zjL~~>r5M!^ON_Erqh6FQcMccEkR z+ZmHzJWkTD?5M1bqazMSoU{w_-~`HUfd65n$d2|XI*u6Whn^uJ)*X``^?@SZT29qT zqw19M#ZxH#Deg1UqdK3gT5fx?EnF3&ebCR7+64kzFcC6N&H_knr-51VCRDNDmcN7; z2Q5500QlF=3~W1_LrlHG>ZwHHwXMYPAS1xk!31T^+Vjt2GLrS}PO?YXf3*=RpMRbe z%4M|6xCzz6R(1OB|2C}VdX1-Z+Uw$bQtKz;Ii()o{FPEF+m4fY)9?n>X5T7m1pAZd zC^|06->ZV$Nz)e&MjN!;N@^HgtTpzLDrmnc57YIB20^1z=y$s7HFIr5xNVA#1$D*KX;l+4*Hh@Ak)A>}L#-tI>KSy- z(%ALzPI-?;lPo;Wxz5)OKc1OMk!9gX+m4JlQr4IuyDuS0TFfI)&^+S7uC9Q^0Yp3F z6}$jVhSbUU0SCfgCzrkZlK`0AhD$%8t#l$@IKBlvCK&^@mD&_IbU=XHlA-NE)%V94hDTm^5=jX$bZHe(1Xo9E+p@l^cygIXA?lNe-oF@k0AB&5MXm*9bY!_&~!sz~#COq$kE8i~@76~lqO!_$P?(;SoL zN1-%CHU1ls#udN`gP4Bz?nEBOuA)B?@%zW1#;@lf@Bp3Vg1D4I8UWXuO&O%>gg<-n zd(SHIE`INUzEZh*AAylP=9aY2uryB7M==>rRL}95B+*b$yY&o`V)P7>Q}hfHM)VAl zIP?q>EA$MK9bk5YSqrh^ou+y{gXVKRgC=b~gC<@*gXU)}Dnvdsk?I*VTk07!CF&V8 z@97ydx#<}+gXtMGO<^e^erZC|GZet^PZrTApw6ZPNv&iM)D=%o0cZsCc8X1<*j75j z?`zJ*4T&yh!_v3dp>R`Op^ zoG_nn+fQupz-}1Nd5N!~uTi!0&+|tB;>Gr;sg-sr`I^Wl?Q`;K@d@}=8J~Iv?OyQW z2n=o8@!SXuZSCn9v@^k-5g6Kj%}|h z%sU-p2<-t93`;VgVj4!Kkl}5OK`hI?(*VM+6@j!p()a}hN)QEjLNxFl3Y9dun)6%EP3ToAD&29eym| zO^Jnpf_LddC~pnQGu-n@@QhsUD+#*V>lQKcgR|%{>6N_iZI5Vrtyu z5rByXz;&$PF<7*TI?|@QkT1C#Y#q~NpvZ_YA#Wq%4nz#&t|Wv8>Dn7R&ee|%<@0tJ zTo(Djh!iv$#s(62djNqB^F}0EUL)uMN8y6Dh91n}xfunZLggke32NR`fak4gLRxio zv`WYhKIjA*rt!O$3N*k0B2wrXR`8T&^UMzHdi^sHW15v&NB34zBn7MIO8EkaK>}fh z`21rd15(-UL;|`}ftnS%QURWh&KXCBe}g%3m{m9RIZHi;%I$s|Kl)hj5j>jaOZ-NW zC3VC?gMj9-rRa#6Q`MQErrX)USd^2YIR6OD1z5yRXIDHmfq2|<|513?s-I1=$pm%u zC2_w+T&U5)p*Nq~f`HUEXbJUHYA%1``?1&4P%e4Y8sWqoXe1b*aTn@bJD*GC0*#kk zC?Viux{vDW-HsIKJ|;>51)^f$DPm3{je(xJ2stnBi0$@e;Upq2u}<=4QW#x|6P41u zXHFulY?zVFAqt|>Vv_EmuuGCEmnY4+LQ=;SlJ;U{b4jVkDCm+>_fps;rPg1bbj1~t zPBD^dhjK9UV@XIm+J;GM3w^?=JFce7Anaj(5`CX5=vYZu?q5XG1$7nnA2D-*$%VV_ z#@vkQ#LwUkg%EDgINys?Il71-7veX=`uJPEP4LkvlTJMJPJV1GcR9GluAm$427HS#vSgwxq&#YSMB|v4&FcMgS z+|e0yYBGj?7EvhK49MQIn3+UEo&?fviG0HU)Jj^Xf@6XDry~KhRtauF{pb@cgRpPu zfeANuy~ArF4~!oEQ7ogZ(3rvZy;;3U#6ufN3#u(i_0#2N^IV;q`x&%`9vrP*9R)`& za)|vYRKHR>)ea?Phd96h_a;-d+3wW~O%{)u%D0Xu!-gu4GQ!P&f%mGal^wOF;EY88 z2&V2@JJ%FS$BL|#+R@;iJUFoJ4hClK(Uj>PJ}B0#1H2Q@;08NS##3}^T|9uXhgg)3 z#e6bsF|lCKYSK+rtV^r0f*?D>l|aK}b+l{7ER?u08H?#jqDJZjtlG^*29#Mz&^m3} z=e?e2-FAz*X`7u=&&KP6ic{jhLK$d_IwltwQ0yYCW~!0f$MBFIoUshVk6@WYH5jZS zU(3Lsq~E09E$Kg&^>tSLK0A|~`dmlX+{|gW&GU54#nRqnTHQjw`rI_k7-~}2+;k)l z23%Ob%E^b}@fe+`&vh<<4M|J!iM<$*u=*w03Oal zKIVOM;gBz6D?#?UV2G%EIXl(fLmtlL{)3Q0OiF6=2<@Ob=Y8cUoNSjGfodT6R3+75UErZ(EL9I8KeKfmMJ1D^cli9pYO`k{)WwTDc02cRSeJp`267?bysZmvdUVvEhvJ=XP#KP%45>BPanuZwG$1a+Oi%xfhYH z!#DS@#$$*c9s6Di=9^mAT#x;+__g@mG6c;)yn?qsinmR8yFt8d#@k`MwbtXMgX4CL zARm|p>OqI%>z=xl8kP_o8+}2n_mv|C284& zP7wPB+_->mbj*Nkd#SsxV4=Al2UX&l3Wu7i|Jqr2(X=d()KopxS@>5I>+}R?G@$~% zl7U)FsoPgL9<5pY#`@K_*)%}a;Lu1_SAYhgj|;EpT^Vkg<%68o{t))AkQ!IZRPCUzgm!NL0+ z26G9Ri)=3?xcLecKqK*M+e;&hw85$DIJm}OmMYOVPF7-*cZ4>WyER_(Ps8oMhlAQ+ zP_g=?dY_a}Ac2pxZ>FwP?e3szrGU-1fbn454S4u$ z7}#QWk~+6KL^6V2LeK`aVEZ7rbvV)FA`9YK-$^vfQ=>#fO1nyO5lEJLo^tj+*q5Wf zlLjd?d3H4!+ak8cMtlZt#O0Bl=B7lg%dGj$N*0FEEe53eC-y$z)O)o*T9naIFhJa) z1^aFC7BI;H0X4>*mBn5Q)KDcAKM1OiQpm7c)lA$@EhZQEyLT8FohctbGWBph?2 zT+w;R*P7j?qg_;n+J{Ei8aD#3;aZcT6=xqRDpebpt%EnfH*=N003(QIpfvDxYdQZB zcBHHPQxF)M2#hNbvxC~j9@|f-GUfcUYk*bW_+^zLDu?EXVo!Mm?;2-xTAL!VZv(e_ z_)o6~>_B6%3f^Sr4HdgO*Tu0;cX=hRbx~GNiL8)tKVE1LJE+bwCYUSDE0hrwJHzt1 zp7N>S4~z5;c$v+JOZ{pXtQa;F)5=w{No$Mh_E$Y3q%ESSXbb7pz>nR z#;Zjxo=eh0SQrydodU~wBei-2(>Qz+hxEE1GvVl zkNu4&9=`7VbSJYqw|xzS)^CH?``}g@wy+D=PM88yLa|2pDI@#?6Qmpf^h3`d+^X(- zA6_%*?=VS_7>Si2`x5&fZv^ev$(U~1{_>yw@54RXMW$NM|FXF#n0VnPcwML7Hh5S=E@y{gQl>Q5DU%MdT4{dQWSWb3>iFpI|g+X*wLpL z_#fqg+1MdDb#w^B75g?ww1a5ZS zx_;7PpT`U*Z)1&=Y#h=C!N(ofEylT3)z1ot%!!lDfjE5>F<%sHd%aB?xLfcYHfVc1 z1N3ccI7(DLP_k839?<=@3~P7x+H&*nwlV^k-iGr-)#lG~+Yfe}X;}J53XViNRz)IgS>oB&51kWmH;emg; zE%?AT3Ds^5UbEZ$UXcatLDcx#gsOn-D-H%MY;jud;`F*i#J_?N5(NslcGQ2^*Pnn2HHY}%D@_Al{7eY>^K+Y6=)tUnDM39-|Cyjjw znU0?shCW61JiGA=J=_50(A9D zM9o4dWd{RoF_lZKHT(A?uUeBIcOM#UNXtGkSE#GCEpjq;XST}hABe#R64*ZwPS{b_ z!AHV+Kf5iDCbileZ`CIToMdo$U6S)Iz5V)(9uEkykuN;rzuKSR$X1hV?wc-0Gg zSV@|;{{_68Z4G2qrPaxCEqlSG)cBS?c<6=4Shcl=l{;#-9bA)GqgU+1hrI?T8Y^DG zn-$O3@s#m|-;;6)&x18=G#-a)bhXpt393E5ihX6C;IH?hnBXzJ@NHM8t${vt^@y$x z8BXH(&Dhz{@8@htuj|%IhJt~yXjuolpYz-DfzBX>p(@#Zu8ZoJp!zmnfEy61*nsPz z^1ZIYBdEJcuRDzh2m?L7!hLQJ+8KO76k2f%On*xzgMY>nyLP8(Ln@A2RiAFYw&|Ln zIaqi)IIXo24NZukWY0M z{u!OESDXSw-rO8n`9?21ZF~K&Hn`gMxChm;HKgNL8^qmY|AtCxgZav6ZLnBbt__wb z*K33K+8Qe`$h|M3`&e~PIlnN6I3GriN9%|W+|S-vpp09fOjw}U7uXta0w{`{>mP5t z+~-fjOIP73LI5Hj^vn3BH1Yz)>i-tO(a2(d0N>shP*OSfg^NkhIxKqiX(V3je-rWM zik`lMpoeQHqr#p*3B%QWwuWSU&bm=qXnW}x%OIZIS5OY|^*Xp~+i*22>B+CpMO(>h zJsZ;$7ffL7K^xEn8XMVcZyFU$$OF9vZOtZ}gZ&RbnN3gG=C*B@CS$4PMY(_-6=?*9Fy6K{XAmkbT15;tvU1cruADVTGpy*@Cn$spe>E z#P#0M*`{fJ%OU)B{FXu0E-sp-`5l&Gtn~VL zTb9k;FNt-ovYA8q#0G7x--HM(pGe zyb5^MTh&#RiTq9eHw5@S!!l7Od3c(Ufs(-zvf?Ryq|{JKv?`EHk)g_z*UqYXn!Vru zZQ}`jOkJYoxISjGXuAls6iKM?)BWErN3=((OVSR`!ZQTXKUkYqWhs&c$RI(;bux1B z$Ob@d+S4Sbbd%3pdCNE$t6JKhu1!Rk4vC~tHscy9`b~%Os=A|Y5CFacIq_1EB2een zceS>0!Nm^TT-8;SPGUt@k)3v+144=`^%V}_OydhAQ5O!dlA&5tys5tZCU5=Ees0=! zeEj13E|$9aB*I|{JZUR&y7@3%zgNEA3z~#aotqIc0E>q-H@Y|t{#eGNH!5LcF-olY z(pE(scMIzZ=!2lrsVw(2kD}Eaq{|;QKV-%-se<(*#?hRJ6YE=#9v!TUetBCS5saGL6~DcFo+%9o>7XW%PD}jpU1G6o@2Jf~kd^*;mmplLfjClV z(4e&aSDhW_P>$+#1L!O5X0{O&bYute5utGc3 zN{2hN#a26wW0^9x1_Job419$Vs-3l>yJ;P=(VqQb?kY)FFVtD|Rg&=F^SuI5E_B_6 zLz`<^rM0I2pbW)V)_lo78nng|84d!R%6h-=ASTBFC6~S1{!Kijxyi;dCee9$B&W9g@_O^x3lALr+*P%MFwn- zZbp}ebR!O^SG3P8+Mv8{^7&_R!|;(aa1-D4iiLW|FRim`Jr+wh9D()xkuD(ioksLd zJnx}rFT&FCl83(u$D0$H5}S+6P4msoMRCZsX?`5G9B|P9Wqu@*Irc6humTDj6LDHs z96|ju0=3hC0hgc(LNSEcrbsOE=s=k-;BOE9cH{5o_}huUCj8aoj}`1VqZd4W22YMB z?zh=-7SFSI_TmYrC_66Tc>&J>JmLR!#}J-FK1n!Uf@XLijEx{Q`V9Vh@hANWc^AsG zQr}4}j(s;;9}1y8nplhg9bs6Xa_f+9bM8>651i3HNcrpeXNOR(_j8mI?0+AaPQxqm z3irvN(I;8dCu>j_KoIcG&3NC9zi#|B7g;78Z^9J@UkU7;6WIGrOx9Gl5KOeMzKYY% ziC$=mf!rAbhZdlPp+5V{qMf6jwLR(q|A|R~ywg!3C;q13Z#w>F;jaLHi}1G!f53G* zaE*IscEGOsaVTPTIPi4fX~z>M=y$+j+2c^3?tnwp$8juphlHmzyl)H~Z9;za_}huU zXDIJ*-xOJZftbD!-)L=2KcH=ZF~WxRonV-D-1S3?$W$SslwcK!Q}czrY8tf6Q11mE z#Ko(>!?5f>RdsD!RbHUl)!9{ep$AFyk^wB`6sN~m(pw6hOp##gw2Q9h;Id&%RN7!1 zDSA`XNqzDEg75mS!rr%$5(B@m_Xu7*zQSIJZ@nH~j+F^%bA;9e+8PXLFq}u(O1rJ$ zJVq%TYM!$SwsifrizEOj z^0tfi%y}j?xtyQIR6rW(L}<40T169_Y_3%9g=&S}3Afw&NGL9{1{OeyT`X-$sl+u( z3b3FTS_9LxZ-Y>lL!lqfB!g4GseL-mCv^wn_pQakzb{Y9R8oj#m-BOCVn*HMX2`N~ zz>yuCUrC~2Id>vIusUR!TW4K`EiIbG?C8shw2BENY2BG<6($dHQ0E?nY=u3wj+JVn z;OBt^S7%)!>ujZ%TDac1#b{Gi>oRPesn^v?9(@MI@iD_9;%l#2wz4Dp#QtNzNg%$3 zpml4U)}Bc_LxXNelbgRlbPuB8i9g!NzhG)&QZM=!w;Z&o7A*;)OXl2dgLy#e=C^4} zk^dDd`uf?&(AU_n@u#8S;ru$HFMpZ(4hMrh26re|MnRbBGD9TF4e^U}EK#VdL&|EX zmkm`lXY+>uHXhPc8Wc#RtR_8DP(7-hGY3*Ix&tx>E%p)4Nl|UQnq;WQR|KwahT7W< zS#EX{G}uBHKY6$wK8K+{NfS?i0tnEFq}=|p$re_sH;H>^Nh=>wuXq2i>h-rEH{KLd zuU{2auZOkdFxkmIK_5+(ag-~W@ZgJHV5bVqnUlmun{S_4M`C61uNsQB#6l$q9FT3NP@IBy@Di&!73y{w%EGu zQ(As2lMOlWdeJn zO2ZLFNON1Mj;NW5Tr4e(krW{%g49V!?4{uau_o{pHW;9W2WR5*L8cHrB;EzqC5~DL zQ;Ghu6Z%L+ot|LoYqSbkY}ZqM4r&KNTA!h(N7hsK z(8~tvw$FoG!7*m+!Y6S;>$bN{_2B^Q=UNW7?nV^c`UO*8L}oSHa!T%2$FbsBmhNr2 z?m~Dcxytr(e%kD0!uhz_q>RB8s&!`qH){JE(Abe1{*v96yMF+$@PhxaGIGOb^i9eR z7_MVew33s4uL^^8e6-PJU^}(x{O!C@lX>@Tq$!8{+=}C46IBom_h@KY<2U z1ylE-a;;0jCiqW_U}#uO+mU`$Pe93hFG2BVflCpP#Q&KBpnUyT${3n4IP6Pw^F|77 z*@qUlzJ?!naK;OG1ZV8UFJFxt=D`bDudbfTtvjP8c=&dhqx0wR6UbtPXFKq^p@X0$WNMFAcg94(YYCX)N2m-tefJ;XcC1TaRY1KHr>1DLse9trVM@#EsI@G^ zt?n=jkZMgZMi=&zSXUlGI~&_t$<{%+iPI*CHehKb+X(eK?|=m*(8`Nw*cP^kXhRY# z^e9tr9&in@J7gd{wt$FyxzF7(xI>0y`zZklvyp9%% z_F3y&D5=ld1gi-cC1km++rA-Ny>&@i8?J0x_XUbICU7hQaHSMYnYdmm>tUn?BqTH8$D;up>TwtCdy<&h>T!02puePd6 z`!~`;?VC9pEVXm)W_L-hyJU5)_D$xis9yd0tJxbT1HMIZQvb>EEA|y!OoC&g5_$a9 zfpp)(o=D8DeTM*zNYdJjuaZcc3a4PpB`n%4B^O{|0sS^@AeYH{xr{ooe9Z=d|lLeEPM0hSN-pfS5RMgnpVeCrEU#e!;qe!7fi#ltv4v!8v7C7Lc~T^g{P^4DaH6=GrB>PUQ-_Kclgw1DYm{!{HVM% z_^uHzl7#Y3a?9eA<-tUb5^K*iQI{I|BJ^VMJOiNEUjHzJswC|m>7oeHHpxNt0ouV_ zYYo0Df`V)9(UCz`M1sg!svvQx9;U&pTL5Nt`xcElTk0!zK#?;JI(cw@@P%Ls4GLF0 zwP}N-Jt#ZG=n!KF5Umsrr;+$wPNp12?kO~;$g^gGyUDM8a0V3#n+n6AiS}k) zT_oqO>d=faC`N231A_H<4}sy-%0?2hNtnJZm`bDD)uk8Ng^WC}R`QxM!B1&`f}0-+ z#ah*?Ft0^QqlO2LX^Z8cey6@g3dU2TSdm?mgHVmF3eC?nnq^4955eQ>hXKp+o_S!a zgRJ9$HZhzVrqOW5KqwrzThEjAJV|Sl7pfO(vGFY!S^J-DmWQog>e^6M!2e~^L6BR_KUM%VPvJbv=i)B4u(pLYX0F&E%{k2~Z;WQV`Ywo_- z-q42rYFa!`wIpql1g&9ge$jtoJkHn{CM$xeVL?w!jTQp9kgv|l-pj%zVVz^!zp$}4 zE@5mJ*peaGf-P`;O{+~dPRE@|)kC%&6{uEUhuPLxh!@NIxWV*s7v8{u+6N{0hMa>1 z%!Y*8IaPSFRg!C!tj@ztFb12uh6d$;Z;@H>xt+x4ZXm94bzq#<4n7x++_jUM7sKkH zLxSQ7Ja37_w#xd$bcs{eTjmldvW85y9nS)q)eV8GvqluXujbRg4`wDgz zu%m%Y5oh-;xrB!_h)N?kJlyTXk4uJp1-A|9vcAYX1U6S;#bG9WE))j04ftmPbheFXJ0?2VK zp?T$EWL|j-vxkxp#`nnRys}u#DW>Kg-i2Q|G{FI_2_YVR5ok>iXcavAtplii{mFC0qjLpX-y*ak4vp`LiF{b{ zh0wY<2Cap5-J%zy4M9W@$}~aV*prlFSfJKER{ONK9CI`%6E~ICSAsk_gl*ng5YGB`CW0nZ z3~2WcnS8|s?A8hDh2(dcdI5KeJ<))S5C^LWtzBZdsLgwdpZLV(qju5Gg6!agx6}ti zrJ#h`%vFJv*qp-}9rZ))X#H@GT5tnekR)QFHScwuQb%$d%!$}3+-P4dD{1BYWwI_} zciD9_TB7CPE>tH3IZ*D8L9@p{#ns1PrX?5H(m{!h$bwY#b(m^P2DT8%k|Sm_(f2~h zwNO@9V3>)4Rd)kBO5+|ntsD@kUVV1Lilzb`e-~|PHY+&`v0!|1UxWWoS;bd*2!~8E*7QTp`^`C1td}cBqd6>Nso|3=6lVk>f#wr3Ud70m}fEP!7sxxyfKbDV!y29eb}sP{E}I!It!*r zFodk&54ivzNQIKip-tS0gF3I8aQmq=jPL^`Ba@Kdc{&Q)kvZC!3Y&Q2$i2JF{Q~w&li3H?4JVoQ5)> z$nR2ZLPP$rP3!q9DaaFPovOVVT!l2G&e9Xarj)1$Y{Ou`37cvY%(6Y4fv~X}fr^a| zANLid8(hJzi$$=}{zIF|^N7&yo zt2Q_PN3rYy!ZYRtuAxwqI=ZhtP8sRumBr3j5a8`b0!R_3F%o>t?pr z3cD=jW|!i0DwBNE;c@A=xT!(bi>=z`-%21@uNdhCzm<6&k_DIkRt|KmemtJ?K<`k4 zvfEa}=_3AZdsw1^V5wAUWo6dfQdx}`b?YcEeRT!227wWw7ch64Wadfw53E(o4@$z$ z5ef`g!ajA9PJ^z?=~kir|d%hO(Tn7k(SWh z-aL|=lb^?tajam=n=>df5I^%xB{5If5&VzvDyQ5ONUk5eU$NE?7KUTav17&cIn$JH za?(_Dar210xebS#WLS!dtUfZG&glKOxu#Eg`VN^%u+2m34XKp&;9$+9TuVE!{4@p{ z%&%cN4HYo>*$_m(!yRJ7`(iXo*5$(;jX@9VRU96E0#>tmZjYtk!{@^<2kCk#>-yRE zfKJHCo^m4uo|YB(f;YzxZU5SyeL~BbicRw;53)fEq?3ajUIc=H=@1};Yo*{cZkmH? zKw9ec_~x12u%EnhDpvEM)Rsc4rMr|rkNRNy9#N>UDs`Hs<~4q}Wfa}vY-^GY#Imj? zIs0%<3f06r1g($l$#zS(<;_z5AE>le=Rm)(ZpG4RF2q>PCj{OMg-`Lr@%^Vd%~SKW zfz_Kwz;F&$Z6-52i0={fJtFjN%E#rTL`&5j;nu<;)(T#zOlnz;GF>=J&t_1|)p^+c zqE?9VS$n5xS|`*BFaW`pn$hTF+THF&@sjG5va82b*Ly&`QqGof^DTA+pczPV5lj@i}%fwTpe{zoOT$|oJbd%3^vWb zSPtu!&UorIvxk%WRMaIf7KR|9K#KS9r-Zv(oNY5gP3Q)a!RqYyE4SgdP?>_?8g(?% z0iGBU&R|kj)g8isCLEeU#5ZbK&@3bC>JBXYEVTMFnG5YCOi=VGO#%9o|_8H1vXCqN(0Y zd}3-lEv7al9;@kN9sZ|KrM`S?9`+6%mQ9K?xIo&J%tpZy3pTZF0V}Lev5bBm!>y_c zj2mmNgpObW)eVC(FdFNUW{jm0D}NaoX?F&ZPo34Y_0KTVz+QD8CbVAmzA|3h3W4le zkf7C^5V)q<5`@t^JIWtLqIr}m5u}7Z-?Is@bUo?GIq|_>RvSI|4jh4?Q0QJ|83@G$N$IP z+s8*$-U;86%p@7|!UPN&6=dX1Yy{CjB}}3TFd!!11q9qpkiO|L%0n*556E|goSy?MeghUwnV6IxAitga+>l*IkmfjD^yPH z;oik68=60yO?&Tbm3px@(|55}bNeo?M?LQ17FXMN@h^Pd*?W~rek8Rw(Q>$ZV{q(F z$o{H+jc;enY<LTKs-NE(2|6l4>s+lJ@~(5WJ}2*uuGXK) zTSsX|-dhoLkoPKA>!ZB=)ek|05(z?o^<&7#b@ngJi}9g67<_|X3+hkp?lf;_HSM0b z$SP%Iz_kSQ7L$t%+TeYz@2z5Pv5UHb-;sTKaFy$OZ{nav;%_c+wf-HSjORCa5Y$a} zwZ%AWwweL&ky%dNA>CmVwxeUh1>MZyoskZg@Koo}00z7VT&)YqQOGBIc2RYF4DW$% z?_*Ti)_Xlc-QI`A?dx>o>uKTlzRz< zpPnLf+dM^NhH}2Y`JQg?52S?93cvYvZI#~~rF9^zeLEQow8NhB%0Mq)t&pTa* zpdTO5#ypyF_~c-;{Xdm-3})|-aqMZe`lm?UZm*B_UA#}HcI~R}cPM^kmbZO}J>YFW zw3o88n%j}h^|r@V5TnTaW{<*T0S;P%^m1Rw9%ycl3JDS*g#s|qa(ODKn6p1!lw}(vvR2q5{b%Vlk&K8hVEo0#N;zvrRHo< zyz<^tRK{;IrGF$lfQgXl)8tiP9ghpN)dC(`JD80H_;INeaex<(ld9YM$W25Ic^B89 zcA&-Q=5lTMCmG%YCkJ~UAY9F%NFOnWLJ5mS%rZ`5{fSt;t5qKDPVxv8KGN?!;$x6N z2$|FqDQCC$5y$c_?~}83d4JaJeS!|RDSIN3h?30J+E2x3QEcxYaYROx2=1X7t&OTN z3ZJS8I74x~1J20Y>ivT>+nNFWossC;*#6F3EkS1GqoGvSv$>Z-1NZ>g^ba#%mauVc zFYg?)-O<+Glr(S(?U8}sN_V#DM~qX(r#iMfWdxc>MJK@+fAx`pD<*=`nFQ(8U;TtF z_;fc_U^;{g+d)<0B}6V^-~Z@}qOxN1nz_`kV-^}>fr?V@*Oj*%$e^`1%nc5R!C0G58BH0?vN|2@28PcKtA5(jJZR* zvYLs}f`4SwQo{O=OxqFCSN{m1RJGUcp2$wzww+jrKn71xg5iDY9`id?q2>8k`8?Wr zi+#TB2Ql1e&l49r-y`K$s{auo;`H$FkYKo;6`TXqi5@xHz*vzqIxMA+=yf zw&L)(a~2BY49t-zp>ftJ-9NZh=k_e|lG&YAk+$P{qc9DLzr}OWXUN6YO}{7x_JlJ! zV!Ua4BqA3{!QLQOxm;0di4vl#?J|zcaG?3sKt)fW;&@htTfjHb173GAC?WVxj^~LDVx_yo<4hqIz<@jfrMOifWQ3<2bbQsXF10szoUs_dU=e4PzQXl#MiPC6 z2Ux3_kf4;e(fq2RpUA2>tB)rwM{2ZLf#zqWn%_|Q${5;ElR#}%s#6~`Q~}}Gyh|Y0 z1*%{{NUc6I25FP$qICshzcKr zBCUDyt)bSOxw17+LF1R!DDP-%&gki+Ei#`+4~*8F!MsFnLjO&z6cwM23LQJ}aF)m{oCH8-<^_32tk7Rz;6|oi*3Um(ksO58V`~IK^mI9LcJ1 zGLE7Oi_F3mgDNO{U^eiZ%|)NfWf)qe!B$5XW6 zRW&2{Htq0z;dJA2Z1EuH@#@;5`B!`$w))d%@e1lL~q$@oa z^~quV4f9dekU`Hy?KVD1b=)HRbbF7;48V^bVFsKUSpnggcXIsh4^6XrE$Dp%HDG#8 zZ#RE0JZ`jF`v%^;zJK6NkY;^cu*a+!HcJG~aV&ProVtdZFoeOVQ!q<>GDu@cjO zOa6rUKDCwu0pk1UYsqzKRBQ_uvI?%|de)H_x(CAu7o1#Fr+l6{*}t$f#<$v1Vg77a zA&SeQ!kmacb7s3JG3PRymCACkFwxRxwiKD641K7&9uok1?9oowv);tX-eiRClWY6l z1aeHFDne7HCI-km5c_QCT4DX$_&k~e{@2do(ddu`C%FBkuz3qfps%R<7dl%mgz41H zt7{~evds2i^W~bK8XX;`)1T9W)fU?>Z{n`Pq)H)eP%PCvf-g$e;W=lk?zRHdUjlcP_O@9eKhEqGLPG=Fijc6<`HxIKpmzTqFv^vL8fWo3ujEuZnkf7KMynQ&;Ry^=FI~kz^>!zgHE!W%jSMDK5k@|#=cgGD15!4zj`8CCA zOp3^`t)?#FxP>eSOEz0CEG`RXw>>0a@h;mhg+Zsgi_P>y7Gjm4Ulq(xtB)00W&ElD zBHsB9NKJPIb~xchu1<$*UDL8OId%+U>-XeZbVE*ckgl+y4^^339y&g14mrt>T^ zo&QDoT-6(4X>=>kLp+a3-ccFQ|Ig%eontA*lF!{gM)g^AOh(G*CKJS1NaTmc#AXblasG;YuF7{ryuU4<8_D|sbvVLvoaa@ZH+atSoZ|`eFgD{EoByJG zt`ug3)A@Dt%;H%nKGCuHFU#k0KP*HPMZ+)UkIfEwx1jed$Y5VlX4uS`1G07s>z-hm zTFN28o|N^AbD^0*uc>00w&}tNk1a3PxqLH5k2~Z8PJ-~tXRIFI@{$1kJx>Dh19OeS zvl)fXN+`NUp&2Mhg^y^@r++*#?=;#dQT^@3MHsrb# zaVdx^>?LQYAyO#!JCL$0Qo*aD70iiNknq1+pUKqcI;%dThwHNqMr?4~W%Qf3eTGq^ zZBl{cNEs7$kC9GzS*uZUqmhE%55*}VQA<8FCTf0xsFC)+O^Vsbhu(Chd??NDR$`zS zaj@h;on4D!Z9^ZGok|LoP}u>O`%~5-eH`|utdf^7NOA=4&3wH!`z^$^D+aOe2z$%? z3RG>Q&+`d(6ht9??hUTiaWVnEK_EEMjmUC~CO#(*V)Ts&0ls%bDl9KG9qfC#Mdow+ zv3c29UcOh7x>^OPK}b_{K?LxQO!s@yeM6Z-KAjFV1REz^>XkM8f! zws)y7!tW+TyME6qUUdA}j1E$Ai5_*^D_VV_MHgmi2<=*iAtC1`dnS zUGETM3DAc*V)fEo^Z-i+k<#z3Unc>mGffPBcRiHVM}PScy(&IjFVZEVT~GRMqAf|0 zk0pE{^B(+e2GJf3R)!C$_~H6>mHG7!fSb|z=s*~efy(-Xj1wFH3yj~22i173?&S?6 zvUk}#gRQYse-I8!(S|qe{`Q27!**}FrzCx6JVGQFU~u%oxQWv@`kY_3`%~&9)c1`Gs*7 zqr2^eQv!4DrI+iDngC0C;q*X`EYd*AH~0-LvZu%Z2jJx7GHV21w9H&5m%sowzMbavs8aQ0kBaVU zJ;y+1&5`-(YJCcKP1c+O`FJ+2RJ~G)cop%vGV)#_Z+#p-OK_D+&{FX#D}mb(ahH~s zmExAUU1B~1EsBp=K3vbHTw=2Nk4&MM^SC6nO;Yo|EZ_Q6T!Xk&#-EB;SqWaUj7rV> zg{*aCN@yNFDohFrosnI!w4|)0q&~L1-m%JDNHpbFA6Hg_p^EbQ#8u|4Ds6!=P6lC* zbhGD#@wM^I*LaR?N1bu!M9;Au6FoiHcYYp&Dyuu`;y-zg?fl5ov%~2*)=W=^-ZK_B zS)TR<4*9j$waZ9)j_E0xM?G;ejIJMcgp%Y##thyS%4v6406XN4Ae2AiYeIL^UHHNm0PjS3)rjPr)D?1d~MJ5^CKqMia2_ta&JXykSF7eKr8PcBKk#0#6s_& z$Kn4Bf+?-r%k0LeLt)>#fa2ztOK!_MOBdWeYt@2TvsBL^by^rk<(0=R}zRb5{Jja5LwtS*&zdqww zE{iBFImeEmi$hSPk_NejUz-JXIpMSp`wjXQj-`h&? zK>@aU+(7}qY?@j5j^_CJS&o0){^{L;aa)Oy;rPe;guR;NWM>~(U7wBS%cBFAjgEtY zGX%!@2;zHn<=#!W>e~B03Wx1I)P3Oc-u3vfTr+z7Q+MG6;MVfmFF$ZAj~|D{xo}E) zQoD|QT@27Oo6r{dNS(}+dA}0MGkRdwivc8c%sttA^7WJNpFEXxR6jrP2~?PM7+C5d zUE09A_LGgHJ;dAMY)pWqpS(F{DJm{qtL03u@G}aVqhaJ&1X_0|WWJtVB{*5dCGEQG zM$MHCx9&RT{&O+Fl~6L=@)u)5&gVwq<$p0&OvAiJe|uhWwf>g3GAy)m=Qp)AeltT` zIq@2XpNR%pk?^YB;l9F>(lz5N57=ys4bVc zcYtW=X%XBG1(-wd%qI)-g~71Uby5EpRoo;=Xp)dp7VS=$*Xe4zfdyMD>@|pW5bT`h z4{v1__V|yadR|aK_&PRwi|i5DlpI*)2&4yAIRmT4b5K#>p|%K2cZh9%b!{%6!))_- zOBPA}j|zCv5l@nPF|kw@+OxN52TF^pRi(ogmk%*bzyPkXU#dq+$+;l z6idOS!W5|M2PWiHT~8B3-uw zhAL+Zr0)Xp;mzsD`w1!TdlFAf7C<-CHiGkO^+suO|KSJpJJ11xm0X6f?1heSoRR%2 z(cKq)(Cn8&afdd63+!Iz@V)(j@4^F>`lyy;HaB3XG`VGmQhmof(Nd+4pNu}fr4Y|z zGe#Fskn5S4yuj$yoz_)ess8rVQ4tkak@r(umXeTnV%w22%Upi3u%oO9KnheQ1QL*| z#EO8uYj=@D8Tk2UV)(1iGu=|*f+ZU-Xlwcp$LbaRhYPexzO8YI*ttvCy>M1sxG)tX z3<<%n#h~s>A{%0paf$VuKSX0U)ks(#o;@o(?vYJO))JS-j zmmNd-sw_HZ=d0c@t*Hrc$>rLY8ApQ6E)T6Nkm4rBZ!Em&*=aiPf$)b zNIv4}=j}Zr=7H&o^DciEN!aao+p@2-40UFwXi2;53$V!0`ygS9vkC{BU?2@*(I!!k z_j?CpL$C-2Lk+~R+EE`9^oEO!gpnF&@)r({hc3erkho$Zl^qJ5js3%bsGm zb}hUuE;QYPwp5a@Ih?4+b=ea`>D*$AB`>G>sdVy@WC`I8SbNF>s!nZO4=iCVKrdA} z=IRMSjb@IH%|Kqh;=JKK|Ci)Y#pK1gg^Gb@=KsX9YO6Flf)un@2D&>=W`LV!2Y1P$ zMRd~{?#gx8x^m+ZjTDIj3!P&GVJMHi!(zk^N;0r#7sFNqsrOEf0Nv813#a6^wYyq> zDehS%!CHs9fyL7o96xh=EKCG7*P2%xnnIpdm43d@l0%*Aw`vhch*aY0k(F?btiZdd z^IAD=|0U+lRG!?{*uNv+u*>TD>h40er5J4{rYiI#s`;RrXW9*xxUj>T-7i^c*G5tR z?P}Yu0>>h+zY{pOU2ZVjBaIHuK81vmUfA|}SH7bKyLA1qDvVBrY5Lp$M8*%1vAViV zy9RZcNHNJu1smcR!p-r%rH)*zs}9=rM4Zl$gJ0hQ|3&-uA0Tu}A>nZklSw5c`FptZ zL5Wg&R8P>$P1V9aiR1nl?0RGerA~%R+4Z;$0q24u^EAty7ME)afTigQ#Ez$0tx~O1 zXqpTAPnMQQJh4JX6`8*fN=fL3=+gMi==_WG#-a<2uS4&kNR6-8YxPjqW`p|<5yPu4favD~!m|z2*Ao`g=>wUu4jda?fBWHv3jBrS@J5DK!_L z1KLAk+CzM*!VOCQ6PJCkB`n32mpARix73_OG^=4k6Ey|C!xyufh0wm$B+Vnm{DfjW zeaMK9uD`X^{O8D*en)UeO#QuO=5FyAw1Ugb?U64%T{y6p%zyogWGs;13r2Mdg_fF! zAESz#xBxB@yTMdRBx8ltVpYmqKSR=`Q6ZfZ0R}H4rx{Dcu$fZGom-JMlNUi|18-sM zbwy1PW3q?)ndnL}`9qNp-U8$f1#< z10W<;(UN91CV}azau5Ox`Ay@ioPkm3AWO;-9_M5E$T*C#RuY2jNlYZF)rmEU3H>nP zVzsL+(SJD`cE`!?CB*B{>&QR*bKD>)aOLLg$J-*RwDlL4>DOn?X~#!fZXRc>8Ib}j z3SD|9XNJ_a*EP%|{nnKF42Gr_nJ?i4Kiqtc5%0^Mn}b|Pagn)P%@gLA#+K#~%u)YO z5JqSaMtpGL+?ddLk*QqAS+?cec%;~j;A5N*JShTrBCLTx+aq|f{XfD2f!{e8H)KJ` z_{c&4*wG#PP^e|AZ6Xr70Ka;IG=b&^1I?{!gWiPqK4rF|tZcctTh%Jn0CT{a1*v3f zu+kW9`y{3Jp}?=CCa&*%LJ*>x8A0(6dLQ-#CF`cCM#)2A??b!C=J`HN1d4fEyKE`B zi;N22uGHK`Enypt+5QUlxV#T%sQq|X5r#1yE;8(DJKoNq(J2!R@2(i{gJ6X>8s3L8 zRN1I>wn-65(7c}H4CZ;u! z##4nrjwLKI=HaI;Xjib zQCV^Q2WG_D`pb+rv9PZ!E^o<-SYg($w+!ujCMbLSDaB^?(Fj=4GfJacv6eopGIBgA zYNq&FZUgwWg{nLe8jUt^nfVf8B`kbPQ3TLtUp=IgvT%e>%B@_A>(?N-|BwI0GMB9} zW|9AL+V*Qyobc=?&G`hV5C4=WZRJr_lmn8nl0en~O)ckyxUW`-5qy}=!Tz8+5NE!O zXn-gA`CUL31oixbS2ccQ^syy-{!YAHZHgCC1j$jviCW(xspqg55LgLK6^|G3Xt{8S zUu(ltyC9N?MJsmwLo2>W9IB}+2I+mZn|{v;&#eA~>}kPfpV3`p_MC-x;vdW|-#ke^ zpW{h1Qy+SY%XPiOrYI0lR>Gan^9{LF(?4MTMg@)2BUA72iLFUO>o8G_+q zyivQ7Vv5bngaT+2D6O_g`CJ-GTx|B?u1$5vaNm&%^Qx`nmeBMS!8YljqM#}z{8e)r zF;S%YYW;Z&KLQ_-^$~nrI@SQWV-?gh1(~@m&kL@N07Rt2v=ji?S0bII-&iaCWY)4Q z_PoL3V_%Vzt1`7=uE19b${QulJwKWPQ{p){zol7Yv@yZix&Dsi;OwWx$Ma%ii0iqa zIH|9mCI?Ys(epU!Y862rqa5?%5nHwwIl~d$LdPfuHzsQh@$lsnbl#l2T2Z_Dn zG|*7SB7fTp67~qC7~_7xul)oU7mcHM%AU@5#t9K~=t{m@A23F>T=+YLP>eZ`5uhh` z$I07I`q1W<3l9+z^=lEoH7yq)#0>e#)CetYx$r+m__c}Oyp{{W5q`3lhNiV#;KVtU z_B-M?w&lX#iyu;QQtod2!m1{$!dJ=z%8B+EZ7&MH0#UGBHB&ZUWPXyv<1|K4bWphM zC2PVhY-y!sdYpMiOtj4@V73EQKhejAW@YEF-oURg`d$tzC1!U#Hx0cXbo>f<%~bA! z>w*Q|i{*hFwI8bOeU+6(N$4x3X7AfXFulGzbIP@AOU!>HJ}kmOf_4Y2!Fwgwa*%)f zpXT16zZ_O2n~nbropyp$A~3N#PPSV{jv*`;!X@`~NI_Q{cR(-Fw>&7Gu=W}3W=*if!<@@JDmGs5xMu8Z64+~ry%R$fo%_WR#P z2FRf$M?%tfOY~U*VXzPN|T#tA`#+q zLmw4{-c~_!coLPV5tRv}5x4*%SZwZm-`sn(3sSjh9Le>Gq883=2L&;{tVy~9u0gC2 ze6z6A@o)!*El$2KoHSK>!o7>a@ptQ=D67N;%H&|8l%GQdwYlIMGl_OBW?lOquv!&Q zJ9ESFs=XnX>zSkdEmnXXU##=?*0P|jtZigXt9yl*!|Y+}wfo(+u)T5wD-dvTN)y2Lo8W3fZfu{Brl<@QN!iS z_w-S|QZUU~$4nO@lc%#jwnCo~eodI&8tYY}$Q%jXU~TLobUMm-ey{jr2}@ogAJNQ0 za7I#XtI4{-=+Z{ppRdVE*DqMFkBywOlu=wd|OMidNob5r0&it!eSD4en9_MGL0f*=l7m=lRAD!K9qwjF^r=yZx|r=3a(mM!x^ByXAraqwR-6cb1vIM%zmEugnOQ zBbfZO6cC6BKBV#;JCfKjMlyfRbGY&Sj(6jXHyH!bkQ>IzAPlVdV#0twdvsX;YGeZy zu1uPKgWt4isRf#|K)qz#y|}(VJnkDZ#0i1%@z5T=7{>%96711BFi>oX zIv^My{TYQ&b;})S%%c`(;X3-n%=U~POps$&T)(PFN-mO;i-t?~C&!2Xvi|gl1~*;* zIUF?T=ujov4XiYMf%f&tv^gWw8YlekV2Jf3gUFc*m?5ajxO?dcme!TTlCf%{S+fJA zT{aHM)>-c^e-x|66U#G>`HzKPc}F^E;N`Zo7L1Z{;LC2Y=>uSB_U-4@LLdd$s!D@+ z5k{(lj%SNhYPd45yt4vT)Q@jesO{3N(20^Yw@~rszk889k-OtibFT7-)Cve-bHA z2~h1#RPF7P_F6i>n9>DRqMG&Y)sGr4V&EC8M=yo3zl4dR_c--uw%=TmJn)*-W47OT zaq>%0WeNHK!zM{s-@s2l|H`|PEj-`tuh++}GI}yFsgi7Xyo1{lj4^>UPWb*Qep`XR z*MW^2Q&m@ywZ&|->)C=tIA&u1FU1tZx}LRloJnnYPfV<}d>Foq z-*60K&5B8T9+q{HenaN#=52*ochMal>}Vwc1Qe3I}{Do1i3Eoo2s*8wfD5c{Ofd^}tREv%jUZcFPHo8Midq z*qr*x??G_}PG5hNZh^#>bULZxy#I2po+6g2N(M0<6BrXp#4Lo4o=zFDNkU0(;V!p$` zF5l^?2)1BvP`k?WmgWpTXUk@9nSMy-W9UY?P*ET2c?GLH7+4fGWet4FP+{=77@|QH zGmdrij_Wv+l+=@i?K7{lpA>FV@!IEjOg9%pEpWqf{*>ceozWdc{gTQdNCnGY)i0T~rl~7k(jin0&1CpsL1X zOWi`d+Vdi%9n-H$k*bC$luAjV)X{iBR=J%M0+FeU9-q_|icLB!**a{ir8br6BlVvYK%_8ZP`88$)^Y`?IWN;C#hNG96!vkT#O`Rrm1m=t6 zLjpL}5%a$*vXm}|J{Hx%5#3gEf{)(Y{7DKjk9*2AdzXJKJw}&l0y(dMapfRM_ z+d(~tC!mOLq#?dBok^$!G={`CoQQAqVPJF}{yj#QyzM7Li*O6dEz_3ve}Onh8Zp4y zhr~IO5$A9r&f(lVYH0=m*K-wC=IgkexRM8ci|*rZxpIW-@J>rPt1V#e9C9*a53k`ql7RPkXtgxr z>N5V&+8T<$k!nC&P|B>k0PjJtspD8Fy`4y$<%XkSo(F9FxOs9nk?8$UDoU*wzeh7M z5JMML?9XaGpd}QWPf7&CdmNQ21nA8|#0|~w(bCTP@wGiNkc*_*2xhtgr1~6@-xovB zN-+|);}WaR&OnZYe@-V-yZ~CZJ>pP0kMHv(7b?BOTZoix><_HLH@NdMOHUtCcT5*` z0eB|tYgsxMQ;kq}OpgpDI)$g&5MY+QP8MQt{9Q&Tv_&B;KEwuTnY-0rg??MAENyYJ zRO5-&By~hIcd?&l_N&n(tA72OGDh>UUNxF<1-1LSy=P}jL{ zGX!s!K0x)&-+Ts=L8-YqpnCL;P=ir1-t#7gIVXtnpV6ESc_7}BY%eyy4_`!?wou1q zhVTXvK?xR$^iXn9nfVmq!c~)+{0`jJ;$O)$(4FX_7RhuTB#Z+8xJwG`4p#S=|4ExV zXFLX|)+QlzBR7wwXvqbd9n^Tg1EAcwf2{g-0H-_mj}doSeJ;q`p)*jEKKbdtWw!4X zm9o8}cD7fv%ntSO2@% zJ#^=Hdp~Gx?`o58H|(Wg$%kdGXA-gY;px~iA)_ZxS-B1#Pzm$u@a2nD5eWvqOLNSWBUi+sn}_4n z%5;sy`$MM;z`cT5J?NF>KUmdxm4EPCTSiCo>GActLuW?hau6uH z+WhH-a5#diMm21}H33VPF9Wg50u!dlLLJ*3CvTa*;c*KYnox%S@@H3i7l?P7|MDe0 zO{p0VClP9MpGS40t931zh*l|*kjOc*BA;Bvj;7t`Z=W?kr;h>}|0weSvQ1qPH@QspNX*Q&0DnG^6C~?!PZ0-1(4<7Lr+;|CEou z1(WENFbdF}SiwE(XzXAUQj@(qPG-CGmD$eF1%GxgY1O=c{BgAg9uM7Xjfx}Jb9nRl zygc8wFq2&H5~JG+apvX-EQ2G{WqzAXRJwrD-VDW~20;Ot?a{RqO36~gq>VOr5ZC-M zKM*58zT`v#dTc&FAfxP8L`z1q{xd~HEbopJDyGylde*%+x)_VuFH5l#li3cR2%UrZ z0q>K663o^d$1a7kBJ-FsB!lUU{g|lO?GpMcKch4#v57(|PSNd)Lhsc(R%6S=KbYkD zZmq0_DQ(v+nUAHI+qNhBE~2->-Gxs4=PBb|dP03%?;U(%)I!8L#TJcAY)iBTsN=HU z=Lq81+Uy+$9sk?P%hmetr14$M(5Ct>&Ja^Dv$TBQ z#RWU|`!0HSB>FC{-SO|fi`6@SQXk(dXuz`iq+Z!)rD~(d$Mttrj7K!Db-2mF)pj3I zjKjUt`KH9Iaf0=^p6T2%8lwKMSmWiHFPF~`MfHZCapbAXk8j|5y=$9N4eyb#_qZ>_ zWtm5IrH8m?riac6Jr`+xwb9ipD68DXN9KW&eR>KSTE=@b|ugBg9bLwjDz$SvyD7k6N{? z_t!u|X>F&`+}h<#oM&=LGL;6*yDoEnyX*aL!l#r?DO(s^=t7QGq1|7r$Vdd=8nX(`pX93uk)en+fSbH zx5so29A+lkxMD1pyW+{_Jv0+Z^v1wpX_NL?jX{9q|02F!lK=DM|0}K|3++-AAh(d; zoW^R7+IIc=b$i76z2cxkhI4vO!<%YM_N;O=3BoRFf@Q{zWIw`8ay;yP6A!r~6SK~S z69HMy*vDLcFTVb*nBSDErsn(GlRd9(KBG8gX-57a*IKzAm_!tiTffM{@0rf-Yg}x3 z&(XhH3ZPNj`Wl^Q}tqS6XKQIQ=^{trQ6O! zl19=hwK+a_uT+;9p;!&8Y{a8JK~C%&KpzZ^L-Rl_WNx(^l)9jAR556D{K5vEZ}Q>iY%G3H2NWX0cHXLCYfziQ zVd9z`MW!jpv2hg8Z$=PWWm14cK?`mpI3JpqBeG)JEjhM$UgJH7wHt@|QNvY{c}O~< z+N32)q#Cf;)_u^2mp0Z&d6-HMoSa;k)_QcSXwU4+)voasejLNKA&`0iy@bbNFsX3R z(SIaWi%l9pUdyRMouR~isam{pr<#L^Z@|ZTDa>Iy{R-ZStYGY_$nL^{j_cv%AgTlt z`_vgMn|Y*;#$&-lA5;@szZ&POIHSUI9&#@aJ*PCs8Ms``G9wx*W9USc=~`q@5R~R9 z{{mvK$uY(!pA&rDgWfBTS(f%>Av z7`3r-KrA-PhDy>OFE-b5)GhBVVP12-5p4?dX3Q9&b0A6;M&BOsGEO23a@gVdxM}Hg zLZ9<|)D&yHXnzp~&2=pi2F*48E?Bu%4slV>SU7MhqYS0au~#zdxDd zf1H$s8DXe#4pRp`5wU-6-74s;_0a=n;kQ*GD!J}p8}0PF0gxn8svj06%f=Ln;Z|Oc z_9+7VfbV4PUn~gC^?mBmJibpSX(`-wo=1>A6+wer^As_CvIMvy0or@wr=R0yUoBCE z>xZLRW^_oMy5en|=FXI^kU^HKkIELnpI^LJm@ z`nopO^~@(7Z#$D-%qmPqHflcX>Nb#d`HD3T&u@KQM`y#b&8hHxD4i9(m%hbRrcJkT z194QSVZ2rAEZ4J~R9=RpoOCz~+pZ}X3aG%U%!#a$WNKc6_CyV{pbH0O11ZxL_1&-j#S&ki9NKkM|((pxH z{`ZhHAKbmju`gBU`drw3OX=nH0|O{5*Jtp|ij%W<0{3Z-7HR!d|PV1ttj39S~xHI4;=47bpS+ZkB=~ z7Q6suLxTJJTcrBs+)!g)dW)q7Yz{4E+sF7svH8>s>{XaWpCeF4pHvS9@kV&uY(6ZU zkB_;MW5qcM_zm!;+3CM&9^mnp6>Q-wdd&9QF@VCA!)WJ#Hlpp_HN(Y9PL$uJF)D@+g##GRoKdkmT9Tp z!E8nP?<~Lvp|>yU7THt(N!n9t{ykaKBeZ%D)&bh~G}xQ!=!$peOGin|PK!?4uKe(> zcp+KO(sHEaB2^d66_=WCJsS>ZTqL1=fZh(Jr0D!G_G$V4PIM?}1Z377ygV~sIEsLP^VULP)ky84Qz3r@K9^&;~>sD!6WxboT( zA-fJ1F^}(%C{Q_XLy(Dc@@_UE;o~=t$>QEbNRXGztw>aslf7ysESJY3@=OwTuY}1; z`6G~axftlOBzh6zXtaRG7b}&N2-6pP{e`L6#-xZh=^l}yUC62p7G8ofDwim?(h#-J z4r2OPX_!z^v`g-NgHl72hP6w8E+v;j*Ia=|M1(1jJ`jGOIxM6rxx%gBbI28LsGWOO zFb12fTZ9E&t#Y6<=Dfjo?JWc;gB5!vwzj=?yya2rl=t54c!qxyL3j50_~Q1hbI{PO zG`l2CO6{wb$KF;x_s9>m&lWTD+5~B1eX?9i3FJh<$qJ0`2lLafweA6PG$#5A$GSr| zgGSH6hKBCUC>7Fk)rX4D;A&V^bxADR9hjxa#~YH|AWc5BU5~=(cyWq z2_kVW0jYsRZ1iJ03(No8MZoJ0mKKms<~6xq6U=u&Yi0Sc2qJ#=aK2N#!&}6<`TzQy zzY~7}GT*iQMXm=9DFPiJAxzY*j*i}mfmy-XcO`wq@yvLwAkJCr)Ne)2-T0cL#e1#~av%~*W~wo0*b&qIAhqM| z)TEE#AajRNlOtf)UJHENsjS~3Wp4J88>xh0Uf$N^)cyz?=$s-3)&v$L-eW%X`ysOL ztSHG3a77!(ml{0>l{ATxHJRL1({{A1%X{{Cm-i1m@AACIWAgO!yw4NjImh!yo)0c| zc|W|X+xse@+h&}=l<0!k86gM1?wYoj0dG1YocgG&W^VWRgeWzh-{@O~V(aq^)`;XP z8j2z?>KYK_9Noa$dsz*kd}^VMLs>#3e_`KYh+ zrfY#c&R_j1tkmB1RHk-eH1LcS7$17u_3UAz50g8E)WcuhXEV43D!t0KZDN3|K3`H+3*FQlziW^9{X2E-62cRw$0f%7o zsmC9eNROLuUb5z(`Jc*hO4Z-2kNO_MvDul z&H~?sIl-?vw%;i?Y{SPEi4spo({T_hzA7C5*A~2}HE{=yeJnV)6MxA21&Zw5t!D{lk1)ciSn}*(_WK zUu9TAX@^pWd^a)O4nBwPuEH~xYDC)`L@ruBq!)3OQi=##-sas;vEP&je<+a*E;0DG zpUbY-o`izL=BeWGC?3WsE4tsj&3>xhu2dw7&7F+`I#P?x&5{Nj7L-eIE`I|zR&g#7 z^Ld}JL!u0U`vcsy>!@I<`FotjrRE#F2>4H4;isihrRGtIG^8d`YTf{+$bTfe-fkvA z?Ub8K{O6`eA!9Od5t8818slq;LM+2(C6F!PJr7z?W8^0SX@4O=W%9Ai!O4fAWBHiu zIpLkbv=~TZF8_XdSfna;y8QoJIY0gEkn6iYww#CV+5!R-n#VEb7u0Vjd{eHxZ*MDg z>Z#bt(37&_^@QGyYLIF?J^Bp{6zgi5Kz#50L<)FKL=6JobKTx# zAww8m)7~y9+K$C`(3m%X??J9DDLjK|RKt75D15{9>?q{yT>sI55jcOxrR7E8+f1kG z4%x!M>dw_55AS^=*1zFQY`E~0-sAV4iw%2C?i7%WcmANo>x^xe^$q0OF}2@&(T5dT zCajrDHUtWwR)OU^-%;iuDTg1@?-E(dOf^&~p1rW=V2 zUubkq*!yV+Ewz4OPe2!T$}lxukJ!t{HCzVGos~;t<+_ul@k!k^f&9eK^)&-;T_2V! zdKgyVcuTj<7v2ftj7`l56vzj$kD^D`jQM5zO|snlp>J^R6=boZIccCG`IqjSAy|oL zD!gsV4mb(da@nc9$sNtf%<2Sx=So)TG*N_^?XPLM)8=bTR=e)w;lhsreZoaIR|6W6 z6-0X=SwDg;=fX?(nC)*wYO&u50%|@70ui0QO3-J5s1i~am;ZWZ$)DY8-M_HMfewwp z-})FRJQHBQ0Qv=YY#Zc)K+DE%eJnw-LqV?A)5I4M*9>6)j*Uv2E!ZX(3W5lCoo0#2 zQYbdR1_2K63t3rN8SxA@bCFPy6%+Kq)*UTOb4pG-PlvAdE2>bOD8k4Q6wxdUqzKu$ z*!&C<9Q=sf<~v25G`ZN^1f!$agkLFu0x&sVz+}XBE?3os^>M?QSXi(U87B49(zasr zRx+TqMptDhBE=NJed$_g{p*m=5e8!sWEgv?ex2ZZrDhiJM?}TBp!gCd`@sW44iT~v zrn+_UWIFW_E2%&eI*CP%ZR?N!9RfXKb05a+_9lPE7Y3jblpX+Ga;XxDEfKWiQZ8jX zK3>_5Uo1FaMn^$seQs^K!1lM;1jKh+|}Fr_k37#Om2%kE~oEHOjfC4Mpng%#?wLXZ+y+av1uoE7YQ5tsN8Kb zYM!&vG4I&seRg(YoBoH;&$F7x@3@ort_N~dmMV>_brv5govU>!PNOhgrFG6b=K78x zv{w4xDUPj(8!4OJXjM@gB@o3udiynQ97Y~uP!;I8ckVRO(Mwu}` zUPF~c$y4lp3(J_3UZm8K_RF<#r6MtQJc3K8xh9smVFQYO_IIku#ov4c-6)Z)+9ID= z{_hp8b)XrMvk_*#jS4p;Y$ShV#t3-(F=Q|V)MVkx&WNIpwpa=Lc+=<{F{RZ>3=#N| zYW~g&!khvo(TmM}R#3p(!+C!clqi_nx)(mUusrTh;OL3h@V zGH+mD%Z&u%tXE9{HzF-MAU7-Qd#q!I;)A=f>1W;Ty1;lThB$<%5S0eC}$GHvsBF6A~9X9vuP@Hkzn%v zz!L++~Wq2=@+r8)I3bkG7 zxgyOE@23ZW+HuKPgJPs$^z?y_mU5QHGX9_}mrG`We1YKfJ`1iY9(UkD1Iq*Hy;xNX z%XSc<5;fIeIP1*Bjx%-`F+ofB+c;swp!}VREdXtiIy6u9(L8SW!jO$Iio2H`z8iOj zu4<7BopNEjTpjToyb z?4>0!U+v@QC#VB>~Ob?d9$wR*$-?k!bK?wY#w>#Nt$+%xi@aA zZjgeiRo>#D7%oxTsIOnwaFaG1uDoqERm525);5x+VVz2-0`!KujSb}6q&4bmHJh!j zL94#6y3w|2qqrJvHG0EZ&5B~HsjFVUj=0qgTAj8HUF7Pu+Qvp`8tXS!kyP@iYq$^p zjdcY zd(^F*wxVT4wrqax#J{MdxIpTXEe<>)85N1&{ADFe7cMC9F8CTYIhQQUTUeRDl)X9P zE{?ptOIHs0_sYdIO5Ua9EN>}S`4cYPS5&#cmK||O-$%May402({g5#znO`aWK(|#Elh(W3 zY71{w_M(;6_maqaQKaolB5%S~Ji@K`kv<_jnqIYC!li7|Ti?;Qs_WuNovksqs%?$0 z<+jG%au-M9mPXUq7B5}6c!hVt%1UOEY8noSn@3UBdpO^`%He$TDu?sUqZh2WR=&iu z<*iteS6;a+U(FLQ*)LnXbftHNEn5ZLX`Lk1rOT`Yi^(;c9~qm)`S?-@-{KH2HMis~;~;M}_Po^?^S0*D;-PsWaU#R2=4QmL z#vtmJIMKcm_kyCz{FTcV+p-rF^CdwH*3g`q*mJ7?^Jn_%=#voWJwb1niiSV=B%4wTE<7W9* z`#~fOw-vUX%b8aeEMEGxm5U2iKMsA+k7dOx^HzH4N6R6VT3~tMryQ!D`CjSXMe~7r zYLCdi!sAZc@F#hV_>jcIpRB(TA6JHzjtrCT9+8gqF`Q1iT;_dbiIt9U=MT9n8NFy6 z>4h2e0c&C?&9EDo6Y-ZcLvGS!kOmkKNs~Y1mi%rd47f0q->^G>$Y1h{`b(OxkVe4} z>c5=_H=}E_O~bux1%7yn$22?^EnB$^Z(FuFXmDgmWFKL;Wd5^mC0seIZ?18%zVEQU zzZ(7is`bs~L00%2>w9+ed$#qR8U4<*zSX>x{F#^XQu9(dtZy|h<(qk_z^J5G4*6DY z87c*TW!4BB7U(Z;S#z?oH}b6Tt}I!xl(d#ZrH>APOuVRD5Rr&mZ7319TFVi) zWF3t|Z6fZ-{8e!x`;z6h_9e?*Y^9@ik$CWz)Z9>LP86P3=9dh?b^*FW{w%T~H#Hh^ zQ==g_HJVADi$JcVkxO{9ov~N*O<_xTXY&@kN7~I>mae>28+ohtNx1mmNL;}qBrb0i zm$!<`Tg8=diJL=Q**C;f-r_lfhqLcf?=fh|2fE zWlL4r+2T;6XR|fv8#Xmo-nV|^nyU3p?&_^;tE<<6ix=jts$Ah+RP3JN-nLP{Y5jV4 z0|A1f>rK_}4I3M)LE^Q#4RuXbf`K>vt$b{Y1!HfhTJNq_2M?`!!zOnv$C0MB92VRS z8#QuMLa5})_FK}4EarMl26;lnwq9+jX>O+ zsv0*;t*e~67I$N{rZ+ZNZp+_ho7!Z3-!!$xt^RMquZD-jlcvtRZPx9xnkJD}&MsDZ zt1gmzqzWp7#f635g^LAJ11mPI-MFsWJ!xvw_Nh&iRKqq`t*_%$!*NTiYP_#nQ)i_J z?&MxsE{YG#y#~%cRa&)s{l<-(-0P|}&MzF(D0`lJ?ZyVJs;;5Qtv57QSFNqBTEl@# zicxi&rwXZJh$LR)#`W$^Ra$M6+p4j<%1!yYM70%GH8#~s#Emt0(@l|}=EOvsblxqa zRJX~S7Tav{NpGuVW#U zqfW98uzx$El;5N=lm2#86;0yH#Hnl0zeEySG%Cq#lh!aD@BiE7sAv-ZzKz<(za8Bs z(NzBHs%xtB^>L+EUf@rP@I>RYud6I&E$3m#7sq1QnHbu$I3}0;1U_X|;6? z_X8=vM5TtJN?$Q;zf2hb=yd?$H4t#1ZrE&muiaR^wXTT)6%VqpEm3e2kTeOv0+?Z4 z(2`oWEC>r0Snyxc=hrnhX+&GQzN%4yb`_zqv1*%}g>NNe1=f9w-os;^zG;2kT7g?C z=Q`O8+;#UgutBV|<*8&67qS!J4?ps)9?n-X*r>qQhAIX@%3ryS?SO4Xc?f07N;IM} zQ=4W|m0R3RwL(sEud!%L%*z^TBCV#zvIkgYDjL$Q76pmzZBtc4lT;B1DETawno5#} z>MhcOnYR4J-X#koPF<; z*8cM)_5#}~g~Sw9mNIM+>X;&eMQB{^`>Gov9md{f?Jac;){c_tmT3iimc1^TPyUz4 zXC>R`jK*rUlQXWhRhz5bYZ^D+57CazzLB0ujL^#}8+0IT6O^=Sw>ENQY%8jpSeep~ zYoRa#Vw+^(oA?5(RyAnS7e$QP26nPWYbdsFcUMV1wbkw>{6~aeF=ErEeJ&b%qt(xv zo5fAeTdM1T?{ynCRIjU(sV6m)@?@_R8e|QFNtGgHvuFRApG+)p359N0dmR&I13Rj0 zE4KNJ@`maSYpU6?$$F-HB}2^wUdzH6nnJ{@-l{cLNl6=^Ge&5p8lHM%wJn-i(?-34 zZQQo0v3f0AcXcIhsgI(Qj;Lgz>f+ie2(on}EB_b#r2#B$@Co`hN(Q}Rgd~PkP4b)J zp3YJmxnORl8pCypRDQwws-~u|Sp8AFscH+$WRpxjmaba(v?KyPfDTPfwkC-~K8;lk z>o#uK%$yJ$%R(w-BB%vP;Tv^rldj3^SYLPl`fY;av1%jJnDl=;9Wbk=hK0z+O8i@R z{!&{BvPt8tI)UGUSyl~qk<5{Km6aP*BP%OwDg_6W^^?ESyL`a{z!3{d(lqItHf?NV zf^V*Flw~itgn%QP0PckdC=1X)eSVM~1E?Gr7jrAJ=5~|;Z>h$?|f#Eo2_sw%pqyJ_``2m04 z4zhF?>TGh%!6sn8&Q2%GTFO>iLt_NmH&)kFa}ZgpV9TH9bE9nrQ#-mqsH5HxnKY3` z+X||;-RNFfTczF9L<8i+aHD%f8i1wMc+l1RrI8Y&iG%hG4tyCI|IhOtk>)Svokt_@ zYuG>+$uf*WYo;q>k-?#o`ZejSwXMU&(=mYhCSewhSch~U8%G`c#Y}ez12QA$HaD|` zZj{7Km<_~k(yFW0L94k<+VfZPZLoHYbydLi&*e+vzm%`cpTC~(U#ah3$(N@5jehtm z_5CaTFrx42OZtAD!k4OK(^I|UP=n&Rr6Br{0Dl1IIbZ>~P zm?{dBosnSqyK7zD=FG~aF77PvL!wsU+L`2h zuj23?0jF=`oYM3+lG!AV)a)J}508u`jaI}Fb?%_w743#FZ%qyJ7H%;(ikw^pI^k_A zsFLoz&wZ2UCYzwT;s+|IsdEzUq4Uz`=I;X8Ack_1ZEl5jC)_t8 zvg|8O?lo0w@81F}f`}r)(huqk%f`5H=)l9+RSPw0ct5s$RO{4m&m*0*+d4N|!xeF} zDMyMfEGb?oTM1J&!*;h3}8x0~HtYC&zMTjYnEWy|77rf`2?*qXX; zeM@lqA((9|*|bhj@)7%~V7qLw_f^|ePVO(Al@)*btefwmA8(qd@28C!XnMF)zy6Y!imeW`|@=qGWnxlLV4?;UZ}Q8*<0(>T>dt0IiCz6 zh`@P^s3-Cm_c0bS%$6L*Uyr9|qKf#}<4FNR)Uonh1WjdlO$;66)iGPvm^F7TC?&@R z3+ilQA*k)bwuX7EjuVj91V$A_&sR|ZCDWdbW%+{PCMrk`qG^%em;$=2Y-{@(>W4KO z*9qNE*2x;ZZaq~VKG~`Mv*^Y+ZGdz^*uYpf)UDmPUeH3w#_WYaE`{-`?UcT6+(@h| z&xeWtF|~=)h?*8Q1)oP0_4#m%c2UlUS3w+e{{GsBBYKrwINpuCLCAZQvh%-k>|!^}7@yePVZQqiiZMM*`4g-S)K zrA1{q6&7xkl(w2#QEJhuEtNfKVm{yBbaark-5r`?-PGzUIof2@ z&;^&llu)Pe>U)Hq54i;SDCE`A+8}|sVL1b6Lcd1ZHW{|=kO-Z&WCWNRxEY2=7E0>I zRA!38U@gUOcG2@GoamgZus@>i8X(Uiua_!lN&m6c&?G711y{UN@Q(vlehDCbsz`%JS@UvY-vp%5N@B z^|U4l8Q#MkVvSpu?LN)sXj^+1{YW0@Z=?Y9e3I$ZJPlYk=4b-iSVvc*GjiFvwNLd` zh8-#&AI-YyqS}{T!Y)T#f3D(B>Jq})XdBSsw4(xQ>}<5D)6hyfW|?PDp)y2NwW=L1 zl`%r{Z(n0{T#2%)cAZ z;ZkoJIh#o|EmPHEmWc>SD9rf{iQKU0IS$uz_?7V><;=LZo|b4F*_+3}(gW z(>g4!d5TUx5~A5zrb{@Y?0bCq3Nvxm$&wG z>F~nl2mUhJfS1_%OUy>M;YNRQ%g&YgoqM0XXntkgoCWjaJd9=t2zge`G84b_-OO6% zVS^FH!LmenZOyD%RcfoA=Ug~TzF9Ki&tFirs76?BTx>+#sxEfsFpXClKRKgLF`miO zBJ;__3h{a51K;1t8tG`A&P%azevum6B4x=uF9+J;+1&bZHgF1_7&{Hg?|0gsIzInCl0v3sP2~ztD0bZWUE#txm|KyKskl z;ixWAzVl(cvTf}>E1F#g#ODy2zcAcxV(I9F_$iObw$BdB!eRVRUL05!e;|L-N!n|3 z?@8i;63rW1rE^;2u#aZjq#-GBN1WMkw(nA`ZfRhsIyxIxtZGR7I*Dvsm=p6aOfW0R z6a)Ptg*C-xmyx)c<~eW*c#QTHE3^P`-kA6rCaCS$cT{P&9?(spo$NUa&aTzi5$2w2 zb>Avo&zyOPmFKkK=h-ENwQIhuZ{$=n`)N}59x5-jKBtBu{XeLvilkPPm5 z0FE%z?MU*gI|WDDN#|0JbVI5SvdYmp2{x;RnjQ0$t;KUZrutxK4I@6R- zbG-ThYfCZ0N@wS~;>@^K4A1O5k#(K%u=EU(WAuy_N@`|1KHBjx>`$JLMkj6eLKb@d z`h0&M1i{D-MKC=u9fQk-F(?T4>;dbjgnMm1W?>*&4AM*D1)7kRB|%@JGnWvj-~O&K zpevH|orss9EwOV+{N%hIr$btR#T_g{GK+Hq#r1n+vSu0b0&W6|vbOdKNi%c5q>gu7 z$pU;FQaE>F>|8;nsL8UH6(&09dF9HpaF?#>TFr-PButVXW4x7FX3wPZt9asZdA{v@ZF`GA;5*01hhyFf&a_H5Tj6or=Ep_!VZ-4=$sb=?H*RGQDr zb4n`gGZxEC#YA5%-Pl}Epkpsl<&|bI73gYTl?@`>xYJI9%F!;gWoar3H6E2B;8v+d z)8>aXO(c zUY$i`p&|UeU%w6K_aGX@{Jo8 ztX|j`{K6^D!W0w?vDTb0rZ&nP%6G<8Whb{bXlT2U%w;dQPJ4w+Rl2n~o4!1B4n6L* zKh8`O8M?7C9O{g>KGk4gAPa9O2|Cl5?KCaRI5bkNr?I*?pD>Q?DEc*l_HH~Zo^uqyT>+!Z7FGOkmaNHZaax^6r{YDY3YSz3*{pznmNpN zMQbC~awF3wojSXIRO4-Jbc3(lL{>&>Xf+^UUvVa?_F;}<+=kgjTS=?qMiz_J(6&rC z3}1#_((;z>Xr8!vkk^sRbxN1ln__2ZTb_((_x02+C-y0ZY(g{!j0_weT2@VEj7KzO zov>tcSwd1yrIn>))v9dfJS|=<4L$Gxw$g@3em2!s=^%Mxst>s44E! zMh+i2l+v=KOoLgn+dtbe3F4ea1kr&(Zq}Wrm~uRy60)nTsyX86%DA>UO-_kB;DmjI zF}K@{9BojuHCd{l8j9Y!GPmj(9-Jl7k9WU5v|)mLB61Qrh|kH{C9o*jc-T_P$O_Dw z4MVPLZTYcg`}Hd~9zG)i7##%%I&E2=9+eoanurCxxN|0Gh|o07NpC;Rtx62|`)&HZ-R6}Zh+eq`aPRGw`Wj5y#8S)isr!(Hph(p!PL8F8k!!q}VTABoDXPgF=G38s9r)nAN*TpOr z(4Mx%21v131v1rj+!qdxM5MOihP9AA&F!M;S+b{hn?@@b_-QE2ukQOrSWCbOg<(DReTQ6;gZDysUKm5KLow924Whv~WBdWN6 zkSWideKVy^Kj+s!H{G4AN><&P*WE1YtO+`(^?QOw4-KbU%WiKLtcoz6K#?AS#-17r z!jytA=!+&7y^D2K>l^ViG>_9ot(9a ze@r(ia$bQ_UgKWg)7=iI&mLIgqcKSdZy?+f+UScOGBxE3=at(36EoRvHl)0g9eK)hyD9zFY01{KbisbHuZeWBZpfXH zLE)KRL}+brbX^dMBQ!g$r29i1yENuzMMzy_rc2Lr+L*ZiksDow*XWqT*U+}s`3vln z+>6;*frts9@vLF)SVR-s_lK-YopuJo_kA@Urj-pA0k|`(aX8oA66nfQI%{cl`%3g9 zDLaxh|n=MvsnSF#qn1vZ7#o%tgsGFm5^o@_lJWD+Q^!Qlr(UBcRHHi ze{KytTzt)x!uZf-96i?tQ`+>azn#j(3DP#Z!ypBSZ5NQ2BtK2Rz7h}By)I4>m0=&d$gdY`gv@=S1ZjK^sfY5@h^LUPNR%jU zOMnMT*Afaw_Q70i zGh@}VFF}nxY?YJ4+5g1+!2ZGiV5J#vq7jXFzGboToyZkoM`fjz^a2-UD!fZ%X~C9d zyN4I|P0DxLlr))BUdUv}2{oNm!RZJJm>!>%-++xv6~BqWbbC9xa5L7_wjbT{bi6UA z155%}5$fo;N+*UlrABUz?T9pXG0`!X@pT=}3c6d+-Do>aTt2FGSF*Y>K|iK?i$!(E z-_%+x8eM5ZPGCfGwJOe>&*ctyFSIc|jc#`PMmb);Wi_DL=WC2EXRFW-beWGfwSb?pM7zHkdjL*Q8I>nBdb7h5K*Vwa4nh-2L#8^1N!H)_|8LS2N zP~xg2MRW9@F|eOu;>R{IvoFQoCH%(Hj_DX8I8C2anllLB}#Qx zkcyKr=~^czrMD6qOzPqK%xWU7FhQTb*RI*IG>{JWGEe{;w;F4-Oie^9AY+$_Brl3} zie(Nu$+2a5iEQN{I&Xyu3mvi8m%yuQV3-kP1A*r(m@~q1>7*6YrC|#ty1GF3TU%kr zBH{FaExm=Ud*)$PWwM28*7fk&FE34PjnXf z)775$bhTTm{U>p!+MZra-0SMb{$5%OjYwe9LgtP^H@VXBO2!VTqP9hPmF6zcfGNDggo3kp!wu6Y_mb%s}!NqS@b zpyVPerJotmrgkkwMlobwnfJ#Rm-EyJm4jaJwiys2B5R~iMB z8{HYMBFvq80g5l~#W4TU4)L~mtb=AG7TRY^sAid~lh!!9-Rf1|+HdGWV<}P+_49cS zTalDo(WwY}axBTDJJ;z#IEkT=ZOjlirC7{W0QHbQUq9<-%V|{>n{TR|Hcnj@rhMGf z8b=e^&Af&iUT6;BxVc){Abq)ADb|*gN+70^5PPX95zYsw7qzndwb!aHI}0%n`Jvw!AfTYuZ7RT$^fK8q`RMeK3S@9crD_z@ZWOLQ>%v z63X_wk(&sp6jOd6l#oX?#)7#qrR_OAsd0(@m;zBKdg!pQVZ~u4O6-oJ%ogg^sE=rz z&NkeYLH&-PjP<<6NSsM}KFakICP!c))_C2jt(bN&$Re4~DydxEPcKe#vjrPY%9}m8 zRHo9&d6P;x(Z!!Q(fgBJ_{0>q^I_th>Er9uL`pZs`;*O|=<$gmzfu=(aw(_BoEtCe z>cGgMWNcSvIwvFAfB$->-$50{>B`I!gGaJMCOex8Lnl?IZc0v?K3*xN& z2`+S>``$qGB^=BVlCfvDWa<{wmCwz{B(5l7vS82S<9N*Xq%bmIYa=q zdb{;noVV0xcIJO<(Xq-p(f>LdP~BuT>Xs&~YJ9oWH78SL##sl+MnZK0v(qN6kC@!I z&_GC|sqJ?;_*IdMYd890NF8h!!H;JN5RW?m&SE(Vhc`!ltEgwxx<8s4d78u#4 zBri@HY=<0L^@5OO$<;Th%}5w?E_<{Tl{YnIPSz)6ylLdg+>UEGSwx@%*v943zSBSK zw{RD>>8BZc!5wXQ#5Ij8xV{bA#AyO^y@`9y(1;YJ>e_P%;Fld7rp)UL>+cO zyj-4?{FhD=n-aD^GjYrcgVm=PS}AX{Yt@IXjtFs)S;vuY>KnrmB?8 z#y(8_=WXtw2D+H$9Ig#%zt=eh4?S#>VA#=MXuQ28*IXoqP)bUVet(vodPI-jG`BxJ zM(Kha-Y+Qzpk|TVKXp{D&IKSq9VE$^$bVCWYqR2!AqP_^$)40C0lRd$bSbNqePuVt z%Vr>IO;ek6c6QU`zBO>VzpJWywDf7X_p9fHh&lcP0JcQw{MyEQaeHTLQ_+BUj#+T> z5?wf8yw0q%ZrX-Fxceyw3$6=Jb5%@`_sjrO)t74m*Sll z!&B&^TvtdlXL)o_SB>?ht~3aG@W(}3lkL08SNLr+N|LBNJ_E)Vz4#88hXxmb!4teKfa6=U)KCZNX(8T^hllliu z?jJOzf6y8IgU;+9be09F54m&U_7yie^h@USlA@x5&YUeC!J98J>gXw0SNO7sSn*bI zvV2PjO7JT)oR2B3qzW>Vj3}unDBPt>MI>gCvG+c`v#^xZYrIKbxyEn@eJyL!a@%|I zqBM&q&yP}6a(afQv7b-r%3!8?784+ShTllnCKDpWv34K<>4h{c_5ep~*G2^rv}~OW z8N_bTB6cwChsE71Q1sw0)0h1w$e>o?lLJeVug$VMV*_CRTRZOV%mBFKE2;kgn0=Rr zl#Aj|mE>{!sfa?|-M1F<;;!_^Qw7oT;+UOLK?K^F7sqcvg|YJDco|nm=JUJ`tbqW-KVhm%B{1=}RKIscRkJ^NZCD2Key65;&1KKQDh6V%th+b5E?36XNrUM7X?iHQAhS?y?E-1BcAF z7g>Yyu`v4is)zi#<;Tg#V)5D#U&oLpr@}2vSEwq=$79uHoNp>F!*jSnhVDEqW3r)R zxbCd>wy=d4a{)_($R{;SVdN}H{T;b3_l>jmMvi*2P0Wwf+D2l4yRO04M1o}wd71$a z{Gpp0bvZ6k7Apd-P>9F-`5uT^$#2lO#%OSE~4akWNTa18H~p*;!6o zy(i|S(Pk*&*wv+Ukk(Mw*>It&GBY&6)UtP=SVMH|@>{H>)iD&Sml^0$H)lCV<~*Ct z8+%ety&Yso^b6A@4QBKgFETSy3(t2HB??tSqAOgx3&ILzoNPN*rW#CeQQ=S)+$r~pjoz~SogUo z2-R$S7TSGMJZmJ*?xG%$rxz)KtO)znXc-i?}MzZo>DZ=Cd1w=LJ~T=`&NcSsm`X4^EZ$ ztiXCANzUov;FRAvTvwN0-qG12eq~-mr+q|pc6M23565=G&S_|~N6O*8+3JLRl_z$X zE0mA&(7jOQq4Wu9l_sfeV6kfg;5WOo#h&V#F-Z1di?dA}H@TNOKC+^xd7OtUMJ?yl z=A)G(Ei~4X5I-TF;s{R~N;;B;RV5u}>`EE>Yh*P)El=ujjjNi9(P(HKxE0Yp{~Z*0_gy)prX0WbrI*ewpVL*-*{<`+_RiTD zbFz@vz;Cg>6XD!h3+K<8JK6NMM<>bAy8J#W8FqAX^w3emXU&>*lzwNFCN;$6;`!8? zC9fKhoK;%7xaL*7XGSP^M16BTKQ`o!wfsg9BY9OaVg%j@{^^zP3bt`Z*vdaM+e*gi z!wc@w+B0lqMe-_~`XVW+NQUF|{6qX7l2`UG&f%&g_it$O%KnA)nIk07Z~QY!^M5r34B3$W8}bT&VFcx0H6-_M=#W?T zFQo5J(f`qqmzx19>3IHy67`mQ9+kYp2K#7*@n2bMbFoGxxo7t@gw@%t{|(1hBt1Cx z6Sft07d9F88nzsEFXFI|v7NE2vAMCwvDLBTvGKA0u??~tYE$G_ccJ*G&RKk_%x@BW z3xhw*fX!iX6Pf_FdvwTk)rxDIk$i1X@|QV_+hR5?y>ly2pX&2}=7GHDE~u?_Z+3uH z%hxEPSMHb3E9X;-Cax*M!ZS-Jz3ted2^nL|uqXOY=(wWswd-R#9&)yhq7zRT;@#bKFv-~NkRRiYp0=JYbs#rcivMrYPO0_b zfHaY9W7OL1^SrbHIxDq4958PBJ-sldrIR$Krh6CfZl^s)dT8T0fpBA(n;Pf0SnDeJ zf^O)Cxh;Go#PQA2t%P8c6HY2BVsTi30&-f0c|HT7Kril|jlc2Fw@t;bJv^l%`58_> zy`OMKMe=4`c(0pTku1T5_tVQOl44wV|7%4>@;4lxkoD`)Vm=GozNQw7O(vnj7x76< zccq^{oDybdIT?V>#dNY<8k1~Idq)p4A7Sp@Ws}TvUv;QxUt6A_Kj@r1$(Fff;wk6N zFQ1>_&zX-3)qK>V__Y=ux4#@=b~!e3W`@|wnxxB#W_ld{c8j+qQ#ea$XAg3Wvp4oV zcWPIWj@s;x;@Gh{`hYr!GIXq8@46b6XU$s0S?Hsg(ZQ&WI(3w*1A-#dv$EStNw^6m zL`8n>LZwbpAL~~xOY9yF!?3lozsSSV=||CNRR(KN(P0|IYW7MSL>7l_5JcO*LDV^X zqb04mOkK3pMXeLP{rX)M$!~D_>3!nzisTHOp1+U(0M0fui}4@-uk0uFH!rJ1-3RB3(DNt_W`~3Auwua73wkW37T#RN=51`4JHgs;~ zyoQcivsI*??;W<7D^itMq}H|1lWAcE$9u`jq3Ls7dx(%skJEBC^@ws;4_pX~5v|)v zvM$t^vh|m*lH}`(>v~TylgmSl^LjArPLkXCDou`ET`;W9u5;5Fs=ceZa;S8FODqI_ zX6Qm}VKfj)^7>(zEx0~FQ7T2qomOUdlkb@1U3#}s*D-JyKpvZq5;DorLRN4J$g3$03R z`du46>U~IiD}NnTBlJa~u5NYo7wFyjA(ZlG+lwnvBwZtH!K`_De)G^d+Bd}RS^Mb; zz7{<%an!9UlqU-nUqfDrnN=9hslIDdK!3#-aXaS85=qWxn_D4>T@M{nEGs1ThoH&s$-HIXLGU^As|Vn zm}a`6Gn>wwGx9^|jiX)ql;u0$+v8K=Bfld(aHI$RgFR5?c|Ij;IZ&S5a&|?MU09Lk z@|xcrerBQfPR3tRk&MBKPgJ5u>dr}>@C?{!+%SRs?m#6HT);;~c&4;EkyD(2kBD%E zhd2RGB0Qv(FZ|H@isV_`;mSV z)`vUlFy#y172zR$$Y1y!5&jVUFBjuGB79Ftbs`tz+ai1?{VNyntzerYT;ai~e}!Kg z;f3`RzA?fJ>nD7DgcsINcz1*s)~^GsHNr#PLj9Y;ng+q^!7dsEUjkM)2wnqLg&X3> zPxUXGlA}Qn2wJ5A;K|Esp9x2JFN^@Z-TodR*y3{whQ1 zhl3ruEZ0AU__JV74}w1d_Shi!LtuLc!FPk*GYEbc*v>)l?Oe-GFl5nfon@a+*E(#lu)!nZ_tVfn(ZExKDpC2zFo){4ubH2EoOD?FA3>V>ja(oZ2tE zuK*YADNexeitvC1`aB5lx)VIeZz1oHUikJ1A1M9S2v<7A3Hd)p`ppG+C`0uVer<#o z<}Z9>gcs(&9;_P|=v%nxCzRg`))e6i7p{0J|01xu2-o@$$`C#mtf~MHbrdf7Vk&sx z4Ya$pwBS2q63vLyeYy1eFR+Ne-XIo zN57Ch)L(dAgsXjOLs)-=&y8^PukgSh2rr9p(Xa5p9|)fk;eod0tNy~rMYz^Kr4Rgr z@JxgY3ofJ|?QxC2+ASBxU-N4uc;Wnt`)7ERzrvM&+&_o9bNv_axPP7<0FV3UzyNsM zKaUN7$NjT!06gxWJp%bg7RuNDwm-rP`(N_$LxbQ- zzbC>A^H=(N2EirY-xc91KRDID9(?B@xYBPgz(XBE`mKZDO20Y6l{UDL{@MZXFuvM< zH%542{|R3|2)-7q6&LScarwgQUk0yx8NB*s@EI?Im%a=>=4J5FFN2SI8GOXc;DbA^+c5wh_HW7WTfsyA zVeSO_6n;a5hy6L=(r;~y@WS-M*G70qAJ!k~pIRflFum~l2ro=8{Zd_o7p50p9pNE; zsK4|-Ga|e&z3|cqSNgDiYCS*lJA4n6{fV)|_2RbS`f&SkSe9emQi<|I&qsd$Q+uHP zAY+f)hU=4K-1p<}$KN)jGAVlwT(p3{4Zn}D{kUW(?tjAX56D)yzQ56CT=Ej{N7HV? z>V@%MhO3uP`2VzDFKyhW_T%>Bl0V`!#z)as+MD6M3|Eiq#cji7!21+7oOrl;;_esD zbHa14(rP{7J;U=hTt;gP?`1sq3IBiOmtlP?!`0(@aoccxdWRNzaoccZtb_XrOa4sT zab>uAT(8~}+Jvje^%c>s=Ly60YQEt5aQks(gw-n?w++{a+mB2BN_{~h&yc6+Y= zPe;#BM9+^!&l;ai-*NW+z4(&X*W!zB?!ebw=4Sk3@ayrpDw8b1|2zB|{E_(8_{ZXx z;lCPxD*kc!rT8b}kHdcxeg=Ome)w%V|D5DR!o=SX#f{?mj&HmAFIkK(kLQ4G<9W2l z>PR;#!V;cu_?AmoO1e!vD?g=O%X43!!ydWdoa7#!hk0x}&!Ypj=$zzuoc)eM_m=2G9+T)JM;?czD~ z%TAu3`>MmX(Vqu-4%mL4M|o@`=|*}?*&f=(INrj z@C@t6F2c6>@Kztbg#0%V*6hP?@ZrtmUq@J}55LyeCn5h62|IL`D|d#EuXXWh!uI;` z{q&dWGw!3TcZ6;A;p=_)fsarwVNE`~-sgYU7Rn`Tln-z9;aYzWeF=KQ>36{Avzhu_ zOW0H&euIy{m->$*Y=jR#(bqGfAD;Un>nKjYj1Sj3zK5_KK0NW^z0_w5VQYPOlMi1@ zcr#(uKK!5`m+gd4C2X`0pG$p4Q_d9XGlH-Kce-*P^Yz!>@(5wOeE2q>zxI?Jgl+QS zPy6^yw0A9GOMG|-@s!m9`y;lul&JN5q(`uW*A*q?Cv?epQ=tG%z8uxcMZo^}l-zbf8KaeHoe`Hv%9zdqh~;`V*Pg-;3Lyzjv6`@9RU zde_+&e-H1waQk+;@Lt+AO8M}92X5`>TzDDb`gQPLkK6Yd7rrCp&-+f?z8x-nAN5y0 zdwAa^cbf}e>%;HjeFv`j78h=rALhS{e4HiTuff-RulD{(e9iMR@6YglsrSc3_)y|y zc+dS#8dZ^LEZtakOU-xdf7>x)!)Z63bMwkOul?5NfAqs&{rev#9ye-e*QA9f-@R~i z#a}xAb=liKIQr_#zjWcJzwzMK@4WPi@O;L+9T$`<-98?6x=DH1)l|{L9~d`|*eG z`QGm8CzrgZ`L?xXBN|2z9e2vqz4t%!)A#@G_UEhL*Yc5~&%E`kf4=acbG~xfhcCJG zjWtD+ryY0ti$8np`}e-^iKo_mY{@m#zy8M0-P-!z^-s*b@1m2(51Uaxvi!s^Jahev zPygTtKR^BRfA@{%>*jp?rYpbP_LFx#JOA(BF{${xH+8)FlP`Vq-+%tgLl2yA@3h-5 z_~hE_H{JM|4gYfIQ#X(N(S&c!|3mw)dPm)ye7p4V%Es_zI-}zFg=?0b-}!HMfB%*pA9~-r+y1=Z$?-oq_P$?F z`OcVa$8Q+Ey!-5?F?B~({p_~Ce&r+Y-F4H_-(LBbfBfEzhaY^)AJ4q;=sRAwc=_tp z|1f*X`E!4|>i$ANk$;{`sq)`%Kl6Z1vG=Pi^iS{i_jIP5tz^E53ix&t^XL zrWc;S=8=zm{c|7vde1p^7oK&=>n{64(Y`l+>GTgwD}M1c&$Rx0-VZ+ejcY!C;N$mS z_m=gqYHhk`*4$6cxO)8l6Tda`&Hw(6mo9!_{VzXu``7OM>GjWj^7UNzC7vXAfb8*$UDqI#jtti)`Ak33_G$ms@59mabv#S9)9?M! z^Yzj54bk(B(enqQ=MP5Dk`Z(^sPzEoPtld6|| zg~?Zb!qldKDPN_P{~Da~Revi?{jI*1Q}{_Zh3k(t=)K&(iz@YAgHxJ?IK`{=KGzm4 z{|oR{cB>Cxg`dH7;50^^IMr3{P8QeeN=KrSb z>v-vJ$k5?N3foCjf7QCHPV&gDzjO~b-{SlYpWH7}OUkb7HGc>3zxC-yKb>)KzyCM< z%>|Wt|L#{9zud?FGVvey)Dxe2WAfyu4t(mJhtL1Yn=Qq85Y%~(zU$FUvh>kQ9-Y)b z{)3PFV*m4eAnuR2QN%03&BL|gGb#>XLAAa~lm9IYPy3=m|MA`HAZmW7`!*SPdxazBA_s;mqtq;63=gn)s{a{)9 zclTfWyWacH{@Mq3l;892m5WY&+jW2G*uTEwo}a(}7teqEg{Q9k?0J8Uw!Krw!Pu;PtQI! z`}&bR8{X5i`u^&9ODdkY?SpTde#WjZK2tmIwkI!s`+XNrzvdGkxbUTmZ#{T(rmyan zYtL%<(Tmqyc+DeYFMi+iKU?wH4?Xv%Q}6xMo{N9p+cx+9kKL5{=b;PhcaQC%y~z*u z{$Q{By)g6Aw--J9=??w(+{_D`rvGxmbvLygclDoVe&@mQ**E-p$?L!Jqd&~t_nK2S zo_)gEJMX*g_cP0G{c=m|?MHp%toJ-MbMo8oskrRPpKQMOUw=FE+b_QO!-kEoU9xEsiG4d~obEGQrtKwB({z%VRKP#R#`O*`Ae9F%z{eI337ryP* z_kOc)@uRm~b?c|@p7iVHFTVD+g`cdt;47oXkDc?xgfpissQtnZSB|~@g5lfye(~)q zUO4dGH+|x_n=V{@ whole plane +s-Add a color and alpha stack to mgfx +s-Add a current namespace global that builds the current namespace from the parent lists +s-Add the abstract Item Item_Selectable +s-Remove all ctcall, customizeable events + +*-Add ._runflags to system/item.qc - which will be used to determine visibility, etc. of items +*-Add MENU_PROCESS_KEY to Menu_ProcessEvent +*-Add MENU_PROCESS_RUNFLAG +*-Add RUNFLAG_CLIPPED, so we can select items that arent visible (but arent hidden intentionally as well -> scrollwindows) +*-Add a .userselect event (Toddd) +*-Add a multiline label item class +*-Add a real #include to the parser +*-Add a scmenu_debug_process_filter cvar (only displays information on a specific process run) +*-Add a select event instead of userselect +*-Add a system controlled destruction of items similar to the NG Menu's system +*-Add direction tokens to Menu_GetItem +*-Add layout classes +*-Add more output to the parser (perhaps also a debug mode) +*-Finish the goddamn design +*-Finish the structure debug output +*-Finish this darn #include support!! +*-Fix the _FLAG_MOUSEINAREA bug: if the flag is set and the item is hidden somehow, it wont be unset +*-Fix the init function calling the spawn function for templates, too +*-Fix this strange clipping bug (items plop out of the void instead of shifting slowly in) +*-Implement an embedded window perhaps +*-Make FLAG_DRAWONLY and FLAG_DRAWUPDATEONLY only affect the parent item +*-Merge as many of the debug functions (especially clientarea and parentarea) +*-Move as many constants as possible to constants.menu +*-Remove Item_Init - its poison to deriving classes +*-Rename .refresh to .update and change all constants, too +*-Rename Spawn_ to _Spawn perhaps?? +*-Rename link to target in the DataUser class +*-Rewrite _menu_* to use the normal stack instead of an altstring stack +*-Rewrite all controls +*-Rewrite all gfx functions to reuse the params for conversions, etc. +*-Update scmenu_debug_parser to also support tokens instead of pure floats -- 2.39.2