]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/menuqc/qc.asm
Added current T:N Code
[divverent/nexuiz.git] / TeamNexuiz / menuqc / qc.asm
1 entity self;
2 void end_sys_globals;
3 void end_sys_fields;
4 void () m_init;
5 void (float, float) m_keydown;
6 void () m_draw;
7 void () m_display;
8 void () m_toggle;
9 void () m_hide;
10 void () m_shutdown;
11 float K_TAB;
12 float K_ENTER;
13 float K_ESCAPE;
14 float K_SPACE;
15 float K_BACKSPACE;
16 float K_UPARROW;
17 float K_DOWNARROW;
18 float K_LEFTARROW;
19 float K_RIGHTARROW;
20 float K_ALT;
21 float K_CTRL;
22 float K_SHIFT;
23 float K_F1;
24 float K_F2;
25 float K_F3;
26 float K_F4;
27 float K_F5;
28 float K_F6;
29 float K_F7;
30 float K_F8;
31 float K_F9;
32 float K_F10;
33 float K_F11;
34 float K_F12;
35 float K_INS;
36 float K_DEL;
37 float K_PGDN;
38 float K_PGUP;
39 float K_HOME;
40 float K_END;
41 float K_KP_HOME;
42 float K_KP_UPARROW;
43 float K_KP_PGUP;
44 float K_KP_LEFTARROW;
45 float K_KP_5;
46 float K_KP_RIGHTARROW;
47 float K_KP_END;
48 float K_KP_DOWNARROW;
49 float K_KP_PGDN;
50 float K_KP_ENTER;
51 float K_KP_INS;
52 float K_KP_DEL;
53 float K_KP_SLASH;
54 float K_KP_MINUS;
55 float K_KP_PLUS;
56 float K_PAUSE;
57 float K_JOY1;
58 float K_JOY2;
59 float K_JOY3;
60 float K_JOY4;
61 float K_AUX1;
62 float K_AUX2;
63 float K_AUX3;
64 float K_AUX4;
65 float K_AUX5;
66 float K_AUX6;
67 float K_AUX7;
68 float K_AUX8;
69 float K_AUX9;
70 float K_AUX10;
71 float K_AUX11;
72 float K_AUX12;
73 float K_AUX13;
74 float K_AUX14;
75 float K_AUX15;
76 float K_AUX16;
77 float K_AUX17;
78 float K_AUX18;
79 float K_AUX19;
80 float K_AUX20;
81 float K_AUX21;
82 float K_AUX22;
83 float K_AUX23;
84 float K_AUX24;
85 float K_AUX25;
86 float K_AUX26;
87 float K_AUX27;
88 float K_AUX28;
89 float K_AUX29;
90 float K_AUX30;
91 float K_AUX31;
92 float K_AUX32;
93 float K_MOUSE1;
94 float K_MOUSE2;
95 float K_MOUSE3;
96 float K_MOUSE4;
97 float K_MOUSE5;
98 float K_MOUSE6;
99 float K_MOUSE7;
100 float K_MOUSE8;
101 float K_MOUSE9;
102 float K_MOUSE10;
103 float K_MWHEELDOWN;
104 float K_MWHEELUP;
105 float KEY_GAME;
106 float KEY_MENU;
107 float KEY_UNKNOWN;
108 float FILE_READ;
109 float FILE_APPEND;
110 float FILE_WRITE;
111 float TRUE;
112 float FALSE;
113 float true;
114 float false;
115 float MSG_BROADCAST;
116 float MSG_ONE;
117 float MSG_ALL;
118 float MSG_INIT;
119 float MT_MENU;
120 float MT_CLIENT;
121 float CS_DEDICATED;
122 float CS_DISCONNECTED;
123 float CS_CONNECTED;
124 float DRAWFLAG_NORMAL;
125 float DRAWFLAG_ADDITIVE;
126 float DRAWFLAG_MODULATE;
127 float DRAWFLAG_2XMODULATE;
128 float CVAR_SAVE;
129 float CVAR_NOTIFY;
130 float CVAR_READONLY;
131 float SLIST_HOSTCACHEVIEWCOUNT;
132 float SLIST_HOSTCACHETOTALCOUNT;
133 float SLIST_MASTERQUERYCOUNT;
134 float SLIST_MASTERREPLYCOUNT;
135 float SLIST_SERVERQUERYCOUNT;
136 float SLIST_SERVERREPLYCOUNT;
137 float SLIST_SORTFIELD;
138 float SLIST_SORTDESCENDING;
139 float SLIST_LEGACY_LINE1;
140 float SLIST_LEGACY_LINE2;
141 float SLIST_TEST_CONTAINS;
142 float SLIST_TEST_NOTCONTAIN;
143 float SLIST_TEST_LESSEQUAL;
144 float SLIST_TEST_LESS;
145 float SLIST_TEST_EQUAL;
146 float SLIST_TEST_GREATER;
147 float SLIST_TEST_GREATEREQUAL;
148 float SLIST_TEST_NOTEQUAL;
149 float SLIST_MASK_AND;
150 float SLIST_MASK_OR;
151 float NET_CURRENTPROTOCOL;
152 float CINE_PLAY;
153 float CINE_LOOP;
154 float CINE_PAUSE;
155 float CINE_FIRSTFRAME;
156 float CINE_RESETONWAKEUP;
157 entity null_entity;
158 float ERR_CANNOTOPEN;
159 float ERR_NOTENOUGHFILEHANDLES;
160 float ERR_INVALIDMODE;
161 float ERR_BADFILENAME;
162 float ERR_NULLSTRING;
163 float ERR_BADDRAWFLAG;
164 float ERR_BADSCALE;
165 float ERR_BADSIZE;
166 float ERR_NOTCACHED;
167 void (string) checkextension;
168 void (string) error;
169 void (string) objerror;
170 void (string) print;
171 void (string) bprint;
172 void (float, string) sprint;
173 void (string) centerprint;
174 vector (vector) normalize;
175 float (vector) vlen;
176 float (vector) vectoyaw;
177 vector (vector) vectoangles;
178 float () random;
179 void (string) cmd;
180 float (string) cvar;
181 string (string) str_cvar;
182 void (string, string) cvar_set;
183 void (string) dprint;
184 string (float) ftos;
185 float (float) fabs;
186 string (vector) vtos;
187 string (entity) etos;
188 float (string) stof;
189 entity () spawn;
190 void (entity) remove;
191 entity (entity, FIELD TYPE, string) findstring;
192 entity (entity, FIELD TYPE, float) findfloat;
193 entity (entity, FIELD TYPE, entity) findentity;
194 entity (FIELD TYPE, string) findchainstring;
195 entity (FIELD TYPE, float) findchainfloat;
196 entity (FIELD TYPE, entity) findchainentity;
197 string (string) precache_file;
198 string (string) precache_sound;
199 void () crash;
200 void () coredump;
201 void () stackdump;
202 void () traceon;
203 void () traceoff;
204 void (entity) eprint;
205 float (float) rint;
206 float (float) floor;
207 float (float) ceil;
208 entity (entity) nextent;
209 float (float) sin;
210 float (float) cos;
211 float (float) sqrt;
212 vector () randomvec;
213 float (string, string, float) registercvar;
214 float (float) min;
215 float (float) max;
216 float (float, float, float) bound;
217 float (float, float) pow;
218 void (entity, entity) copyentity;
219 float (string, float) _fopen;
220 void (float) fclose;
221 string (float) fgets;
222 void (float, string) fputs;
223 float (string) strlen;
224 string (string) strcat;
225 string (string, float, float) substring;
226 vector (string) stov;
227 string (string) strzone;
228 void (string) strunzone;
229 float (string) tokenize;
230 string (float) argv;
231 float () isserver;
232 float () clientcount;
233 float () clientstate;
234 void (float, string) clientcommand;
235 void (string) changelevel;
236 void (string) localsound;
237 vector () getmousepos;
238 float () gettime;
239 void (string) loadfromdata;
240 void (string) loadfromfile;
241 float (float, float) mod;
242 float (string, float, float) search_begin;
243 void (float) search_end;
244 float (float) search_getsize;
245 string (float, float) search_getfilename;
246 string (float) chr;
247 float (entity) etof;
248 entity (float) ftoe;
249 float (string) validstring;
250 float (string) altstr_count;
251 string (string) altstr_prepare;
252 string (string, float) altstr_get;
253 string (string, float, string) altstr_set;
254 string (string, float, string) altstr_ins;
255 void (float, float, float) WriteByte;
256 void (float, float, float) WriteChar;
257 void (float, float, float) WriteShort;
258 void (float, float, float) WriteLong;
259 void (float, float, float) WriteAngle;
260 void (float, float, float) WriteCoord;
261 void (string, float, float) WriteString;
262 void (entity, float, float) WriteEntity;
263 float (string) iscachedpic;
264 string (string) precache_pic;
265 void (string) freepic;
266 float (vector, float, vector, vector, float, float) drawcharacter;
267 float (vector, string, vector, vector, float, float) drawstring;
268 float (vector, string, vector, vector, float, float) drawpic;
269 float (vector, vector, vector, float, float) drawfill;
270 void (float, float, float, float) drawsetcliparea;
271 void () drawresetcliparea;
272 vector (string) drawgetimagesize;
273 float (string, string) cin_open;
274 void (string) cin_close;
275 void (string, float) cin_setstate;
276 float (string) cin_getstate;
277 void (float) setkeydest;
278 float () getkeydest;
279 void (float) setmousetarget;
280 float () getmousetarget;
281 float (string) isfunction;
282 void () callfunction;
283 void (float, entity) writetofile;
284 vector (float) getresolution;
285 string (float) keynumtostring;
286 string (string) findkeysforcommand;
287 float (float) gethostcachevalue;
288 string (float, float) gethostcachestring;
289 void (entity, string) parseentitydata;
290 float (string) stringtokeynum;
291 void () resethostcachemasks;
292 void (float, float, string, float) sethostcachemaskstring;
293 void (float, float, float, float) sethostcachemasknumber;
294 void () resorthostcache;
295 void (float, float) sethostcachesort;
296 void () refreshhostcache;
297 float (float, float) gethostcachenumber;
298 float (string) gethostcacheindexforkey;
299 void (string) addwantedhostcachekey;
300 float (string, float) fopen;
301 float(string filename, float mode) fopen = asm
302 {
303 local float handle;
304 local float temp_0;
305         EQ_F            mode,   KEY_GAME,       temp_0;
306         IFNOT           temp_0, 5;
307         STORE_F filename,       parm0_x;
308         STORE_F mode,   parm1_x;
309         CALL2           _fopen;
310         RETURN  return_x;
311         STORE_F filename,       parm0_x;
312         CALL1           strzone;
313         STORE_S return_x,       filename;
314         STORE_F filename,       parm0_x;
315         STORE_F KEY_GAME,       parm1_x;
316         STORE_F SLIST_SERVERREPLYCOUNT, parm2_x;
317         CALL3           substring;
318         NE_S            return_x,       "data/",        temp_0;
319         IFNOT           temp_0, 4;
320         STORE_F "menu: fopen: all output must go into data/!
321 ",      parm0_x;
322         CALL1           print;
323         RETURN  ERR_CANNOTOPEN;
324         STORE_F filename,       parm0_x;
325         STORE_F SLIST_SERVERREPLYCOUNT, parm1_x;
326         STORE_F 10000.000000,   parm2_x;
327         CALL3           substring;
328         STORE_F return_x,       parm0_x;
329         STORE_F mode,   parm1_x;
330         CALL2           _fopen;
331         STORE_F return_x,       handle;
332         STORE_F filename,       parm0_x;
333         CALL1           strunzone;
334         RETURN  handle;
335         DONE;
336 }
337
338 float GAME_ISSERVER;
339 float GAME_CONNECTED;
340 float GAME_DEVELOPER;
341 float INFINITY;
342 bool Menu_Active;
343 float gamestatus;
344 void () Util_NullFunction;
345 float () Util_TrueFunction;
346 float () Util_FalseFunction;
347 string () Util_StringFuntion;
348 vector () Util_VectorFunction;
349 entity () Util_EntityFunction;
350 float (string) Util_GetAltStringCount;
351 string (string, float) Util_GetAltStringItem;
352 string (string, float, string) Util_SetAltStringItem;
353 string (string, float) Util_DelAltStringItem;
354 string (string, float, string) Util_InsAltStringItem;
355 string (string) Util_AltStringPrepare;
356 string (string, string) Util_AltStringPush;
357 string (string, string) Util_AltStringPushBack;
358 string (string) Util_GetAltStringTop;
359 string (string) Util_AltStringPop;
360 bool (vector, vector, vector) Util_InRect;
361 vector (vector, vector, vector) Util_GetClipDelta;
362 vector (vector, vector, vector, vector) Util_ClipRect;
363 bool (vector, vector, vector, vector) Util_RectInRect;
364 string (string) Util_ClipStack_Reset;
365 string (string, vector, vector) Util_ClipStack_Push;
366 string (string) Util_ClipStack_Pop;
367 vector (string) Util_ClipStack_GetPosition;
368 vector (string) Util_ClipStack_GetSize;
369 string (string) Util_OriginStack_Reset;
370 string (string, vector) Util_OriginStack_Push;
371 string (string) Util_OriginStack_Pop;
372 vector (string) Util_OriginStack_Get;
373 string () String_Create;
374 string (string) String_Zone;
375 string (string) String_Normal;
376 string (string, string) String_Set;
377 string (string) String_Free;
378 string (string, string) String_Append;
379 string (string, float, float) String_Substring;
380 void (entity, FIELD TYPE) String_EntityCreate;
381 void (entity, FIELD TYPE) String_EntityZone;
382 void (entity, FIELD TYPE, string) String_EntitySet;
383 void (entity, FIELD TYPE) String_EntityFree;
384 vector (string, vector) Util_GetEndOfLine;
385 vector (string, vector, float) Util_GetEndOfWrappedLine;
386 string () Util_CreateUID;
387 string (float) Util_GetUIDName;
388 float (string) Util_GetUIDNum;
389 string () Property_Create;
390 string (string) Property_Zone;
391 string (string) Propery_Free;
392 float (string) Property_Validate;
393 float (string, string) Property_Exists;
394 string (string, string, string) Property_Register;
395 string (string, string, string) Property_Set;
396 string (string, string, string) Property_Rename;
397 string (string, string) Property_Delete;
398 string (string, string) Property_Get;
399 string (string, string) Property_GetString;
400 float (string, string) Property_GetFloat;
401 vector (string, string) Property_GetVector;
402 entity (string, string) Property_GetEntity;
403 float Timer_Time;
404 float Timer_Delta;
405 void () Timer_Init;
406 void () Timer_Update;
407 void () Timer_Quit;
408 float GFX_MENU_DEFAULT_WIDTH;
409 float GFX_MENU_DEFAULT_HEIGHT;
410 string CVAR_SCMENU_MENU_WIDTH;
411 string CVAR_SCMENU_MENU_HEIGHT;
412 float GFX_SHOWFPS_DURATION;
413 float GFX_SHOWFPS_DEFAULT;
414 string CVAR_SCMENU_SHOWFPS;
415 float Gfx_Menu_Width;
416 float Gfx_Menu_Height;
417 float Gfx_Real_Width;
418 float Gfx_Real_Height;
419 void () Gfx_Init;
420 void () Gfx_Quit;
421 void () Gfx_Display;
422 void () Gfx_Hide;
423 void () Gfx_Update;
424 void () Gfx_Draw;
425 float (string) Gfx_IsCached;
426 float (string) Gfx_Precache;
427 void (string) Gfx_Free;
428 vector (string) Gfx_GetImageSize;
429 vector (vector) Gfx_ConToMen;
430 vector (vector) Gfx_MenToCon;
431 void () Gfx_ResetClipArea;
432 float (vector, float, vector, vector, float, float) Gfx_DrawCharacter;
433 float (vector, string, vector, vector, float, float) Gfx_DrawString;
434 float (vector, string, vector, vector, float, float) Gfx_DrawPic;
435 float (vector, vector, vector, float, float) Gfx_Fill;
436 void (float, float, float, float) Gfx_SetClipArea;
437 float (string) Sound_Precache;
438 void (string) Sound_Free;
439 void (string) Sound_Play;
440 string CURSOR_PATH;
441 string Cursor_Current;
442 void () Cursor_Animation;
443 float Cursor_Relative_x;
444 float Cursor_Relative_y;
445 float Cursor_Relative_z;
446 vector Cursor_Relative;
447 float Cursor_Position_x;
448 float Cursor_Position_y;
449 float Cursor_Position_z;
450 vector Cursor_Position;
451 float Cursor_Speed_x;
452 float Cursor_Speed_y;
453 float Cursor_Speed_z;
454 vector Cursor_Speed;
455 float Cursor_Transparency;
456 float Cursor_Color_x;
457 float Cursor_Color_y;
458 float Cursor_Color_z;
459 vector Cursor_Color;
460 float Cursor_Scale;
461 float Cursor_Flag;
462 float Cursor_Offset_x;
463 float Cursor_Offset_y;
464 float Cursor_Offset_z;
465 vector Cursor_Offset;
466 void () Cursor_Init;
467 void () Cursor_Quit;
468 void () Cursor_Display;
469 void () Cursor_Hide;
470 void () Cursor_Draw;
471 void () Cursor_Update;
472 void () Cursor_DefaultAnimation;
473 void (vector, string, vector, vector, float, float) Cursor_PrintInfo;
474 void () Key_Init;
475 void () Key_Quit;
476 void () Key_Update;
477 void () Key_Display;
478 void () Key_Hide;
479 void (string) Key_Unbind;
480 string (float) Key_GetName;
481 float (string) Key_GetNum;
482 string (string) Key_GetBindList;
483 void (float, string) Key_LimitBinds;
484 void (string, string) Key_Bind;
485 float SLIST_FIELD_CNAME;
486 float SLIST_FIELD_PING;
487 float SLIST_FIELD_GAME;
488 float SLIST_FIELD_MOD;
489 float SLIST_FIELD_MAP;
490 float SLIST_FIELD_NAME;
491 float SLIST_FIELD_MAXPLAYERS;
492 float SLIST_FIELD_NUMPLAYERS;
493 float SLIST_FIELD_PROTOCOL;
494 float HostCache_ViewCount;
495 float HostCache_TotalCount;
496 float HostCache_MasterQueryCount;
497 float HostCache_MasterReplyCount;
498 float HostCache_ServerQueryCount;
499 float HostCache_ServerReplyCount;
500 float HostCache_SortField;
501 float HostCache_SortDescending;
502 void () HostCache_Init;
503 void () HostCache_Update;
504 void () HostCache_ResortViewSet;
505 void () HostCache_RefreshHostCache;
506 float PARSER_TT_ITEM;
507 float PARSER_TT_TEMPLATE;
508 float PARSER_TT_DERIVE;
509 float PARSER_TT_DERIVETEMPLATE;
510 float PARSER_TT_DEFINE;
511 float PARSER_TT_UNDEF;
512 float PARSER_TT_IGNORE;
513 float PARSER_TT_NAMESPACE;
514 float PARSER_TT_INCLUDE;
515 float PARSER_TT_BRACEOPEN;
516 float PARSER_TT_BRACECLOSE;
517 float PARSER_TT_BRACKETOPEN;
518 float PARSER_TT_BRACKETCLOSE;
519 float PARSER_TT_TOKEN;
520 float PARSER_TT_SIZE;
521 string PARSER_TT_TEXT;
522 float PARSER_NORMAL;
523 float PARSER_INFO;
524 float PARSER_HIGH;
525 float PARSER_LOW;
526 float Parser_MaxIncludeDepth;
527 string Parser_FileList;
528 float Parser_IncludeDepth;
529 entity Parser_DefineChain;
530 string Parser_Filename;
531 float Parser_LineNumber;
532 float Parser_File;
533 string Parser_Line;
534 float Parser_NumTokens;
535 float Parser_TokenNum;
536 string Parser_Token;
537 float Parser_TokenType;
538 float () Parser_GetToken;
539 float () Parser_GetTokenType;
540 void () Parser_ParseDefine;
541 void () Parser_ProcessDefine;
542 void () Parser_ParseUndef;
543 void (float) Parser_Expect;
544 void (string) Parser_Error;
545 void (float, string) Parser_Print;
546 entity (string) Parser_ParseItem;
547 entity (string) Parser_DeriveItem;
548 string (string, string) Parser_ParseEntity;
549 void (string) Parser_ParseDefinition;
550 void (string) Parser_ParseNamespace;
551 void () Parser_ParseIgnore;
552 void (entity, entity) Parser_CloneChildren;
553 void (string) Parser_IncludeFile;
554 void (string, string) Parser_ParseFile;
555 void (string) Parser_ParseMenu;
556 void () Parser_Init;
557 void () Parser_Quit;
558 string SYSTEM_CVAR_VERSION_BUILDDATE;
559 string SYSTEM_CVAR_VERSION_BUILDTIME;
560 string SYSTEM_CVAR_VERSION;
561 string SYSTEM_CVAR_VERSION_BUILDDATE_VALUE;
562 string SYSTEM_CVAR_VERSION_BUILDTIME_VALUE;
563 string SYSTEM_CVAR_VERSION_VALUE;
564 string SYSTEM_CVAR_DEBUG;
565 string SYSTEM_CVAR_DEBUG_REF;
566 string SYSTEM_CVAR_DEBUG_SOUND;
567 string SYSTEM_CVAR_DEBUG_AREA;
568 string SYSTEM_CVAR_DEBUG_STEP;
569 string SYSTEM_CVAR_DEBUG_MOUSE;
570 string SYSTEM_CVAR_DEBUG_STRUCTURE;
571 string SYSTEM_CVAR_DEBUG_RUNFLAG;
572 string SYSTEM_CVAR_DEBUG_PROCESS;
573 string SYSTEM_CVAR_DEBUG_MGFX;
574 string SYSTEM_CVAR_DEBUG_PARSER;
575 string SYSTEM_CVAR_DEBUG_PROCESS_FILTER;
576 string SYSTEM_CVAR_DEBUG_DUMP_NAMES;
577 float SYSTEM_CVAR_DEBUG_DEFAULT;
578 float SYSTEM_CVAR_DEBUG_REF_DEFAULT;
579 float SYSTEM_CVAR_DEBUG_RUNFLAG_DEFAULT;
580 float SYSTEM_CVAR_DEBUG_PROCESS_DEFAULT;
581 float SYSTEM_CVAR_DEBUG_MGFX_DEFAULT;
582 float SYSTEM_CVAR_DEBUG_STRUCTURE_DEFAULT;
583 string SYSTEM_CVAR_DEBUG_PARSER_DEFAULT;
584 string SYSTEM_CVAR_DEBUG_PROCESS_FILTER_DEFAULT;
585 float SYSTEM_CVAR_DEBUG_SOUND_DEFAULT;
586 float SYSTEM_CVAR_DEBUG_AREA_DEFAULT;
587 float SYSTEM_CVAR_DEBUG_STEP_DEFAULT;
588 float SYSTEM_CVAR_DEBUG_MOUSE_DEFAULT;
589 bool sys_debug;
590 bool sys_debug_sound;
591 bool sys_debug_ref;
592 bool sys_debug_area;
593 bool sys_debug_runflag;
594 bool sys_debug_process;
595 bool sys_debug_mgfx;
596 float sys_debug_mouse;
597 float sys_debug_structure;
598 float sys_debug_parser;
599 bool sys_debug_halt;
600 float sys_debug_process_filter;
601 float sys_debug_cursor_localpos_x;
602 float sys_debug_cursor_localpos_y;
603 float sys_debug_cursor_localpos_z;
604 vector sys_debug_cursor_localpos;
605 void () Sys_Debug_Init;
606 void () Sys_Debug_Frame;
607 void () Sys_Debug_Draw;
608 void () Sys_Debug_DumpNames;
609 string MENU_NORMAL_NAME;
610 string MENU_INGAME_NAME;
611 string MENU_NORMAL_DEFAULT;
612 string MENU_INGAME_DEFAULT;
613 string MENU_MAINFILE;
614 bool MENU_ALLOWINGAME;
615 void () Menu_Init;
616 void () Menu_Load;
617 void () Menu_PerformReinit;
618 void () Menu_Hide;
619 void () Menu_Shutdown;
620 void (entity) Menu_LinkItem;
621 void (entity) Menu_LinkWindow;
622 entity (string, string, string) Menu_CreateItem;
623 entity (entity, string, string, bool) Menu_DeriveItem;
624 void (entity, string) Menu_AddEntityData;
625 void (entity) Menu_LinkChildren;
626 void () Menu_LinkWindows;
627 float Menu_Clip_Position_x;
628 float Menu_Clip_Position_y;
629 float Menu_Clip_Position_z;
630 vector Menu_Clip_Position;
631 float Menu_Clip_Size_x;
632 float Menu_Clip_Size_y;
633 float Menu_Clip_Size_z;
634 vector Menu_Clip_Size;
635 float Menu_Origin_x;
636 float Menu_Origin_y;
637 float Menu_Origin_z;
638 vector Menu_Origin;
639 vector (vector) Menu_OrgToMen;
640 vector (vector) Menu_MenToOrg;
641 vector (vector) Menu_ConToOrg;
642 vector (vector) Menu_OrgToCon;
643 float (vector, float, vector, vector, float, float) Menu_DrawCharacter;
644 float (vector, string, vector, vector, float, float) Menu_DrawString;
645 float (vector, string, vector, vector, float, float) Menu_DrawPicture;
646 float (vector, vector, vector, float, float) Menu_Fill;
647 void (float, float, float, float) Menu_SetClipArea;
648 void () Menu_ResetClipArea;
649 bool _menu_process_filtered;
650 float RUNFLAG_TEMPLATE;
651 float RUNFLAG_HADMOUSE;
652 float RUNFLAG_MOUSEINAREA;
653 float RUNFLAG_CHILDDRAWONLY;
654 float RUNFLAG_CHILDDRAWUPDATEONLY;
655 float RUNFLAG_HIDDEN;
656 float RUNFLAG_CLIPPED;
657 float RUNFLAG_NOSELECT;
658 float RUNFLAG_USERSELECT;
659 float RUNFLAG_DELETEFRAME;
660 float RUNFLAG_DELETETOGGLE;
661 float RUNFLAG_SPAWNED;
662 .entity chain;
663 .string type;
664 .entity _parent;
665 .string parent;
666 .string name;
667 .entity _next;
668 .entity _prev;
669 .entity _child;
670 .float orderPos;
671 .float flag;
672 .float _runFlag;
673 .float pos_x;
674 .float pos_y;
675 .float pos_z;
676 .vector pos;
677 .float size_x;
678 .float size_y;
679 .float size_z;
680 .vector size;
681 .float origin_x;
682 .float origin_y;
683 .float origin_z;
684 .vector origin;
685 .float _cache_origin_x;
686 .float _cache_origin_y;
687 .float _cache_origin_z;
688 .vector _cache_origin;
689 .float _cache_clip_pos_x;
690 .float _cache_clip_pos_y;
691 .float _cache_clip_pos_z;
692 .vector _cache_clip_pos;
693 .float _cache_clip_size_x;
694 .float _cache_clip_size_y;
695 .float _cache_clip_size_z;
696 .vector _cache_clip_size;
697 .void () init;
698 .void () reinit;
699 .void () destroy;
700 .void () mouseEnter;
701 .void () mouseLeave;
702 .void () update;
703 .void (bool, bool) select;
704 .void () action;
705 .void () draw;
706 .bool (float, float) key;
707 .void () _reinit;
708 .void () _destroy;
709 .void () _mouseEnter;
710 .void () _mouseLeave;
711 .void () _update;
712 .void (bool, bool) _select;
713 .void () _draw;
714 .bool (float, float) _key;
715 void () DefCt_Reinit;
716 void () DefCt_Destroy;
717 float (float, float) DefCt_Key;
718 void () DefCt_Draw;
719 void () DefCt_MouseEnter;
720 void () DefCt_MouseLeave;
721 void () DefCt_Update;
722 void (float, float) DefCt_Select;
723 void (entity) Raise_Reinit;
724 void (entity) Raise_Destroy;
725 bool (entity, float, float) Raise_Key;
726 void (entity) Raise_Draw;
727 void (entity) Raise_MouseEnter;
728 void (entity) Raise_MouseLeave;
729 void (entity) Raise_Update;
730 void (entity, float, float) Raise_Select;
731 void () CtCall_Init;
732 void () CtCall_Reinit;
733 void () CtCall_Destroy;
734 float (float, float) CtCall_Key;
735 void () CtCall_Draw;
736 void () CtCall_MouseEnter;
737 void () CtCall_MouseLeave;
738 void () CtCall_Action;
739 void () CtCall_Update;
740 void (float, float) CtCall_Select;
741 entity Menu_ActiveWindow;
742 entity Menu_ActiveItem;
743 entity (entity) _Menu_GetParent;
744 entity (entity) _Menu_GetFirst;
745 entity (entity) _Menu_GetLast;
746 entity (entity) _Menu_GetNext;
747 entity (entity) _Menu_GetPrev;
748 bool (entity, entity) _Menu_IsEmbeddedParentOf;
749 void () _Menu_SelectNext;
750 void () _Menu_SelectPrev;
751 float () _Menu_SelectUp;
752 float () _Menu_SelectDown;
753 void () _Menu_Reselect;
754 void (float) Menu_SelectNext;
755 void (float) Menu_SelectPrev;
756 float (float) Menu_SelectUp;
757 float (float) Menu_SelectDown;
758 void (float) Menu_Reselect;
759 void (entity, bool) Menu_CorrectSelection;
760 void (entity, bool) Menu_Select;
761 void (entity, float, float) Menu_JumpToWindow;
762 float (entity) Menu_HasEvents;
763 void (entity) Menu_SetRunFlag;
764 void (entity, entity) Menu_InheritRunFlag;
765 void () Menu_UpdateRunFlags;
766 void (entity) Menu_EmptyWindow;
767 void (entity) Menu_RemoveItem;
768 entity (entity, string, bool) Menu_GetItemEx;
769 entity (entity, string, bool) Menu_GetChildEx;
770 entity (string) Menu_GetItem;
771 entity (string) Menu_GetChild;
772 float MENU_SELECT_SELECTABLE;
773 float MENU_SELECT_ALWAYS;
774 float MENU_SELECT_NEVER;
775 float MENU_EVENT_NORMAL;
776 float MENU_EVENT_CONTINUE;
777 float MENU_EVENT_RAISEPARENT;
778 float MENU_EVENT_PROCESSED;
779 float MENU_PROCESS_RUNFLAG;
780 float MENU_PROCESS_UPDATE;
781 float MENU_PROCESS_DRAW;
782 float MENU_PROCESS_MOUSE;
783 float MENU_PROCESS_KEY;
784 float Menu_Cursor_Position_x;
785 float Menu_Cursor_Position_y;
786 float Menu_Cursor_Position_z;
787 vector Menu_Cursor_Position;
788 entity Menu_KeyHook_Target;
789 void (float, float) Menu_KeyHook;
790 void () Menu_Frame;
791 void () Menu_Draw;
792 void (float, float) Menu_Key;
793 float () Menu_Toggle;
794 void () Menu_Process_Setup;
795 float (entity, float, float, float, float) Menu_Process;
796 entity Menu_History;
797 void (entity, Menu_History_PopFunction) Menu_History_Push;
798 void () Menu_History_Pop;
799 float (entity) Menu_History_Verify;
800 void () Menu_History_Clear;
801 float Menu_GarbageFrameCount;
802 float Menu_GarbageToggleCount;
803 void () Menu_InitGarbageStats;
804 void () Menu_ResetGarbageStats;
805 float (entity) Menu_CheckForGarbage;
806 void (float) Menu_CollectGarbage;
807 void (entity) Menu_DeleteAfterFrame;
808 void (entity) Menu_DeleteAfterToggle;
809 float ITEM_ALIGN_LEFT;
810 float ITEM_ALIGN_CENTER;
811 float ITEM_ALIGN_RIGHT;
812 float ITEM_ALIGN_FIX_RIGHT;
813 float ITEM_ALIGN_FIX_CENTER;
814 float ITEM_ALIGN_FIX_LEFT;
815 float ITEM_ALIGN_FIRST;
816 float FLAG_TEMPLATE;
817 float FLAG_EMBEDDED;
818 float FLAG_HIDDEN;
819 float FLAG_NOSELECT;
820 float FLAG_CONNECTEDONLY;
821 float FLAG_SERVERONLY;
822 float FLAG_DEVELOPERONLY;
823 float FLAG_DRAWONLY;
824 float FLAG_CHILDDRAWONLY;
825 float FLAG_DRAWUPDATEONLY;
826 float FLAG_CHILDDRAWUPDATEONLY;
827 float FLAG_SEALOFFMOUSE;
828 .entity _link;
829 void () Item_Link_Init;
830 void () Item_Link_Destroy;
831 void () Item_Link_Update;
832 float (float, float) Item_Link_Key;
833 void () Item_Link_MouseEnter;
834 float () Item_Link_IsSelected;
835 .string link;
836 .string normal;
837 void () Item_Cinematic_Destroy;
838 void () Item_Cinematic_Init;
839 void () Item_Cinematic_Loop_Spawn;
840 void () Item_Container_Spawn;
841 .string value;
842 string ITEM_SOUND_NOSELECT;
843 float ITEM_BUTTON_ACTIONTIME;
844 float ITEM_EDITBOX_CURSOR_FREQ;
845 float ITEM_EDITBOX_FLASHTIME;
846 float ITEM_EDITBOX_SCROLLDISTANCE;
847 float ITEM_DATA_SYNC;
848 float ITEM_DATA_SEND;
849 float ITEM_DATA_RESET;
850 float ITEM_DATA_TEST_START;
851 float ITEM_DATA_TEST_END;
852 float ITEM_DATA_SAVE_EXECSTRING;
853 float ITEM_DATALINK_SET;
854 float ITEM_DATALINK_GET;
855 void (entity, bool) Raise_DataEvent;
856 string Data_ExecString;
857 void () Data_ExecString_BeginUse;
858 void () Data_ExecString_EndUse;
859 .string defValue;
860 .string _syncValue;
861 .void (float) _dataEvent;
862 void () Item_Data_Init;
863 void () Item_Data_Destroy;
864 .string target;
865 .entity _target;
866 void () Item_DataUser_Update;
867 void () Item_DataUser_Init;
868 void () Item_DataUser_Destroy;
869 void () Item_DataLink_Init;
870 void () Item_DataLink_Destroy;
871 void () Item_DataLink_Update;
872 void (float) Item_DataContainer_DataEvent;
873 void () Item_DataContainer_Spawn;
874 void () Item_Data_Container_Reinit;
875 void (float) Item_Data_Container_DataEvent;
876 void () Item_Data_Container_Spawn;
877 .string cvarName;
878 void (float) Item_Data_Cvar_DataEvent;
879 void () Item_Data_Cvar_Spawn;
880 void () Item_Data_CvarCreateSave_Spawn;
881 .float maxValue;
882 .float minValue;
883 .float stepValue;
884 .float _realValue;
885 void () Item_DataLink_Value_Clamp;
886 void () Item_DataLink_Value_Spawn;
887 .string descList;
888 void () Item_DataLink_Switch_Init;
889 void () Item_DataLink_Switch_Destroy;
890 float (entity, float) DataLink_Switch_GetOrdinal;
891 void () Item_DataLink_ValueSwitch_Spawn;
892 .string valueList;
893 void (float) Item_DataLink_TextSwitch_DataEvent;
894 void () Item_DataLink_TextSwitch_Destroy;
895 void () Item_DataLink_TextSwitch_Spawn;
896 .float _presstime;
897 void () Item_DataLink_FastResync_Spawn;
898 void () Item_DataLink_TextValue_Spawn;
899 void () Item_DataLink_TextTime_Spawn;
900 void () Item_DataLink_AltString_Spawn;
901 void () Item_DataLink_Router_Spawn;
902 float (float, float) Item_Window_Key;
903 void () Item_Window_Draw;
904 void () Item_Window_Spawn;
905 void () Item_Frame_Spawn;
906 void () Item_EventWindow_Spawn;
907 void () Item_Reference_Update;
908 void () Item_Reference_Draw;
909 void () Item_Reference_Destroy;
910 void () Item_Reference_Spawn;
911 .float direction_x;
912 .float direction_y;
913 .float direction_z;
914 .vector direction;
915 .float alignment;
916 void () Item_Layout_Spawn;
917 void () Item_Layout_Update;
918 void () Item_Arrangement_CalculateSize;
919 void () Item_Arrangement_Update;
920 void () Item_Arrangement_Spawn;
921 void () Item_ScrollWindow_Update;
922 void () Item_ScrollWindow_Spawn;
923 float ITEM_STATE_NORMAL;
924 float ITEM_STATE_SELECTED;
925 float ITEM_STATE_PRESSED;
926 .string picture;
927 .float color_x;
928 .float color_y;
929 .float color_z;
930 .vector color;
931 .float alpha;
932 .float drawFlag;
933 void () Item_Picture_Draw;
934 void () Item_Picture_Destroy;
935 void () Item_Picture_Spawn;
936 void () Item_Rect_Draw;
937 void () Item_Rect_Spawn;
938 .string text;
939 .float fontSize_x;
940 .float fontSize_y;
941 .float fontSize_z;
942 .vector fontSize;
943 void () Item_Label_Draw;
944 void () Item_Label_Update;
945 void () Item_Label_Destroy;
946 void () Item_Label_Spawn;
947 .float wrap;
948 void () Item_MultiLabel_Update;
949 void () Item_MultiLabel_Draw;
950 void () Item_MultiLabel_Destroy;
951 void () Item_MultiLabel_Spawn;
952 .string selected;
953 .string pressed;
954 .float colorSelected_x;
955 .float colorSelected_y;
956 .float colorSelected_z;
957 .vector colorSelected;
958 .float colorPressed_x;
959 .float colorPressed_y;
960 .float colorPressed_z;
961 .vector colorPressed;
962 .float drawFlags_x;
963 .float drawFlags_y;
964 .float drawFlags_z;
965 .vector drawFlags;
966 .float alphas_x;
967 .float alphas_y;
968 .float alphas_z;
969 .vector alphas;
970 .string soundSelected;
971 .string soundPressed;
972 .float _state;
973 void () Item_Button_Draw;
974 void () Item_Button_Update;
975 void (float, float) Item_Button_Select;
976 float (float, float) Item_Button_Key;
977 void () Item_Button_Destroy;
978 void () Item_Button_Spawn;
979 .float proportions_x;
980 .float proportions_y;
981 .float proportions_z;
982 .vector proportions;
983 .string pictureSlider;
984 .string soundIncrease;
985 .string soundDecrease;
986 .float sizeSlider_x;
987 .float sizeSlider_y;
988 .float sizeSlider_z;
989 .vector sizeSlider;
990 void (float, float) Item_Slider_Select;
991 void () Item_Slider_Draw;
992 float (float, float) Item_Slider_Key;
993 void () Item_Slider_Destroy;
994 void () Item_Slider_Spawn;
995 .float colorCursor_x;
996 .float colorCursor_y;
997 .float colorCursor_z;
998 .vector colorCursor;
999 .float colorCursorFlash_x;
1000 .float colorCursorFlash_y;
1001 .float colorCursorFlash_z;
1002 .vector colorCursorFlash;
1003 .float sizeCursor_x;
1004 .float sizeCursor_y;
1005 .float sizeCursor_z;
1006 .vector sizeCursor;
1007 .float sizeCursorFlash_x;
1008 .float sizeCursorFlash_y;
1009 .float sizeCursorFlash_z;
1010 .vector sizeCursorFlash;
1011 .float alphasCursor_x;
1012 .float alphasCursor_y;
1013 .float alphasCursor_z;
1014 .vector alphasCursor;
1015 .float drawFlagsCursor_x;
1016 .float drawFlagsCursor_y;
1017 .float drawFlagsCursor_z;
1018 .vector drawFlagsCursor;
1019 .string soundKey;
1020 .string soundMove;
1021 .float _cursorPos;
1022 void () Item_EditBox_Draw;
1023 void () Item_EditBox_Update;
1024 float (float, float) Item_EditBox_Key;
1025 void (float, float) Item_EditBox_Select;
1026 void () Item_EditBox_Destroy;
1027 void () Item_EditBox_Reinit;
1028 void () Item_EditBox_Spawn;
1029 void () Item_ValueButton_Update;
1030 void () Item_ValueButton_Destroy;
1031 void () Item_ValueButton_Spawn;
1032 float (float, float) Item_SwitchButton_Key;
1033 void () Item_SwitchButton_Spawn;
1034 .float colorInactive_x;
1035 .float colorInactive_y;
1036 .float colorInactive_z;
1037 .vector colorInactive;
1038 .float drawFlagInactive;
1039 .float alphaInactive;
1040 void () Item_List_Draw;
1041 void () Item_List_Update;
1042 void (float, float) Item_List_Select;
1043 float (float, float) Item_List_Key;
1044 void () Item_List_Destroy;
1045 void () Item_List_Spawn;
1046 float (float, float) Item_FloatingArea_Key;
1047 void () Item_FloatingArea_Update;
1048 void () Item_FloatingArea_Spawn;
1049 void () Item_VScrollBar_Draw;
1050 float (float, float) Item_VScrollBar_Key;
1051 void () Item_VScrollBar_Update;
1052 void () Item_VScrollBar_Spawn;
1053 void () Item_Automation_Init;
1054 .entity _current;
1055 void () Item_Automation_ForEach_Spawn;
1056 void () Item_Task_Init;
1057 void () Item_Automation_Job_Spawn;
1058 void () Item_Task_Job_Spawn;
1059 void (entity) Nex_MakeOnlyVisible;
1060 void () Item_Nex_Avatar_Info_Destroy;
1061 void () Item_Nex_Avatar_Info_Spawn;
1062 void (float) Item_Data_Nex_Avatar_DataEvent;
1063 void () Item_Data_Nex_Avatar_Spawn;
1064 void (float) Item_Data_Nex_Name_DataEvent;
1065 void () Item_Data_Nex_Name_Spawn;
1066 void (float) Item_Data_Nex_Color_DataEvent;
1067 void () Item_Data_Nex_Color_Spawn;
1068 void () Item_Nex_Map_Info_Destroy;
1069 void () Item_Nex_Map_Info_Spawn;
1070 void () Item_Nex_MapDB_EnumFiles;
1071 void () Item_Nex_MapDB_Destroy;
1072 void () Item_Nex_MapDB_Spawn;
1073 entity (string) Nex_MapDB_GetByPath;
1074 entity (float) Nex_MapDB_GetByIndex;
1075 float (entity) Nex_MapDB_GetIndex;
1076 string () Nex_MapDB_GetPathAltString;
1077 string () Nex_MapDB_GetNameAltString;
1078 void (float) Item_DataLink_Nex_MapList_DataEvent;
1079 void () Item_DataLink_Nex_MapList_Spawn;
1080 void () Item_DataLink_Nex_MapList_InitWithMapList;
1081 void (entity) DataLink_Nex_MapList_UpdateRange;
1082 void (entity, string, string) DataLink_Nex_MapList_InsertEntryAfter;
1083 void (entity) DataLink_Nex_MapList_DeleteEntry;
1084 void (entity) DataLink_Nex_MapList_MoveEntryUp;
1085 void (entity) DataLink_Nex_MapList_MoveEntryDown;
1086 void (entity, string, string) DataLink_Nex_MapList_SetFirst;
1087 void (entity) DataLink_Nex_MapList_Clear;
1088 string (entity) DataLink_Nex_MapList_GetCurrentName;
1089 string (entity) DataLink_Nex_MapList_GetCurrentPath;
1090 void () Item_DataLink_Nex_ModSwitch_Spawn;
1091 void (float) Item_DataLink_Nex_FileList_DataEvent;
1092 void () Item_DataLink_Nex_FileList_Destroy;
1093 void () Item_DataLink_Nex_FileList_Spawn;
1094 void () Item_Nex_HostCache_Entry_Update;
1095 void () Item_Nex_HostCache_Entry_Spawn;
1096 void () Item_Nex_HostCache_StringField_Update;
1097 void () Item_Nex_HostCache_StringField_Spawn;
1098 void () Item_Nex_HostCache_ValueField_Update;
1099 void () Item_Nex_HostCache_ValueField_Spawn;
1100 void () Item_Nex_HostCache_Players_Update;
1101 void () Item_Nex_HostCache_Players_Spawn;
1102 void (float) Item_Data_Nex_Key_DataEvent;
1103 void () Item_Data_Nex_Key_Spawn;
1104 void () Item_Nex_KeyButton_Spawn;
1105 void () Item_Data_Nex_Resolution_Spawn;
1106 void () Item_Nex_Credits_Spawn;
1107 void (string, string, string, string, event, event) Nex_MessageBox;
1108 void () Nex_Quit_Toggle;
1109 void() Nex_Quit_Toggle = asm
1110 {
1111 local entity lEntity;
1112 local float temp_0;
1113 local float temp_1;
1114         STORE_F "QuitWnd",      parm0_x;
1115         CALL1           Menu_GetItem;
1116         STORE_ENT       return_x,       lEntity;
1117         INDIRECT_F      lEntity,        flag,   temp_1;
1118         BITAND  temp_1, FLAG_HIDDEN,    temp_1;
1119         IFNOT           temp_1, 11;
1120         ADDRESS lEntity,        flag,   temp_1;
1121         INDIRECT_F      lEntity,        flag,   temp_0;
1122         SUB_F           temp_0, FLAG_HIDDEN,    temp_0;
1123         STOREP_F        temp_0, temp_1;
1124         STORE_F "QuitWnd::Layout::Buttons::No", parm0_x;
1125         CALL1           Menu_GetItem;
1126         STORE_F return_x,       parm0_x;
1127         STORE_F KEY_GAME,       parm1_x;
1128         CALL2           Menu_Select;
1129         GOTO            7;
1130         ADDRESS lEntity,        flag,   temp_0;
1131         INDIRECT_F      lEntity,        flag,   temp_1;
1132         ADD_F           temp_1, FLAG_HIDDEN,    temp_1;
1133         STOREP_F        temp_1, temp_0;
1134         STORE_F KEY_GAME,       parm0_x;
1135         CALL1           Menu_Reselect;
1136         DONE;
1137 }
1138
1139 void () Nex_Quit_Action;
1140 void() Nex_Quit_Action = asm
1141 {
1142 local entity lEntity;
1143 local float temp_0;
1144 local float temp_1;
1145         STORE_F "QuitWnd",      parm0_x;
1146         CALL1           Menu_GetItem;
1147         STORE_ENT       return_x,       lEntity;
1148         INDIRECT_F      lEntity,        flag,   temp_0;
1149         BITAND  temp_0, FLAG_HIDDEN,    temp_0;
1150         IFNOT           temp_0, 5;
1151         ADDRESS lEntity,        flag,   temp_0;
1152         INDIRECT_F      lEntity,        flag,   temp_1;
1153         SUB_F           temp_1, FLAG_HIDDEN,    temp_1;
1154         STOREP_F        temp_1, temp_0;
1155         STORE_F "QuitWnd::Layout::Buttons::No", parm0_x;
1156         CALL1           Menu_GetItem;
1157         STORE_F return_x,       parm0_x;
1158         STORE_F KEY_GAME,       parm1_x;
1159         CALL2           Menu_Select;
1160         DONE;
1161 }
1162
1163 float (float, float) Nex_Quit_Key;
1164 float(float pKey, float pAscii) Nex_Quit_Key = asm
1165 {
1166 local float temp_0;
1167         EQ_F            pKey,   K_ESCAPE,       temp_0;
1168         IFNOT           temp_0, 3;
1169         CALL0           Nex_Quit_Toggle;
1170         RETURN  FILE_APPEND;
1171         RETURN  KEY_GAME;
1172         DONE;
1173 }
1174
1175 void () Nex_Quit_Yes;
1176 void() Nex_Quit_Yes = asm
1177 {
1178         STORE_F "quit
1179 ",      parm0_x;
1180         CALL1           cmd;
1181         DONE;
1182 }
1183
1184 void () Nex_Quit_No;
1185 void() Nex_Quit_No = asm
1186 {
1187         CALL0           Nex_Quit_Toggle;
1188         DONE;
1189 }
1190
1191 void () Nex_Action_ResetData_Destroy;
1192 void() Nex_Action_ResetData_Destroy = asm
1193 {
1194         STORE_F self,   parm0_x;
1195         STORE_F target, parm1_x;
1196         CALL2           String_EntityFree;
1197         DONE;
1198 }
1199
1200 void () Nex_Action_ResetData_Action;
1201 void() Nex_Action_ResetData_Action = asm
1202 {
1203 local float temp_0;
1204         INDIRECT_S      self,   target, parm0_x;
1205         CALL1           Menu_GetItem;
1206         STORE_F return_x,       parm0_x;
1207         STORE_F ITEM_DATA_RESET,        parm1_x;
1208         CALL2           Raise_DataEvent;
1209         DONE;
1210 }
1211
1212 void () Nex_Action_ResetData;
1213 void() Nex_Action_ResetData = asm
1214 {
1215 local float temp_0;
1216         STORE_F self,   parm0_x;
1217         STORE_F target, parm1_x;
1218         CALL2           String_EntityZone;
1219         ADDRESS self,   destroy,        temp_0;
1220         STOREP_FNC      Nex_Action_ResetData_Destroy,   temp_0;
1221         ADDRESS self,   action, temp_0;
1222         STOREP_FNC      Nex_Action_ResetData_Action,    temp_0;
1223         DONE;
1224 }
1225
1226 void () Nex_Automation_Option_Slider;
1227 void() Nex_Automation_Option_Slider = asm
1228 {
1229 local entity lValue;
1230 local entity lSlider;
1231 local entity lDescription;
1232 local float temp_0;
1233 local float temp_1;
1234         INDIRECT_E      self,   _parent,        temp_0;
1235         INDIRECT_S      temp_0, target, temp_0;
1236         NOT_S           temp_0, temp_0;
1237         IFNOT           temp_0, 8;
1238         INDIRECT_E      self,   _parent,        temp_0;
1239         INDIRECT_S      temp_0, target, temp_0;
1240         STORE_F "Bad target '", parm0_x;
1241         STORE_F temp_0, parm1_x;
1242         STORE_F "'",    parm2_x;
1243         CALL3           objerror;
1244         RETURN  offset_0;
1245         STORE_F "Description",  parm0_x;
1246         CALL1           Menu_GetItem;
1247         STORE_ENT       return_x,       lDescription;
1248         STORE_F "Slider",       parm0_x;
1249         CALL1           Menu_GetItem;
1250         STORE_ENT       return_x,       lSlider;
1251         STORE_F "Value",        parm0_x;
1252         CALL1           Menu_GetItem;
1253         STORE_ENT       return_x,       lValue;
1254         ADDRESS lDescription,   normal, temp_0;
1255         INDIRECT_E      self,   _parent,        temp_1;
1256         INDIRECT_S      temp_1, text,   temp_1;
1257         STOREP_S        temp_1, temp_0;
1258         ADDRESS lDescription,   link,   temp_0;
1259         INDIRECT_S      lSlider,        name,   temp_1;
1260         STOREP_S        temp_1, temp_0;
1261         ADDRESS lSlider,        target, temp_0;
1262         INDIRECT_E      self,   _parent,        temp_1;
1263         INDIRECT_S      temp_1, target, temp_1;
1264         STOREP_S        temp_1, temp_0;
1265         ADDRESS lValue, target, temp_0;
1266         INDIRECT_E      self,   _parent,        temp_1;
1267         INDIRECT_S      temp_1, target, temp_1;
1268         STOREP_S        temp_1, temp_0;
1269         ADDRESS lValue, link,   temp_0;
1270         INDIRECT_S      lSlider,        name,   temp_1;
1271         STOREP_S        temp_1, temp_0;
1272         DONE;
1273 }
1274
1275 void () Nex_Automation_Option_EditBox;
1276 void() Nex_Automation_Option_EditBox = asm
1277 {
1278 local entity lEditBox;
1279 local entity lDescription;
1280 local float temp_0;
1281 local float temp_1;
1282         INDIRECT_E      self,   _parent,        temp_0;
1283         INDIRECT_S      temp_0, target, temp_0;
1284         NOT_S           temp_0, temp_0;
1285         IFNOT           temp_0, 8;
1286         INDIRECT_E      self,   _parent,        temp_0;
1287         INDIRECT_S      temp_0, target, temp_0;
1288         STORE_F "Bad target '", parm0_x;
1289         STORE_F temp_0, parm1_x;
1290         STORE_F "'",    parm2_x;
1291         CALL3           objerror;
1292         RETURN  offset_0;
1293         STORE_F "Description",  parm0_x;
1294         CALL1           Menu_GetItem;
1295         STORE_ENT       return_x,       lDescription;
1296         STORE_F "EditBox",      parm0_x;
1297         CALL1           Menu_GetItem;
1298         STORE_ENT       return_x,       lEditBox;
1299         ADDRESS lDescription,   normal, temp_0;
1300         INDIRECT_E      self,   _parent,        temp_1;
1301         INDIRECT_S      temp_1, text,   temp_1;
1302         STOREP_S        temp_1, temp_0;
1303         ADDRESS lDescription,   link,   temp_0;
1304         INDIRECT_S      lEditBox,       name,   temp_1;
1305         STOREP_S        temp_1, temp_0;
1306         ADDRESS lEditBox,       target, temp_0;
1307         INDIRECT_E      self,   _parent,        temp_1;
1308         INDIRECT_S      temp_1, target, temp_1;
1309         STOREP_S        temp_1, temp_0;
1310         DONE;
1311 }
1312
1313 void () Nex_Automation_Option_Switch;
1314 void() Nex_Automation_Option_Switch = asm
1315 {
1316 local entity lSwitch;
1317 local entity lDescription;
1318 local float temp_0;
1319 local float temp_1;
1320         INDIRECT_E      self,   _parent,        temp_0;
1321         INDIRECT_S      temp_0, target, temp_0;
1322         NOT_S           temp_0, temp_0;
1323         IFNOT           temp_0, 8;
1324         INDIRECT_E      self,   _parent,        temp_0;
1325         INDIRECT_S      temp_0, target, temp_0;
1326         STORE_F "Bad target '", parm0_x;
1327         STORE_F temp_0, parm1_x;
1328         STORE_F "'",    parm2_x;
1329         CALL3           objerror;
1330         RETURN  offset_0;
1331         STORE_F "Description",  parm0_x;
1332         CALL1           Menu_GetItem;
1333         STORE_ENT       return_x,       lDescription;
1334         STORE_F "Switch",       parm0_x;
1335         CALL1           Menu_GetItem;
1336         STORE_ENT       return_x,       lSwitch;
1337         ADDRESS lDescription,   normal, temp_0;
1338         INDIRECT_E      self,   _parent,        temp_1;
1339         INDIRECT_S      temp_1, text,   temp_1;
1340         STOREP_S        temp_1, temp_0;
1341         ADDRESS lDescription,   link,   temp_0;
1342         INDIRECT_S      lSwitch,        name,   temp_1;
1343         STOREP_S        temp_1, temp_0;
1344         ADDRESS lSwitch,        target, temp_0;
1345         INDIRECT_E      self,   _parent,        temp_1;
1346         INDIRECT_S      temp_1, target, temp_1;
1347         STOREP_S        temp_1, temp_0;
1348         DONE;
1349 }
1350
1351 float (float, float) Nex_Global_Key;
1352 float(float pKey, float pAscii) Nex_Global_Key = asm
1353 {
1354 local float temp_0;
1355         GOTO            17;
1356         STORE_F FILE_APPEND,    parm0_x;
1357         CALL1           Menu_SelectPrev;
1358         GOTO            37;
1359         STORE_F FILE_APPEND,    parm0_x;
1360         CALL1           Menu_SelectNext;
1361         GOTO            34;
1362         STORE_F FILE_APPEND,    parm0_x;
1363         CALL1           Menu_SelectUp;
1364         GOTO            31;
1365         STORE_F FILE_APPEND,    parm0_x;
1366         CALL1           Menu_SelectDown;
1367         IF              return_x,       3;
1368         STORE_F ITEM_SOUND_NOSELECT,    parm0_x;
1369         CALL1           Sound_Play;
1370         GOTO            25;
1371         GOTO            24;
1372         EQ_F            pKey,   K_UPARROW,      temp_0;
1373         IF              temp_0, -17;
1374         EQ_F            pKey,   K_KP_UPARROW,   temp_0;
1375         IF              temp_0, -19;
1376         EQ_F            pKey,   K_LEFTARROW,    temp_0;
1377         IF              temp_0, -21;
1378         EQ_F            pKey,   K_KP_LEFTARROW, temp_0;
1379         IF              temp_0, -23;
1380         EQ_F            pKey,   K_DOWNARROW,    temp_0;
1381         IF              temp_0, -22;
1382         EQ_F            pKey,   K_KP_DOWNARROW, temp_0;
1383         IF              temp_0, -24;
1384         EQ_F            pKey,   K_RIGHTARROW,   temp_0;
1385         IF              temp_0, -26;
1386         EQ_F            pKey,   K_KP_RIGHTARROW,        temp_0;
1387         IF              temp_0, -28;
1388         EQ_F            pKey,   K_ESCAPE,       temp_0;
1389         IF              temp_0, -27;
1390         EQ_F            pKey,   K_MOUSE2,       temp_0;
1391         IF              temp_0, -29;
1392         EQ_F            pKey,   K_ENTER,        temp_0;
1393         IF              temp_0, -28;
1394         GOTO            -23;
1395         RETURN  FILE_APPEND;
1396         DONE;
1397 }
1398
1399 void () Item_Nex_StressRepeat_Spawn;
1400 void() Item_Nex_StressRepeat_Spawn = asm
1401 {
1402 local float locked_1020;
1403 local float lCounter;
1404 local entity lItem;
1405 local float temp_1;
1406         ADDRESS self,   flag,   locked_1020;
1407         INDIRECT_F      self,   flag,   temp_1;
1408         BITOR           temp_1, FLAG_EMBEDDED,  temp_1;
1409         STOREP_F        temp_1, locked_1020;
1410         STORE_F KEY_GAME,       lCounter;
1411         LT              lCounter,       100.000000,     locked_1020;
1412         IFNOT           locked_1020,    14;
1413         INDIRECT_E      self,   _child, locked_1020;
1414         STORE_F lCounter,       parm0_x;
1415         CALL1           ftos;
1416         INDIRECT_E      self,   _parent,        temp_1;
1417         INDIRECT_S      temp_1, name,   temp_1;
1418         STORE_F locked_1020,    parm0_x;
1419         STORE_F return_x,       parm1_x;
1420         STORE_F temp_1, parm2_x;
1421         STORE_F FILE_APPEND,    parm3_x;
1422         CALL4           Menu_DeriveItem;
1423         STORE_ENT       return_x,       lItem;
1424         ADD_F           lCounter,       FILE_APPEND,    lCounter;
1425         GOTO            -14;
1426         DONE;
1427 }
1428
1429 void () Nex_Action_MakeOnlyVisible_Destroy;
1430 void() Nex_Action_MakeOnlyVisible_Destroy = asm
1431 {
1432         STORE_F self,   parm0_x;
1433         STORE_F target, parm1_x;
1434         CALL2           String_EntityFree;
1435         DONE;
1436 }
1437
1438 void () Nex_Action_MakeOnlyVisible_Action;
1439 void() Nex_Action_MakeOnlyVisible_Action = asm
1440 {
1441 local float temp_0;
1442         INDIRECT_S      self,   target, parm0_x;
1443         CALL1           Menu_GetItem;
1444         STORE_F return_x,       parm0_x;
1445         CALL1           Nex_MakeOnlyVisible;
1446         DONE;
1447 }
1448
1449 void () Nex_Action_MakeOnlyVisible;
1450 void() Nex_Action_MakeOnlyVisible = asm
1451 {
1452 local float temp_0;
1453         STORE_F self,   parm0_x;
1454         STORE_F target, parm1_x;
1455         CALL2           String_EntityZone;
1456         ADDRESS self,   destroy,        temp_0;
1457         STOREP_FNC      Nex_Action_MakeOnlyVisible_Destroy,     temp_0;
1458         ADDRESS self,   action, temp_0;
1459         STOREP_FNC      Nex_Action_MakeOnlyVisible_Action,      temp_0;
1460         DONE;
1461 }
1462
1463 void () Nex_Action_MakeFirstVisible;
1464 void() Nex_Action_MakeFirstVisible = asm
1465 {
1466 local float temp_0;
1467         INDIRECT_E      self,   _child, parm0_x;
1468         CALL1           Nex_MakeOnlyVisible;
1469         DONE;
1470 }
1471
1472 void () Nex_Action_JumpToPage_Destroy;
1473 void() Nex_Action_JumpToPage_Destroy = asm
1474 {
1475         STORE_F self,   parm0_x;
1476         STORE_F target, parm1_x;
1477         CALL2           String_EntityFree;
1478         DONE;
1479 }
1480
1481 void () Nex_Action_JumpToPage_Action;
1482 void() Nex_Action_JumpToPage_Action = asm
1483 {
1484 local entity lItem;
1485 local float temp_0;
1486         INDIRECT_S      self,   target, parm0_x;
1487         CALL1           Menu_GetItem;
1488         STORE_ENT       return_x,       lItem;
1489         STORE_F lItem,  parm0_x;
1490         CALL1           Nex_MakeOnlyVisible;
1491         STORE_F lItem,  parm0_x;
1492         STORE_F KEY_GAME,       parm1_x;
1493         STORE_F KEY_GAME,       parm2_x;
1494         CALL3           Menu_JumpToWindow;
1495         DONE;
1496 }
1497
1498 void () Nex_Action_JumpToPage;
1499 void() Nex_Action_JumpToPage = asm
1500 {
1501 local float temp_0;
1502         STORE_F self,   parm0_x;
1503         STORE_F target, parm1_x;
1504         CALL2           String_EntityZone;
1505         ADDRESS self,   action, temp_0;
1506         STOREP_FNC      Nex_Action_JumpToPage_Action,   temp_0;
1507         ADDRESS self,   destroy,        temp_0;
1508         STOREP_FNC      Nex_Action_JumpToPage_Destroy,  temp_0;
1509         DONE;
1510 }
1511
1512 void () Nex_Action_SetNormalPanelLink_Destroy;
1513 void() Nex_Action_SetNormalPanelLink_Destroy = asm
1514 {
1515         STORE_F self,   parm0_x;
1516         STORE_F target, parm1_x;
1517         CALL2           String_EntityFree;
1518         DONE;
1519 }
1520
1521 void () Nex_Action_SetNormalPanelLink_Action;
1522 void() Nex_Action_SetNormalPanelLink_Action = asm
1523 {
1524 local entity lItem;
1525 local float temp_0;
1526         STORE_F "Normal::Panel",        parm0_x;
1527         CALL1           Menu_GetItem;
1528         STORE_ENT       return_x,       lItem;
1529         INDIRECT_S      self,   target, temp_0;
1530         STORE_F lItem,  parm0_x;
1531         STORE_F link,   parm1_x;
1532         STORE_F temp_0, parm2_x;
1533         CALL3           String_EntitySet;
1534         STORE_F lItem,  parm0_x;
1535         CALL1           Raise_Update;
1536         CALL0           Menu_UpdateRunFlags;
1537         INDIRECT_E      lItem,  _link,  parm0_x;
1538         STORE_F KEY_GAME,       parm1_x;
1539         STORE_F KEY_GAME,       parm2_x;
1540         CALL3           Menu_JumpToWindow;
1541         DONE;
1542 }
1543
1544 void () Nex_Action_SetNormalPanelLink;
1545 void() Nex_Action_SetNormalPanelLink = asm
1546 {
1547 local float temp_0;
1548         STORE_F self,   parm0_x;
1549         STORE_F target, parm1_x;
1550         CALL2           String_EntityZone;
1551         ADDRESS self,   destroy,        temp_0;
1552         STOREP_FNC      Nex_Action_SetNormalPanelLink_Destroy,  temp_0;
1553         ADDRESS self,   action, temp_0;
1554         STOREP_FNC      Nex_Action_SetNormalPanelLink_Action,   temp_0;
1555         DONE;
1556 }
1557
1558 void () Nex_Action_SetLinkOnReinit_Destroy;
1559 void() Nex_Action_SetLinkOnReinit_Destroy = asm
1560 {
1561         STORE_F self,   parm0_x;
1562         STORE_F target, parm1_x;
1563         CALL2           String_EntityFree;
1564         DONE;
1565 }
1566
1567 void () Nex_Action_SetLinkOnReinitk_Reinit;
1568 void() Nex_Action_SetLinkOnReinitk_Reinit = asm
1569 {
1570 local float temp_0;
1571         STORE_F "Normal::Panel",        parm0_x;
1572         CALL1           Menu_GetItem;
1573         INDIRECT_S      self,   target, temp_0;
1574         STORE_F return_x,       parm0_x;
1575         STORE_F link,   parm1_x;
1576         STORE_F temp_0, parm2_x;
1577         CALL3           String_EntitySet;
1578         DONE;
1579 }
1580
1581 void () Nex_Action_SetLinkOnReinit;
1582 void() Nex_Action_SetLinkOnReinit = asm
1583 {
1584 local float temp_0;
1585         STORE_F self,   parm0_x;
1586         STORE_F target, parm1_x;
1587         CALL2           String_EntityZone;
1588         ADDRESS self,   destroy,        temp_0;
1589         STOREP_FNC      Nex_Action_SetLinkOnReinit_Destroy,     temp_0;
1590         ADDRESS self,   reinit, temp_0;
1591         STOREP_FNC      Nex_Action_SetLinkOnReinitk_Reinit,     temp_0;
1592         DONE;
1593 }
1594
1595 void () Nex_Action_Color_Cancel;
1596 void() Nex_Action_Color_Cancel = asm
1597 {
1598         STORE_F "::Data::Color",        parm0_x;
1599         CALL1           Menu_GetItem;
1600         STORE_F return_x,       parm0_x;
1601         STORE_F ITEM_DATA_TEST_END,     parm1_x;
1602         CALL2           Raise_DataEvent;
1603         DONE;
1604 }
1605
1606 void () Nex_Action_Color_Reset;
1607 void() Nex_Action_Color_Reset = asm
1608 {
1609         STORE_F "::Data::Color",        parm0_x;
1610         CALL1           Menu_GetItem;
1611         STORE_F return_x,       parm0_x;
1612         STORE_F ITEM_DATA_RESET,        parm1_x;
1613         CALL2           Raise_DataEvent;
1614         DONE;
1615 }
1616
1617 void () Nex_Automation_UpdateAvatar_Update;
1618 void() Nex_Automation_UpdateAvatar_Update = asm
1619 {
1620 local float locked_1020;
1621 local entity lTarget;
1622 local entity lItem;
1623         INDIRECT_E      self,   _target,        locked_1020;
1624         INDIRECT_S      locked_1020,    name,   locked_1020;
1625         NE_S            locked_1020,    "Data::Player::Avatar", locked_1020;
1626         IFNOT           locked_1020,    5;
1627         ADDRESS self,   _target,        locked_1020;
1628         STORE_F "Data::Player::Avatar", parm0_x;
1629         CALL1           Menu_GetItem;
1630         STOREP_ENT      return_x,       locked_1020;
1631         INDIRECT_E      self,   _target,        lTarget;
1632         STORE_F "Picture",      parm0_x;
1633         CALL1           Menu_GetItem;
1634         STORE_ENT       return_x,       lItem;
1635         INDIRECT_E      lTarget,        _link,  locked_1020;
1636         INDIRECT_S      locked_1020,    picture,        locked_1020;
1637         STORE_F lItem,  parm0_x;
1638         STORE_F picture,        parm1_x;
1639         STORE_F locked_1020,    parm2_x;
1640         CALL3           String_EntitySet;
1641         STORE_F "Name", parm0_x;
1642         CALL1           Menu_GetItem;
1643         STORE_ENT       return_x,       lItem;
1644         INDIRECT_E      lTarget,        _link,  locked_1020;
1645         INDIRECT_S      locked_1020,    normal, locked_1020;
1646         STORE_F lItem,  parm0_x;
1647         STORE_F text,   parm1_x;
1648         STORE_F locked_1020,    parm2_x;
1649         CALL3           String_EntitySet;
1650         STORE_F "Description",  parm0_x;
1651         CALL1           Menu_GetItem;
1652         STORE_ENT       return_x,       lItem;
1653         INDIRECT_E      lTarget,        _link,  locked_1020;
1654         INDIRECT_S      locked_1020,    text,   locked_1020;
1655         STORE_F lItem,  parm0_x;
1656         STORE_F text,   parm1_x;
1657         STORE_F locked_1020,    parm2_x;
1658         CALL3           String_EntitySet;
1659         DONE;
1660 }
1661
1662 void () Nex_Automation_UpdateAvatar_Destroy;
1663 void() Nex_Automation_UpdateAvatar_Destroy = asm
1664 {
1665         STORE_F self,   parm0_x;
1666         STORE_F target, parm1_x;
1667         CALL2           String_EntityFree;
1668         DONE;
1669 }
1670
1671 void () Nex_Automation_UpdateAvatar;
1672 void() Nex_Automation_UpdateAvatar = asm
1673 {
1674 local float temp_0;
1675         STORE_F self,   parm0_x;
1676         STORE_F target, parm1_x;
1677         CALL2           String_EntityZone;
1678         ADDRESS self,   _update,        temp_0;
1679         STOREP_FNC      Nex_Automation_UpdateAvatar_Update,     temp_0;
1680         ADDRESS self,   _destroy,       temp_0;
1681         STOREP_FNC      Nex_Automation_UpdateAvatar_Destroy,    temp_0;
1682         DONE;
1683 }
1684
1685 void () Nex_Action_Avatar_Next;
1686 void() Nex_Action_Avatar_Next = asm
1687 {
1688 local entity lItem;
1689 local float temp_0;
1690 local float temp_1;
1691         STORE_F "Data::Player::Avatar", parm0_x;
1692         CALL1           Menu_GetItem;
1693         STORE_ENT       return_x,       lItem;
1694         ADDRESS lItem,  _realValue,     temp_0;
1695         INDIRECT_F      lItem,  _realValue,     temp_1;
1696         ADD_F           temp_1, FILE_APPEND,    temp_1;
1697         STOREP_F        temp_1, temp_0;
1698         STORE_F lItem,  parm0_x;
1699         STORE_F ITEM_DATALINK_SET,      parm1_x;
1700         CALL2           Raise_DataEvent;
1701         DONE;
1702 }
1703
1704 void () Nex_Action_Avatar_Prev;
1705 void() Nex_Action_Avatar_Prev = asm
1706 {
1707 local entity lItem;
1708 local float temp_0;
1709 local float temp_1;
1710         STORE_F "Data::Player::Avatar", parm0_x;
1711         CALL1           Menu_GetItem;
1712         STORE_ENT       return_x,       lItem;
1713         ADDRESS lItem,  _realValue,     temp_0;
1714         INDIRECT_F      lItem,  _realValue,     temp_1;
1715         SUB_F           temp_1, FILE_APPEND,    temp_1;
1716         STOREP_F        temp_1, temp_0;
1717         STORE_F lItem,  parm0_x;
1718         STORE_F ITEM_DATALINK_SET,      parm1_x;
1719         CALL2           Raise_DataEvent;
1720         DONE;
1721 }
1722
1723 void () Nex_Action_Player_Apply;
1724 void() Nex_Action_Player_Apply = asm
1725 {
1726 local entity lItem;
1727         STORE_F "Data::Player", parm0_x;
1728         CALL1           Menu_GetItem;
1729         STORE_ENT       return_x,       lItem;
1730         STORE_F lItem,  parm0_x;
1731         STORE_F ITEM_DATA_SEND, parm1_x;
1732         CALL2           Raise_DataEvent;
1733         DONE;
1734 }
1735
1736 void () Nex_Action_TestOnChange;
1737 void() Nex_Action_TestOnChange = asm
1738 {
1739 local float temp_0;
1740         INDIRECT_E      self,   _target,        parm0_x;
1741         STORE_F ITEM_DATA_TEST_START,   parm1_x;
1742         CALL2           Raise_DataEvent;
1743         DONE;
1744 }
1745
1746 void (float, float) Nex_Action_TestOnSelect;
1747 void(float pSelect, float pUser) Nex_Action_TestOnSelect = asm
1748 {
1749 local float temp_0;
1750         NOT_F           pSelect,        temp_0;
1751         IFNOT           temp_0, 1;
1752         AND             temp_0, pUser,  temp_0;
1753         IFNOT           temp_0, 4;
1754         INDIRECT_E      self,   _target,        parm0_x;
1755         STORE_F ITEM_DATA_TEST_START,   parm1_x;
1756         CALL2           Raise_DataEvent;
1757         DONE;
1758 }
1759
1760 void () Nex_Action_PlaySound;
1761 string string_null;
1762 void() Nex_Action_PlaySound = asm
1763 {
1764 local float temp_0;
1765         INDIRECT_S      self,   target, temp_0;
1766         NE_S            temp_0, string_null,    temp_0;
1767         IFNOT           temp_0, 3;
1768         INDIRECT_S      self,   target, parm0_x;
1769         CALL1           Sound_Play;
1770         DONE;
1771 }
1772
1773 void () Nex_Action_PlaySoundOnce;
1774 void() Nex_Action_PlaySoundOnce = asm
1775 {
1776 local float temp_0;
1777         INDIRECT_S      self,   target, temp_0;
1778         NE_S            temp_0, string_null,    temp_0;
1779         IFNOT           temp_0, 3;
1780         INDIRECT_S      self,   target, parm0_x;
1781         CALL1           Sound_Play;
1782         STORE_F self,   parm0_x;
1783         CALL1           Menu_DeleteAfterToggle;
1784         DONE;
1785 }
1786
1787 void () Nex_MapSelector_UpdateMap;
1788 void() Nex_MapSelector_UpdateMap = asm
1789 {
1790 local float lIndex;
1791 local entity lSelector;
1792 local entity lItem;
1793 local entity lInfo;
1794 local float temp_0;
1795 local float temp_1;
1796         STORE_F "::Data::Server::Map::Selector",        parm0_x;
1797         CALL1           Menu_GetItem;
1798         STORE_ENT       return_x,       lSelector;
1799         STORE_F lSelector,      parm0_x;
1800         STORE_F ITEM_DATALINK_GET,      parm1_x;
1801         CALL2           Raise_DataEvent;
1802         INDIRECT_F      lSelector,      _realValue,     lIndex;
1803         STORE_F lIndex, parm0_x;
1804         CALL1           Nex_MapDB_GetByIndex;
1805         STORE_ENT       return_x,       lInfo;
1806         INDIRECT_F      self,   minValue,       temp_0;
1807         NE_F            lIndex, temp_0, temp_0;
1808         IFNOT           temp_0, 27;
1809         ADDRESS self,   minValue,       temp_0;
1810         STOREP_F        lIndex, temp_0;
1811         STORE_F "Picture",      parm0_x;
1812         CALL1           Menu_GetItem;
1813         STORE_ENT       return_x,       lItem;
1814         INDIRECT_S      lInfo,  picture,        temp_0;
1815         STORE_F lItem,  parm0_x;
1816         STORE_F picture,        parm1_x;
1817         STORE_F temp_0, parm2_x;
1818         CALL3           String_EntitySet;
1819         STORE_F "Name", parm0_x;
1820         CALL1           Menu_GetItem;
1821         STORE_ENT       return_x,       lItem;
1822         INDIRECT_S      lInfo,  normal, temp_0;
1823         STORE_F lItem,  parm0_x;
1824         STORE_F text,   parm1_x;
1825         STORE_F temp_0, parm2_x;
1826         CALL3           String_EntitySet;
1827         STORE_F "Description",  parm0_x;
1828         CALL1           Menu_GetItem;
1829         STORE_ENT       return_x,       lItem;
1830         INDIRECT_S      lInfo,  text,   temp_0;
1831         STORE_F lItem,  parm0_x;
1832         STORE_F text,   parm1_x;
1833         STORE_F temp_0, parm2_x;
1834         CALL3           String_EntitySet;
1835         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
1836         CALL1           Menu_GetItem;
1837         STORE_ENT       return_x,       lItem;
1838         INDIRECT_S      lInfo,  normal, temp_0;
1839         INDIRECT_S      lInfo,  link,   temp_1;
1840         STORE_F lItem,  parm0_x;
1841         STORE_F temp_0, parm1_x;
1842         STORE_F temp_1, parm2_x;
1843         CALL3           DataLink_Nex_MapList_SetFirst;
1844         DONE;
1845 }
1846
1847 void () Nex_MapSelector_Synchronize;
1848 void() Nex_MapSelector_Synchronize = asm
1849 {
1850 local float locked_1020;
1851 local entity lMapInfo;
1852 local string lPath;
1853 local entity lSelector;
1854 local entity lCycle;
1855         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
1856         CALL1           Menu_GetItem;
1857         STORE_ENT       return_x,       lCycle;
1858         STORE_F "::Data::Server::Map::Selector",        parm0_x;
1859         CALL1           Menu_GetItem;
1860         STORE_ENT       return_x,       lSelector;
1861         INDIRECT_F      lCycle, stepValue,      locked_1020;
1862         EQ_F            locked_1020,    KEY_GAME,       locked_1020;
1863         IFNOT           locked_1020,    5;
1864         STORE_F lCycle, parm0_x;
1865         STORE_F ITEM_DATA_RESET,        parm1_x;
1866         CALL2           Raise_DataEvent;
1867         GOTO            23;
1868         INDIRECT_S      lCycle, valueList,      parm0_x;
1869         STORE_F KEY_GAME,       parm1_x;
1870         CALL2           Util_GetAltStringItem;
1871         STORE_S return_x,       lPath;
1872         STORE_F lPath,  parm0_x;
1873         CALL1           Nex_MapDB_GetByPath;
1874         STORE_ENT       return_x,       lMapInfo;
1875         STORE_F lPath,  parm0_x;
1876         CALL1           String_Free;
1877         EQ_E            lMapInfo,       null_entity,    locked_1020;
1878         IFNOT           locked_1020,    5;
1879         STORE_F lCycle, parm0_x;
1880         STORE_F ITEM_DATA_RESET,        parm1_x;
1881         CALL2           Raise_DataEvent;
1882         GOTO            8;
1883         ADDRESS lSelector,      _realValue,     locked_1020;
1884         STORE_F lMapInfo,       parm0_x;
1885         CALL1           Nex_MapDB_GetIndex;
1886         STOREP_F        return_x,       locked_1020;
1887         STORE_F lSelector,      parm0_x;
1888         STORE_F ITEM_DATALINK_SET,      parm1_x;
1889         CALL2           Raise_DataEvent;
1890         DONE;
1891 }
1892
1893 void () Nex_Action_MapSelector_Next;
1894 void() Nex_Action_MapSelector_Next = asm
1895 {
1896 local entity lItem;
1897 local float temp_0;
1898 local float temp_1;
1899         STORE_F "::Data::Server::Map::Selector",        parm0_x;
1900         CALL1           Menu_GetItem;
1901         STORE_ENT       return_x,       lItem;
1902         STORE_F lItem,  parm0_x;
1903         STORE_F ITEM_DATALINK_GET,      parm1_x;
1904         CALL2           Raise_DataEvent;
1905         ADDRESS lItem,  _realValue,     temp_0;
1906         INDIRECT_F      lItem,  _realValue,     temp_1;
1907         ADD_F           temp_1, FILE_APPEND,    temp_1;
1908         STOREP_F        temp_1, temp_0;
1909         STORE_F lItem,  parm0_x;
1910         STORE_F ITEM_DATALINK_SET,      parm1_x;
1911         CALL2           Raise_DataEvent;
1912         DONE;
1913 }
1914
1915 void () Nex_Action_MapSelector_Prev;
1916 void() Nex_Action_MapSelector_Prev = asm
1917 {
1918 local entity lItem;
1919 local float temp_0;
1920 local float temp_1;
1921         STORE_F "::Data::Server::Map::Selector",        parm0_x;
1922         CALL1           Menu_GetItem;
1923         STORE_ENT       return_x,       lItem;
1924         STORE_F lItem,  parm0_x;
1925         STORE_F ITEM_DATALINK_GET,      parm1_x;
1926         CALL2           Raise_DataEvent;
1927         ADDRESS lItem,  _realValue,     temp_0;
1928         INDIRECT_F      lItem,  _realValue,     temp_1;
1929         SUB_F           temp_1, FILE_APPEND,    temp_1;
1930         STOREP_F        temp_1, temp_0;
1931         STORE_F lItem,  parm0_x;
1932         STORE_F ITEM_DATALINK_SET,      parm1_x;
1933         CALL2           Raise_DataEvent;
1934         DONE;
1935 }
1936
1937 void () Nex_Action_Map_Start;
1938 void() Nex_Action_Map_Start = asm
1939 {
1940 local float lSkill;
1941 local float lNumBots;
1942 local entity lItem;
1943 local float temp_0;
1944         STORE_F "::Data::Server::NumBots",      parm0_x;
1945         CALL1           Menu_GetItem;
1946         STORE_ENT       return_x,       lItem;
1947         INDIRECT_S      lItem,  value,  parm0_x;
1948         CALL1           stof;
1949         STORE_F return_x,       lNumBots;
1950         STORE_F "::Data::Server::BotSkill",     parm0_x;
1951         CALL1           Menu_GetItem;
1952         STORE_ENT       return_x,       lItem;
1953         INDIRECT_S      lItem,  value,  parm0_x;
1954         CALL1           stof;
1955         STORE_F return_x,       lSkill;
1956         STORE_F "saved1",       parm0_x;
1957         STORE_F "1",    parm1_x;
1958         CALL2           cvar_set;
1959         STORE_F KEY_MENU,       parm0_x;
1960         STORE_F lNumBots,       parm1_x;
1961         CALL2           pow;
1962         SUB_F           return_x,       FILE_APPEND,    parm0_x;
1963         CALL1           ftos;
1964         STORE_F "scratch1",     parm0_x;
1965         STORE_F return_x,       parm1_x;
1966         CALL2           cvar_set;
1967         STORE_F lNumBots,       parm0_x;
1968         STORE_F 8.000000,       parm1_x;
1969         CALL2           min;
1970         STORE_F CVAR_READONLY,  parm0_x;
1971         STORE_F return_x,       parm1_x;
1972         CALL2           pow;
1973         SUB_F           return_x,       FILE_APPEND,    temp_0;
1974         MUL_F           lSkill, temp_0, temp_0;
1975         DIV_F           temp_0, KEY_UNKNOWN,    parm0_x;
1976         CALL1           ftos;
1977         STORE_F "scratch2",     parm0_x;
1978         STORE_F return_x,       parm1_x;
1979         CALL2           cvar_set;
1980         SUB_F           lNumBots,       8.000000,       parm0_x;
1981         STORE_F 8.000000,       parm1_x;
1982         CALL2           min;
1983         STORE_F CVAR_READONLY,  parm0_x;
1984         STORE_F return_x,       parm1_x;
1985         CALL2           pow;
1986         SUB_F           return_x,       FILE_APPEND,    temp_0;
1987         MUL_F           lSkill, temp_0, temp_0;
1988         DIV_F           temp_0, KEY_UNKNOWN,    parm0_x;
1989         CALL1           ftos;
1990         STORE_F "scratch3",     parm0_x;
1991         STORE_F return_x,       parm1_x;
1992         CALL2           cvar_set;
1993         STORE_F "::Data::Server::MaxPlayers",   parm0_x;
1994         CALL1           Menu_GetItem;
1995         STORE_ENT       return_x,       lItem;
1996         STORE_F "maxplayers "", parm0_x;
1997         CALL1           cmd;
1998         INDIRECT_S      lItem,  value,  parm0_x;
1999         CALL1           cmd;
2000         STORE_F ""
2001 ",      parm0_x;
2002         CALL1           cmd;
2003         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2004         CALL1           Menu_GetItem;
2005         STORE_ENT       return_x,       lItem;
2006         STORE_F "map "",        parm0_x;
2007         CALL1           cmd;
2008         INDIRECT_S      lItem,  valueList,      parm0_x;
2009         STORE_F KEY_GAME,       parm1_x;
2010         CALL2           Util_GetAltStringItem;
2011         STORE_F return_x,       parm0_x;
2012         CALL1           String_Normal;
2013         STORE_F return_x,       parm0_x;
2014         CALL1           cmd;
2015         STORE_F ""
2016 ",      parm0_x;
2017         CALL1           cmd;
2018         STORE_F lItem,  parm0_x;
2019         STORE_F ITEM_DATA_SEND, parm1_x;
2020         CALL2           Raise_DataEvent;
2021         CALL0           m_hide;
2022         DONE;
2023 }
2024
2025 void () Nex_Action_Cycle_Add;
2026 void() Nex_Action_Cycle_Add = asm
2027 {
2028 local string lName;
2029 local string lPath;
2030 local entity lCycle;
2031 local entity lList;
2032 local float temp_0;
2033 local float temp_1;
2034         STORE_F "::Data::Server::Map::List",    parm0_x;
2035         CALL1           Menu_GetItem;
2036         STORE_ENT       return_x,       lList;
2037         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2038         CALL1           Menu_GetItem;
2039         STORE_ENT       return_x,       lCycle;
2040         STORE_F lList,  parm0_x;
2041         CALL1           DataLink_Nex_MapList_GetCurrentName;
2042         STORE_S return_x,       lName;
2043         STORE_F lList,  parm0_x;
2044         CALL1           DataLink_Nex_MapList_GetCurrentPath;
2045         STORE_S return_x,       lPath;
2046         INDIRECT_F      lCycle, stepValue,      temp_0;
2047         EQ_F            temp_0, FILE_APPEND,    temp_0;
2048         IFNOT           temp_0, 6;
2049         STORE_F lCycle, parm0_x;
2050         STORE_F lName,  parm1_x;
2051         STORE_F lPath,  parm2_x;
2052         CALL3           DataLink_Nex_MapList_InsertEntryAfter;
2053         GOTO            5;
2054         STORE_F lCycle, parm0_x;
2055         STORE_F lName,  parm1_x;
2056         STORE_F lPath,  parm2_x;
2057         CALL3           DataLink_Nex_MapList_SetFirst;
2058         STORE_F lName,  parm0_x;
2059         CALL1           String_Free;
2060         STORE_F lPath,  parm0_x;
2061         CALL1           String_Free;
2062         ADDRESS lCycle, _realValue,     temp_0;
2063         INDIRECT_F      lCycle, _realValue,     temp_1;
2064         ADD_F           temp_1, FILE_APPEND,    temp_1;
2065         STOREP_F        temp_1, temp_0;
2066         STORE_F lCycle, parm0_x;
2067         STORE_F ITEM_DATALINK_SET,      parm1_x;
2068         CALL2           Raise_DataEvent;
2069         CALL0           Nex_MapSelector_Synchronize;
2070         DONE;
2071 }
2072
2073 void () Nex_Action_Cycle_Remove;
2074 void() Nex_Action_Cycle_Remove = asm
2075 {
2076 local entity lCycle;
2077         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2078         CALL1           Menu_GetItem;
2079         STORE_ENT       return_x,       lCycle;
2080         STORE_F lCycle, parm0_x;
2081         CALL1           DataLink_Nex_MapList_DeleteEntry;
2082         CALL0           Nex_MapSelector_Synchronize;
2083         DONE;
2084 }
2085
2086 void () Nex_Action_Cycle_MoveUp;
2087 void() Nex_Action_Cycle_MoveUp = asm
2088 {
2089 local entity lCycle;
2090 local float temp_0;
2091 local float temp_1;
2092         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2093         CALL1           Menu_GetItem;
2094         STORE_ENT       return_x,       lCycle;
2095         STORE_F lCycle, parm0_x;
2096         CALL1           DataLink_Nex_MapList_MoveEntryUp;
2097         ADDRESS lCycle, _realValue,     temp_0;
2098         INDIRECT_F      lCycle, _realValue,     temp_1;
2099         SUB_F           temp_1, FILE_APPEND,    temp_1;
2100         STOREP_F        temp_1, temp_0;
2101         STORE_F lCycle, parm0_x;
2102         STORE_F ITEM_DATALINK_SET,      parm1_x;
2103         CALL2           Raise_DataEvent;
2104         CALL0           Nex_MapSelector_Synchronize;
2105         DONE;
2106 }
2107
2108 void () Nex_Action_Cycle_MoveDown;
2109 void() Nex_Action_Cycle_MoveDown = asm
2110 {
2111 local entity lCycle;
2112 local float temp_0;
2113 local float temp_1;
2114         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2115         CALL1           Menu_GetItem;
2116         STORE_ENT       return_x,       lCycle;
2117         STORE_F lCycle, parm0_x;
2118         CALL1           DataLink_Nex_MapList_MoveEntryDown;
2119         ADDRESS lCycle, _realValue,     temp_0;
2120         INDIRECT_F      lCycle, _realValue,     temp_1;
2121         ADD_F           temp_1, FILE_APPEND,    temp_1;
2122         STOREP_F        temp_1, temp_0;
2123         STORE_F lCycle, parm0_x;
2124         STORE_F ITEM_DATALINK_SET,      parm1_x;
2125         CALL2           Raise_DataEvent;
2126         CALL0           Nex_MapSelector_Synchronize;
2127         DONE;
2128 }
2129
2130 void () Nex_Action_Cycle_Clear;
2131 void() Nex_Action_Cycle_Clear = asm
2132 {
2133 local entity lCycle;
2134         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2135         CALL1           Menu_GetItem;
2136         STORE_ENT       return_x,       lCycle;
2137         STORE_F lCycle, parm0_x;
2138         CALL1           DataLink_Nex_MapList_Clear;
2139         CALL0           Nex_MapSelector_Synchronize;
2140         DONE;
2141 }
2142
2143 entity (float) Nex_Management_GetFileList;
2144 entity(float pType) Nex_Management_GetFileList = asm
2145 {
2146 local float temp_0;
2147         GOTO            10;
2148         STORE_F "::Data::Management::FileList::Weapon", parm0_x;
2149         CALL1           Menu_GetItem;
2150         RETURN  return_x;
2151         STORE_F "::Data::Management::FileList::Game",   parm0_x;
2152         CALL1           Menu_GetItem;
2153         RETURN  return_x;
2154         STORE_F "::Data::Management::FileList::MapList",        parm0_x;
2155         CALL1           Menu_GetItem;
2156         RETURN  return_x;
2157         IFNOT           pType,  -9;
2158         EQ_F            pType,  FILE_APPEND,    temp_0;
2159         IF              temp_0, -8;
2160         EQ_F            pType,  KEY_MENU,       temp_0;
2161         IF              temp_0, -7;
2162         CALL0           crash;
2163         RETURN  null_entity;
2164         DONE;
2165 }
2166
2167 entity (float) Nex_Management_GetContainer;
2168 entity(float pType) Nex_Management_GetContainer = asm
2169 {
2170 local float temp_0;
2171         GOTO            10;
2172         STORE_F "::Data::Weapon",       parm0_x;
2173         CALL1           Menu_GetItem;
2174         RETURN  return_x;
2175         STORE_F "::Data::Game", parm0_x;
2176         CALL1           Menu_GetItem;
2177         RETURN  return_x;
2178         STORE_F "::Data::Server::Map::Cycle",   parm0_x;
2179         CALL1           Menu_GetItem;
2180         RETURN  return_x;
2181         IFNOT           pType,  -9;
2182         EQ_F            pType,  FILE_APPEND,    temp_0;
2183         IF              temp_0, -8;
2184         EQ_F            pType,  KEY_MENU,       temp_0;
2185         IF              temp_0, -7;
2186         CALL0           crash;
2187         RETURN  null_entity;
2188         DONE;
2189 }
2190
2191 float () Nex_Management_GetType;
2192 float() Nex_Management_GetType = asm
2193 {
2194 local entity lTypeData;
2195 local float temp_0;
2196         STORE_F "::Data::Management::ConfigType",       parm0_x;
2197         CALL1           Menu_GetItem;
2198         STORE_ENT       return_x,       lTypeData;
2199         INDIRECT_S      lTypeData,      value,  parm0_x;
2200         CALL1           stof;
2201         RETURN  return_x;
2202         DONE;
2203 }
2204
2205 void (float) Nex_Management_SetType;
2206 void(float pType) Nex_Management_SetType = asm
2207 {
2208 local entity lTypeData;
2209 local entity lList;
2210 local entity lItem;
2211 local float temp_0;
2212         STORE_F "::Data::Management::ConfigType",       parm0_x;
2213         CALL1           Menu_GetItem;
2214         STORE_ENT       return_x,       lTypeData;
2215         STORE_F pType,  parm0_x;
2216         CALL1           ftos;
2217         STORE_F lTypeData,      parm0_x;
2218         STORE_F value,  parm1_x;
2219         STORE_F return_x,       parm2_x;
2220         CALL3           String_EntitySet;
2221         STORE_F "FileList",     parm0_x;
2222         CALL1           Menu_GetItem;
2223         STORE_ENT       return_x,       lItem;
2224         STORE_F pType,  parm0_x;
2225         CALL1           Nex_Management_GetFileList;
2226         STORE_ENT       return_x,       lList;
2227         INDIRECT_S      lList,  name,   temp_0;
2228         STORE_F lItem,  parm0_x;
2229         STORE_F target, parm1_x;
2230         STORE_F temp_0, parm2_x;
2231         CALL3           String_EntitySet;
2232         DONE;
2233 }
2234
2235 void () Nex_Update_Management_SyncData;
2236 void() Nex_Update_Management_SyncData = asm
2237 {
2238 local float temp_0;
2239 local float temp_1;
2240         INDIRECT_F      self,   _realValue,     temp_0;
2241         LT              temp_0, Timer_Time,     temp_0;
2242         IFNOT           temp_0, 3;
2243         INDIRECT_F      self,   _realValue,     temp_1;
2244         GT              temp_1, KEY_GAME,       temp_1;
2245         AND             temp_0, temp_1, temp_0;
2246         IFNOT           temp_0, 9;
2247         CALL0           Nex_Management_GetType;
2248         STORE_F return_x,       parm0_x;
2249         CALL1           Nex_Management_GetContainer;
2250         STORE_F return_x,       parm0_x;
2251         STORE_F ITEM_DATA_SYNC, parm1_x;
2252         CALL2           Raise_DataEvent;
2253         ADDRESS self,   _realValue,     temp_0;
2254         STOREP_F        KEY_GAME,       temp_0;
2255         DONE;
2256 }
2257
2258 void () Nex_Action_Management_LoadConfig;
2259 void() Nex_Action_Management_LoadConfig = asm
2260 {
2261 local entity lSyncItem;
2262 local entity lFilenameData;
2263 local entity lFileList;
2264 local float temp_0;
2265 local float temp_1;
2266 local float temp_2;
2267         CALL0           Nex_Management_GetType;
2268         STORE_F return_x,       parm0_x;
2269         CALL1           Nex_Management_GetFileList;
2270         STORE_ENT       return_x,       lFileList;
2271         STORE_F "::Data::Management::Filename", parm0_x;
2272         CALL1           Menu_GetItem;
2273         STORE_ENT       return_x,       lFilenameData;
2274         INDIRECT_S      lFileList,      selected,       temp_1;
2275         INDIRECT_S      lFilenameData,  value,  temp_2;
2276         INDIRECT_S      lFileList,      normal, temp_0;
2277         STORE_F "exec "",       parm0_x;
2278         STORE_F temp_1, parm1_x;
2279         STORE_F "/",    parm2_x;
2280         STORE_F temp_2, parm3_x;
2281         STORE_F ".",    parm4_x;
2282         STORE_F temp_0, parm5_x;
2283         STORE_F ""
2284 ",      parm6_x;
2285         CALL7           strcat;
2286         STORE_F return_x,       parm0_x;
2287         CALL1           cmd;
2288         STORE_F "::Data::Management::SyncCategory",     parm0_x;
2289         CALL1           Menu_GetItem;
2290         STORE_ENT       return_x,       lSyncItem;
2291         ADDRESS lSyncItem,      _realValue,     temp_0;
2292         STOREP_F        Timer_Time,     temp_0;
2293         DONE;
2294 }
2295
2296 void () Nex_Action_Management_Load;
2297 void() Nex_Action_Management_Load = asm
2298 {
2299 local string lQuestion;
2300 local entity lItem;
2301 local float temp_0;
2302         STORE_F "::Data::Management::Filename", parm0_x;
2303         CALL1           Menu_GetItem;
2304         STORE_ENT       return_x,       lItem;
2305         INDIRECT_S      lItem,  value,  temp_0;
2306         EQ_S            temp_0, "",     temp_0;
2307         IFNOT           temp_0, 9;
2308         STORE_F "Loading",      parm0_x;
2309         STORE_F "You must specify a filename!", parm1_x;
2310         STORE_F "Ok",   parm2_x;
2311         STORE_F "",     parm3_x;
2312         STORE_F Util_NullFunction,      parm4_x;
2313         STORE_F Util_NullFunction,      parm5_x;
2314         CALL6           Nex_MessageBox;
2315         RETURN  offset_0;
2316         INDIRECT_S      lItem,  value,  temp_0;
2317         STORE_F "Do you want to load '",        parm0_x;
2318         STORE_F temp_0, parm1_x;
2319         STORE_F "'?",   parm2_x;
2320         CALL3           strcat;
2321         STORE_F return_x,       parm0_x;
2322         CALL1           String_Zone;
2323         STORE_S return_x,       lQuestion;
2324         STORE_F "Loading",      parm0_x;
2325         STORE_F lQuestion,      parm1_x;
2326         STORE_F "Yes",  parm2_x;
2327         STORE_F "No",   parm3_x;
2328         STORE_F Nex_Action_Management_LoadConfig,       parm4_x;
2329         STORE_F Util_NullFunction,      parm5_x;
2330         CALL6           Nex_MessageBox;
2331         STORE_F lQuestion,      parm0_x;
2332         CALL1           String_Free;
2333         DONE;
2334 }
2335
2336 void () Nex_Action_Management_SaveConfig;
2337 void() Nex_Action_Management_SaveConfig = asm
2338 {
2339 local float lHandle;
2340 local entity lContainer;
2341 local entity lFilename;
2342 local entity lFileList;
2343 local float lType;
2344 local float temp_0;
2345 local float temp_1;
2346 local float temp_2;
2347         CALL0           Nex_Management_GetType;
2348         STORE_F return_x,       lType;
2349         STORE_F lType,  parm0_x;
2350         CALL1           Nex_Management_GetFileList;
2351         STORE_ENT       return_x,       lFileList;
2352         STORE_F lType,  parm0_x;
2353         CALL1           Nex_Management_GetContainer;
2354         STORE_ENT       return_x,       lContainer;
2355         STORE_F "::Data::Management::Filename", parm0_x;
2356         CALL1           Menu_GetItem;
2357         STORE_ENT       return_x,       lFilename;
2358         INDIRECT_S      lFilename,      value,  temp_0;
2359         EQ_S            temp_0, "",     temp_0;
2360         IFNOT           temp_0, 9;
2361         STORE_F "Loading",      parm0_x;
2362         STORE_F "You must specify a filename!", parm1_x;
2363         STORE_F "Ok",   parm2_x;
2364         STORE_F "",     parm3_x;
2365         STORE_F Util_NullFunction,      parm4_x;
2366         STORE_F Util_NullFunction,      parm5_x;
2367         CALL6           Nex_MessageBox;
2368         RETURN  offset_0;
2369         INDIRECT_S      lFileList,      selected,       temp_0;
2370         INDIRECT_S      lFilename,      value,  temp_1;
2371         INDIRECT_S      lFileList,      normal, temp_2;
2372         STORE_F temp_0, parm0_x;
2373         STORE_F "/",    parm1_x;
2374         STORE_F temp_1, parm2_x;
2375         STORE_F ".",    parm3_x;
2376         STORE_F temp_2, parm4_x;
2377         CALL5           strcat;
2378         STORE_F return_x,       parm0_x;
2379         STORE_F KEY_MENU,       parm1_x;
2380         CALL2           fopen;
2381         STORE_F return_x,       lHandle;
2382         LT              lHandle,        KEY_GAME,       temp_0;
2383         IFNOT           temp_0, 2;
2384         RETURN  offset_0;
2385         CALL0           Data_ExecString_BeginUse;
2386         STORE_F lContainer,     parm0_x;
2387         STORE_F ITEM_DATA_SAVE_EXECSTRING,      parm1_x;
2388         CALL2           Raise_DataEvent;
2389         STORE_F lHandle,        parm0_x;
2390         STORE_F Data_ExecString,        parm1_x;
2391         CALL2           fputs;
2392         CALL0           Data_ExecString_EndUse;
2393         STORE_F lHandle,        parm0_x;
2394         CALL1           fclose;
2395         DONE;
2396 }
2397
2398 void () Nex_Action_Management_Save;
2399 void() Nex_Action_Management_Save = asm
2400 {
2401 local string lQuestion;
2402 local float lHandle;
2403 local entity lFilename;
2404 local entity lFileList;
2405 local float temp_0;
2406 local float temp_1;
2407 local float temp_2;
2408         CALL0           Nex_Management_GetType;
2409         STORE_F return_x,       parm0_x;
2410         CALL1           Nex_Management_GetFileList;
2411         STORE_ENT       return_x,       lFileList;
2412         STORE_F "::Data::Management::Filename", parm0_x;
2413         CALL1           Menu_GetItem;
2414         STORE_ENT       return_x,       lFilename;
2415         INDIRECT_S      lFileList,      selected,       temp_0;
2416         INDIRECT_S      lFilename,      value,  temp_1;
2417         INDIRECT_S      lFileList,      normal, temp_2;
2418         STORE_F temp_0, parm0_x;
2419         STORE_F "/",    parm1_x;
2420         STORE_F temp_1, parm2_x;
2421         STORE_F ".",    parm3_x;
2422         STORE_F temp_2, parm4_x;
2423         CALL5           strcat;
2424         STORE_F return_x,       parm0_x;
2425         STORE_F KEY_GAME,       parm1_x;
2426         CALL2           fopen;
2427         STORE_F return_x,       lHandle;
2428         EQ_F            lHandle,        ERR_CANNOTOPEN, temp_0;
2429         IFNOT           temp_0, 5;
2430         CALL0           Nex_Action_Management_SaveConfig;
2431         STORE_F lHandle,        parm0_x;
2432         CALL1           fclose;
2433         GOTO            20;
2434         GT              lHandle,        KEY_GAME,       temp_0;
2435         IFNOT           temp_0, 18;
2436         INDIRECT_S      lFilename,      value,  temp_0;
2437         STORE_F "Do you want to overwrite '",   parm0_x;
2438         STORE_F temp_0, parm1_x;
2439         STORE_F "'?",   parm2_x;
2440         CALL3           strcat;
2441         STORE_F return_x,       parm0_x;
2442         CALL1           String_Zone;
2443         STORE_S return_x,       lQuestion;
2444         STORE_F "Saving",       parm0_x;
2445         STORE_F lQuestion,      parm1_x;
2446         STORE_F "Yes",  parm2_x;
2447         STORE_F "No",   parm3_x;
2448         STORE_F Nex_Action_Management_SaveConfig,       parm4_x;
2449         STORE_F Util_NullFunction,      parm5_x;
2450         CALL6           Nex_MessageBox;
2451         STORE_F lQuestion,      parm0_x;
2452         CALL1           String_Free;
2453         DONE;
2454 }
2455
2456 void () Nex_Action_Management_Refresh;
2457 void() Nex_Action_Management_Refresh = asm
2458 {
2459 local entity lItem;
2460         STORE_F "::Data::Management::FileList", parm0_x;
2461         CALL1           Menu_GetItem;
2462         STORE_ENT       return_x,       lItem;
2463         STORE_F lItem,  parm0_x;
2464         STORE_F ITEM_DATA_SYNC, parm1_x;
2465         CALL2           Raise_DataEvent;
2466         DONE;
2467 }
2468
2469 void () Nex_Action_Management_TypeWeapon;
2470 void() Nex_Action_Management_TypeWeapon = asm
2471 {
2472         STORE_F KEY_GAME,       parm0_x;
2473         CALL1           Nex_Management_SetType;
2474         DONE;
2475 }
2476
2477 void () Nex_Action_Management_TypeGame;
2478 void() Nex_Action_Management_TypeGame = asm
2479 {
2480         STORE_F FILE_APPEND,    parm0_x;
2481         CALL1           Nex_Management_SetType;
2482         DONE;
2483 }
2484
2485 void () Nex_Action_Management_TypeMapList;
2486 void() Nex_Action_Management_TypeMapList = asm
2487 {
2488         STORE_F KEY_MENU,       parm0_x;
2489         CALL1           Nex_Management_SetType;
2490         DONE;
2491 }
2492
2493 void () Nex_Automation_Key;
2494 void() Nex_Automation_Key = asm
2495 {
2496 local entity lLink2;
2497 local entity lLink1;
2498 local entity lAction;
2499 local float temp_0;
2500 local float temp_1;
2501         INDIRECT_E      self,   _parent,        temp_0;
2502         INDIRECT_S      temp_0, target, temp_0;
2503         NOT_S           temp_0, temp_0;
2504         IFNOT           temp_0, 8;
2505         INDIRECT_E      self,   _parent,        temp_0;
2506         INDIRECT_S      temp_0, target, temp_0;
2507         STORE_F "Bad target '", parm0_x;
2508         STORE_F temp_0, parm1_x;
2509         STORE_F "'",    parm2_x;
2510         CALL3           objerror;
2511         RETURN  offset_0;
2512         STORE_F "Action",       parm0_x;
2513         CALL1           Menu_GetItem;
2514         STORE_ENT       return_x,       lAction;
2515         STORE_F "Link1",        parm0_x;
2516         CALL1           Menu_GetItem;
2517         STORE_ENT       return_x,       lLink1;
2518         STORE_F "Link2",        parm0_x;
2519         CALL1           Menu_GetItem;
2520         STORE_ENT       return_x,       lLink2;
2521         ADDRESS lAction,        text,   temp_0;
2522         INDIRECT_E      self,   _parent,        temp_1;
2523         INDIRECT_S      temp_1, text,   temp_1;
2524         STOREP_S        temp_1, temp_0;
2525         ADDRESS lLink1, link,   temp_0;
2526         INDIRECT_E      self,   _parent,        temp_1;
2527         INDIRECT_S      temp_1, target, temp_1;
2528         STOREP_S        temp_1, temp_0;
2529         ADDRESS lLink2, link,   temp_0;
2530         INDIRECT_E      self,   _parent,        temp_1;
2531         INDIRECT_S      temp_1, target, temp_1;
2532         STOREP_S        temp_1, temp_0;
2533         DONE;
2534 }
2535
2536 void (float, float) Nex_Key_KeyHook;
2537 void(float pKey, float pAscii) Nex_Key_KeyHook = asm
2538 {
2539 local entity lItem;
2540 local float temp_0;
2541 local float temp_1;
2542         NE_F            pKey,   K_ESCAPE,       temp_0;
2543         IFNOT           temp_0, 13;
2544         STORE_F pKey,   parm0_x;
2545         CALL1           ftos;
2546         STORE_F Menu_KeyHook_Target,    parm0_x;
2547         STORE_F value,  parm1_x;
2548         STORE_F return_x,       parm2_x;
2549         CALL3           String_EntitySet;
2550         STORE_F Menu_KeyHook_Target,    parm0_x;
2551         STORE_F ITEM_DATALINK_SET,      parm1_x;
2552         CALL2           Raise_DataEvent;
2553         STORE_F Menu_KeyHook_Target,    parm0_x;
2554         STORE_F ITEM_DATA_TEST_START,   parm1_x;
2555         CALL2           Raise_DataEvent;
2556         STORE_F Menu_KeyHook_Target,    parm0_x;
2557         STORE_F "InfoWindow",   parm1_x;
2558         STORE_F FILE_APPEND,    parm2_x;
2559         CALL3           Menu_GetItemEx;
2560         STORE_ENT       return_x,       lItem;
2561         ADDRESS lItem,  flag,   temp_0;
2562         INDIRECT_F      lItem,  flag,   temp_1;
2563         BITOR           temp_1, FLAG_HIDDEN,    temp_1;
2564         STOREP_F        temp_1, temp_0;
2565         STORE_FNC       Util_NullFunction,      Menu_KeyHook;
2566         DONE;
2567 }
2568
2569 void () Nex_Action_KeyButton;
2570 void() Nex_Action_KeyButton = asm
2571 {
2572 local entity lItem;
2573 local float temp_0;
2574 local float temp_1;
2575 local float temp_2;
2576         INDIRECT_E      self,   _target,        temp_0;
2577         INDIRECT_E      temp_0, _link,  Menu_KeyHook_Target;
2578         STORE_FNC       Nex_Key_KeyHook,        Menu_KeyHook;
2579         STORE_F "InfoWindow",   parm0_x;
2580         CALL1           Menu_GetItem;
2581         STORE_ENT       return_x,       lItem;
2582         ADDRESS lItem,  flag,   temp_0;
2583         INDIRECT_F      lItem,  flag,   temp_1;
2584         INDIRECT_F      lItem,  flag,   temp_2;
2585         BITAND  temp_2, FLAG_HIDDEN,    temp_2;
2586         SUB_F           temp_1, temp_2, temp_1;
2587         STOREP_F        temp_1, temp_0;
2588         DONE;
2589 }
2590
2591 void () Nex_Action_Video_Apply;
2592 void() Nex_Action_Video_Apply = asm
2593 {
2594         STORE_F "::Data::Video::Fullscreen",    parm0_x;
2595         CALL1           Menu_GetItem;
2596         STORE_F return_x,       parm0_x;
2597         STORE_F ITEM_DATA_SEND, parm1_x;
2598         CALL2           Raise_DataEvent;
2599         STORE_F "::Data::Video::Resolution",    parm0_x;
2600         CALL1           Menu_GetItem;
2601         STORE_F return_x,       parm0_x;
2602         STORE_F ITEM_DATA_SEND, parm1_x;
2603         CALL2           Raise_DataEvent;
2604         STORE_F "::Data::Video::BPP",   parm0_x;
2605         CALL1           Menu_GetItem;
2606         STORE_F return_x,       parm0_x;
2607         STORE_F ITEM_DATA_SEND, parm1_x;
2608         CALL2           Raise_DataEvent;
2609         STORE_F "vid_restart
2610 ",      parm0_x;
2611         CALL1           cmd;
2612         DONE;
2613 }
2614
2615 void () Nex_Action_JoinGame_SortBy_Action;
2616 void() Nex_Action_JoinGame_SortBy_Action = asm
2617 {
2618 local float temp_0;
2619 local float temp_1;
2620         INDIRECT_F      self,   _realValue,     temp_0;
2621         EQ_F            HostCache_SortField,    temp_0, temp_0;
2622         IFNOT           temp_0, 7;
2623         INDIRECT_F      self,   _realValue,     temp_0;
2624         NOT_F           HostCache_SortDescending,       temp_1;
2625         STORE_F temp_0, parm0_x;
2626         STORE_F temp_1, parm1_x;
2627         CALL2           sethostcachesort;
2628         GOTO            4;
2629         INDIRECT_F      self,   _realValue,     parm0_x;
2630         STORE_F FILE_APPEND,    parm1_x;
2631         CALL2           sethostcachesort;
2632         CALL0           HostCache_ResortViewSet;
2633         DONE;
2634 }
2635
2636 void () Nex_Action_JoinGame_SortBy;
2637 void() Nex_Action_JoinGame_SortBy = asm
2638 {
2639 local float locked_1174;
2640 local float temp_1;
2641         ADDRESS self,   _realValue,     locked_1174;
2642         INDIRECT_S      self,   target, parm0_x;
2643         CALL1           gethostcacheindexforkey;
2644         STOREP_F        return_x,       locked_1174;
2645         ADDRESS self,   action, locked_1174;
2646         STOREP_FNC      Nex_Action_JoinGame_SortBy_Action,      locked_1174;
2647         DONE;
2648 }
2649
2650 void () Nex_Automation_CreateEntries;
2651 void() Nex_Automation_CreateEntries = asm
2652 {
2653 local entity lEntry;
2654 local float lCounter;
2655 local entity lTemplate;
2656 local float temp_0;
2657         STORE_F "Entry",        parm0_x;
2658         CALL1           Menu_GetItem;
2659         STORE_ENT       return_x,       lTemplate;
2660         STORE_F KEY_GAME,       lCounter;
2661         LT              lCounter,       64.000000,      temp_0;
2662         IFNOT           temp_0, 17;
2663         STORE_F lCounter,       parm0_x;
2664         CALL1           ftos;
2665         STORE_F "Entry",        parm0_x;
2666         STORE_F return_x,       parm1_x;
2667         CALL2           strcat;
2668         INDIRECT_S      self,   parent, temp_0;
2669         STORE_F lTemplate,      parm0_x;
2670         STORE_F return_x,       parm1_x;
2671         STORE_F temp_0, parm2_x;
2672         STORE_F FILE_APPEND,    parm3_x;
2673         CALL4           Menu_DeriveItem;
2674         STORE_ENT       return_x,       lEntry;
2675         ADDRESS lEntry, stepValue,      temp_0;
2676         STOREP_F        lCounter,       temp_0;
2677         ADD_F           lCounter,       FILE_APPEND,    lCounter;
2678         GOTO            -17;
2679         INDIRECT_E      self,   _parent,        parm0_x;
2680         CALL1           Menu_LinkItem;
2681         DONE;
2682 }
2683
2684 void () Nex_Action_EntryConnect;
2685 void() Nex_Action_EntryConnect = asm
2686 {
2687 local float temp_0;
2688         STORE_F "connect "",    parm0_x;
2689         CALL1           cmd;
2690         INDIRECT_F      self,   stepValue,      temp_0;
2691         STORE_F SLIST_FIELD_CNAME,      parm0_x;
2692         STORE_F temp_0, parm1_x;
2693         CALL2           gethostcachestring;
2694         STORE_F return_x,       parm0_x;
2695         CALL1           cmd;
2696         STORE_F ""
2697 ",      parm0_x;
2698         CALL1           cmd;
2699         CALL0           m_hide;
2700         DONE;
2701 }
2702
2703 void () Nex_Action_RefreshSlist;
2704 void() Nex_Action_RefreshSlist = asm
2705 {
2706         CALL0           HostCache_RefreshHostCache;
2707         DONE;
2708 }
2709
2710 void () Nex_Action_JumpToJoinGame;
2711 void() Nex_Action_JumpToJoinGame = asm
2712 {
2713 local entity lItem;
2714 local float temp_0;
2715         CALL0           resethostcachemasks;
2716         STORE_F SLIST_FIELD_PING,       parm0_x;
2717         STORE_F KEY_GAME,       parm1_x;
2718         CALL2           sethostcachesort;
2719         CALL0           HostCache_RefreshHostCache;
2720         STORE_F "Normal::Panel",        parm0_x;
2721         CALL1           Menu_GetItem;
2722         STORE_ENT       return_x,       lItem;
2723         STORE_F lItem,  parm0_x;
2724         STORE_F link,   parm1_x;
2725         STORE_F "JoinGame",     parm2_x;
2726         CALL3           String_EntitySet;
2727         STORE_F lItem,  parm0_x;
2728         CALL1           Raise_Update;
2729         CALL0           Menu_UpdateRunFlags;
2730         INDIRECT_E      lItem,  _link,  parm0_x;
2731         STORE_F KEY_GAME,       parm1_x;
2732         STORE_F KEY_GAME,       parm2_x;
2733         CALL3           Menu_JumpToWindow;
2734         DONE;
2735 }
2736
2737 void () Nex_Action_ExecuteQuery;
2738 void() Nex_Action_ExecuteQuery = asm
2739 {
2740 local bool lIsStringArg;
2741 local float lOperator;
2742 local float lField;
2743 local bool lAndMask;
2744 local string lToken;
2745 local float lTokenCount;
2746 local float lTokenNum;
2747 local float lOrPos;
2748 local float lAndPos;
2749 local float temp_0;
2750 local float temp_1;
2751         CALL0           resethostcachemasks;
2752         STORE_F KEY_GAME,       lAndPos;
2753         STORE_F K_MOUSE1,       lOrPos;
2754         INDIRECT_E      self,   _target,        temp_0;
2755         INDIRECT_S      temp_0, value,  parm0_x;
2756         CALL1           tokenize;
2757         STORE_F return_x,       lTokenCount;
2758         STORE_F KEY_GAME,       lTokenNum;
2759         LT              lTokenNum,      lTokenCount,    temp_0;
2760         IFNOT           temp_0, 223;
2761         STORE_F lTokenNum,      parm0_x;
2762         CALL1           argv;
2763         STORE_S return_x,       lToken;
2764         EQ_S            lToken, "notempty",     temp_0;
2765         IFNOT           temp_0, 8;
2766         STORE_F lAndPos,        parm0_x;
2767         STORE_F SLIST_FIELD_NUMPLAYERS, parm1_x;
2768         STORE_F KEY_GAME,       parm2_x;
2769         STORE_F SLIST_SORTDESCENDING,   parm3_x;
2770         CALL4           sethostcachemasknumber;
2771         ADD_F           lAndPos,        FILE_APPEND,    lAndPos;
2772         GOTO            209;
2773         EQ_S            lToken, "compatible",   temp_0;
2774         IFNOT           temp_0, 8;
2775         STORE_F lAndPos,        parm0_x;
2776         STORE_F SLIST_FIELD_PROTOCOL,   parm1_x;
2777         STORE_F KEY_UNKNOWN,    parm2_x;
2778         STORE_F CVAR_READONLY,  parm3_x;
2779         CALL4           sethostcachemasknumber;
2780         ADD_F           lAndPos,        FILE_APPEND,    lAndPos;
2781         GOTO            200;
2782         EQ_S            lToken, "goodping",     temp_0;
2783         IFNOT           temp_0, 8;
2784         STORE_F lAndPos,        parm0_x;
2785         STORE_F SLIST_FIELD_PING,       parm1_x;
2786         STORE_F K_PGUP, parm2_x;
2787         STORE_F KEY_MENU,       parm3_x;
2788         CALL4           sethostcachemasknumber;
2789         ADD_F           lAndPos,        FILE_APPEND,    lAndPos;
2790         GOTO            191;
2791         EQ_S            lToken, "mediumping",   temp_0;
2792         IFNOT           temp_0, 8;
2793         STORE_F lAndPos,        parm0_x;
2794         STORE_F SLIST_FIELD_PROTOCOL,   parm1_x;
2795         STORE_F 250.000000,     parm2_x;
2796         STORE_F KEY_MENU,       parm3_x;
2797         CALL4           sethostcachemasknumber;
2798         ADD_F           lAndPos,        FILE_APPEND,    lAndPos;
2799         GOTO            182;
2800         EQ_S            lToken, "mask", temp_0;
2801         IFNOT           temp_0, 168;
2802         ADD_F           lTokenNum,      FILE_APPEND,    lTokenNum;
2803         GT              lTokenNum,      lTokenCount,    temp_0;
2804         IFNOT           temp_0, 3;
2805         GOTO            178;
2806         GOTO            4;
2807         STORE_F lTokenNum,      parm0_x;
2808         CALL1           argv;
2809         STORE_S return_x,       lToken;
2810         EQ_S            lToken, "or",   temp_0;
2811         IFNOT           temp_0, 3;
2812         STORE_F KEY_GAME,       lAndMask;
2813         GOTO            6;
2814         EQ_S            lToken, "and",  temp_0;
2815         IFNOT           temp_0, 3;
2816         STORE_F FILE_APPEND,    lAndMask;
2817         GOTO            2;
2818         GOTO            165;
2819         ADD_F           lTokenNum,      FILE_APPEND,    lTokenNum;
2820         GT              lTokenNum,      lTokenCount,    temp_0;
2821         IFNOT           temp_0, 3;
2822         GOTO            161;
2823         GOTO            4;
2824         STORE_F lTokenNum,      parm0_x;
2825         CALL1           argv;
2826         STORE_S return_x,       lToken;
2827         EQ_S            lToken, "cname",        temp_0;
2828         IFNOT           temp_0, 4;
2829         STORE_F SLIST_FIELD_CNAME,      lField;
2830         STORE_F FILE_APPEND,    lIsStringArg;
2831         GOTO            46;
2832         EQ_S            lToken, "ping", temp_0;
2833         IFNOT           temp_0, 4;
2834         STORE_F SLIST_FIELD_PING,       lField;
2835         STORE_F KEY_GAME,       lIsStringArg;
2836         GOTO            41;
2837         EQ_S            lToken, "game", temp_0;
2838         IFNOT           temp_0, 4;
2839         STORE_F SLIST_FIELD_GAME,       lField;
2840         STORE_F FILE_APPEND,    lIsStringArg;
2841         GOTO            36;
2842         EQ_S            lToken, "mod",  temp_0;
2843         IFNOT           temp_0, 4;
2844         STORE_F SLIST_FIELD_MOD,        lField;
2845         STORE_F FILE_APPEND,    lIsStringArg;
2846         GOTO            31;
2847         EQ_S            lToken, "map",  temp_0;
2848         IFNOT           temp_0, 4;
2849         STORE_F SLIST_FIELD_MAP,        lField;
2850         STORE_F FILE_APPEND,    lIsStringArg;
2851         GOTO            26;
2852         EQ_S            lToken, "name", temp_0;
2853         IFNOT           temp_0, 4;
2854         STORE_F SLIST_FIELD_NAME,       lField;
2855         STORE_F FILE_APPEND,    lIsStringArg;
2856         GOTO            21;
2857         EQ_S            lToken, "maxplayers",   temp_0;
2858         IFNOT           temp_0, 4;
2859         STORE_F SLIST_FIELD_MAXPLAYERS, lField;
2860         STORE_F KEY_GAME,       lIsStringArg;
2861         GOTO            16;
2862         EQ_S            lToken, "numplayers",   temp_0;
2863         IFNOT           temp_0, 4;
2864         STORE_F SLIST_FIELD_NUMPLAYERS, lField;
2865         STORE_F KEY_GAME,       lIsStringArg;
2866         GOTO            11;
2867         EQ_S            lToken, "protocol",     temp_0;
2868         IFNOT           temp_0, 4;
2869         STORE_F SLIST_FIELD_PROTOCOL,   lField;
2870         STORE_F KEY_GAME,       lIsStringArg;
2871         GOTO            6;
2872         IFNOT           lAndMask,       3;
2873         ADD_F           lAndPos,        FILE_APPEND,    lAndPos;
2874         GOTO            2;
2875         ADD_F           lOrPos, FILE_APPEND,    lOrPos;
2876         GOTO            91;
2877         ADD_F           lTokenNum,      FILE_APPEND,    lTokenNum;
2878         GT              lTokenNum,      lTokenCount,    temp_0;
2879         IFNOT           temp_0, 3;
2880         GOTO            103;
2881         GOTO            4;
2882         STORE_F lTokenNum,      parm0_x;
2883         CALL1           argv;
2884         STORE_S return_x,       lToken;
2885         EQ_S            lToken, "$$",   temp_0;
2886         IFNOT           temp_0, 3;
2887         STORE_F KEY_GAME,       lOperator;
2888         GOTO            40;
2889         EQ_S            lToken, "!$",   temp_0;
2890         IFNOT           temp_0, 3;
2891         STORE_F FILE_APPEND,    lOperator;
2892         GOTO            36;
2893         EQ_S            lToken, "<",    temp_0;
2894         IFNOT           temp_0, 3;
2895         STORE_F KEY_UNKNOWN,    lOperator;
2896         GOTO            32;
2897         EQ_S            lToken, "<=",   temp_0;
2898         IFNOT           temp_0, 3;
2899         STORE_F KEY_MENU,       lOperator;
2900         GOTO            28;
2901         EQ_S            lToken, "==",   temp_0;
2902         IF              temp_0, 2;
2903         EQ_S            lToken, "=",    temp_1;
2904         OR              temp_0, temp_1, temp_0;
2905         IFNOT           temp_0, 3;
2906         STORE_F CVAR_READONLY,  lOperator;
2907         GOTO            21;
2908         EQ_S            lToken, ">",    temp_0;
2909         IFNOT           temp_0, 3;
2910         STORE_F SLIST_SERVERREPLYCOUNT, lOperator;
2911         GOTO            17;
2912         EQ_S            lToken, ">=",   temp_0;
2913         IFNOT           temp_0, 3;
2914         STORE_F SLIST_SORTFIELD,        lOperator;
2915         GOTO            13;
2916         EQ_S            lToken, "!=",   temp_0;
2917         IFNOT           temp_0, 3;
2918         STORE_F SLIST_SORTDESCENDING,   lOperator;
2919         GOTO            9;
2920         EQ_S            lToken, ":",    temp_0;
2921         IFNOT           temp_0, 6;
2922         IFNOT           lIsStringArg,   3;
2923         STORE_F KEY_GAME,       lOperator;
2924         GOTO            2;
2925         STORE_F KEY_MENU,       lOperator;
2926         GOTO            2;
2927         GOTO            56;
2928         ADD_F           lTokenNum,      FILE_APPEND,    lTokenNum;
2929         GT              lTokenNum,      lTokenCount,    temp_0;
2930         IFNOT           temp_0, 3;
2931         GOTO            52;
2932         GOTO            4;
2933         STORE_F lTokenNum,      parm0_x;
2934         CALL1           argv;
2935         STORE_S return_x,       lToken;
2936         IFNOT           lIsStringArg,   14;
2937         IFNOT           lAndMask,       7;
2938         STORE_F lAndPos,        parm0_x;
2939         STORE_F lField, parm1_x;
2940         STORE_F lToken, parm2_x;
2941         STORE_F lOperator,      parm3_x;
2942         CALL4           sethostcachemaskstring;
2943         GOTO            6;
2944         STORE_F lOrPos, parm0_x;
2945         STORE_F lField, parm1_x;
2946         STORE_F lToken, parm2_x;
2947         STORE_F lOperator,      parm3_x;
2948         CALL4           sethostcachemaskstring;
2949         GOTO            17;
2950         IFNOT           lAndMask,       9;
2951         STORE_F lToken, parm0_x;
2952         CALL1           stof;
2953         STORE_F lAndPos,        parm0_x;
2954         STORE_F lField, parm1_x;
2955         STORE_F return_x,       parm2_x;
2956         STORE_F lOperator,      parm3_x;
2957         CALL4           sethostcachemasknumber;
2958         GOTO            8;
2959         STORE_F lToken, parm0_x;
2960         CALL1           stof;
2961         STORE_F lOrPos, parm0_x;
2962         STORE_F lField, parm1_x;
2963         STORE_F return_x,       parm2_x;
2964         STORE_F lOperator,      parm3_x;
2965         CALL4           sethostcachemasknumber;
2966         GOTO            -147;
2967         GOTO            -157;
2968         GOTO            13;
2969         STORE_F lOrPos, parm0_x;
2970         STORE_F SLIST_FIELD_MAP,        parm1_x;
2971         STORE_F lToken, parm2_x;
2972         STORE_F KEY_GAME,       parm3_x;
2973         CALL4           sethostcachemaskstring;
2974         ADD_F           lOrPos, FILE_APPEND,    lOrPos;
2975         STORE_F lOrPos, parm0_x;
2976         STORE_F SLIST_FIELD_NAME,       parm1_x;
2977         STORE_F lToken, parm2_x;
2978         STORE_F KEY_GAME,       parm3_x;
2979         CALL4           sethostcachemaskstring;
2980         ADD_F           lOrPos, FILE_APPEND,    lOrPos;
2981         ADD_F           lTokenNum,      FILE_APPEND,    lTokenNum;
2982         GOTO            -223;
2983         CALL0           HostCache_ResortViewSet;
2984         DONE;
2985 }
2986
2987 void () Nex_Credits_SetSizeX;
2988 void() Nex_Credits_SetSizeX = asm
2989 {
2990 local entity lItem;
2991 local float temp_0;
2992 local float temp_1;
2993         STORE_F "Credits",      parm0_x;
2994         CALL1           Menu_GetItem;
2995         STORE_ENT       return_x,       lItem;
2996         ADDRESS lItem,  size_x, temp_0;
2997         INDIRECT_E      self,   _parent,        temp_1;
2998         INDIRECT_F      temp_1, size_x, temp_1;
2999         STOREP_F        temp_1, temp_0;
3000         DONE;
3001 }
3002
3003 void () Nex_Credits_Scroll;
3004 void() Nex_Credits_Scroll = asm
3005 {
3006 local entity lTarget;
3007 local entity lItem;
3008 local vector temp_0;
3009 local vector temp_1;
3010 local vector temp_2;
3011 local float temp_3;
3012 local float temp_4;
3013         STORE_F "Credits",      parm0_x;
3014         CALL1           Menu_GetItem;
3015         STORE_ENT       return_x,       lItem;
3016         INDIRECT_E      self,   _parent,        lTarget;
3017         ADDRESS lTarget,        origin_x,       temp_2_x;
3018         INDIRECT_V      lTarget,        origin_x,       temp_1;
3019         INDIRECT_V      self,   direction_x,    temp_0;
3020         MUL_FV  Timer_Delta,    temp_0, temp_0;
3021         SUB_V           temp_1, temp_0, temp_0;
3022         STOREP_V        temp_0_x,       temp_2;
3023         INDIRECT_F      self,   direction_x,    temp_3;
3024         IFNOT           temp_3, 17;
3025         INDIRECT_F      lTarget,        origin_x,       temp_3;
3026         INDIRECT_F      lItem,  size_x, temp_4;
3027         SUB_F           KEY_GAME,       temp_4, temp_4;
3028         LT              temp_3, temp_4, temp_3;
3029         IFNOT           temp_3, 4;
3030         ADDRESS lTarget,        origin_x,       temp_3;
3031         INDIRECT_F      lTarget,        size_x, temp_4;
3032         STOREP_F        temp_4, temp_3;
3033         INDIRECT_F      lTarget,        origin_x,       temp_3;
3034         INDIRECT_F      lItem,  size_x, temp_4;
3035         GT              temp_3, temp_4, temp_3;
3036         IFNOT           temp_3, 5;
3037         ADDRESS lTarget,        origin_x,       temp_3;
3038         INDIRECT_F      lItem,  size_x, temp_4;
3039         SUB_F           KEY_GAME,       temp_4, temp_4;
3040         STOREP_F        temp_4, temp_3;
3041         INDIRECT_F      self,   direction_y,    temp_3;
3042         IFNOT           temp_3, 17;
3043         INDIRECT_F      lTarget,        origin_y,       temp_3;
3044         INDIRECT_F      lItem,  size_y, temp_4;
3045         SUB_F           KEY_GAME,       temp_4, temp_4;
3046         LT              temp_3, temp_4, temp_3;
3047         IFNOT           temp_3, 4;
3048         ADDRESS lTarget,        origin_y,       temp_3;
3049         INDIRECT_F      lTarget,        size_y, temp_4;
3050         STOREP_F        temp_4, temp_3;
3051         INDIRECT_F      lTarget,        origin_y,       temp_3;
3052         INDIRECT_F      lItem,  size_y, temp_4;
3053         GT              temp_3, temp_4, temp_3;
3054         IFNOT           temp_3, 5;
3055         ADDRESS lTarget,        origin_y,       temp_3;
3056         INDIRECT_F      lItem,  size_y, temp_4;
3057         SUB_F           KEY_GAME,       temp_4, temp_4;
3058         STOREP_F        temp_4, temp_3;
3059         DONE;
3060 }
3061
3062 void () Nex_Credits_Toggle;
3063 void() Nex_Credits_Toggle = asm
3064 {
3065 local entity lEntity;
3066 local float temp_3;
3067 local float temp_4;
3068         STORE_F "CreditsWnd",   parm0_x;
3069         CALL1           Menu_GetItem;
3070         STORE_ENT       return_x,       lEntity;
3071         INDIRECT_F      lEntity,        flag,   temp_3;
3072         BITAND  temp_3, FLAG_HIDDEN,    temp_3;
3073         IFNOT           temp_3, 11;
3074         ADDRESS lEntity,        flag,   temp_3;
3075         INDIRECT_F      lEntity,        flag,   temp_4;
3076         SUB_F           temp_4, FLAG_HIDDEN,    temp_4;
3077         STOREP_F        temp_4, temp_3;
3078         STORE_F "CreditsWnd::Layout::Items::Close",     parm0_x;
3079         CALL1           Menu_GetItem;
3080         STORE_F return_x,       parm0_x;
3081         STORE_F KEY_GAME,       parm1_x;
3082         CALL2           Menu_Select;
3083         GOTO            7;
3084         ADDRESS lEntity,        flag,   temp_3;
3085         INDIRECT_F      lEntity,        flag,   temp_4;
3086         ADD_F           temp_4, FLAG_HIDDEN,    temp_4;
3087         STOREP_F        temp_4, temp_3;
3088         STORE_F KEY_GAME,       parm0_x;
3089         CALL1           Menu_Reselect;
3090         DONE;
3091 }
3092
3093 float (float, float) Nex_Credits_Key;
3094 float(float pKey, float pAscii) Nex_Credits_Key = asm
3095 {
3096 local float temp_3;
3097         EQ_F            pKey,   K_ESCAPE,       temp_3;
3098         IFNOT           temp_3, 3;
3099         CALL0           Nex_Credits_Toggle;
3100         RETURN  FILE_APPEND;
3101         RETURN  KEY_GAME;
3102         DONE;
3103 }
3104
3105 void () Nex_Credits_Action;
3106 void() Nex_Credits_Action = asm
3107 {
3108 local entity lEntity;
3109 local float temp_3;
3110 local float temp_4;
3111         STORE_F "CreditsWnd",   parm0_x;
3112         CALL1           Menu_GetItem;
3113         STORE_ENT       return_x,       lEntity;
3114         INDIRECT_F      lEntity,        flag,   temp_3;
3115         BITAND  temp_3, FLAG_HIDDEN,    temp_3;
3116         IFNOT           temp_3, 5;
3117         ADDRESS lEntity,        flag,   temp_3;
3118         INDIRECT_F      lEntity,        flag,   temp_4;
3119         SUB_F           temp_4, FLAG_HIDDEN,    temp_4;
3120         STOREP_F        temp_4, temp_3;
3121         STORE_F "CreditsWnd::Layout::Items::Close",     parm0_x;
3122         CALL1           Menu_GetItem;
3123         STORE_F return_x,       parm0_x;
3124         STORE_F KEY_GAME,       parm1_x;
3125         CALL2           Menu_Select;
3126         STORE_F "CreditsWnd::Layout::Items::Scroller",  parm0_x;
3127         CALL1           Menu_GetItem;
3128         STORE_ENT       return_x,       lEntity;
3129         ADDRESS lEntity,        origin_y,       temp_3;
3130         INDIRECT_F      lEntity,        size_y, temp_4;
3131         STOREP_F        temp_4, temp_3;
3132         DONE;
3133 }
3134
3135 void() Item_Nex_Avatar_Info_Destroy = asm
3136 {
3137         STORE_F self,   parm0_x;
3138         STORE_F target, parm1_x;
3139         CALL2           String_EntityFree;
3140         STORE_F self,   parm0_x;
3141         STORE_F link,   parm1_x;
3142         CALL2           String_EntityFree;
3143         STORE_F self,   parm0_x;
3144         STORE_F picture,        parm1_x;
3145         CALL2           String_EntityFree;
3146         STORE_F self,   parm0_x;
3147         STORE_F text,   parm1_x;
3148         CALL2           String_EntityFree;
3149         STORE_F self,   parm0_x;
3150         STORE_F normal, parm1_x;
3151         CALL2           String_EntityFree;
3152         DONE;
3153 }
3154
3155 void() Item_Nex_Avatar_Info_Spawn = asm
3156 {
3157 local float temp_3;
3158         STORE_F self,   parm0_x;
3159         STORE_F target, parm1_x;
3160         CALL2           String_EntityZone;
3161         STORE_F self,   parm0_x;
3162         STORE_F link,   parm1_x;
3163         CALL2           String_EntityZone;
3164         STORE_F self,   parm0_x;
3165         STORE_F picture,        parm1_x;
3166         CALL2           String_EntityZone;
3167         STORE_F self,   parm0_x;
3168         STORE_F text,   parm1_x;
3169         CALL2           String_EntityZone;
3170         STORE_F self,   parm0_x;
3171         STORE_F normal, parm1_x;
3172         CALL2           String_EntityZone;
3173         INDIRECT_S      self,   picture,        parm0_x;
3174         CALL1           Gfx_Precache;
3175         ADDRESS self,   _destroy,       temp_3;
3176         STOREP_FNC      Item_Nex_Avatar_Info_Destroy,   temp_3;
3177         DONE;
3178 }
3179
3180 void () _IDNA_BuildList;
3181 void() _IDNA_BuildList = asm
3182 {
3183 local float locked_1174;
3184 local string lLine;
3185 local string lDescription;
3186 local string lModel;
3187 local string lSkin;
3188 local string lPicture;
3189 local string lName;
3190 local float lHandle;
3191 local string lFilename;
3192 local entity lAvatar;
3193 local float lSearchCounter;
3194 local float lSearchSize;
3195 local float lSearchHandle;
3196 local float temp_4;
3197         STORE_F self,   parm0_x;
3198         CALL1           Menu_EmptyWindow;
3199         STORE_F "models/player/*.txt",  parm0_x;
3200         STORE_F FILE_APPEND,    parm1_x;
3201         STORE_F FILE_APPEND,    parm2_x;
3202         CALL3           search_begin;
3203         STORE_F return_x,       lSearchHandle;
3204         LT              lSearchHandle,  KEY_GAME,       locked_1174;
3205         IFNOT           locked_1174,    2;
3206         RETURN  offset_0;
3207         STORE_F lSearchHandle,  parm0_x;
3208         CALL1           search_getsize;
3209         STORE_F return_x,       lSearchSize;
3210         STORE_F KEY_GAME,       lSearchCounter;
3211         LT              lSearchCounter, lSearchSize,    locked_1174;
3212         IFNOT           locked_1174,    116;
3213         STORE_F lSearchHandle,  parm0_x;
3214         STORE_F lSearchCounter, parm1_x;
3215         CALL2           search_getfilename;
3216         STORE_S return_x,       lFilename;
3217         STORE_F lFilename,      parm0_x;
3218         STORE_F KEY_GAME,       parm1_x;
3219         CALL2           fopen;
3220         STORE_F return_x,       lHandle;
3221         LT              lHandle,        KEY_GAME,       locked_1174;
3222         IFNOT           locked_1174,    6;
3223         STORE_F "Menu: Couldn't open model definition file '",  parm0_x;
3224         STORE_F lFilename,      parm1_x;
3225         STORE_F "'
3226 ",      parm2_x;
3227         CALL3           print;
3228         GOTO            99;
3229         STORE_F lHandle,        parm0_x;
3230         CALL1           fgets;
3231         STORE_F return_x,       parm0_x;
3232         CALL1           String_Zone;
3233         STORE_S return_x,       lName;
3234         STORE_F lHandle,        parm0_x;
3235         CALL1           fgets;
3236         STORE_F return_x,       parm0_x;
3237         CALL1           String_Zone;
3238         STORE_S return_x,       lPicture;
3239         STORE_F lHandle,        parm0_x;
3240         CALL1           fgets;
3241         STORE_F return_x,       parm0_x;
3242         CALL1           String_Zone;
3243         STORE_S return_x,       lSkin;
3244         STORE_F lHandle,        parm0_x;
3245         CALL1           fgets;
3246         STORE_F return_x,       parm0_x;
3247         CALL1           String_Zone;
3248         STORE_S return_x,       lModel;
3249         NOT_S           lName,  locked_1174;
3250         IF              locked_1174,    2;
3251         NOT_S           lPicture,       temp_4;
3252         OR              locked_1174,    temp_4, locked_1174;
3253         IF              locked_1174,    2;
3254         NOT_S           lSkin,  temp_4;
3255         OR              locked_1174,    temp_4, locked_1174;
3256         IF              locked_1174,    2;
3257         NOT_S           lModel, temp_4;
3258         OR              locked_1174,    temp_4, locked_1174;
3259         IFNOT           locked_1174,    19;
3260         STORE_F lName,  parm0_x;
3261         CALL1           String_Free;
3262         STORE_F lPicture,       parm0_x;
3263         CALL1           String_Free;
3264         STORE_F lSkin,  parm0_x;
3265         CALL1           String_Free;
3266         STORE_F lModel, parm0_x;
3267         CALL1           String_Free;
3268         STORE_F lSearchHandle,  parm0_x;
3269         STORE_F lSearchCounter, parm1_x;
3270         CALL2           search_getfilename;
3271         STORE_F "Menu: Couldn't parse model definition file '", parm0_x;
3272         STORE_F return_x,       parm1_x;
3273         STORE_F "'
3274 ",      parm2_x;
3275         CALL3           print;
3276         STORE_F lHandle,        parm0_x;
3277         CALL1           fclose;
3278         GOTO            50;
3279         CALL0           String_Create;
3280         STORE_S return_x,       lDescription;
3281         STORE_F lHandle,        parm0_x;
3282         CALL1           fgets;
3283         STORE_S return_x,       lLine;
3284         STORE_F lLine,  parm0_x;
3285         STORE_F "
3286 ",      parm1_x;
3287         CALL2           strcat;
3288         STORE_F lDescription,   parm0_x;
3289         STORE_F return_x,       parm1_x;
3290         CALL2           String_Append;
3291         STORE_S return_x,       lDescription;
3292         STORE_F lLine,  parm0_x;
3293         CALL1           validstring;
3294         IF              return_x,       -12;
3295         NE_S            lDescription,   string_null,    locked_1174;
3296         IFNOT           locked_1174,    21;
3297         STORE_F lSearchCounter, parm0_x;
3298         CALL1           ftos;
3299         INDIRECT_S      self,   name,   locked_1174;
3300         STORE_F "Item_Nex_Avatar_Info", parm0_x;
3301         STORE_F return_x,       parm1_x;
3302         STORE_F locked_1174,    parm2_x;
3303         CALL3           Menu_CreateItem;
3304         STORE_ENT       return_x,       lAvatar;
3305         ADDRESS lAvatar,        target, locked_1174;
3306         STOREP_S        lModel, locked_1174;
3307         ADDRESS lAvatar,        link,   locked_1174;
3308         STOREP_S        lSkin,  locked_1174;
3309         ADDRESS lAvatar,        picture,        locked_1174;
3310         STOREP_S        lPicture,       locked_1174;
3311         ADDRESS lAvatar,        normal, locked_1174;
3312         STOREP_S        lName,  locked_1174;
3313         ADDRESS lAvatar,        text,   locked_1174;
3314         STOREP_S        lDescription,   locked_1174;
3315         STORE_F lAvatar,        parm0_x;
3316         CALL1           Menu_LinkItem;
3317         STORE_F lName,  parm0_x;
3318         CALL1           String_Free;
3319         STORE_F lPicture,       parm0_x;
3320         CALL1           String_Free;
3321         STORE_F lSkin,  parm0_x;
3322         CALL1           String_Free;
3323         STORE_F lModel, parm0_x;
3324         CALL1           String_Free;
3325         STORE_F lDescription,   parm0_x;
3326         CALL1           String_Free;
3327         STORE_F lHandle,        parm0_x;
3328         CALL1           fclose;
3329         ADD_F           lSearchCounter, FILE_APPEND,    lSearchCounter;
3330         GOTO            -116;
3331         STORE_F lSearchHandle,  parm0_x;
3332         CALL1           search_end;
3333         STORE_F self,   parm0_x;
3334         CALL1           Menu_LinkChildren;
3335         ADDRESS self,   minValue,       locked_1174;
3336         STOREP_F        FILE_APPEND,    locked_1174;
3337         ADDRESS self,   stepValue,      locked_1174;
3338         STOREP_F        FILE_APPEND,    locked_1174;
3339         ADDRESS self,   maxValue,       locked_1174;
3340         INDIRECT_F      lAvatar,        orderPos,       parm0_x;
3341         CALL1           fabs;
3342         STOREP_F        return_x,       locked_1174;
3343         DONE;
3344 }
3345
3346 void () _IDNA_Sync;
3347 void() _IDNA_Sync = asm
3348 {
3349 local float locked_1174;
3350 local entity lMatch;
3351 local string lSkin;
3352 local string lModel;
3353 local float temp_4;
3354         STORE_F "_cl_playermodel",      parm0_x;
3355         CALL1           str_cvar;
3356         STORE_F return_x,       parm0_x;
3357         CALL1           String_Zone;
3358         STORE_S return_x,       lModel;
3359         STORE_F "_cl_playerskin",       parm0_x;
3360         CALL1           str_cvar;
3361         STORE_F return_x,       parm0_x;
3362         CALL1           String_Zone;
3363         STORE_S return_x,       lSkin;
3364         INDIRECT_E      self,   _child, lMatch;
3365         INDIRECT_E      lMatch, _next,  locked_1174;
3366         IFNOT           locked_1174,    11;
3367         INDIRECT_S      lMatch, target, locked_1174;
3368         EQ_S            locked_1174,    lModel, locked_1174;
3369         IFNOT           locked_1174,    3;
3370         INDIRECT_S      lMatch, link,   temp_4;
3371         EQ_S            temp_4, lSkin,  temp_4;
3372         AND             locked_1174,    temp_4, locked_1174;
3373         IFNOT           locked_1174,    2;
3374         GOTO            3;
3375         INDIRECT_E      lMatch, _next,  lMatch;
3376         GOTO            -11;
3377         IFNOT           lMatch, 18;
3378         ADDRESS self,   _link,  locked_1174;
3379         STOREP_ENT      lMatch, locked_1174;
3380         ADDRESS self,   _realValue,     locked_1174;
3381         INDIRECT_F      lMatch, orderPos,       parm0_x;
3382         CALL1           fabs;
3383         STOREP_F        return_x,       locked_1174;
3384         INDIRECT_F      self,   _realValue,     parm0_x;
3385         CALL1           ftos;
3386         STORE_F self,   parm0_x;
3387         STORE_F value,  parm1_x;
3388         STORE_F return_x,       parm2_x;
3389         CALL3           String_EntitySet;
3390         INDIRECT_S      self,   value,  locked_1174;
3391         STORE_F self,   parm0_x;
3392         STORE_F _syncValue,     parm1_x;
3393         STORE_F locked_1174,    parm2_x;
3394         CALL3           String_EntitySet;
3395         STORE_F lModel, parm0_x;
3396         CALL1           String_Free;
3397         STORE_F lSkin,  parm0_x;
3398         CALL1           String_Free;
3399         DONE;
3400 }
3401
3402 void () _IDNA_UpdateLink;
3403 void() _IDNA_UpdateLink = asm
3404 {
3405 local float locked_1174;
3406 local entity lMatch;
3407 local float lTarget;
3408 local float lCurrent;
3409 local float temp_4;
3410         INDIRECT_E      self,   _link,  locked_1174;
3411         INDIRECT_F      locked_1174,    orderPos,       parm0_x;
3412         CALL1           fabs;
3413         STORE_F return_x,       lCurrent;
3414         INDIRECT_F      self,   _realValue,     lTarget;
3415         LT              lCurrent,       lTarget,        locked_1174;
3416         IFNOT           locked_1174,    12;
3417         INDIRECT_E      self,   _link,  lMatch;
3418         INDIRECT_E      lMatch, _next,  locked_1174;
3419         IFNOT           locked_1174,    4;
3420         INDIRECT_F      lMatch, orderPos,       parm0_x;
3421         CALL1           fabs;
3422         NE_F            return_x,       lTarget,        temp_4;
3423         AND             locked_1174,    temp_4, locked_1174;
3424         IFNOT           locked_1174,    3;
3425         INDIRECT_E      lMatch, _next,  lMatch;
3426         GOTO            -8;
3427         GOTO            11;
3428         INDIRECT_E      self,   _link,  lMatch;
3429         INDIRECT_E      lMatch, _prev,  locked_1174;
3430         IFNOT           locked_1174,    4;
3431         INDIRECT_F      lMatch, orderPos,       parm0_x;
3432         CALL1           fabs;
3433         NE_F            return_x,       lTarget,        temp_4;
3434         AND             locked_1174,    temp_4, locked_1174;
3435         IFNOT           locked_1174,    3;
3436         INDIRECT_E      lMatch, _prev,  lMatch;
3437         GOTO            -8;
3438         ADDRESS self,   _link,  locked_1174;
3439         STOREP_ENT      lMatch, locked_1174;
3440         ADDRESS self,   _realValue,     locked_1174;
3441         INDIRECT_E      self,   _link,  temp_4;
3442         INDIRECT_F      temp_4, orderPos,       parm0_x;
3443         CALL1           fabs;
3444         STOREP_F        return_x,       locked_1174;
3445         INDIRECT_F      self,   _realValue,     parm0_x;
3446         CALL1           ftos;
3447         STORE_F self,   parm0_x;
3448         STORE_F value,  parm1_x;
3449         STORE_F return_x,       parm2_x;
3450         CALL3           String_EntitySet;
3451         DONE;
3452 }
3453
3454 void () _IDNA_RawSet;
3455 void() _IDNA_RawSet = asm
3456 {
3457 local float temp_3;
3458         CALL0           _IDNA_UpdateLink;
3459         INDIRECT_E      self,   _link,  temp_3;
3460         INDIRECT_S      temp_3, target, temp_3;
3461         STORE_F "playermodel "",        parm0_x;
3462         STORE_F temp_3, parm1_x;
3463         STORE_F "";",   parm2_x;
3464         CALL3           strcat;
3465         STORE_F return_x,       parm0_x;
3466         CALL1           cmd;
3467         INDIRECT_E      self,   _link,  temp_3;
3468         INDIRECT_S      temp_3, link,   temp_3;
3469         STORE_F "playerskin "", parm0_x;
3470         STORE_F temp_3, parm1_x;
3471         STORE_F ""
3472 ",      parm2_x;
3473         CALL3           strcat;
3474         STORE_F return_x,       parm0_x;
3475         CALL1           cmd;
3476         DONE;
3477 }
3478
3479 void () _IDNA_Send;
3480 void() _IDNA_Send = asm
3481 {
3482 local float temp_3;
3483         CALL0           _IDNA_RawSet;
3484         INDIRECT_S      self,   value,  temp_3;
3485         STORE_F self,   parm0_x;
3486         STORE_F _syncValue,     parm1_x;
3487         STORE_F temp_3, parm2_x;
3488         CALL3           String_EntitySet;
3489         DONE;
3490 }
3491
3492 void () _IDNA_Test_Start;
3493 void() _IDNA_Test_Start = asm
3494 {
3495         CALL0           _IDNA_RawSet;
3496         DONE;
3497 }
3498
3499 void () _IDNA_Test_End;
3500 void() _IDNA_Test_End = asm
3501 {
3502 local float temp_3;
3503         INDIRECT_S      self,   _syncValue,     temp_3;
3504         STORE_F self,   parm0_x;
3505         STORE_F value,  parm1_x;
3506         STORE_F temp_3, parm2_x;
3507         CALL3           String_EntitySet;
3508         CALL0           _IDNA_RawSet;
3509         DONE;
3510 }
3511
3512 void () _IDNA_Reset;
3513 void() _IDNA_Reset = asm
3514 {
3515 local float temp_3;
3516         INDIRECT_S      self,   defValue,       temp_3;
3517         STORE_F self,   parm0_x;
3518         STORE_F value,  parm1_x;
3519         STORE_F temp_3, parm2_x;
3520         CALL3           String_EntitySet;
3521         CALL0           _IDNA_Send;
3522         DONE;
3523 }
3524
3525 void(float pEvent) Item_Data_Nex_Avatar_DataEvent = asm
3526 {
3527 local float temp_3;
3528         GOTO            13;
3529         CALL0           _IDNA_Sync;
3530         GOTO            22;
3531         CALL0           _IDNA_Send;
3532         GOTO            20;
3533         CALL0           _IDNA_Reset;
3534         GOTO            18;
3535         CALL0           _IDNA_Test_Start;
3536         GOTO            16;
3537         CALL0           _IDNA_Test_End;
3538         GOTO            14;
3539         CALL0           _IDNA_UpdateLink;
3540         GOTO            12;
3541         IFNOT           pEvent, -12;
3542         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
3543         IF              temp_3, -12;
3544         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
3545         IF              temp_3, -12;
3546         EQ_F            pEvent, ITEM_DATA_TEST_START,   temp_3;
3547         IF              temp_3, -12;
3548         EQ_F            pEvent, ITEM_DATA_TEST_END,     temp_3;
3549         IF              temp_3, -12;
3550         EQ_F            pEvent, ITEM_DATALINK_SET,      temp_3;
3551         IF              temp_3, -12;
3552         DONE;
3553 }
3554
3555 void() Item_Data_Nex_Avatar_Spawn = asm
3556 {
3557 local float temp_3;
3558 local float temp_4;
3559         CALL0           Item_Data_Init;
3560         ADDRESS self,   flag,   temp_3;
3561         INDIRECT_F      self,   flag,   temp_4;
3562         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
3563         STOREP_F        temp_4, temp_3;
3564         ADDRESS self,   _reinit,        temp_3;
3565         STOREP_FNC      _IDNA_Sync,     temp_3;
3566         ADDRESS self,   _dataEvent,     temp_3;
3567         STOREP_FNC      Item_Data_Nex_Avatar_DataEvent, temp_3;
3568         CALL0           _IDNA_BuildList;
3569         DONE;
3570 }
3571
3572 void () _IDNN_Sync;
3573 void() _IDNN_Sync = asm
3574 {
3575 local float temp_3;
3576         STORE_F "_cl_name",     parm0_x;
3577         CALL1           str_cvar;
3578         STORE_F self,   parm0_x;
3579         STORE_F value,  parm1_x;
3580         STORE_F return_x,       parm2_x;
3581         CALL3           String_EntitySet;
3582         INDIRECT_S      self,   value,  temp_3;
3583         STORE_F self,   parm0_x;
3584         STORE_F _syncValue,     parm1_x;
3585         STORE_F temp_3, parm2_x;
3586         CALL3           String_EntitySet;
3587         DONE;
3588 }
3589
3590 void () _IDNN_Send;
3591 void() _IDNN_Send = asm
3592 {
3593 local float temp_3;
3594         INDIRECT_S      self,   value,  temp_3;
3595         STORE_F "name "",       parm0_x;
3596         STORE_F temp_3, parm1_x;
3597         STORE_F ""
3598 ",      parm2_x;
3599         CALL3           strcat;
3600         STORE_F return_x,       parm0_x;
3601         CALL1           cmd;
3602         INDIRECT_S      self,   value,  temp_3;
3603         STORE_F self,   parm0_x;
3604         STORE_F _syncValue,     parm1_x;
3605         STORE_F temp_3, parm2_x;
3606         CALL3           String_EntitySet;
3607         DONE;
3608 }
3609
3610 void () _IDNN_Test_Start;
3611 void() _IDNN_Test_Start = asm
3612 {
3613 local float temp_3;
3614         INDIRECT_S      self,   value,  temp_3;
3615         STORE_F "name "",       parm0_x;
3616         STORE_F temp_3, parm1_x;
3617         STORE_F ""
3618 ",      parm2_x;
3619         CALL3           strcat;
3620         STORE_F return_x,       parm0_x;
3621         CALL1           cmd;
3622         DONE;
3623 }
3624
3625 void () _IDNN_Test_End;
3626 void() _IDNN_Test_End = asm
3627 {
3628 local float temp_3;
3629         INDIRECT_S      self,   _syncValue,     temp_3;
3630         STORE_F self,   parm0_x;
3631         STORE_F value,  parm1_x;
3632         STORE_F temp_3, parm2_x;
3633         CALL3           String_EntitySet;
3634         INDIRECT_S      self,   value,  temp_3;
3635         STORE_F "name "",       parm0_x;
3636         STORE_F temp_3, parm1_x;
3637         STORE_F ""
3638 ",      parm2_x;
3639         CALL3           strcat;
3640         STORE_F return_x,       parm0_x;
3641         CALL1           cmd;
3642         DONE;
3643 }
3644
3645 void () _IDNN_Reset;
3646 void() _IDNN_Reset = asm
3647 {
3648 local float temp_3;
3649         INDIRECT_S      self,   defValue,       temp_3;
3650         STORE_F self,   parm0_x;
3651         STORE_F value,  parm1_x;
3652         STORE_F temp_3, parm2_x;
3653         CALL3           String_EntitySet;
3654         CALL0           _IDNN_Send;
3655         DONE;
3656 }
3657
3658 void(float pEvent) Item_Data_Nex_Name_DataEvent = asm
3659 {
3660 local float temp_3;
3661         GOTO            11;
3662         CALL0           _IDNN_Sync;
3663         GOTO            18;
3664         CALL0           _IDNN_Send;
3665         GOTO            16;
3666         CALL0           _IDNN_Reset;
3667         GOTO            14;
3668         CALL0           _IDNN_Test_Start;
3669         GOTO            12;
3670         CALL0           _IDNN_Test_End;
3671         GOTO            10;
3672         IFNOT           pEvent, -10;
3673         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
3674         IF              temp_3, -10;
3675         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
3676         IF              temp_3, -10;
3677         EQ_F            pEvent, ITEM_DATA_TEST_START,   temp_3;
3678         IF              temp_3, -10;
3679         EQ_F            pEvent, ITEM_DATA_TEST_END,     temp_3;
3680         IF              temp_3, -10;
3681         DONE;
3682 }
3683
3684 void() Item_Data_Nex_Name_Spawn = asm
3685 {
3686 local float temp_3;
3687         CALL0           Item_Data_Init;
3688         ADDRESS self,   _reinit,        temp_3;
3689         STOREP_FNC      _IDNN_Sync,     temp_3;
3690         ADDRESS self,   _dataEvent,     temp_3;
3691         STOREP_FNC      Item_Data_Nex_Name_DataEvent,   temp_3;
3692         DONE;
3693 }
3694
3695 void () _IDNC_Sync;
3696 void() _IDNC_Sync = asm
3697 {
3698 local float lPants;
3699 local float temp_3;
3700         STORE_F "_cl_color",    parm0_x;
3701         CALL1           cvar;
3702         BITAND  return_x,       15.000000,      lPants;
3703         STORE_F lPants, parm0_x;
3704         CALL1           ftos;
3705         STORE_F self,   parm0_x;
3706         STORE_F value,  parm1_x;
3707         STORE_F return_x,       parm2_x;
3708         CALL3           String_EntitySet;
3709         INDIRECT_S      self,   value,  temp_3;
3710         STORE_F self,   parm0_x;
3711         STORE_F _syncValue,     parm1_x;
3712         STORE_F temp_3, parm2_x;
3713         CALL3           String_EntitySet;
3714         DONE;
3715 }
3716
3717 void () _IDNC_Send;
3718 void() _IDNC_Send = asm
3719 {
3720 local float temp_3;
3721         INDIRECT_S      self,   value,  temp_3;
3722         STORE_F "color "",      parm0_x;
3723         STORE_F temp_3, parm1_x;
3724         STORE_F ""
3725 ",      parm2_x;
3726         CALL3           strcat;
3727         STORE_F return_x,       parm0_x;
3728         CALL1           cmd;
3729         INDIRECT_S      self,   value,  temp_3;
3730         STORE_F self,   parm0_x;
3731         STORE_F _syncValue,     parm1_x;
3732         STORE_F temp_3, parm2_x;
3733         CALL3           String_EntitySet;
3734         DONE;
3735 }
3736
3737 void () _IDNC_Test_Start;
3738 void() _IDNC_Test_Start = asm
3739 {
3740 local float temp_3;
3741         INDIRECT_S      self,   value,  temp_3;
3742         STORE_F "color "",      parm0_x;
3743         STORE_F temp_3, parm1_x;
3744         STORE_F ""
3745 ",      parm2_x;
3746         CALL3           strcat;
3747         STORE_F return_x,       parm0_x;
3748         CALL1           cmd;
3749         DONE;
3750 }
3751
3752 void () _IDNC_Test_End;
3753 void() _IDNC_Test_End = asm
3754 {
3755 local float temp_3;
3756         INDIRECT_S      self,   _syncValue,     temp_3;
3757         STORE_F self,   parm0_x;
3758         STORE_F value,  parm1_x;
3759         STORE_F temp_3, parm2_x;
3760         CALL3           String_EntitySet;
3761         INDIRECT_S      self,   value,  temp_3;
3762         STORE_F "color "",      parm0_x;
3763         STORE_F temp_3, parm1_x;
3764         STORE_F ""
3765 ",      parm2_x;
3766         CALL3           strcat;
3767         STORE_F return_x,       parm0_x;
3768         CALL1           cmd;
3769         DONE;
3770 }
3771
3772 void () _IDNC_Reset;
3773 void() _IDNC_Reset = asm
3774 {
3775 local float temp_3;
3776         INDIRECT_S      self,   defValue,       temp_3;
3777         STORE_F self,   parm0_x;
3778         STORE_F value,  parm1_x;
3779         STORE_F temp_3, parm2_x;
3780         CALL3           String_EntitySet;
3781         CALL0           _IDNN_Send;
3782         DONE;
3783 }
3784
3785 void(float pEvent) Item_Data_Nex_Color_DataEvent = asm
3786 {
3787 local float temp_3;
3788         GOTO            11;
3789         CALL0           _IDNC_Sync;
3790         GOTO            18;
3791         CALL0           _IDNC_Send;
3792         GOTO            16;
3793         CALL0           _IDNC_Reset;
3794         GOTO            14;
3795         CALL0           _IDNC_Test_Start;
3796         GOTO            12;
3797         CALL0           _IDNC_Test_End;
3798         GOTO            10;
3799         IFNOT           pEvent, -10;
3800         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
3801         IF              temp_3, -10;
3802         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
3803         IF              temp_3, -10;
3804         EQ_F            pEvent, ITEM_DATA_TEST_START,   temp_3;
3805         IF              temp_3, -10;
3806         EQ_F            pEvent, ITEM_DATA_TEST_END,     temp_3;
3807         IF              temp_3, -10;
3808         DONE;
3809 }
3810
3811 void() Item_Data_Nex_Color_Spawn = asm
3812 {
3813 local float temp_3;
3814         CALL0           Item_Data_Init;
3815         ADDRESS self,   _reinit,        temp_3;
3816         STOREP_FNC      _IDNC_Sync,     temp_3;
3817         ADDRESS self,   _dataEvent,     temp_3;
3818         STOREP_FNC      Item_Data_Nex_Color_DataEvent,  temp_3;
3819         DONE;
3820 }
3821
3822 void() Item_Nex_Map_Info_Destroy = asm
3823 {
3824         STORE_F self,   parm0_x;
3825         STORE_F link,   parm1_x;
3826         CALL2           String_EntityFree;
3827         STORE_F self,   parm0_x;
3828         STORE_F picture,        parm1_x;
3829         CALL2           String_EntityFree;
3830         STORE_F self,   parm0_x;
3831         STORE_F text,   parm1_x;
3832         CALL2           String_EntityFree;
3833         STORE_F self,   parm0_x;
3834         STORE_F normal, parm1_x;
3835         CALL2           String_EntityFree;
3836         DONE;
3837 }
3838
3839 void() Item_Nex_Map_Info_Spawn = asm
3840 {
3841 local float temp_3;
3842         STORE_F self,   parm0_x;
3843         STORE_F link,   parm1_x;
3844         CALL2           String_EntityZone;
3845         STORE_F self,   parm0_x;
3846         STORE_F picture,        parm1_x;
3847         CALL2           String_EntityZone;
3848         STORE_F self,   parm0_x;
3849         STORE_F text,   parm1_x;
3850         CALL2           String_EntityZone;
3851         STORE_F self,   parm0_x;
3852         STORE_F normal, parm1_x;
3853         CALL2           String_EntityZone;
3854         INDIRECT_S      self,   picture,        parm0_x;
3855         CALL1           Gfx_Precache;
3856         ADDRESS self,   _destroy,       temp_3;
3857         STOREP_FNC      Item_Nex_Map_Info_Destroy,      temp_3;
3858         DONE;
3859 }
3860
3861 string _Nex_MapList_FullPath;
3862 string _Nex_MapList_Name;
3863 entity _Nex_MapList_Root;
3864 void() Item_Nex_MapDB_EnumFiles = asm
3865 {
3866 local float locked_1174;
3867 local string lLine;
3868 local string lTitle;
3869 local string lDescription;
3870 local string lName;
3871 local string lStripped;
3872 local string lFilename;
3873 local float lHandle;
3874 local entity lMap;
3875 local float lSearchCounter;
3876 local float lSearchSize;
3877 local float lSearchHandle;
3878 local float temp_4;
3879         STORE_F "maps/*.bsp",   parm0_x;
3880         STORE_F FILE_APPEND,    parm1_x;
3881         STORE_F FILE_APPEND,    parm2_x;
3882         CALL3           search_begin;
3883         STORE_F return_x,       lSearchHandle;
3884         LT              lSearchHandle,  KEY_GAME,       locked_1174;
3885         IFNOT           locked_1174,    2;
3886         RETURN  offset_0;
3887         STORE_F lSearchHandle,  parm0_x;
3888         CALL1           search_getsize;
3889         STORE_F return_x,       lSearchSize;
3890         STORE_F KEY_GAME,       lSearchCounter;
3891         LT              lSearchCounter, lSearchSize,    locked_1174;
3892         IFNOT           locked_1174,    105;
3893         STORE_F lSearchHandle,  parm0_x;
3894         STORE_F lSearchCounter, parm1_x;
3895         CALL2           search_getfilename;
3896         STORE_S return_x,       lFilename;
3897         STORE_F lFilename,      parm0_x;
3898         CALL1           strlen;
3899         SUB_F           return_x,       CVAR_READONLY,  locked_1174;
3900         STORE_F lFilename,      parm0_x;
3901         STORE_F KEY_GAME,       parm1_x;
3902         STORE_F locked_1174,    parm2_x;
3903         CALL3           substring;
3904         STORE_F return_x,       parm0_x;
3905         CALL1           String_Zone;
3906         STORE_S return_x,       lStripped;
3907         STORE_F lStripped,      parm0_x;
3908         STORE_F SLIST_SERVERREPLYCOUNT, parm1_x;
3909         STORE_F 100000.000000,  parm2_x;
3910         CALL3           substring;
3911         STORE_F return_x,       parm0_x;
3912         CALL1           String_Zone;
3913         STORE_S return_x,       lName;
3914         STORE_F lStripped,      parm0_x;
3915         STORE_F ".txt", parm1_x;
3916         CALL2           strcat;
3917         STORE_F return_x,       parm0_x;
3918         STORE_F KEY_GAME,       parm1_x;
3919         CALL2           fopen;
3920         STORE_F return_x,       lHandle;
3921         LT              lHandle,        KEY_GAME,       locked_1174;
3922         IFNOT           locked_1174,    11;
3923         STORE_F lName,  parm0_x;
3924         CALL1           String_Zone;
3925         STORE_S return_x,       lTitle;
3926         STORE_F "--NO INFORMATION AVAILABLE--
3927 ",      parm0_x;
3928         STORE_F lFilename,      parm1_x;
3929         CALL2           strcat;
3930         STORE_F return_x,       parm0_x;
3931         CALL1           String_Zone;
3932         STORE_S return_x,       lDescription;
3933         GOTO            23;
3934         STORE_F lHandle,        parm0_x;
3935         CALL1           fgets;
3936         STORE_F return_x,       parm0_x;
3937         CALL1           String_Zone;
3938         STORE_S return_x,       lTitle;
3939         CALL0           String_Create;
3940         STORE_S return_x,       lDescription;
3941         STORE_F lHandle,        parm0_x;
3942         CALL1           fgets;
3943         STORE_S return_x,       lLine;
3944         STORE_F lLine,  parm0_x;
3945         STORE_F "
3946 ",      parm1_x;
3947         CALL2           strcat;
3948         STORE_F lDescription,   parm0_x;
3949         STORE_F return_x,       parm1_x;
3950         CALL2           String_Append;
3951         STORE_S return_x,       lDescription;
3952         STORE_F lLine,  parm0_x;
3953         CALL1           validstring;
3954         IF              return_x,       -12;
3955         STORE_F lHandle,        parm0_x;
3956         CALL1           fclose;
3957         STORE_F lSearchCounter, parm0_x;
3958         CALL1           ftos;
3959         INDIRECT_S      self,   name,   locked_1174;
3960         STORE_F "Item_Nex_Map_Info",    parm0_x;
3961         STORE_F return_x,       parm1_x;
3962         STORE_F locked_1174,    parm2_x;
3963         CALL3           Menu_CreateItem;
3964         STORE_ENT       return_x,       lMap;
3965         ADDRESS lMap,   link,   locked_1174;
3966         STOREP_S        lName,  locked_1174;
3967         STORE_F lStripped,      parm0_x;
3968         CALL1           Gfx_Precache;
3969         IFNOT           return_x,       4;
3970         ADDRESS lMap,   picture,        locked_1174;
3971         STOREP_S        lStripped,      locked_1174;
3972         GOTO            3;
3973         ADDRESS lMap,   picture,        locked_1174;
3974         STOREP_S        "gfx/m_nomap",  locked_1174;
3975         ADDRESS lMap,   normal, locked_1174;
3976         STOREP_S        lTitle, locked_1174;
3977         ADDRESS lMap,   text,   locked_1174;
3978         STOREP_S        lDescription,   locked_1174;
3979         STORE_F _Nex_MapList_FullPath,  parm0_x;
3980         STORE_F lName,  parm1_x;
3981         CALL2           Util_AltStringPushBack;
3982         STORE_S return_x,       _Nex_MapList_FullPath;
3983         STORE_F _Nex_MapList_Name,      parm0_x;
3984         STORE_F lTitle, parm1_x;
3985         CALL2           Util_AltStringPushBack;
3986         STORE_S return_x,       _Nex_MapList_Name;
3987         STORE_F lMap,   parm0_x;
3988         CALL1           Menu_LinkItem;
3989         STORE_F lTitle, parm0_x;
3990         CALL1           String_Free;
3991         STORE_F lName,  parm0_x;
3992         CALL1           String_Free;
3993         STORE_F lStripped,      parm0_x;
3994         CALL1           String_Free;
3995         STORE_F lDescription,   parm0_x;
3996         CALL1           String_Free;
3997         ADD_F           lSearchCounter, FILE_APPEND,    lSearchCounter;
3998         GOTO            -105;
3999         STORE_F lSearchHandle,  parm0_x;
4000         CALL1           search_end;
4001         STORE_F self,   parm0_x;
4002         CALL1           Menu_LinkChildren;
4003         ADDRESS self,   minValue,       locked_1174;
4004         STOREP_F        FILE_APPEND,    locked_1174;
4005         ADDRESS self,   stepValue,      locked_1174;
4006         STOREP_F        FILE_APPEND,    locked_1174;
4007         ADDRESS self,   maxValue,       locked_1174;
4008         INDIRECT_F      lMap,   orderPos,       parm0_x;
4009         CALL1           fabs;
4010         STOREP_F        return_x,       locked_1174;
4011         DONE;
4012 }
4013
4014 void() Item_Nex_MapDB_Destroy = asm
4015 {
4016         STORE_F _Nex_MapList_FullPath,  parm0_x;
4017         CALL1           String_Free;
4018         STORE_F _Nex_MapList_Name,      parm0_x;
4019         CALL1           String_Free;
4020         STORE_ENT       null_entity,    _Nex_MapList_Root;
4021         DONE;
4022 }
4023
4024 void() Item_Nex_MapDB_Spawn = asm
4025 {
4026 local float temp_3;
4027         IFNOT           _Nex_MapList_Root,      3;
4028         STORE_F "There is already another Item_Nex_MapDB object!",      parm0_x;
4029         CALL1           error;
4030         CALL0           String_Create;
4031         STORE_S return_x,       _Nex_MapList_FullPath;
4032         CALL0           String_Create;
4033         STORE_S return_x,       _Nex_MapList_Name;
4034         STORE_ENT       self,   _Nex_MapList_Root;
4035         CALL0           Item_Nex_MapDB_EnumFiles;
4036         ADDRESS self,   _destroy,       temp_3;
4037         STOREP_FNC      Item_Nex_MapDB_Destroy, temp_3;
4038         DONE;
4039 }
4040
4041 entity(string pPath) Nex_MapDB_GetByPath = asm
4042 {
4043 local entity lNode;
4044 local float temp_3;
4045         IF              _Nex_MapList_Root,      3;
4046         STORE_F "No Item_Nex_MapDB found!",     parm0_x;
4047         CALL1           error;
4048         INDIRECT_E      _Nex_MapList_Root,      _child, lNode;
4049         IFNOT           lNode,  7;
4050         INDIRECT_S      lNode,  link,   temp_3;
4051         EQ_S            temp_3, pPath,  temp_3;
4052         IFNOT           temp_3, 2;
4053         RETURN  lNode;
4054         INDIRECT_E      lNode,  _next,  lNode;
4055         GOTO            -6;
4056         RETURN  null_entity;
4057         DONE;
4058 }
4059
4060 entity(float pIndex) Nex_MapDB_GetByIndex = asm
4061 {
4062 local entity lNode;
4063 local float temp_3;
4064         IF              _Nex_MapList_Root,      3;
4065         STORE_F "No Item_Nex_MapDB found!",     parm0_x;
4066         CALL1           error;
4067         STORE_F pIndex, parm0_x;
4068         CALL1           fabs;
4069         STORE_F return_x,       pIndex;
4070         INDIRECT_E      _Nex_MapList_Root,      _child, lNode;
4071         IFNOT           lNode,  8;
4072         INDIRECT_F      lNode,  orderPos,       parm0_x;
4073         CALL1           fabs;
4074         EQ_F            return_x,       pIndex, temp_3;
4075         IFNOT           temp_3, 2;
4076         RETURN  lNode;
4077         INDIRECT_E      lNode,  _next,  lNode;
4078         GOTO            -7;
4079         RETURN  null_entity;
4080         DONE;
4081 }
4082
4083 string() Nex_MapDB_GetPathAltString = asm
4084 {
4085         RETURN  _Nex_MapList_FullPath;
4086         DONE;
4087 }
4088
4089 string() Nex_MapDB_GetNameAltString = asm
4090 {
4091         RETURN  _Nex_MapList_Name;
4092         DONE;
4093 }
4094
4095 float(entity pItem) Nex_MapDB_GetIndex = asm
4096 {
4097 local float temp_3;
4098         INDIRECT_F      pItem,  orderPos,       parm0_x;
4099         CALL1           fabs;
4100         RETURN  return_x;
4101         DONE;
4102 }
4103
4104 void () Item_DataLink_Nex_MapList_Save;
4105 void() Item_DataLink_Nex_MapList_Save = asm
4106 {
4107 local string lOutput;
4108 local float lIndex;
4109 local float lCount;
4110 local float temp_3;
4111 local float temp_4;
4112         STORE_F "
4113 ",      parm0_x;
4114         CALL1           String_Zone;
4115         STORE_S return_x,       lOutput;
4116         INDIRECT_S      self,   valueList,      parm0_x;
4117         CALL1           Util_GetAltStringCount;
4118         STORE_F return_x,       lCount;
4119         STORE_F KEY_GAME,       lIndex;
4120         LT              lIndex, lCount, temp_3;
4121         IFNOT           temp_3, 17;
4122         INDIRECT_S      self,   valueList,      parm0_x;
4123         STORE_F lIndex, parm1_x;
4124         CALL2           Util_GetAltStringItem;
4125         STORE_F return_x,       parm0_x;
4126         CALL1           String_Normal;
4127         STORE_F "'",    parm0_x;
4128         STORE_F return_x,       parm1_x;
4129         STORE_F "'
4130 ",      parm2_x;
4131         CALL3           strcat;
4132         STORE_F lOutput,        parm0_x;
4133         STORE_F return_x,       parm1_x;
4134         CALL2           String_Append;
4135         STORE_S return_x,       lOutput;
4136         STORE_F lIndex, temp_4;
4137         ADD_F           lIndex, FILE_APPEND,    lIndex;
4138         GOTO            -17;
4139         INDIRECT_S      self,   cvarName,       parm0_x;
4140         STORE_F lOutput,        parm1_x;
4141         CALL2           cvar_set;
4142         INDIRECT_S      self,   cvarName,       parm0_x;
4143         STORE_F "_index",       parm1_x;
4144         CALL2           strcat;
4145         STORE_F return_x,       parm0_x;
4146         STORE_F "0",    parm1_x;
4147         CALL2           cvar_set;
4148         STORE_F lOutput,        parm0_x;
4149         CALL1           String_Free;
4150         DONE;
4151 }
4152
4153 void () Item_DataLink_Nex_MapList_Load;
4154 void() Item_DataLink_Nex_MapList_Load = asm
4155 {
4156 local float locked_1174;
4157 local float lCount;
4158 local float lCounter;
4159 local entity lMapInfo;
4160 local string lEntry;
4161 local float temp_4;
4162 local float temp_5;
4163         STORE_F self,   parm0_x;
4164         CALL1           DataLink_Nex_MapList_Clear;
4165         INDIRECT_S      self,   cvarName,       parm0_x;
4166         CALL1           str_cvar;
4167         STORE_F return_x,       parm0_x;
4168         CALL1           tokenize;
4169         STORE_F return_x,       lCount;
4170         CALL0           String_Create;
4171         STORE_S return_x,       lEntry;
4172         STORE_F KEY_GAME,       lCounter;
4173         LT              lCounter,       lCount, locked_1174;
4174         IFNOT           locked_1174,    35;
4175         STORE_F lCounter,       parm0_x;
4176         CALL1           argv;
4177         STORE_F lEntry, parm0_x;
4178         STORE_F return_x,       parm1_x;
4179         CALL2           String_Set;
4180         STORE_S return_x,       lEntry;
4181         STORE_F lEntry, parm0_x;
4182         CALL1           Nex_MapDB_GetByPath;
4183         STORE_ENT       return_x,       lMapInfo;
4184         EQ_E            lMapInfo,       null_entity,    locked_1174;
4185         IFNOT           locked_1174,    7;
4186         INDIRECT_S      self,   cvarName,       parm0_x;
4187         STORE_F ": Map '",      parm1_x;
4188         STORE_F lEntry, parm2_x;
4189         STORE_F "' not found in database - ignored
4190 ",      parm3_x;
4191         CALL4           print;
4192         GOTO            15;
4193         ADDRESS self,   descList,       locked_1174;
4194         INDIRECT_S      self,   descList,       temp_4;
4195         INDIRECT_S      lMapInfo,       normal, temp_5;
4196         STORE_F temp_4, parm0_x;
4197         STORE_F temp_5, parm1_x;
4198         CALL2           Util_AltStringPushBack;
4199         STOREP_S        return_x,       locked_1174;
4200         ADDRESS self,   valueList,      locked_1174;
4201         INDIRECT_S      self,   valueList,      temp_4;
4202         INDIRECT_S      lMapInfo,       link,   temp_5;
4203         STORE_F temp_4, parm0_x;
4204         STORE_F temp_5, parm1_x;
4205         CALL2           Util_AltStringPushBack;
4206         STOREP_S        return_x,       locked_1174;
4207         STORE_F lCounter,       temp_4;
4208         ADD_F           lCounter,       FILE_APPEND,    lCounter;
4209         GOTO            -35;
4210         STORE_F lEntry, parm0_x;
4211         CALL1           String_Free;
4212         STORE_F self,   parm0_x;
4213         CALL1           DataLink_Nex_MapList_UpdateRange;
4214         CALL0           Nex_MapSelector_Synchronize;
4215         DONE;
4216 }
4217
4218 void () Item_DataLink_Nex_MapList_ExecString;
4219 void() Item_DataLink_Nex_MapList_ExecString = asm
4220 {
4221 local float lIndex;
4222 local float lCount;
4223 local float temp_3;
4224 local float temp_4;
4225         INDIRECT_S      self,   cvarName,       temp_3;
4226         INDIRECT_S      self,   cvarName,       temp_4;
4227         STORE_F "set "",        parm0_x;
4228         STORE_F temp_3, parm1_x;
4229         STORE_F "_index" "0"
4230 set "", parm2_x;
4231         STORE_F temp_4, parm3_x;
4232         STORE_F ""
4233 "
4234 ",      parm4_x;
4235         CALL5           strcat;
4236         STORE_F Data_ExecString,        parm0_x;
4237         STORE_F return_x,       parm1_x;
4238         CALL2           String_Append;
4239         STORE_S return_x,       Data_ExecString;
4240         INDIRECT_S      self,   valueList,      parm0_x;
4241         CALL1           Util_GetAltStringCount;
4242         STORE_F return_x,       lCount;
4243         STORE_F KEY_GAME,       lIndex;
4244         LT              lIndex, lCount, temp_3;
4245         IFNOT           temp_3, 17;
4246         INDIRECT_S      self,   valueList,      parm0_x;
4247         STORE_F lIndex, parm1_x;
4248         CALL2           Util_GetAltStringItem;
4249         STORE_F return_x,       parm0_x;
4250         CALL1           String_Normal;
4251         STORE_F "'",    parm0_x;
4252         STORE_F return_x,       parm1_x;
4253         STORE_F "'
4254 ",      parm2_x;
4255         CALL3           strcat;
4256         STORE_F Data_ExecString,        parm0_x;
4257         STORE_F return_x,       parm1_x;
4258         CALL2           String_Append;
4259         STORE_S return_x,       Data_ExecString;
4260         STORE_F lIndex, temp_4;
4261         ADD_F           lIndex, FILE_APPEND,    lIndex;
4262         GOTO            -17;
4263         STORE_F Data_ExecString,        parm0_x;
4264         STORE_F ""
4265 ",      parm1_x;
4266         CALL2           String_Append;
4267         STORE_S return_x,       Data_ExecString;
4268         DONE;
4269 }
4270
4271 void(float pEvent) Item_DataLink_Nex_MapList_DataEvent = asm
4272 {
4273 local float locked_1174;
4274 local float temp_4;
4275         GOTO            39;
4276         INDIRECT_S      self,   cvarName,       locked_1174;
4277         NE_S            locked_1174,    "",     locked_1174;
4278         IFNOT           locked_1174,    2;
4279         CALL0           Item_DataLink_Nex_MapList_Load;
4280         GOTO            49;
4281         INDIRECT_S      self,   cvarName,       locked_1174;
4282         NE_S            locked_1174,    "",     locked_1174;
4283         IFNOT           locked_1174,    2;
4284         CALL0           Item_DataLink_Nex_MapList_Save;
4285         GOTO            44;
4286         ADDRESS self,   _realValue,     locked_1174;
4287         STOREP_F        FILE_APPEND,    locked_1174;
4288         GOTO            41;
4289         GOTO            40;
4290         GOTO            39;
4291         INDIRECT_S      self,   cvarName,       locked_1174;
4292         NE_S            locked_1174,    "",     locked_1174;
4293         IFNOT           locked_1174,    2;
4294         CALL0           Item_DataLink_Nex_MapList_ExecString;
4295         GOTO            34;
4296         ADDRESS self,   _realValue,     locked_1174;
4297         INDIRECT_F      self,   _realValue,     parm0_x;
4298         CALL1           floor;
4299         STOREP_F        return_x,       locked_1174;
4300         INDIRECT_F      self,   _realValue,     locked_1174;
4301         LT              locked_1174,    FILE_APPEND,    locked_1174;
4302         IFNOT           locked_1174,    4;
4303         ADDRESS self,   _realValue,     locked_1174;
4304         STOREP_F        FILE_APPEND,    locked_1174;
4305         GOTO            8;
4306         INDIRECT_F      self,   _realValue,     locked_1174;
4307         INDIRECT_F      self,   maxValue,       temp_4;
4308         GT              locked_1174,    temp_4, locked_1174;
4309         IFNOT           locked_1174,    4;
4310         ADDRESS self,   _realValue,     locked_1174;
4311         INDIRECT_F      self,   maxValue,       temp_4;
4312         STOREP_F        temp_4, locked_1174;
4313         GOTO            16;
4314         IFNOT           pEvent, -38;
4315         EQ_F            pEvent, ITEM_DATA_SEND, locked_1174;
4316         IF              locked_1174,    -35;
4317         EQ_F            pEvent, ITEM_DATA_RESET,        locked_1174;
4318         IF              locked_1174,    -32;
4319         EQ_F            pEvent, ITEM_DATA_TEST_START,   locked_1174;
4320         IF              locked_1174,    -31;
4321         EQ_F            pEvent, ITEM_DATA_TEST_END,     locked_1174;
4322         IF              locked_1174,    -32;
4323         EQ_F            pEvent, ITEM_DATA_SAVE_EXECSTRING,      locked_1174;
4324         IF              locked_1174,    -33;
4325         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1174;
4326         IF              locked_1174,    -30;
4327         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1174;
4328         IF              locked_1174,    -32;
4329         DONE;
4330 }
4331
4332 void () IDLNML_Reinit;
4333 void() IDLNML_Reinit = asm
4334 {
4335         STORE_F self,   parm0_x;
4336         STORE_F ITEM_DATA_SYNC, parm1_x;
4337         CALL2           Raise_DataEvent;
4338         DONE;
4339 }
4340
4341 void () Item_DataLink_Nex_MapList_Destroy;
4342 void() Item_DataLink_Nex_MapList_Destroy = asm
4343 {
4344         STORE_F self,   parm0_x;
4345         STORE_F valueList,      parm1_x;
4346         CALL2           String_EntityFree;
4347         STORE_F self,   parm0_x;
4348         STORE_F cvarName,       parm1_x;
4349         CALL2           String_EntityFree;
4350         CALL0           Item_DataLink_Switch_Destroy;
4351         DONE;
4352 }
4353
4354 void() Item_DataLink_Nex_MapList_Spawn = asm
4355 {
4356 local float temp_3;
4357         CALL0           Item_DataLink_Switch_Init;
4358         STORE_F self,   parm0_x;
4359         STORE_F valueList,      parm1_x;
4360         CALL2           String_EntityZone;
4361         STORE_F self,   parm0_x;
4362         STORE_F cvarName,       parm1_x;
4363         CALL2           String_EntityZone;
4364         INDIRECT_S      self,   cvarName,       temp_3;
4365         NE_S            temp_3, "",     temp_3;
4366         IFNOT           temp_3, 12;
4367         INDIRECT_S      self,   cvarName,       parm0_x;
4368         STORE_F "",     parm1_x;
4369         STORE_F FILE_APPEND,    parm2_x;
4370         CALL3           registercvar;
4371         INDIRECT_S      self,   cvarName,       parm0_x;
4372         STORE_F "_index",       parm1_x;
4373         CALL2           strcat;
4374         STORE_F return_x,       parm0_x;
4375         STORE_F "",     parm1_x;
4376         STORE_F FILE_APPEND,    parm2_x;
4377         CALL3           registercvar;
4378         ADDRESS self,   minValue,       temp_3;
4379         STOREP_F        FILE_APPEND,    temp_3;
4380         ADDRESS self,   maxValue,       temp_3;
4381         STOREP_F        FILE_APPEND,    temp_3;
4382         ADDRESS self,   stepValue,      temp_3;
4383         STOREP_F        KEY_GAME,       temp_3;
4384         ADDRESS self,   _reinit,        temp_3;
4385         STOREP_FNC      IDLNML_Reinit,  temp_3;
4386         ADDRESS self,   _dataEvent,     temp_3;
4387         STOREP_FNC      Item_DataLink_Nex_MapList_DataEvent,    temp_3;
4388         ADDRESS self,   _destroy,       temp_3;
4389         STOREP_FNC      Item_DataLink_Nex_MapList_Destroy,      temp_3;
4390         CALL0           CtCall_Init;
4391         DONE;
4392 }
4393
4394 void() Item_DataLink_Nex_MapList_InitWithMapList = asm
4395 {
4396         CALL0           Nex_MapDB_GetPathAltString;
4397         STORE_F self,   parm0_x;
4398         STORE_F valueList,      parm1_x;
4399         STORE_F return_x,       parm2_x;
4400         CALL3           String_EntitySet;
4401         CALL0           Nex_MapDB_GetNameAltString;
4402         STORE_F self,   parm0_x;
4403         STORE_F descList,       parm1_x;
4404         STORE_F return_x,       parm2_x;
4405         CALL3           String_EntitySet;
4406         STORE_F self,   parm0_x;
4407         CALL1           DataLink_Nex_MapList_UpdateRange;
4408         DONE;
4409 }
4410
4411 void(entity pItem) DataLink_Nex_MapList_UpdateRange = asm
4412 {
4413 local float locked_1174;
4414 local float temp_4;
4415         ADDRESS pItem,  minValue,       locked_1174;
4416         STOREP_F        FILE_APPEND,    locked_1174;
4417         ADDRESS pItem,  maxValue,       locked_1174;
4418         INDIRECT_S      pItem,  descList,       parm0_x;
4419         CALL1           Util_GetAltStringCount;
4420         STOREP_F        return_x,       locked_1174;
4421         INDIRECT_F      pItem,  maxValue,       locked_1174;
4422         GE              locked_1174,    FILE_APPEND,    locked_1174;
4423         IFNOT           locked_1174,    4;
4424         ADDRESS pItem,  stepValue,      locked_1174;
4425         STOREP_F        FILE_APPEND,    locked_1174;
4426         GOTO            5;
4427         ADDRESS pItem,  maxValue,       locked_1174;
4428         STOREP_F        FILE_APPEND,    locked_1174;
4429         ADDRESS pItem,  stepValue,      locked_1174;
4430         STOREP_F        KEY_GAME,       locked_1174;
4431         DONE;
4432 }
4433
4434 void(entity pItem, string pName, string pPath) DataLink_Nex_MapList_InsertEntryAfter = asm
4435 {
4436 local float locked_1174;
4437 local float lIndex;
4438 local float temp_4;
4439         STORE_F pItem,  parm0_x;
4440         STORE_F ITEM_DATALINK_GET,      parm1_x;
4441         CALL2           Raise_DataEvent;
4442         INDIRECT_F      pItem,  _realValue,     locked_1174;
4443         SUB_F           locked_1174,    FILE_APPEND,    lIndex;
4444         ADDRESS pItem,  descList,       locked_1174;
4445         INDIRECT_S      pItem,  descList,       parm0_x;
4446         STORE_F lIndex, parm1_x;
4447         STORE_F pName,  parm2_x;
4448         CALL3           Util_InsAltStringItem;
4449         STOREP_S        return_x,       locked_1174;
4450         ADDRESS pItem,  valueList,      locked_1174;
4451         INDIRECT_S      pItem,  valueList,      parm0_x;
4452         STORE_F lIndex, parm1_x;
4453         STORE_F pPath,  parm2_x;
4454         CALL3           Util_InsAltStringItem;
4455         STOREP_S        return_x,       locked_1174;
4456         STORE_F pItem,  parm0_x;
4457         CALL1           DataLink_Nex_MapList_UpdateRange;
4458         DONE;
4459 }
4460
4461 void(entity pItem) DataLink_Nex_MapList_DeleteEntry = asm
4462 {
4463 local float locked_1174;
4464 local float lIndex;
4465 local float temp_4;
4466         INDIRECT_F      pItem,  stepValue,      locked_1174;
4467         EQ_F            locked_1174,    KEY_GAME,       locked_1174;
4468         IFNOT           locked_1174,    2;
4469         RETURN  offset_0;
4470         STORE_F pItem,  parm0_x;
4471         STORE_F ITEM_DATALINK_GET,      parm1_x;
4472         CALL2           Raise_DataEvent;
4473         INDIRECT_F      pItem,  _realValue,     locked_1174;
4474         SUB_F           locked_1174,    FILE_APPEND,    lIndex;
4475         ADDRESS pItem,  descList,       locked_1174;
4476         INDIRECT_S      pItem,  descList,       parm0_x;
4477         STORE_F lIndex, parm1_x;
4478         CALL2           Util_DelAltStringItem;
4479         STOREP_S        return_x,       locked_1174;
4480         ADDRESS pItem,  valueList,      locked_1174;
4481         INDIRECT_S      pItem,  valueList,      parm0_x;
4482         STORE_F lIndex, parm1_x;
4483         CALL2           Util_DelAltStringItem;
4484         STOREP_S        return_x,       locked_1174;
4485         STORE_F pItem,  parm0_x;
4486         CALL1           DataLink_Nex_MapList_UpdateRange;
4487         DONE;
4488 }
4489
4490 void(entity pItem) DataLink_Nex_MapList_MoveEntryUp = asm
4491 {
4492 local float locked_1020;
4493 local float locked_1174;
4494 local float lIndexOld;
4495 local float lIndexNew;
4496 local string lPath;
4497 local string lName;
4498         STORE_F pItem,  parm0_x;
4499         STORE_F ITEM_DATALINK_GET,      parm1_x;
4500         CALL2           Raise_DataEvent;
4501         INDIRECT_F      pItem,  _realValue,     locked_1174;
4502         EQ_F            locked_1174,    FILE_APPEND,    locked_1174;
4503         IFNOT           locked_1174,    2;
4504         RETURN  offset_0;
4505         INDIRECT_F      pItem,  _realValue,     locked_1174;
4506         SUB_F           locked_1174,    FILE_APPEND,    lIndexOld;
4507         SUB_F           lIndexOld,      KEY_MENU,       lIndexNew;
4508         INDIRECT_S      pItem,  descList,       parm0_x;
4509         STORE_F lIndexOld,      parm1_x;
4510         CALL2           Util_GetAltStringItem;
4511         STORE_S return_x,       lName;
4512         INDIRECT_S      pItem,  valueList,      parm0_x;
4513         STORE_F lIndexOld,      parm1_x;
4514         CALL2           Util_GetAltStringItem;
4515         STORE_S return_x,       lPath;
4516         ADDRESS pItem,  descList,       locked_1174;
4517         INDIRECT_S      pItem,  descList,       locked_1020;
4518         STORE_F lName,  parm0_x;
4519         CALL1           String_Normal;
4520         STORE_F locked_1020,    parm0_x;
4521         STORE_F lIndexNew,      parm1_x;
4522         STORE_F return_x,       parm2_x;
4523         CALL3           Util_InsAltStringItem;
4524         STOREP_S        return_x,       locked_1174;
4525         ADDRESS pItem,  valueList,      locked_1174;
4526         INDIRECT_S      pItem,  valueList,      locked_1020;
4527         STORE_F lPath,  parm0_x;
4528         CALL1           String_Normal;
4529         STORE_F locked_1020,    parm0_x;
4530         STORE_F lIndexNew,      parm1_x;
4531         STORE_F return_x,       parm2_x;
4532         CALL3           Util_InsAltStringItem;
4533         STOREP_S        return_x,       locked_1174;
4534         ADD_F           lIndexOld,      FILE_APPEND,    lIndexOld;
4535         ADDRESS pItem,  descList,       locked_1174;
4536         INDIRECT_S      pItem,  descList,       parm0_x;
4537         STORE_F lIndexOld,      parm1_x;
4538         CALL2           Util_DelAltStringItem;
4539         STOREP_S        return_x,       locked_1174;
4540         ADDRESS pItem,  valueList,      locked_1174;
4541         INDIRECT_S      pItem,  valueList,      parm0_x;
4542         STORE_F lIndexOld,      parm1_x;
4543         CALL2           Util_DelAltStringItem;
4544         STOREP_S        return_x,       locked_1174;
4545         STORE_F pItem,  parm0_x;
4546         CALL1           DataLink_Nex_MapList_UpdateRange;
4547         DONE;
4548 }
4549
4550 void(entity pItem) DataLink_Nex_MapList_MoveEntryDown = asm
4551 {
4552 local float locked_1020;
4553 local float locked_1174;
4554 local float lIndexOld;
4555 local float lIndexNew;
4556 local string lPath;
4557 local string lName;
4558         STORE_F pItem,  parm0_x;
4559         STORE_F ITEM_DATALINK_GET,      parm1_x;
4560         CALL2           Raise_DataEvent;
4561         INDIRECT_F      pItem,  _realValue,     locked_1174;
4562         INDIRECT_F      pItem,  maxValue,       locked_1020;
4563         EQ_F            locked_1174,    locked_1020,    locked_1174;
4564         IFNOT           locked_1174,    2;
4565         RETURN  offset_0;
4566         INDIRECT_F      pItem,  _realValue,     locked_1174;
4567         SUB_F           locked_1174,    FILE_APPEND,    lIndexOld;
4568         ADD_F           lIndexOld,      FILE_APPEND,    lIndexNew;
4569         INDIRECT_S      pItem,  descList,       parm0_x;
4570         STORE_F lIndexOld,      parm1_x;
4571         CALL2           Util_GetAltStringItem;
4572         STORE_S return_x,       lName;
4573         INDIRECT_S      pItem,  valueList,      parm0_x;
4574         STORE_F lIndexOld,      parm1_x;
4575         CALL2           Util_GetAltStringItem;
4576         STORE_S return_x,       lPath;
4577         ADDRESS pItem,  descList,       locked_1174;
4578         INDIRECT_S      pItem,  descList,       locked_1020;
4579         STORE_F lName,  parm0_x;
4580         CALL1           String_Normal;
4581         STORE_F locked_1020,    parm0_x;
4582         STORE_F lIndexNew,      parm1_x;
4583         STORE_F return_x,       parm2_x;
4584         CALL3           Util_InsAltStringItem;
4585         STOREP_S        return_x,       locked_1174;
4586         ADDRESS pItem,  valueList,      locked_1174;
4587         INDIRECT_S      pItem,  valueList,      locked_1020;
4588         STORE_F lPath,  parm0_x;
4589         CALL1           String_Normal;
4590         STORE_F locked_1020,    parm0_x;
4591         STORE_F lIndexNew,      parm1_x;
4592         STORE_F return_x,       parm2_x;
4593         CALL3           Util_InsAltStringItem;
4594         STOREP_S        return_x,       locked_1174;
4595         ADDRESS pItem,  descList,       locked_1174;
4596         INDIRECT_S      pItem,  descList,       parm0_x;
4597         STORE_F lIndexOld,      parm1_x;
4598         CALL2           Util_DelAltStringItem;
4599         STOREP_S        return_x,       locked_1174;
4600         ADDRESS pItem,  valueList,      locked_1174;
4601         INDIRECT_S      pItem,  valueList,      parm0_x;
4602         STORE_F lIndexOld,      parm1_x;
4603         CALL2           Util_DelAltStringItem;
4604         STOREP_S        return_x,       locked_1174;
4605         STORE_F pItem,  parm0_x;
4606         CALL1           DataLink_Nex_MapList_UpdateRange;
4607         DONE;
4608 }
4609
4610 void(entity pItem, string pName, string pPath) DataLink_Nex_MapList_SetFirst = asm
4611 {
4612 local float locked_1174;
4613 local float temp_4;
4614         INDIRECT_F      pItem,  stepValue,      locked_1174;
4615         EQ_F            locked_1174,    KEY_GAME,       locked_1174;
4616         IFNOT           locked_1174,    12;
4617         ADDRESS pItem,  descList,       locked_1174;
4618         INDIRECT_S      pItem,  descList,       parm0_x;
4619         STORE_F pName,  parm1_x;
4620         CALL2           Util_AltStringPush;
4621         STOREP_S        return_x,       locked_1174;
4622         ADDRESS pItem,  valueList,      locked_1174;
4623         INDIRECT_S      pItem,  valueList,      parm0_x;
4624         STORE_F pPath,  parm1_x;
4625         CALL2           Util_AltStringPush;
4626         STOREP_S        return_x,       locked_1174;
4627         GOTO            13;
4628         ADDRESS pItem,  descList,       locked_1174;
4629         INDIRECT_S      pItem,  descList,       parm0_x;
4630         STORE_F KEY_GAME,       parm1_x;
4631         STORE_F pName,  parm2_x;
4632         CALL3           Util_SetAltStringItem;
4633         STOREP_S        return_x,       locked_1174;
4634         ADDRESS pItem,  valueList,      locked_1174;
4635         INDIRECT_S      pItem,  valueList,      parm0_x;
4636         STORE_F KEY_GAME,       parm1_x;
4637         STORE_F pPath,  parm2_x;
4638         CALL3           Util_SetAltStringItem;
4639         STOREP_S        return_x,       locked_1174;
4640         STORE_F pItem,  parm0_x;
4641         CALL1           DataLink_Nex_MapList_UpdateRange;
4642         DONE;
4643 }
4644
4645 void(entity pItem) DataLink_Nex_MapList_Clear = asm
4646 {
4647         STORE_F pItem,  parm0_x;
4648         STORE_F descList,       parm1_x;
4649         STORE_F "",     parm2_x;
4650         CALL3           String_EntitySet;
4651         STORE_F pItem,  parm0_x;
4652         STORE_F valueList,      parm1_x;
4653         STORE_F "",     parm2_x;
4654         CALL3           String_EntitySet;
4655         STORE_F pItem,  parm0_x;
4656         CALL1           DataLink_Nex_MapList_UpdateRange;
4657         DONE;
4658 }
4659
4660 string(entity pItem) DataLink_Nex_MapList_GetCurrentName = asm
4661 {
4662 local float temp_3;
4663 local float temp_4;
4664         STORE_F pItem,  parm0_x;
4665         STORE_F ITEM_DATALINK_GET,      parm1_x;
4666         CALL2           Raise_DataEvent;
4667         INDIRECT_S      pItem,  descList,       temp_3;
4668         INDIRECT_F      pItem,  _realValue,     temp_4;
4669         SUB_F           temp_4, FILE_APPEND,    temp_4;
4670         STORE_F temp_3, parm0_x;
4671         STORE_F temp_4, parm1_x;
4672         CALL2           Util_GetAltStringItem;
4673         RETURN  return_x;
4674         DONE;
4675 }
4676
4677 string(entity pItem) DataLink_Nex_MapList_GetCurrentPath = asm
4678 {
4679 local float temp_3;
4680 local float temp_4;
4681         STORE_F pItem,  parm0_x;
4682         STORE_F ITEM_DATALINK_GET,      parm1_x;
4683         CALL2           Raise_DataEvent;
4684         INDIRECT_S      pItem,  valueList,      temp_3;
4685         INDIRECT_F      pItem,  _realValue,     temp_4;
4686         SUB_F           temp_4, FILE_APPEND,    temp_4;
4687         STORE_F temp_3, parm0_x;
4688         STORE_F temp_4, parm1_x;
4689         CALL2           Util_GetAltStringItem;
4690         RETURN  return_x;
4691         DONE;
4692 }
4693
4694 void () _IDLNMS_Build;
4695 void() _IDLNMS_Build = asm
4696 {
4697 local string lLine;
4698 local string lModPath;
4699 local string lModName;
4700 local string lFilename;
4701 local float lHandle;
4702 local float lSearchCounter;
4703 local float lSearchSize;
4704 local float lSearchHandle;
4705 local float temp_3;
4706         STORE_F "/*.modinfo",   parm0_x;
4707         STORE_F FILE_APPEND,    parm1_x;
4708         STORE_F FILE_APPEND,    parm2_x;
4709         CALL3           search_begin;
4710         STORE_F return_x,       lSearchHandle;
4711         LT              lSearchHandle,  KEY_GAME,       temp_3;
4712         IFNOT           temp_3, 10;
4713         STORE_F self,   parm0_x;
4714         STORE_F valueList,      parm1_x;
4715         STORE_F "'progs.dat'",  parm2_x;
4716         CALL3           String_EntitySet;
4717         STORE_F self,   parm0_x;
4718         STORE_F descList,       parm1_x;
4719         STORE_F "'Deathmatch'", parm2_x;
4720         CALL3           String_EntitySet;
4721         RETURN  offset_0;
4722         STORE_F lSearchHandle,  parm0_x;
4723         CALL1           search_getsize;
4724         STORE_F return_x,       lSearchSize;
4725         STORE_F KEY_GAME,       lSearchCounter;
4726         LT              lSearchCounter, lSearchSize,    temp_3;
4727         IFNOT           temp_3, 71;
4728         STORE_F lSearchHandle,  parm0_x;
4729         STORE_F lSearchCounter, parm1_x;
4730         CALL2           search_getfilename;
4731         STORE_S return_x,       lFilename;
4732         STORE_F lFilename,      parm0_x;
4733         STORE_F FILE_APPEND,    parm1_x;
4734         STORE_F 100000.000000,  parm2_x;
4735         CALL3           substring;
4736         STORE_F return_x,       parm0_x;
4737         STORE_F KEY_GAME,       parm1_x;
4738         CALL2           fopen;
4739         STORE_F return_x,       lHandle;
4740         LT              lHandle,        KEY_GAME,       temp_3;
4741         IFNOT           temp_3, 6;
4742         STORE_F "Menu: Couldn't open modinfo file '",   parm0_x;
4743         STORE_F lFilename,      parm1_x;
4744         STORE_F "'
4745 ",      parm2_x;
4746         CALL3           print;
4747         GOTO            50;
4748         CALL0           String_Create;
4749         STORE_S return_x,       lModPath;
4750         CALL0           String_Create;
4751         STORE_S return_x,       lModName;
4752         STORE_F lHandle,        parm0_x;
4753         CALL1           fgets;
4754         STORE_S return_x,       lLine;
4755         STORE_F lLine,  parm0_x;
4756         CALL1           validstring;
4757         IF              return_x,       2;
4758         GOTO            33;
4759         STORE_F lModPath,       parm0_x;
4760         STORE_F lLine,  parm1_x;
4761         CALL2           String_Set;
4762         STORE_S return_x,       lModPath;
4763         STORE_F lHandle,        parm0_x;
4764         CALL1           fgets;
4765         STORE_S return_x,       lLine;
4766         STORE_F lLine,  parm0_x;
4767         CALL1           validstring;
4768         IF              return_x,       2;
4769         GOTO            22;
4770         STORE_F lModName,       parm0_x;
4771         STORE_F lLine,  parm1_x;
4772         CALL2           String_Set;
4773         STORE_S return_x,       lModName;
4774         INDIRECT_S      self,   valueList,      parm0_x;
4775         STORE_F lModPath,       parm1_x;
4776         STORE_F " ",    parm2_x;
4777         CALL3           strcat;
4778         STORE_F self,   parm0_x;
4779         STORE_F valueList,      parm1_x;
4780         STORE_F return_x,       parm2_x;
4781         CALL3           String_EntitySet;
4782         INDIRECT_S      self,   descList,       parm0_x;
4783         STORE_F lModName,       parm1_x;
4784         STORE_F " ",    parm2_x;
4785         CALL3           strcat;
4786         STORE_F self,   parm0_x;
4787         STORE_F descList,       parm1_x;
4788         STORE_F return_x,       parm2_x;
4789         CALL3           String_EntitySet;
4790         GOTO            -38;
4791         STORE_F lModPath,       parm0_x;
4792         CALL1           String_Free;
4793         STORE_F lModName,       parm0_x;
4794         CALL1           String_Free;
4795         STORE_F lHandle,        parm0_x;
4796         CALL1           fclose;
4797         ADD_F           lSearchCounter, FILE_APPEND,    lSearchCounter;
4798         GOTO            -71;
4799         STORE_F lSearchHandle,  parm0_x;
4800         CALL1           search_end;
4801         DONE;
4802 }
4803
4804 void() Item_DataLink_Nex_ModSwitch_Spawn = asm
4805 {
4806 local string lTemp2;
4807 local string lTemp1;
4808 local float temp_3;
4809         STORE_F self,   parm0_x;
4810         STORE_F valueList,      parm1_x;
4811         CALL2           String_EntityCreate;
4812         STORE_F self,   parm0_x;
4813         STORE_F descList,       parm1_x;
4814         CALL2           String_EntityCreate;
4815         CALL0           _IDLNMS_Build;
4816         INDIRECT_S      self,   descList,       lTemp1;
4817         INDIRECT_S      self,   valueList,      lTemp2;
4818         CALL0           Item_DataLink_TextSwitch_Spawn;
4819         STORE_F lTemp1, parm0_x;
4820         CALL1           String_Free;
4821         STORE_F lTemp2, parm0_x;
4822         CALL1           String_Free;
4823         DONE;
4824 }
4825
4826 void () IDLNFL_Sync;
4827 void() IDLNFL_Sync = asm
4828 {
4829 local float locked_1020;
4830 local float locked_1174;
4831 local string lFilename;
4832 local float lCounter;
4833 local float lMaskedLength;
4834 local float lMaskStart;
4835 local float lHandle;
4836 local float lCount;
4837 local float temp_5;
4838         INDIRECT_S      self,   selected,       locked_1174;
4839         INDIRECT_S      self,   normal, locked_1020;
4840         STORE_F locked_1174,    parm0_x;
4841         STORE_F "/*.",  parm1_x;
4842         STORE_F locked_1020,    parm2_x;
4843         CALL3           strcat;
4844         STORE_F return_x,       parm0_x;
4845         STORE_F FILE_APPEND,    parm1_x;
4846         STORE_F FILE_APPEND,    parm2_x;
4847         CALL3           search_begin;
4848         STORE_F return_x,       lHandle;
4849         LT              lHandle,        KEY_GAME,       locked_1174;
4850         IFNOT           locked_1174,    2;
4851         RETURN  offset_0;
4852         STORE_F lHandle,        parm0_x;
4853         CALL1           search_getsize;
4854         STORE_F return_x,       lCount;
4855         STORE_F self,   parm0_x;
4856         STORE_F valueList,      parm1_x;
4857         STORE_F "",     parm2_x;
4858         CALL3           String_EntitySet;
4859         STORE_F self,   parm0_x;
4860         STORE_F descList,       parm1_x;
4861         STORE_F "",     parm2_x;
4862         CALL3           String_EntitySet;
4863         INDIRECT_S      self,   selected,       parm0_x;
4864         CALL1           strlen;
4865         ADD_F           return_x,       FILE_APPEND,    lMaskStart;
4866         INDIRECT_S      self,   normal, parm0_x;
4867         CALL1           strlen;
4868         ADD_F           lMaskStart,     return_x,       locked_1174;
4869         ADD_F           locked_1174,    FILE_APPEND,    lMaskedLength;
4870         STORE_F KEY_GAME,       lCounter;
4871         LT              lCounter,       lCount, locked_1174;
4872         IFNOT           locked_1174,    26;
4873         STORE_F lHandle,        parm0_x;
4874         STORE_F lCounter,       parm1_x;
4875         CALL2           search_getfilename;
4876         STORE_S return_x,       lFilename;
4877         ADDRESS self,   valueList,      locked_1174;
4878         INDIRECT_S      self,   valueList,      parm0_x;
4879         STORE_F lFilename,      parm1_x;
4880         CALL2           Util_AltStringPushBack;
4881         STOREP_S        return_x,       locked_1174;
4882         ADDRESS self,   descList,       locked_1174;
4883         INDIRECT_S      self,   descList,       locked_1020;
4884         STORE_F lFilename,      parm0_x;
4885         CALL1           strlen;
4886         SUB_F           return_x,       lMaskedLength,  temp_5;
4887         STORE_F lFilename,      parm0_x;
4888         STORE_F lMaskStart,     parm1_x;
4889         STORE_F temp_5, parm2_x;
4890         CALL3           substring;
4891         STORE_F locked_1020,    parm0_x;
4892         STORE_F return_x,       parm1_x;
4893         CALL2           Util_AltStringPushBack;
4894         STOREP_S        return_x,       locked_1174;
4895         STORE_F lCounter,       locked_1020;
4896         ADD_F           lCounter,       FILE_APPEND,    lCounter;
4897         GOTO            -26;
4898         ADDRESS self,   minValue,       locked_1174;
4899         STOREP_F        KEY_GAME,       locked_1174;
4900         GT              lCount, KEY_GAME,       locked_1174;
4901         IFNOT           locked_1174,    7;
4902         ADDRESS self,   stepValue,      locked_1174;
4903         STOREP_F        FILE_APPEND,    locked_1174;
4904         ADDRESS self,   maxValue,       locked_1174;
4905         SUB_F           lCount, FILE_APPEND,    locked_1020;
4906         STOREP_F        locked_1020,    locked_1174;
4907         GOTO            5;
4908         ADDRESS self,   stepValue,      locked_1174;
4909         STOREP_F        KEY_GAME,       locked_1174;
4910         ADDRESS self,   maxValue,       locked_1174;
4911         STOREP_F        KEY_GAME,       locked_1174;
4912         DONE;
4913 }
4914
4915 void() Item_DataLink_Nex_FileList_Destroy = asm
4916 {
4917         STORE_F self,   parm0_x;
4918         STORE_F valueList,      parm1_x;
4919         CALL2           String_EntityFree;
4920         STORE_F self,   parm0_x;
4921         STORE_F normal, parm1_x;
4922         CALL2           String_EntityFree;
4923         STORE_F self,   parm0_x;
4924         STORE_F selected,       parm1_x;
4925         CALL2           String_EntityFree;
4926         CALL0           Item_DataLink_Switch_Destroy;
4927         DONE;
4928 }
4929
4930 void(float pEvent) Item_DataLink_Nex_FileList_DataEvent = asm
4931 {
4932 local float temp_3;
4933         GOTO            7;
4934         CALL0           IDLNFL_Sync;
4935         GOTO            8;
4936         CALL0           IDLNFL_Sync;
4937         ADDRESS self,   _realValue,     temp_3;
4938         STOREP_F        KEY_GAME,       temp_3;
4939         GOTO            4;
4940         IFNOT           pEvent, -6;
4941         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
4942         IF              temp_3, -6;
4943         DONE;
4944 }
4945
4946 void() Item_DataLink_Nex_FileList_Spawn = asm
4947 {
4948 local float temp_3;
4949         CALL0           Item_DataLink_Switch_Init;
4950         STORE_F self,   parm0_x;
4951         STORE_F valueList,      parm1_x;
4952         CALL2           String_EntityCreate;
4953         STORE_F self,   parm0_x;
4954         STORE_F normal, parm1_x;
4955         CALL2           String_EntityZone;
4956         STORE_F self,   parm0_x;
4957         STORE_F selected,       parm1_x;
4958         CALL2           String_EntityZone;
4959         ADDRESS self,   _reinit,        temp_3;
4960         STOREP_FNC      IDLNFL_Sync,    temp_3;
4961         ADDRESS self,   _destroy,       temp_3;
4962         STOREP_FNC      Item_DataLink_Nex_FileList_Destroy,     temp_3;
4963         ADDRESS self,   _dataEvent,     temp_3;
4964         STOREP_FNC      Item_DataLink_Nex_FileList_DataEvent,   temp_3;
4965         DONE;
4966 }
4967
4968 void(entity pItem) Nex_MakeOnlyVisible = asm
4969 {
4970 local entity lChild;
4971 local float temp_3;
4972 local float temp_4;
4973         INDIRECT_E      pItem,  _parent,        temp_3;
4974         INDIRECT_E      temp_3, _child, lChild;
4975         IFNOT           lChild, 7;
4976         ADDRESS lChild, flag,   temp_3;
4977         INDIRECT_F      lChild, flag,   temp_4;
4978         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
4979         STOREP_F        temp_4, temp_3;
4980         INDIRECT_E      lChild, _next,  lChild;
4981         GOTO            -6;
4982         ADDRESS pItem,  flag,   temp_3;
4983         INDIRECT_F      pItem,  flag,   temp_4;
4984         SUB_F           temp_4, FLAG_HIDDEN,    temp_4;
4985         STOREP_F        temp_4, temp_3;
4986         CALL0           Menu_UpdateRunFlags;
4987         DONE;
4988 }
4989
4990 void () _IDNK_Sync;
4991 void() _IDNK_Sync = asm
4992 {
4993 local float temp_3;
4994         INDIRECT_S      self,   target, parm0_x;
4995         CALL1           Key_GetBindList;
4996         STORE_F return_x,       parm0_x;
4997         CALL1           String_Normal;
4998         STORE_F self,   parm0_x;
4999         STORE_F value,  parm1_x;
5000         STORE_F return_x,       parm2_x;
5001         CALL3           String_EntitySet;
5002         INDIRECT_S      self,   value,  temp_3;
5003         STORE_F self,   parm0_x;
5004         STORE_F _syncValue,     parm1_x;
5005         STORE_F temp_3, parm2_x;
5006         CALL3           String_EntitySet;
5007         DONE;
5008 }
5009
5010 void () _IDNK_Set;
5011 void() _IDNK_Set = asm
5012 {
5013 local float lCounter;
5014 local float lCount;
5015 local float temp_3;
5016         INDIRECT_S      self,   value,  parm0_x;
5017         CALL1           Util_GetAltStringCount;
5018         STORE_F return_x,       lCount;
5019         INDIRECT_S      self,   target, temp_3;
5020         STORE_F KEY_GAME,       parm0_x;
5021         STORE_F temp_3, parm1_x;
5022         CALL2           Key_LimitBinds;
5023         STORE_F KEY_GAME,       lCounter;
5024         LT              lCounter,       lCount, temp_3;
5025         IFNOT           temp_3, 16;
5026         INDIRECT_S      self,   value,  parm0_x;
5027         STORE_F lCounter,       parm1_x;
5028         CALL2           Util_GetAltStringItem;
5029         STORE_F return_x,       parm0_x;
5030         CALL1           String_Normal;
5031         STORE_F return_x,       parm0_x;
5032         CALL1           stof;
5033         STORE_F return_x,       parm0_x;
5034         CALL1           Key_GetName;
5035         INDIRECT_S      self,   target, temp_3;
5036         STORE_F return_x,       parm0_x;
5037         STORE_F temp_3, parm1_x;
5038         CALL2           Key_Bind;
5039         ADD_F           lCounter,       FILE_APPEND,    lCounter;
5040         GOTO            -16;
5041         DONE;
5042 }
5043
5044 void () _IDNK_Send;
5045 void() _IDNK_Send = asm
5046 {
5047 local float temp_3;
5048         CALL0           _IDNK_Set;
5049         INDIRECT_S      self,   value,  temp_3;
5050         STORE_F self,   parm0_x;
5051         STORE_F _syncValue,     parm1_x;
5052         STORE_F temp_3, parm2_x;
5053         CALL3           String_EntitySet;
5054         DONE;
5055 }
5056
5057 void () _IDNK_Reset;
5058 void() _IDNK_Reset = asm
5059 {
5060 local float locked_1174;
5061 local string lKey;
5062 local float lCounter;
5063 local float lCount;
5064 local float temp_4;
5065         INDIRECT_S      self,   defValue,       locked_1174;
5066         NOT_S           locked_1174,    locked_1174;
5067         IFNOT           locked_1174,    2;
5068         RETURN  offset_0;
5069         STORE_F self,   parm0_x;
5070         STORE_F value,  parm1_x;
5071         STORE_F "",     parm2_x;
5072         CALL3           String_EntitySet;
5073         INDIRECT_S      self,   defValue,       parm0_x;
5074         CALL1           Util_GetAltStringCount;
5075         STORE_F return_x,       lCount;
5076         INDIRECT_S      self,   target, locked_1174;
5077         STORE_F KEY_GAME,       parm0_x;
5078         STORE_F locked_1174,    parm1_x;
5079         CALL2           Key_LimitBinds;
5080         STORE_F KEY_GAME,       lCounter;
5081         LT              lCounter,       lCount, locked_1174;
5082         IFNOT           locked_1174,    26;
5083         INDIRECT_S      self,   defValue,       parm0_x;
5084         STORE_F lCounter,       parm1_x;
5085         CALL2           Util_GetAltStringItem;
5086         STORE_S return_x,       lKey;
5087         INDIRECT_S      self,   target, locked_1174;
5088         STORE_F lKey,   parm0_x;
5089         STORE_F locked_1174,    parm1_x;
5090         CALL2           Key_Bind;
5091         INDIRECT_S      self,   value,  locked_1174;
5092         STORE_F lKey,   parm0_x;
5093         CALL1           Key_GetNum;
5094         STORE_F locked_1174,    parm0_x;
5095         STORE_F " '",   parm1_x;
5096         STORE_F return_x,       parm2_x;
5097         STORE_F "'",    parm3_x;
5098         CALL4           strcat;
5099         STORE_F self,   parm0_x;
5100         STORE_F value,  parm1_x;
5101         STORE_F return_x,       parm2_x;
5102         CALL3           String_EntitySet;
5103         STORE_F lKey,   parm0_x;
5104         CALL1           String_Free;
5105         STORE_F lCounter,       temp_4;
5106         ADD_F           lCounter,       FILE_APPEND,    lCounter;
5107         GOTO            -26;
5108         INDIRECT_S      self,   value,  locked_1174;
5109         STORE_F self,   parm0_x;
5110         STORE_F _syncValue,     parm1_x;
5111         STORE_F locked_1174,    parm2_x;
5112         CALL3           String_EntitySet;
5113         DONE;
5114 }
5115
5116 void () _IDNK_Test_Start;
5117 void() _IDNK_Test_Start = asm
5118 {
5119         CALL0           _IDNK_Set;
5120         DONE;
5121 }
5122
5123 void () _IDNK_Test_End;
5124 void() _IDNK_Test_End = asm
5125 {
5126 local float temp_3;
5127         INDIRECT_S      self,   _syncValue,     temp_3;
5128         STORE_F self,   parm0_x;
5129         STORE_F value,  parm1_x;
5130         STORE_F temp_3, parm2_x;
5131         CALL3           String_EntitySet;
5132         CALL0           _IDNK_Set;
5133         DONE;
5134 }
5135
5136 void(float pEvent) Item_Data_Nex_Key_DataEvent = asm
5137 {
5138 local float temp_3;
5139         GOTO            11;
5140         CALL0           _IDNK_Sync;
5141         GOTO            18;
5142         CALL0           _IDNK_Send;
5143         GOTO            16;
5144         CALL0           _IDNK_Reset;
5145         GOTO            14;
5146         CALL0           _IDNK_Test_Start;
5147         GOTO            12;
5148         CALL0           _IDNK_Test_End;
5149         GOTO            10;
5150         IFNOT           pEvent, -10;
5151         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
5152         IF              temp_3, -10;
5153         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
5154         IF              temp_3, -10;
5155         EQ_F            pEvent, ITEM_DATA_TEST_START,   temp_3;
5156         IF              temp_3, -10;
5157         EQ_F            pEvent, ITEM_DATA_TEST_END,     temp_3;
5158         IF              temp_3, -10;
5159         DONE;
5160 }
5161
5162 void () Item_Data_Nex_Key_Destroy;
5163 void() Item_Data_Nex_Key_Destroy = asm
5164 {
5165         STORE_F self,   parm0_x;
5166         STORE_F target, parm1_x;
5167         CALL2           String_EntityFree;
5168         CALL0           Item_Data_Destroy;
5169         DONE;
5170 }
5171
5172 void() Item_Data_Nex_Key_Spawn = asm
5173 {
5174 local float temp_3;
5175         CALL0           Item_Data_Init;
5176         STORE_F self,   parm0_x;
5177         STORE_F target, parm1_x;
5178         CALL2           String_EntityZone;
5179         ADDRESS self,   _destroy,       temp_3;
5180         STOREP_FNC      Item_Data_Nex_Key_Destroy,      temp_3;
5181         ADDRESS self,   _reinit,        temp_3;
5182         STOREP_FNC      _IDNK_Sync,     temp_3;
5183         ADDRESS self,   _dataEvent,     temp_3;
5184         STOREP_FNC      Item_Data_Nex_Key_DataEvent,    temp_3;
5185         DONE;
5186 }
5187
5188 float (float, float) Item_Nex_KeyButton_Key;
5189 float(float pKey, float pAscii) Item_Nex_KeyButton_Key = asm
5190 {
5191 local float lNum;
5192 local float temp_3;
5193         EQ_F            pKey,   K_BACKSPACE,    temp_3;
5194         IFNOT           temp_3, 19;
5195         INDIRECT_E      self,   _target,        parm0_x;
5196         STORE_F ITEM_DATALINK_GET,      parm1_x;
5197         CALL2           Raise_DataEvent;
5198         INDIRECT_E      self,   _target,        temp_3;
5199         INDIRECT_S      temp_3, value,  parm0_x;
5200         CALL1           stof;
5201         STORE_F return_x,       lNum;
5202         GE              lNum,   KEY_GAME,       temp_3;
5203         IFNOT           temp_3, 8;
5204         STORE_F lNum,   parm0_x;
5205         CALL1           Key_GetName;
5206         STORE_F return_x,       parm0_x;
5207         CALL1           Key_Unbind;
5208         INDIRECT_E      self,   _target,        parm0_x;
5209         STORE_F ITEM_DATALINK_SET,      parm1_x;
5210         CALL2           Raise_DataEvent;
5211         RETURN  FILE_APPEND;
5212         GOTO            21;
5213         EQ_F            pKey,   K_UPARROW,      temp_3;
5214         IFNOT           temp_3, 7;
5215         STORE_F KEY_GAME,       parm0_x;
5216         CALL1           Menu_SelectPrev;
5217         STORE_F FILE_APPEND,    parm0_x;
5218         CALL1           Menu_SelectPrev;
5219         RETURN  FILE_APPEND;
5220         GOTO            13;
5221         EQ_F            pKey,   K_DOWNARROW,    temp_3;
5222         IFNOT           temp_3, 7;
5223         STORE_F KEY_GAME,       parm0_x;
5224         CALL1           Menu_SelectNext;
5225         STORE_F FILE_APPEND,    parm0_x;
5226         CALL1           Menu_SelectNext;
5227         RETURN  FILE_APPEND;
5228         GOTO            5;
5229         STORE_F pKey,   parm0_x;
5230         STORE_F pAscii, parm1_x;
5231         CALL2           Item_Button_Key;
5232         RETURN  return_x;
5233         DONE;
5234 }
5235
5236 void () Item_Nex_KeyButton_Update;
5237 void() Item_Nex_KeyButton_Update = asm
5238 {
5239 local float lNum;
5240 local float temp_3;
5241         CALL0           Item_DataUser_Update;
5242         INDIRECT_E      self,   _target,        parm0_x;
5243         STORE_F ITEM_DATALINK_GET,      parm1_x;
5244         CALL2           Raise_DataEvent;
5245         INDIRECT_E      self,   _target,        temp_3;
5246         INDIRECT_S      temp_3, value,  parm0_x;
5247         CALL1           stof;
5248         STORE_F return_x,       lNum;
5249         LT              lNum,   KEY_GAME,       temp_3;
5250         IFNOT           temp_3, 6;
5251         STORE_F self,   parm0_x;
5252         STORE_F normal, parm1_x;
5253         STORE_F "-",    parm2_x;
5254         CALL3           String_EntitySet;
5255         GOTO            7;
5256         STORE_F lNum,   parm0_x;
5257         CALL1           Key_GetName;
5258         STORE_F self,   parm0_x;
5259         STORE_F normal, parm1_x;
5260         STORE_F return_x,       parm2_x;
5261         CALL3           String_EntitySet;
5262         CALL0           Item_Button_Update;
5263         DONE;
5264 }
5265
5266 void () Item_Nex_KeyButton_Destroy;
5267 void() Item_Nex_KeyButton_Destroy = asm
5268 {
5269         CALL0           Item_DataUser_Destroy;
5270         CALL0           Item_Button_Destroy;
5271         DONE;
5272 }
5273
5274 void() Item_Nex_KeyButton_Spawn = asm
5275 {
5276 local float temp_3;
5277         CALL0           Item_DataUser_Init;
5278         CALL0           Item_Button_Spawn;
5279         ADDRESS self,   _destroy,       temp_3;
5280         STOREP_FNC      Item_Nex_KeyButton_Destroy,     temp_3;
5281         ADDRESS self,   _update,        temp_3;
5282         STOREP_FNC      Item_Nex_KeyButton_Update,      temp_3;
5283         ADDRESS self,   _key,   temp_3;
5284         STOREP_FNC      Item_Nex_KeyButton_Key, temp_3;
5285         DONE;
5286 }
5287
5288 void () _IDNR_Sync;
5289 void() _IDNR_Sync = asm
5290 {
5291 local float temp_3;
5292 local float temp_4;
5293         STORE_F "vid_width",    parm0_x;
5294         CALL1           str_cvar;
5295         STORE_F "vid_height",   parm0_x;
5296         STORE_F return_x,       temp_3;
5297         CALL1           str_cvar;
5298         STORE_F return_x,       temp_4;
5299         STORE_F temp_3, return_x;
5300         STORE_F return_x,       parm0_x;
5301         STORE_F " ",    parm1_x;
5302         STORE_F temp_4, parm2_x;
5303         CALL3           strcat;
5304         STORE_F self,   parm0_x;
5305         STORE_F value,  parm1_x;
5306         STORE_F return_x,       parm2_x;
5307         CALL3           String_EntitySet;
5308         INDIRECT_S      self,   value,  temp_3;
5309         STORE_F self,   parm0_x;
5310         STORE_F _syncValue,     parm1_x;
5311         STORE_F temp_3, parm2_x;
5312         CALL3           String_EntitySet;
5313         DONE;
5314 }
5315
5316 void () _IDNR_Set;
5317 void() _IDNR_Set = asm
5318 {
5319 local float temp_3;
5320         INDIRECT_S      self,   value,  parm0_x;
5321         CALL1           tokenize;
5322         STORE_F KEY_GAME,       parm0_x;
5323         CALL1           argv;
5324         STORE_F "vid_width",    parm0_x;
5325         STORE_F return_x,       parm1_x;
5326         CALL2           cvar_set;
5327         STORE_F FILE_APPEND,    parm0_x;
5328         CALL1           argv;
5329         STORE_F "vid_height",   parm0_x;
5330         STORE_F return_x,       parm1_x;
5331         CALL2           cvar_set;
5332         DONE;
5333 }
5334
5335 void () _IDNR_Send;
5336 void() _IDNR_Send = asm
5337 {
5338         CALL0           _IDNR_Set;
5339         CALL0           _IDNR_Sync;
5340         DONE;
5341 }
5342
5343 void () _IDNR_Reset;
5344 void() _IDNR_Reset = asm
5345 {
5346 local float temp_3;
5347         INDIRECT_S      self,   defValue,       temp_3;
5348         STORE_F self,   parm0_x;
5349         STORE_F value,  parm1_x;
5350         STORE_F temp_3, parm2_x;
5351         CALL3           String_EntitySet;
5352         CALL0           _IDNR_Send;
5353         DONE;
5354 }
5355
5356 void () _IDNR_Test_Start;
5357 void() _IDNR_Test_Start = asm
5358 {
5359         CALL0           _IDNR_Set;
5360         DONE;
5361 }
5362
5363 void () _IDNR_Test_End;
5364 void() _IDNR_Test_End = asm
5365 {
5366 local float temp_3;
5367         INDIRECT_S      self,   _syncValue,     temp_3;
5368         STORE_F self,   parm0_x;
5369         STORE_F value,  parm1_x;
5370         STORE_F temp_3, parm2_x;
5371         CALL3           String_EntitySet;
5372         CALL0           _IDNR_Send;
5373         DONE;
5374 }
5375
5376 void (float) Item_Data_Nex_Resolution_DataEvent;
5377 void(float pEvent) Item_Data_Nex_Resolution_DataEvent = asm
5378 {
5379 local float temp_3;
5380         GOTO            11;
5381         CALL0           _IDNR_Sync;
5382         GOTO            18;
5383         CALL0           _IDNR_Send;
5384         GOTO            16;
5385         CALL0           _IDNR_Reset;
5386         GOTO            14;
5387         CALL0           _IDNR_Test_Start;
5388         GOTO            12;
5389         CALL0           _IDNR_Test_End;
5390         GOTO            10;
5391         IFNOT           pEvent, -10;
5392         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
5393         IF              temp_3, -10;
5394         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
5395         IF              temp_3, -10;
5396         EQ_F            pEvent, ITEM_DATA_TEST_START,   temp_3;
5397         IF              temp_3, -10;
5398         EQ_F            pEvent, ITEM_DATA_TEST_END,     temp_3;
5399         IF              temp_3, -10;
5400         DONE;
5401 }
5402
5403 void() Item_Data_Nex_Resolution_Spawn = asm
5404 {
5405 local float temp_3;
5406         CALL0           Item_Data_Init;
5407         ADDRESS self,   _dataEvent,     temp_3;
5408         STOREP_FNC      Item_Data_Nex_Resolution_DataEvent,     temp_3;
5409         ADDRESS self,   _reinit,        temp_3;
5410         STOREP_FNC      _IDNR_Sync,     temp_3;
5411         DONE;
5412 }
5413
5414 void() Item_Nex_HostCache_Entry_Update = asm
5415 {
5416 local float temp_3;
5417 local float temp_4;
5418         INDIRECT_F      self,   stepValue,      temp_3;
5419         LE              HostCache_ViewCount,    temp_3, temp_3;
5420         IFNOT           temp_3, 7;
5421         ADDRESS self,   flag,   temp_3;
5422         INDIRECT_F      self,   flag,   temp_4;
5423         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
5424         STOREP_F        temp_4, temp_3;
5425         RETURN  offset_0;
5426         GOTO            8;
5427         INDIRECT_F      self,   flag,   temp_3;
5428         BITAND  temp_3, FLAG_HIDDEN,    temp_3;
5429         IFNOT           temp_3, 5;
5430         ADDRESS self,   flag,   temp_3;
5431         INDIRECT_F      self,   flag,   temp_4;
5432         SUB_F           temp_4, FLAG_HIDDEN,    temp_4;
5433         STOREP_F        temp_4, temp_3;
5434         INDIRECT_F      self,   _runFlag,       temp_3;
5435         BITAND  temp_3, RUNFLAG_CLIPPED,        temp_3;
5436         IFNOT           temp_3, 2;
5437         RETURN  offset_0;
5438         CALL0           Item_Button_Update;
5439         DONE;
5440 }
5441
5442 void () Item_Nex_HostCache_Entry_Draw;
5443 void() Item_Nex_HostCache_Entry_Draw = asm
5444 {
5445         CALL0           Item_Window_Draw;
5446         CALL0           Item_Button_Draw;
5447         DONE;
5448 }
5449
5450 void() Item_Nex_HostCache_Entry_Spawn = asm
5451 {
5452 local float temp_3;
5453 local float temp_4;
5454         CALL0           Item_Window_Spawn;
5455         CALL0           Item_Button_Spawn;
5456         ADDRESS self,   flag,   temp_3;
5457         INDIRECT_F      self,   flag,   temp_4;
5458         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
5459         STOREP_F        temp_4, temp_3;
5460         INDIRECT_F      self,   flag,   temp_3;
5461         BITAND  temp_3, FLAG_NOSELECT,  temp_3;
5462         IFNOT           temp_3, 5;
5463         ADDRESS self,   flag,   temp_3;
5464         INDIRECT_F      self,   flag,   temp_4;
5465         SUB_F           temp_4, FLAG_NOSELECT,  temp_4;
5466         STOREP_F        temp_4, temp_3;
5467         ADDRESS self,   _draw,  temp_3;
5468         STOREP_FNC      Item_Nex_HostCache_Entry_Draw,  temp_3;
5469         ADDRESS self,   _update,        temp_3;
5470         STOREP_FNC      Item_Nex_HostCache_Entry_Update,        temp_3;
5471         DONE;
5472 }
5473
5474 void() Item_Nex_HostCache_StringField_Update = asm
5475 {
5476 local string lString;
5477 local float lMaxLen;
5478 local float temp_3;
5479 local float temp_4;
5480         INDIRECT_E      self,   _parent,        temp_3;
5481         INDIRECT_F      temp_3, stepValue,      temp_3;
5482         LE              HostCache_ViewCount,    temp_3, temp_3;
5483         IFNOT           temp_3, 2;
5484         RETURN  offset_0;
5485         INDIRECT_F      self,   size_x, temp_3;
5486         INDIRECT_F      self,   fontSize_x,     temp_4;
5487         DIV_F           temp_3, temp_4, parm0_x;
5488         CALL1           floor;
5489         STORE_F return_x,       lMaxLen;
5490         INDIRECT_F      self,   _realValue,     temp_3;
5491         INDIRECT_E      self,   _parent,        temp_4;
5492         INDIRECT_F      temp_4, stepValue,      temp_4;
5493         STORE_F temp_3, parm0_x;
5494         STORE_F temp_4, parm1_x;
5495         CALL2           gethostcachestring;
5496         STORE_S return_x,       lString;
5497         STORE_F lString,        parm0_x;
5498         CALL1           strlen;
5499         LT              lMaxLen,        return_x,       temp_3;
5500         IFNOT           temp_3, 10;
5501         SUB_F           lMaxLen,        KEY_UNKNOWN,    temp_3;
5502         STORE_F lString,        parm0_x;
5503         STORE_F KEY_GAME,       parm1_x;
5504         STORE_F temp_3, parm2_x;
5505         CALL3           substring;
5506         STORE_F return_x,       parm0_x;
5507         STORE_F "...",  parm1_x;
5508         CALL2           strcat;
5509         STORE_S return_x,       lString;
5510         STORE_F self,   parm0_x;
5511         STORE_F text,   parm1_x;
5512         STORE_F lString,        parm2_x;
5513         CALL3           String_EntitySet;
5514         CALL0           Item_Label_Update;
5515         DONE;
5516 }
5517
5518 void() Item_Nex_HostCache_StringField_Spawn = asm
5519 {
5520 local float locked_1174;
5521 local float temp_4;
5522         CALL0           Item_Label_Spawn;
5523         ADDRESS self,   _realValue,     locked_1174;
5524         INDIRECT_S      self,   target, parm0_x;
5525         CALL1           gethostcacheindexforkey;
5526         STOREP_F        return_x,       locked_1174;
5527         ADDRESS self,   _update,        locked_1174;
5528         STOREP_FNC      Item_Nex_HostCache_StringField_Update,  locked_1174;
5529         DONE;
5530 }
5531
5532 void() Item_Nex_HostCache_ValueField_Update = asm
5533 {
5534 local float temp_3;
5535 local float temp_4;
5536         INDIRECT_E      self,   _parent,        temp_3;
5537         INDIRECT_F      temp_3, stepValue,      temp_3;
5538         LE              HostCache_ViewCount,    temp_3, temp_3;
5539         IFNOT           temp_3, 2;
5540         RETURN  offset_0;
5541         INDIRECT_F      self,   _realValue,     temp_3;
5542         INDIRECT_E      self,   _parent,        temp_4;
5543         INDIRECT_F      temp_4, stepValue,      temp_4;
5544         STORE_F temp_3, parm0_x;
5545         STORE_F temp_4, parm1_x;
5546         CALL2           gethostcachenumber;
5547         STORE_F return_x,       parm0_x;
5548         CALL1           ftos;
5549         STORE_F self,   parm0_x;
5550         STORE_F text,   parm1_x;
5551         STORE_F return_x,       parm2_x;
5552         CALL3           String_EntitySet;
5553         CALL0           Item_Label_Update;
5554         DONE;
5555 }
5556
5557 void() Item_Nex_HostCache_ValueField_Spawn = asm
5558 {
5559 local float locked_1174;
5560 local float temp_4;
5561         CALL0           Item_Label_Spawn;
5562         ADDRESS self,   _realValue,     locked_1174;
5563         INDIRECT_S      self,   target, parm0_x;
5564         CALL1           gethostcacheindexforkey;
5565         STOREP_F        return_x,       locked_1174;
5566         ADDRESS self,   _update,        locked_1174;
5567         STOREP_FNC      Item_Nex_HostCache_ValueField_Update,   locked_1174;
5568         DONE;
5569 }
5570
5571 void() Item_Nex_HostCache_Players_Update = asm
5572 {
5573 local string lMax;
5574 local string lNum;
5575 local float temp_3;
5576         INDIRECT_E      self,   _parent,        temp_3;
5577         INDIRECT_F      temp_3, stepValue,      temp_3;
5578         LE              HostCache_ViewCount,    temp_3, temp_3;
5579         IFNOT           temp_3, 2;
5580         RETURN  offset_0;
5581         INDIRECT_E      self,   _parent,        temp_3;
5582         INDIRECT_F      temp_3, stepValue,      temp_3;
5583         STORE_F SLIST_FIELD_NUMPLAYERS, parm0_x;
5584         STORE_F temp_3, parm1_x;
5585         CALL2           gethostcachenumber;
5586         STORE_F return_x,       parm0_x;
5587         CALL1           ftos;
5588         STORE_S return_x,       lNum;
5589         INDIRECT_E      self,   _parent,        temp_3;
5590         INDIRECT_F      temp_3, stepValue,      temp_3;
5591         STORE_F SLIST_FIELD_MAXPLAYERS, parm0_x;
5592         STORE_F temp_3, parm1_x;
5593         CALL2           gethostcachenumber;
5594         STORE_F return_x,       parm0_x;
5595         CALL1           ftos;
5596         STORE_S return_x,       lMax;
5597         STORE_F lNum,   parm0_x;
5598         STORE_F "/",    parm1_x;
5599         STORE_F lMax,   parm2_x;
5600         CALL3           strcat;
5601         STORE_F self,   parm0_x;
5602         STORE_F text,   parm1_x;
5603         STORE_F return_x,       parm2_x;
5604         CALL3           String_EntitySet;
5605         CALL0           Item_Label_Update;
5606         DONE;
5607 }
5608
5609 void() Item_Nex_HostCache_Players_Spawn = asm
5610 {
5611 local float temp_3;
5612         CALL0           Item_Label_Spawn;
5613         ADDRESS self,   _update,        temp_3;
5614         STOREP_FNC      Item_Nex_HostCache_Players_Update,      temp_3;
5615         DONE;
5616 }
5617
5618 void() Item_Nex_Credits_Spawn = asm
5619 {
5620 local string lLine;
5621 local string lText;
5622 local float lFile;
5623 local float temp_3;
5624         INDIRECT_S      self,   target, parm0_x;
5625         STORE_F KEY_GAME,       parm1_x;
5626         CALL2           fopen;
5627         STORE_F return_x,       lFile;
5628         LT              lFile,  KEY_GAME,       temp_3;
5629         IFNOT           temp_3, 4;
5630         STORE_F self,   parm0_x;
5631         CALL1           Menu_DeleteAfterToggle;
5632         RETURN  offset_0;
5633         CALL0           String_Create;
5634         STORE_S return_x,       lText;
5635         STORE_F lFile,  parm0_x;
5636         CALL1           fgets;
5637         STORE_S return_x,       lLine;
5638         STORE_F lLine,  parm0_x;
5639         STORE_F "
5640 ",      parm1_x;
5641         CALL2           strcat;
5642         STORE_F lText,  parm0_x;
5643         STORE_F return_x,       parm1_x;
5644         CALL2           String_Append;
5645         STORE_S return_x,       lText;
5646         STORE_F lLine,  parm0_x;
5647         CALL1           validstring;
5648         IF              return_x,       -12;
5649         ADDRESS self,   text,   temp_3;
5650         STOREP_S        lText,  temp_3;
5651         STORE_F lFile,  parm0_x;
5652         CALL1           fclose;
5653         CALL0           Item_MultiLabel_Spawn;
5654         STORE_F lText,  parm0_x;
5655         CALL1           String_Free;
5656         DONE;
5657 }
5658
5659 void () Nex_MessageBox_LeftEvent;
5660 void () Nex_MessageBox_RightEvent;
5661 void(string pTitle, string pText, string pLeftButton, string pRightButton, void () pLeftEvent, void () pRightEvent) Nex_MessageBox = asm
5662 {
5663 local entity lItem;
5664 local vector temp_0;
5665 local float temp_3;
5666 local float temp_4;
5667         STORE_F "MessageBoxWnd::Layout::Title::Caption",        parm0_x;
5668         CALL1           Menu_GetItem;
5669         STORE_ENT       return_x,       lItem;
5670         STORE_F lItem,  parm0_x;
5671         STORE_F normal, parm1_x;
5672         STORE_F pTitle, parm2_x;
5673         CALL3           String_EntitySet;
5674         ADDRESS lItem,  size_x, temp_0_x;
5675         STOREP_V        '0.000000 0.000000 0.000000',   temp_0;
5676         STORE_F "MessageBoxWnd::Layout::Text",  parm0_x;
5677         CALL1           Menu_GetItem;
5678         STORE_ENT       return_x,       lItem;
5679         STORE_F lItem,  parm0_x;
5680         STORE_F text,   parm1_x;
5681         STORE_F pText,  parm2_x;
5682         CALL3           String_EntitySet;
5683         ADDRESS lItem,  size_x, temp_0_x;
5684         STOREP_V        '0.000000 0.000000 0.000000',   temp_0;
5685         STORE_F "MessageBoxWnd::Layout::Buttons::Left", parm0_x;
5686         CALL1           Menu_GetItem;
5687         STORE_ENT       return_x,       lItem;
5688         STORE_F lItem,  parm0_x;
5689         STORE_F normal, parm1_x;
5690         STORE_F pLeftButton,    parm2_x;
5691         CALL3           String_EntitySet;
5692         ADDRESS lItem,  size_x, temp_0_x;
5693         STOREP_V        '0.000000 0.000000 0.000000',   temp_0;
5694         STORE_F "MessageBoxWnd::Layout::Buttons::Right",        parm0_x;
5695         CALL1           Menu_GetItem;
5696         STORE_ENT       return_x,       lItem;
5697         STORE_F lItem,  parm0_x;
5698         STORE_F normal, parm1_x;
5699         STORE_F pRightButton,   parm2_x;
5700         CALL3           String_EntitySet;
5701         ADDRESS lItem,  size_x, temp_0_x;
5702         STOREP_V        '0.000000 0.000000 0.000000',   temp_0;
5703         STORE_F pRightButton,   parm0_x;
5704         CALL1           strlen;
5705         EQ_F            return_x,       KEY_GAME,       temp_3;
5706         IFNOT           temp_3, 6;
5707         ADDRESS lItem,  flag,   temp_3;
5708         INDIRECT_F      lItem,  flag,   temp_4;
5709         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
5710         STOREP_F        temp_4, temp_3;
5711         GOTO            8;
5712         INDIRECT_F      lItem,  flag,   temp_3;
5713         BITAND  temp_3, FLAG_HIDDEN,    temp_3;
5714         IFNOT           temp_3, 5;
5715         ADDRESS lItem,  flag,   temp_3;
5716         INDIRECT_F      lItem,  flag,   temp_4;
5717         SUB_F           temp_4, FLAG_HIDDEN,    temp_4;
5718         STOREP_F        temp_4, temp_3;
5719         STORE_FNC       pLeftEvent,     Nex_MessageBox_LeftEvent;
5720         STORE_FNC       pRightEvent,    Nex_MessageBox_RightEvent;
5721         STORE_F "MessageBoxWnd",        parm0_x;
5722         CALL1           Menu_GetItem;
5723         STORE_ENT       return_x,       lItem;
5724         INDIRECT_F      lItem,  flag,   temp_3;
5725         BITAND  temp_3, FLAG_HIDDEN,    temp_3;
5726         IFNOT           temp_3, 5;
5727         ADDRESS lItem,  flag,   temp_3;
5728         INDIRECT_F      lItem,  flag,   temp_4;
5729         SUB_F           temp_4, FLAG_HIDDEN,    temp_4;
5730         STOREP_F        temp_4, temp_3;
5731         STORE_F "MessageBoxWnd::Layout::Buttons::Right",        parm0_x;
5732         CALL1           Menu_GetItem;
5733         STORE_F return_x,       parm0_x;
5734         STORE_F KEY_GAME,       parm1_x;
5735         CALL2           Menu_Select;
5736         DONE;
5737 }
5738
5739 void () Nex_MessageBox_Hide;
5740 void() Nex_MessageBox_Hide = asm
5741 {
5742 local entity lEntity;
5743 local float temp_3;
5744 local float temp_4;
5745         STORE_F "MessageBoxWnd",        parm0_x;
5746         CALL1           Menu_GetItem;
5747         STORE_ENT       return_x,       lEntity;
5748         INDIRECT_F      lEntity,        flag,   temp_3;
5749         BITAND  temp_3, FLAG_HIDDEN,    temp_3;
5750         IF              temp_3, 7;
5751         ADDRESS lEntity,        flag,   temp_3;
5752         INDIRECT_F      lEntity,        flag,   temp_4;
5753         ADD_F           temp_4, FLAG_HIDDEN,    temp_4;
5754         STOREP_F        temp_4, temp_3;
5755         STORE_F KEY_GAME,       parm0_x;
5756         CALL1           Menu_Reselect;
5757         DONE;
5758 }
5759
5760 void () Nex_MessageBox_LeftButton;
5761 void() Nex_MessageBox_LeftButton = asm
5762 {
5763         IFNOT           Nex_MessageBox_LeftEvent,       2;
5764         CALL0           Nex_MessageBox_LeftEvent;
5765         CALL0           Nex_MessageBox_Hide;
5766         DONE;
5767 }
5768
5769 void () Nex_MessageBox_RightButton;
5770 void() Nex_MessageBox_RightButton = asm
5771 {
5772         IFNOT           Nex_MessageBox_RightEvent,      2;
5773         CALL0           Nex_MessageBox_RightEvent;
5774         CALL0           Nex_MessageBox_Hide;
5775         DONE;
5776 }
5777
5778 float (float, float) Nex_MessageBox_Key;
5779 float(float pKey, float pAscii) Nex_MessageBox_Key = asm
5780 {
5781 local float temp_3;
5782         EQ_F            pKey,   K_ESCAPE,       temp_3;
5783         IFNOT           temp_3, 3;
5784         CALL0           Nex_MessageBox_RightButton;
5785         RETURN  FILE_APPEND;
5786         RETURN  KEY_GAME;
5787         DONE;
5788 }
5789
5790 void() Item_Automation_Init = asm
5791 {
5792 local float temp_3;
5793         ADDRESS self,   flag,   temp_3;
5794         STOREP_F        FLAG_TEMPLATE,  temp_3;
5795         STORE_F self,   parm0_x;
5796         CALL1           Menu_DeleteAfterFrame;
5797         DONE;
5798 }
5799
5800 void() Item_Task_Init = asm
5801 {
5802 local float temp_3;
5803         ADDRESS self,   flag,   temp_3;
5804         STOREP_F        FLAG_HIDDEN,    temp_3;
5805         DONE;
5806 }
5807
5808 void() Item_Automation_ForEach_Spawn = asm
5809 {
5810 local float locked_1174;
5811 local entity lLink;
5812 local float temp_4;
5813 local float temp_5;
5814         CALL0           Item_Automation_Init;
5815         INDIRECT_S      self,   link,   locked_1174;
5816         EQ_S            locked_1174,    "",     locked_1174;
5817         IFNOT           locked_1174,    3;
5818         INDIRECT_E      self,   _parent,        lLink;
5819         GOTO            4;
5820         INDIRECT_S      self,   link,   parm0_x;
5821         CALL1           Menu_GetItem;
5822         STORE_ENT       return_x,       lLink;
5823         INDIRECT_S      self,   target, locked_1174;
5824         NOT_S           locked_1174,    locked_1174;
5825         IF              locked_1174,    7;
5826         INDIRECT_S      self,   target, parm0_x;
5827         STORE_F "_Spawn",       parm1_x;
5828         CALL2           strcat;
5829         STORE_F return_x,       parm0_x;
5830         CALL1           isfunction;
5831         NOT_F           return_x,       temp_4;
5832         OR              locked_1174,    temp_4, locked_1174;
5833         IFNOT           locked_1174,    4;
5834         STORE_F "Bad target type!",     parm0_x;
5835         CALL1           objerror;
5836         RETURN  offset_0;
5837         ADDRESS self,   _current,       locked_1174;
5838         INDIRECT_E      lLink,  _child, temp_4;
5839         STOREP_ENT      temp_4, locked_1174;
5840         INDIRECT_E      self,   _current,       locked_1174;
5841         IFNOT           locked_1174,    12;
5842         INDIRECT_E      self,   _current,       locked_1174;
5843         INDIRECT_S      locked_1174,    type,   locked_1174;
5844         INDIRECT_S      self,   target, temp_4;
5845         EQ_S            locked_1174,    temp_4, locked_1174;
5846         IFNOT           locked_1174,    2;
5847         CALL0           CtCall_Action;
5848         ADDRESS self,   _current,       temp_4;
5849         INDIRECT_E      self,   _current,       temp_5;
5850         INDIRECT_E      temp_5, _next,  temp_5;
5851         STOREP_ENT      temp_5, temp_4;
5852         GOTO            -12;
5853         DONE;
5854 }
5855
5856 void() Item_Automation_Job_Spawn = asm
5857 {
5858         CALL0           Item_Automation_Init;
5859         CALL0           CtCall_Action;
5860         DONE;
5861 }
5862
5863 void() Item_Task_Job_Spawn = asm
5864 {
5865 local float temp_3;
5866         CALL0           Item_Task_Init;
5867         ADDRESS self,   _reinit,        temp_3;
5868         STOREP_FNC      CtCall_Reinit,  temp_3;
5869         ADDRESS self,   _destroy,       temp_3;
5870         STOREP_FNC      CtCall_Destroy, temp_3;
5871         ADDRESS self,   _update,        temp_3;
5872         STOREP_FNC      CtCall_Update,  temp_3;
5873         CALL0           CtCall_Init;
5874         DONE;
5875 }
5876
5877 void(entity pItem, bool pEvent) Raise_DataEvent = asm
5878 {
5879 local float locked_1174;
5880 local entity lOld;
5881         INDIRECT_FU     pItem,  _dataEvent,     locked_1174;
5882         IF              locked_1174,    2;
5883         RETURN  offset_0;
5884         STORE_ENT       self,   lOld;
5885         STORE_ENT       pItem,  self;
5886         INDIRECT_FU     self,   _dataEvent,     locked_1174;
5887         STORE_F pEvent, parm0_x;
5888         CALL1           locked_1174;
5889         STORE_ENT       lOld,   self;
5890         DONE;
5891 }
5892
5893 void() Data_ExecString_BeginUse = asm
5894 {
5895         CALL0           String_Create;
5896         STORE_S return_x,       Data_ExecString;
5897         DONE;
5898 }
5899
5900 void() Data_ExecString_EndUse = asm
5901 {
5902         STORE_F Data_ExecString,        parm0_x;
5903         CALL1           String_Free;
5904         DONE;
5905 }
5906
5907 void() Item_Data_Destroy = asm
5908 {
5909         STORE_F self,   parm0_x;
5910         STORE_F value,  parm1_x;
5911         CALL2           String_EntityFree;
5912         STORE_F self,   parm0_x;
5913         STORE_F defValue,       parm1_x;
5914         CALL2           String_EntityFree;
5915         STORE_F self,   parm0_x;
5916         STORE_F _syncValue,     parm1_x;
5917         CALL2           String_EntityFree;
5918         DONE;
5919 }
5920
5921 void() Item_Data_Init = asm
5922 {
5923 local float temp_3;
5924 local float temp_4;
5925         STORE_F self,   parm0_x;
5926         STORE_F value,  parm1_x;
5927         CALL2           String_EntityZone;
5928         STORE_F self,   parm0_x;
5929         STORE_F defValue,       parm1_x;
5930         CALL2           String_EntityZone;
5931         STORE_F self,   parm0_x;
5932         STORE_F _syncValue,     parm1_x;
5933         CALL2           String_EntityCreate;
5934         ADDRESS self,   flag,   temp_3;
5935         INDIRECT_F      self,   flag,   temp_4;
5936         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
5937         STOREP_F        temp_4, temp_3;
5938         ADDRESS self,   _destroy,       temp_3;
5939         STOREP_FNC      Item_Data_Destroy,      temp_3;
5940         DONE;
5941 }
5942
5943 void() Item_DataLink_Update = asm
5944 {
5945 local float locked_1174;
5946 local float temp_4;
5947         INDIRECT_S      self,   link,   locked_1174;
5948         EQ_S            locked_1174,    "",     locked_1174;
5949         IFNOT           locked_1174,    4;
5950         ADDRESS self,   _link,  locked_1174;
5951         STOREP_ENT      null_entity,    locked_1174;
5952         GOTO            10;
5953         INDIRECT_S      self,   link,   locked_1174;
5954         INDIRECT_E      self,   _link,  temp_4;
5955         INDIRECT_S      temp_4, name,   temp_4;
5956         NE_S            locked_1174,    temp_4, locked_1174;
5957         IFNOT           locked_1174,    5;
5958         ADDRESS self,   _link,  locked_1174;
5959         INDIRECT_S      self,   link,   parm0_x;
5960         CALL1           Menu_GetItem;
5961         STOREP_ENT      return_x,       locked_1174;
5962         DONE;
5963 }
5964
5965 void() Item_DataLink_Destroy = asm
5966 {
5967         STORE_F self,   parm0_x;
5968         STORE_F link,   parm1_x;
5969         CALL2           String_EntityFree;
5970         STORE_F self,   parm0_x;
5971         STORE_F value,  parm1_x;
5972         CALL2           String_EntityFree;
5973         DONE;
5974 }
5975
5976 void() Item_DataLink_Init = asm
5977 {
5978 local float temp_3;
5979 local float temp_4;
5980         ADDRESS self,   flag,   temp_3;
5981         INDIRECT_F      self,   flag,   temp_4;
5982         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
5983         STOREP_F        temp_4, temp_3;
5984         STORE_F self,   parm0_x;
5985         STORE_F link,   parm1_x;
5986         CALL2           String_EntityZone;
5987         STORE_F self,   parm0_x;
5988         STORE_F value,  parm1_x;
5989         CALL2           String_EntityZone;
5990         CALL0           Item_DataLink_Update;
5991         ADDRESS self,   _destroy,       temp_3;
5992         STOREP_FNC      Item_DataLink_Destroy,  temp_3;
5993         DONE;
5994 }
5995
5996 void() Item_DataLink_Switch_Destroy = asm
5997 {
5998         CALL0           Item_DataLink_Destroy;
5999         STORE_F self,   parm0_x;
6000         STORE_F descList,       parm1_x;
6001         CALL2           String_EntityFree;
6002         DONE;
6003 }
6004
6005 void() Item_DataLink_Switch_Init = asm
6006 {
6007 local float temp_3;
6008         CALL0           Item_DataLink_Value_Spawn;
6009         STORE_F self,   parm0_x;
6010         STORE_F descList,       parm1_x;
6011         CALL2           String_EntityZone;
6012         ADDRESS self,   _destroy,       temp_3;
6013         STOREP_FNC      Item_DataLink_Switch_Destroy,   temp_3;
6014         DONE;
6015 }
6016
6017 float(entity pDataLink, float pValue) DataLink_Switch_GetOrdinal = asm
6018 {
6019 local float temp_3;
6020 local float temp_4;
6021         INDIRECT_F      pDataLink,      stepValue,      temp_3;
6022         EQ_F            temp_3, KEY_GAME,       temp_3;
6023         IFNOT           temp_3, 2;
6024         RETURN  KEY_GAME;
6025         INDIRECT_F      pDataLink,      minValue,       temp_3;
6026         SUB_F           pValue, temp_3, temp_3;
6027         INDIRECT_F      pDataLink,      stepValue,      temp_4;
6028         DIV_F           temp_3, temp_4, temp_3;
6029         RETURN  temp_3;
6030         DONE;
6031 }
6032
6033 void() Item_DataUser_Update = asm
6034 {
6035 local float locked_1174;
6036 local float temp_4;
6037         INDIRECT_S      self,   target, locked_1174;
6038         EQ_S            locked_1174,    "",     locked_1174;
6039         IFNOT           locked_1174,    4;
6040         ADDRESS self,   _target,        locked_1174;
6041         STOREP_ENT      null_entity,    locked_1174;
6042         GOTO            10;
6043         INDIRECT_S      self,   target, locked_1174;
6044         INDIRECT_E      self,   _target,        temp_4;
6045         INDIRECT_S      temp_4, name,   temp_4;
6046         NE_S            locked_1174,    temp_4, locked_1174;
6047         IFNOT           locked_1174,    5;
6048         ADDRESS self,   _target,        locked_1174;
6049         INDIRECT_S      self,   target, parm0_x;
6050         CALL1           Menu_GetItem;
6051         STOREP_ENT      return_x,       locked_1174;
6052         DONE;
6053 }
6054
6055 void() Item_DataUser_Destroy = asm
6056 {
6057         STORE_F self,   parm0_x;
6058         STORE_F target, parm1_x;
6059         CALL2           String_EntityFree;
6060         DONE;
6061 }
6062
6063 void() Item_DataUser_Init = asm
6064 {
6065 local float temp_3;
6066         STORE_F self,   parm0_x;
6067         STORE_F target, parm1_x;
6068         CALL2           String_EntityZone;
6069         CALL0           Item_DataUser_Update;
6070         ADDRESS self,   _destroy,       temp_3;
6071         STOREP_FNC      Item_DataUser_Destroy,  temp_3;
6072         DONE;
6073 }
6074
6075 void(float pEvent) Item_DataContainer_DataEvent = asm
6076 {
6077 local entity lItem;
6078 local float temp_3;
6079 local float temp_4;
6080         INDIRECT_E      self,   _child, lItem;
6081         NE_E            lItem,  null_entity,    temp_3;
6082         IFNOT           temp_3, 6;
6083         STORE_F lItem,  parm0_x;
6084         STORE_F pEvent, parm1_x;
6085         CALL2           Raise_DataEvent;
6086         INDIRECT_E      lItem,  _next,  lItem;
6087         GOTO            -6;
6088         DONE;
6089 }
6090
6091 void() Item_DataContainer_Spawn = asm
6092 {
6093 local float temp_3;
6094         CALL0           Item_Container_Spawn;
6095         ADDRESS self,   _dataEvent,     temp_3;
6096         STOREP_FNC      Item_DataContainer_DataEvent,   temp_3;
6097         DONE;
6098 }
6099
6100 void() Item_Data_Container_Reinit = asm
6101 {
6102 local float temp_3;
6103         INDIRECT_S      self,   _syncValue,     temp_3;
6104         STORE_F self,   parm0_x;
6105         STORE_F value,  parm1_x;
6106         STORE_F temp_3, parm2_x;
6107         CALL3           String_EntitySet;
6108         DONE;
6109 }
6110
6111 void(float pEvent) Item_Data_Container_DataEvent = asm
6112 {
6113 local float temp_3;
6114         GOTO            24;
6115         INDIRECT_S      self,   _syncValue,     temp_3;
6116         STORE_F self,   parm0_x;
6117         STORE_F value,  parm1_x;
6118         STORE_F temp_3, parm2_x;
6119         CALL3           String_EntitySet;
6120         GOTO            23;
6121         INDIRECT_S      self,   value,  temp_3;
6122         STORE_F self,   parm0_x;
6123         STORE_F _syncValue,     parm1_x;
6124         STORE_F temp_3, parm2_x;
6125         CALL3           String_EntitySet;
6126         GOTO            17;
6127         INDIRECT_S      self,   defValue,       temp_3;
6128         STORE_F self,   parm0_x;
6129         STORE_F value,  parm1_x;
6130         STORE_F temp_3, parm2_x;
6131         CALL3           String_EntitySet;
6132         INDIRECT_S      self,   defValue,       temp_3;
6133         STORE_F self,   parm0_x;
6134         STORE_F _syncValue,     parm1_x;
6135         STORE_F temp_3, parm2_x;
6136         CALL3           String_EntitySet;
6137         GOTO            6;
6138         IFNOT           pEvent, -23;
6139         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
6140         IF              temp_3, -19;
6141         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
6142         IF              temp_3, -15;
6143         DONE;
6144 }
6145
6146 void() Item_Data_Container_Spawn = asm
6147 {
6148 local float temp_3;
6149         CALL0           Item_Data_Init;
6150         ADDRESS self,   _reinit,        temp_3;
6151         STOREP_FNC      Item_Data_Container_Reinit,     temp_3;
6152         ADDRESS self,   _dataEvent,     temp_3;
6153         STOREP_FNC      Item_Data_Container_DataEvent,  temp_3;
6154         INDIRECT_S      self,   defValue,       temp_3;
6155         STORE_F self,   parm0_x;
6156         STORE_F _syncValue,     parm1_x;
6157         STORE_F temp_3, parm2_x;
6158         CALL3           String_EntitySet;
6159         DONE;
6160 }
6161
6162 void () Item_Data_Cvar_Sync;
6163 void() Item_Data_Cvar_Sync = asm
6164 {
6165 local float temp_3;
6166         INDIRECT_S      self,   cvarName,       parm0_x;
6167         CALL1           str_cvar;
6168         STORE_F self,   parm0_x;
6169         STORE_F _syncValue,     parm1_x;
6170         STORE_F return_x,       parm2_x;
6171         CALL3           String_EntitySet;
6172         INDIRECT_S      self,   _syncValue,     temp_3;
6173         STORE_F self,   parm0_x;
6174         STORE_F value,  parm1_x;
6175         STORE_F temp_3, parm2_x;
6176         CALL3           String_EntitySet;
6177         DONE;
6178 }
6179
6180 void () Item_Data_Cvar_Send;
6181 void() Item_Data_Cvar_Send = asm
6182 {
6183 local float temp_3;
6184 local float temp_4;
6185         INDIRECT_S      self,   cvarName,       temp_3;
6186         INDIRECT_S      self,   value,  temp_4;
6187         STORE_F temp_3, parm0_x;
6188         STORE_F temp_4, parm1_x;
6189         CALL2           cvar_set;
6190         CALL0           Item_Data_Cvar_Sync;
6191         DONE;
6192 }
6193
6194 void () Item_Data_Cvar_Reset;
6195 void() Item_Data_Cvar_Reset = asm
6196 {
6197 local float temp_3;
6198         INDIRECT_S      self,   defValue,       temp_3;
6199         STORE_F self,   parm0_x;
6200         STORE_F value,  parm1_x;
6201         STORE_F temp_3, parm2_x;
6202         CALL3           String_EntitySet;
6203         CALL0           Item_Data_Cvar_Send;
6204         DONE;
6205 }
6206
6207 void () Item_Data_Cvar_Test_Start;
6208 void() Item_Data_Cvar_Test_Start = asm
6209 {
6210 local float temp_3;
6211 local float temp_4;
6212         INDIRECT_S      self,   cvarName,       temp_3;
6213         INDIRECT_S      self,   value,  temp_4;
6214         STORE_F temp_3, parm0_x;
6215         STORE_F temp_4, parm1_x;
6216         CALL2           cvar_set;
6217         DONE;
6218 }
6219
6220 void () Item_Data_Cvar_Test_End;
6221 void() Item_Data_Cvar_Test_End = asm
6222 {
6223 local float temp_3;
6224 local float temp_4;
6225         INDIRECT_S      self,   cvarName,       temp_3;
6226         INDIRECT_S      self,   _syncValue,     temp_4;
6227         STORE_F temp_3, parm0_x;
6228         STORE_F temp_4, parm1_x;
6229         CALL2           cvar_set;
6230         DONE;
6231 }
6232
6233 void () Item_Data_Cvar_Save_ExecString;
6234 void() Item_Data_Cvar_Save_ExecString = asm
6235 {
6236 local float temp_3;
6237 local float temp_4;
6238         INDIRECT_S      self,   cvarName,       temp_3;
6239         INDIRECT_S      self,   value,  temp_4;
6240         STORE_F "set "",        parm0_x;
6241         STORE_F temp_3, parm1_x;
6242         STORE_F "" "",  parm2_x;
6243         STORE_F temp_4, parm3_x;
6244         STORE_F ""
6245 ",      parm4_x;
6246         CALL5           strcat;
6247         STORE_F Data_ExecString,        parm0_x;
6248         STORE_F return_x,       parm1_x;
6249         CALL2           String_Append;
6250         STORE_S return_x,       Data_ExecString;
6251         DONE;
6252 }
6253
6254 void(float pEvent) Item_Data_Cvar_DataEvent = asm
6255 {
6256 local float temp_3;
6257         GOTO            13;
6258         CALL0           Item_Data_Cvar_Sync;
6259         GOTO            22;
6260         CALL0           Item_Data_Cvar_Send;
6261         GOTO            20;
6262         CALL0           Item_Data_Cvar_Reset;
6263         GOTO            18;
6264         CALL0           Item_Data_Cvar_Test_Start;
6265         GOTO            16;
6266         CALL0           Item_Data_Cvar_Test_End;
6267         GOTO            14;
6268         CALL0           Item_Data_Cvar_Save_ExecString;
6269         GOTO            12;
6270         IFNOT           pEvent, -12;
6271         EQ_F            pEvent, ITEM_DATA_SEND, temp_3;
6272         IF              temp_3, -12;
6273         EQ_F            pEvent, ITEM_DATA_RESET,        temp_3;
6274         IF              temp_3, -12;
6275         EQ_F            pEvent, ITEM_DATA_TEST_START,   temp_3;
6276         IF              temp_3, -12;
6277         EQ_F            pEvent, ITEM_DATA_TEST_END,     temp_3;
6278         IF              temp_3, -12;
6279         EQ_F            pEvent, ITEM_DATA_SAVE_EXECSTRING,      temp_3;
6280         IF              temp_3, -12;
6281         DONE;
6282 }
6283
6284 void () Item_Data_Cvar_Destroy;
6285 void() Item_Data_Cvar_Destroy = asm
6286 {
6287         CALL0           Item_Data_Destroy;
6288         STORE_F self,   parm0_x;
6289         STORE_F cvarName,       parm1_x;
6290         CALL2           String_EntityFree;
6291         DONE;
6292 }
6293
6294 void() Item_Data_Cvar_Spawn = asm
6295 {
6296 local float temp_3;
6297 local float temp_4;
6298         STORE_F self,   parm0_x;
6299         STORE_F cvarName,       parm1_x;
6300         CALL2           String_EntityZone;
6301         CALL0           Item_Data_Init;
6302         ADDRESS self,   flag,   temp_3;
6303         INDIRECT_F      self,   flag,   temp_4;
6304         BITOR           temp_4, FLAG_HIDDEN,    temp_4;
6305         STOREP_F        temp_4, temp_3;
6306         ADDRESS self,   _dataEvent,     temp_3;
6307         STOREP_FNC      Item_Data_Cvar_DataEvent,       temp_3;
6308         ADDRESS self,   _reinit,        temp_3;
6309         STOREP_FNC      Item_Data_Cvar_Sync,    temp_3;
6310         ADDRESS self,   _destroy,       temp_3;
6311         STOREP_FNC      Item_Data_Cvar_Destroy, temp_3;
6312         DONE;
6313 }
6314
6315 void() Item_Data_CvarCreateSave_Spawn = asm
6316 {
6317 local float temp_3;
6318 local float temp_4;
6319         CALL0           Item_Data_Cvar_Spawn;
6320         INDIRECT_S      self,   cvarName,       temp_3;
6321         INDIRECT_S      self,   defValue,       temp_4;
6322         STORE_F temp_3, parm0_x;
6323         STORE_F temp_4, parm1_x;
6324         STORE_F FILE_APPEND,    parm2_x;
6325         CALL3           registercvar;
6326         DONE;
6327 }
6328
6329 void (float) Item_DataLink_Text_DataEvent;
6330 void(float pEvent) Item_DataLink_Text_DataEvent = asm
6331 {
6332 local float temp_3;
6333 local float temp_4;
6334         CALL0           Item_DataLink_Update;
6335         EQ_F            pEvent, ITEM_DATALINK_SET,      temp_3;
6336         IFNOT           temp_3, 26;
6337         INDIRECT_F      self,   maxValue,       temp_3;
6338         GE              temp_3, KEY_GAME,       temp_3;
6339         IFNOT           temp_3, 11;
6340         INDIRECT_S      self,   value,  temp_3;
6341         INDIRECT_F      self,   maxValue,       temp_4;
6342         STORE_F temp_3, parm0_x;
6343         STORE_F KEY_GAME,       parm1_x;
6344         STORE_F temp_4, parm2_x;
6345         CALL3           substring;
6346         STORE_F self,   parm0_x;
6347         STORE_F value,  parm1_x;
6348         STORE_F return_x,       parm2_x;
6349         CALL3           String_EntitySet;
6350         INDIRECT_E      self,   _link,  temp_3;
6351         IFNOT           temp_3, 10;
6352         INDIRECT_E      self,   _link,  temp_3;
6353         INDIRECT_S      self,   value,  temp_4;
6354         STORE_F temp_3, parm0_x;
6355         STORE_F value,  parm1_x;
6356         STORE_F temp_4, parm2_x;
6357         CALL3           String_EntitySet;
6358         INDIRECT_E      self,   _link,  parm0_x;
6359         STORE_F ITEM_DATALINK_SET,      parm1_x;
6360         CALL2           Raise_DataEvent;
6361         GOTO            33;
6362         INDIRECT_E      self,   _link,  temp_3;
6363         IF              temp_3, 3;
6364         RETURN  offset_0;
6365         GOTO            29;
6366         EQ_F            pEvent, ITEM_DATALINK_GET,      temp_3;
6367         IFNOT           temp_3, 24;
6368         INDIRECT_E      self,   _link,  temp_3;
6369         INDIRECT_S      temp_3, value,  temp_3;
6370         STORE_F self,   parm0_x;
6371         STORE_F value,  parm1_x;
6372         STORE_F temp_3, parm2_x;
6373         CALL3           String_EntitySet;
6374         INDIRECT_F      self,   maxValue,       temp_3;
6375         GE              temp_3, KEY_GAME,       temp_3;
6376         IFNOT           temp_3, 14;
6377         INDIRECT_E      self,   _link,  parm0_x;
6378         STORE_F ITEM_DATALINK_GET,      parm1_x;
6379         CALL2           Raise_DataEvent;
6380         INDIRECT_S      self,   value,  temp_3;
6381         INDIRECT_F      self,   maxValue,       temp_4;
6382         STORE_F temp_3, parm0_x;
6383         STORE_F KEY_GAME,       parm1_x;
6384         STORE_F temp_4, parm2_x;
6385         CALL3           substring;
6386         STORE_F self,   parm0_x;
6387         STORE_F value,  parm1_x;
6388         STORE_F return_x,       parm2_x;
6389         CALL3           String_EntitySet;
6390         GOTO            4;
6391         INDIRECT_E      self,   _link,  parm0_x;
6392         STORE_F pEvent, parm1_x;
6393         CALL2           Raise_DataEvent;
6394         DONE;
6395 }
6396
6397 void () Item_DataLink_Text_Spawn;
6398 void() Item_DataLink_Text_Spawn = asm
6399 {
6400 local float temp_3;
6401         CALL0           Item_DataLink_Init;
6402         ADDRESS self,   _dataEvent,     temp_3;
6403         STOREP_FNC      Item_DataLink_Text_DataEvent,   temp_3;
6404         DONE;
6405 }
6406
6407 void() Item_DataLink_Value_Clamp = asm
6408 {
6409 local float locked_285;
6410 local float locked_1020;
6411 local float locked_1174;
6412 local float temp_0;
6413 local float temp_1;
6414         INDIRECT_F      self,   _realValue,     locked_1174;
6415         INDIRECT_F      self,   maxValue,       locked_1020;
6416         GT              locked_1174,    locked_1020,    locked_1174;
6417         IFNOT           locked_1174,    4;
6418         INDIRECT_F      self,   maxValue,       locked_1020;
6419         INDIRECT_F      self,   minValue,       locked_285;
6420         GT              locked_1020,    locked_285,     locked_1020;
6421         AND             locked_1174,    locked_1020,    locked_1174;
6422         IFNOT           locked_1174,    5;
6423         ADDRESS self,   _realValue,     locked_1174;
6424         INDIRECT_F      self,   maxValue,       locked_1020;
6425         STOREP_F        locked_1020,    locked_1174;
6426         GOTO            21;
6427         INDIRECT_F      self,   _realValue,     locked_1174;
6428         INDIRECT_F      self,   minValue,       locked_1020;
6429         LT              locked_1174,    locked_1020,    locked_1174;
6430         IFNOT           locked_1174,    5;
6431         ADDRESS self,   _realValue,     locked_1174;
6432         INDIRECT_F      self,   minValue,       locked_1020;
6433         STOREP_F        locked_1020,    locked_1174;
6434         GOTO            13;
6435         ADDRESS self,   _realValue,     locked_1174;
6436         INDIRECT_F      self,   minValue,       locked_1020;
6437         INDIRECT_F      self,   stepValue,      locked_285;
6438         INDIRECT_F      self,   _realValue,     temp_1;
6439         INDIRECT_F      self,   minValue,       temp_0;
6440         SUB_F           temp_1, temp_0, temp_0;
6441         INDIRECT_F      self,   stepValue,      temp_1;
6442         DIV_F           temp_0, temp_1, parm0_x;
6443         CALL1           rint;
6444         MUL_F           locked_285,     return_x,       temp_0;
6445         ADD_F           locked_1020,    temp_0, temp_0;
6446         STOREP_F        temp_0, locked_1174;
6447         DONE;
6448 }
6449
6450 string () Item_DataLink_ClampedValue;
6451 string() Item_DataLink_ClampedValue = asm
6452 {
6453 local float locked_1586;
6454 local float lClampedStep;
6455 local float lLen;
6456 local float temp_1;
6457         INDIRECT_F      self,   stepValue,      locked_1586;
6458         INDIRECT_F      self,   stepValue,      parm0_x;
6459         CALL1           floor;
6460         EQ_F            locked_1586,    return_x,       locked_1586;
6461         IFNOT           locked_1586,    4;
6462         INDIRECT_F      self,   _realValue,     parm0_x;
6463         CALL1           ftos;
6464         RETURN  return_x;
6465         INDIRECT_F      self,   _realValue,     parm0_x;
6466         CALL1           rint;
6467         STORE_F return_x,       parm0_x;
6468         CALL1           ftos;
6469         STORE_F return_x,       parm0_x;
6470         CALL1           strlen;
6471         STORE_F return_x,       lLen;
6472         INDIRECT_F      self,   stepValue,      locked_1586;
6473         INDIRECT_F      self,   stepValue,      parm0_x;
6474         CALL1           floor;
6475         SUB_F           locked_1586,    return_x,       locked_1586;
6476         DIV_F           FILE_APPEND,    locked_1586,    parm0_x;
6477         CALL1           rint;
6478         STORE_F return_x,       lClampedStep;
6479         STORE_F lClampedStep,   parm0_x;
6480         CALL1           ftos;
6481         STORE_F return_x,       parm0_x;
6482         CALL1           strlen;
6483         ADD_F           lLen,   return_x,       lLen;
6484         INDIRECT_F      self,   _realValue,     parm0_x;
6485         CALL1           ftos;
6486         STORE_F return_x,       parm0_x;
6487         STORE_F KEY_GAME,       parm1_x;
6488         STORE_F lLen,   parm2_x;
6489         CALL3           substring;
6490         RETURN  return_x;
6491         DONE;
6492 }
6493
6494 void (float) Item_DataLink_Value_DataEvent;
6495 void(float pEvent) Item_DataLink_Value_DataEvent = asm
6496 {
6497 local float locked_1586;
6498 local float temp_1;
6499         CALL0           Item_DataLink_Update;
6500         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1586;
6501         IFNOT           locked_1586,    19;
6502         CALL0           Item_DataLink_Value_Clamp;
6503         INDIRECT_E      self,   _link,  locked_1586;
6504         IFNOT           locked_1586,    15;
6505         INDIRECT_E      self,   _link,  locked_1586;
6506         ADDRESS locked_1586,    _realValue,     locked_1586;
6507         INDIRECT_F      self,   _realValue,     temp_1;
6508         STOREP_F        temp_1, locked_1586;
6509         INDIRECT_E      self,   _link,  locked_1586;
6510         INDIRECT_F      self,   _realValue,     parm0_x;
6511         CALL1           ftos;
6512         STORE_F locked_1586,    parm0_x;
6513         STORE_F value,  parm1_x;
6514         STORE_F return_x,       parm2_x;
6515         CALL3           String_EntitySet;
6516         INDIRECT_E      self,   _link,  parm0_x;
6517         STORE_F ITEM_DATALINK_SET,      parm1_x;
6518         CALL2           Raise_DataEvent;
6519         GOTO            25;
6520         INDIRECT_E      self,   _link,  locked_1586;
6521         IF              locked_1586,    3;
6522         RETURN  offset_0;
6523         GOTO            21;
6524         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1586;
6525         IFNOT           locked_1586,    16;
6526         INDIRECT_E      self,   _link,  parm0_x;
6527         STORE_F ITEM_DATALINK_GET,      parm1_x;
6528         CALL2           Raise_DataEvent;
6529         ADDRESS self,   _realValue,     locked_1586;
6530         INDIRECT_E      self,   _link,  temp_1;
6531         INDIRECT_S      temp_1, value,  parm0_x;
6532         CALL1           stof;
6533         STOREP_F        return_x,       locked_1586;
6534         CALL0           Item_DataLink_ClampedValue;
6535         STORE_F self,   parm0_x;
6536         STORE_F value,  parm1_x;
6537         STORE_F return_x,       parm2_x;
6538         CALL3           String_EntitySet;
6539         CALL0           Item_DataLink_Value_Clamp;
6540         GOTO            4;
6541         INDIRECT_E      self,   _link,  parm0_x;
6542         STORE_F pEvent, parm1_x;
6543         CALL2           Raise_DataEvent;
6544         DONE;
6545 }
6546
6547 void() Item_DataLink_Value_Spawn = asm
6548 {
6549 local float temp_0;
6550         CALL0           Item_DataLink_Init;
6551         INDIRECT_F      self,   stepValue,      temp_0;
6552         EQ_F            temp_0, KEY_GAME,       temp_0;
6553         IFNOT           temp_0, 3;
6554         ADDRESS self,   stepValue,      temp_0;
6555         STOREP_F        FILE_APPEND,    temp_0;
6556         ADDRESS self,   _dataEvent,     temp_0;
6557         STOREP_FNC      Item_DataLink_Value_DataEvent,  temp_0;
6558         DONE;
6559 }
6560
6561 void(float pEvent) Item_DataLink_TextSwitch_DataEvent = asm
6562 {
6563 local float locked_1586;
6564 local float lCount;
6565 local float lPos;
6566 local float temp_1;
6567 local float temp_5;
6568         CALL0           Item_DataLink_Update;
6569         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1586;
6570         IFNOT           locked_1586,    20;
6571         CALL0           Item_DataLink_Value_Clamp;
6572         INDIRECT_E      self,   _link,  locked_1586;
6573         IFNOT           locked_1586,    16;
6574         INDIRECT_E      self,   _link,  locked_1586;
6575         INDIRECT_S      self,   valueList,      temp_1;
6576         INDIRECT_F      self,   _realValue,     temp_5;
6577         STORE_F temp_1, parm0_x;
6578         STORE_F temp_5, parm1_x;
6579         CALL2           Util_GetAltStringItem;
6580         STORE_F return_x,       parm0_x;
6581         CALL1           String_Normal;
6582         STORE_F locked_1586,    parm0_x;
6583         STORE_F value,  parm1_x;
6584         STORE_F return_x,       parm2_x;
6585         CALL3           String_EntitySet;
6586         INDIRECT_E      self,   _link,  parm0_x;
6587         STORE_F ITEM_DATALINK_SET,      parm1_x;
6588         CALL2           Raise_DataEvent;
6589         GOTO            76;
6590         INDIRECT_E      self,   _link,  locked_1586;
6591         IF              locked_1586,    3;
6592         RETURN  offset_0;
6593         GOTO            72;
6594         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1586;
6595         IFNOT           locked_1586,    67;
6596         INDIRECT_E      self,   _link,  parm0_x;
6597         STORE_F ITEM_DATALINK_GET,      parm1_x;
6598         CALL2           Raise_DataEvent;
6599         INDIRECT_S      self,   valueList,      locked_1586;
6600         INDIRECT_F      self,   _realValue,     temp_1;
6601         STORE_F locked_1586,    parm0_x;
6602         STORE_F temp_1, parm1_x;
6603         CALL2           Util_GetAltStringItem;
6604         STORE_F return_x,       parm0_x;
6605         CALL1           String_Normal;
6606         INDIRECT_E      self,   _link,  locked_1586;
6607         INDIRECT_S      locked_1586,    value,  locked_1586;
6608         EQ_S            return_x,       locked_1586,    locked_1586;
6609         IFNOT           locked_1586,    13;
6610         INDIRECT_S      self,   descList,       locked_1586;
6611         INDIRECT_F      self,   _realValue,     temp_1;
6612         STORE_F locked_1586,    parm0_x;
6613         STORE_F temp_1, parm1_x;
6614         CALL2           Util_GetAltStringItem;
6615         STORE_F return_x,       parm0_x;
6616         CALL1           String_Normal;
6617         STORE_F self,   parm0_x;
6618         STORE_F value,  parm1_x;
6619         STORE_F return_x,       parm2_x;
6620         CALL3           String_EntitySet;
6621         RETURN  offset_0;
6622         INDIRECT_S      self,   valueList,      parm0_x;
6623         CALL1           Util_GetAltStringCount;
6624         STORE_F return_x,       lCount;
6625         STORE_F KEY_GAME,       lPos;
6626         LT              lPos,   lCount, locked_1586;
6627         IFNOT           locked_1586,    13;
6628         INDIRECT_S      self,   valueList,      parm0_x;
6629         STORE_F lPos,   parm1_x;
6630         CALL2           Util_GetAltStringItem;
6631         STORE_F return_x,       parm0_x;
6632         CALL1           String_Normal;
6633         INDIRECT_E      self,   _link,  locked_1586;
6634         INDIRECT_S      locked_1586,    value,  locked_1586;
6635         EQ_S            return_x,       locked_1586,    locked_1586;
6636         IFNOT           locked_1586,    2;
6637         GOTO            3;
6638         ADD_F           lPos,   FILE_APPEND,    lPos;
6639         GOTO            -13;
6640         GT              lPos,   lCount, locked_1586;
6641         IFNOT           locked_1586,    9;
6642         INDIRECT_S      self,   descList,       parm0_x;
6643         CALL1           Util_GetAltStringCount;
6644         GT              return_x,       lCount, locked_1586;
6645         IFNOT           locked_1586,    4;
6646         STORE_F lPos,   locked_1586;
6647         ADD_F           lPos,   FILE_APPEND,    lPos;
6648         GOTO            2;
6649         STORE_F KEY_GAME,       lPos;
6650         ADDRESS self,   _realValue,     locked_1586;
6651         STOREP_F        lPos,   locked_1586;
6652         INDIRECT_S      self,   descList,       parm0_x;
6653         STORE_F lPos,   parm1_x;
6654         CALL2           Util_GetAltStringItem;
6655         STORE_F return_x,       parm0_x;
6656         CALL1           String_Normal;
6657         STORE_F self,   parm0_x;
6658         STORE_F value,  parm1_x;
6659         STORE_F return_x,       parm2_x;
6660         CALL3           String_EntitySet;
6661         GOTO            4;
6662         INDIRECT_E      self,   _link,  parm0_x;
6663         STORE_F pEvent, parm1_x;
6664         CALL2           Raise_DataEvent;
6665         DONE;
6666 }
6667
6668 void() Item_DataLink_TextSwitch_Destroy = asm
6669 {
6670         STORE_F self,   parm0_x;
6671         STORE_F valueList,      parm1_x;
6672         CALL2           String_EntityFree;
6673         CALL0           Item_DataLink_Switch_Destroy;
6674         DONE;
6675 }
6676
6677 void() Item_DataLink_TextSwitch_Spawn = asm
6678 {
6679 local float locked_1586;
6680 local float temp_1;
6681         CALL0           Item_DataLink_Switch_Init;
6682         STORE_F self,   parm0_x;
6683         STORE_F valueList,      parm1_x;
6684         CALL2           String_EntityZone;
6685         ADDRESS self,   minValue,       locked_1586;
6686         STOREP_F        KEY_GAME,       locked_1586;
6687         INDIRECT_F      self,   maxValue,       locked_1586;
6688         EQ_F            locked_1586,    KEY_GAME,       locked_1586;
6689         IFNOT           locked_1586,    6;
6690         ADDRESS self,   maxValue,       locked_1586;
6691         INDIRECT_S      self,   valueList,      parm0_x;
6692         CALL1           Util_GetAltStringCount;
6693         SUB_F           return_x,       FILE_APPEND,    temp_1;
6694         STOREP_F        temp_1, locked_1586;
6695         INDIRECT_F      self,   maxValue,       locked_1586;
6696         EQ_F            locked_1586,    KEY_GAME,       locked_1586;
6697         IFNOT           locked_1586,    4;
6698         ADDRESS self,   stepValue,      locked_1586;
6699         STOREP_F        KEY_GAME,       locked_1586;
6700         GOTO            3;
6701         ADDRESS self,   stepValue,      locked_1586;
6702         STOREP_F        FILE_APPEND,    locked_1586;
6703         ADDRESS self,   _destroy,       locked_1586;
6704         STOREP_FNC      Item_DataLink_TextSwitch_Destroy,       locked_1586;
6705         ADDRESS self,   _dataEvent,     locked_1586;
6706         STOREP_FNC      Item_DataLink_TextSwitch_DataEvent,     locked_1586;
6707         DONE;
6708 }
6709
6710 void (float) Item_DataLink_ValueSwitch_DataEvent;
6711 void(float pEvent) Item_DataLink_ValueSwitch_DataEvent = asm
6712 {
6713 local float locked_1586;
6714 local float lPos;
6715 local float temp_1;
6716         CALL0           Item_DataLink_Update;
6717         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1586;
6718         IFNOT           locked_1586,    19;
6719         CALL0           Item_DataLink_Value_Clamp;
6720         INDIRECT_E      self,   _link,  locked_1586;
6721         IFNOT           locked_1586,    15;
6722         INDIRECT_E      self,   _link,  locked_1586;
6723         ADDRESS locked_1586,    _realValue,     locked_1586;
6724         INDIRECT_F      self,   _realValue,     temp_1;
6725         STOREP_F        temp_1, locked_1586;
6726         INDIRECT_E      self,   _link,  locked_1586;
6727         INDIRECT_F      self,   _realValue,     parm0_x;
6728         CALL1           ftos;
6729         STORE_F locked_1586,    parm0_x;
6730         STORE_F value,  parm1_x;
6731         STORE_F return_x,       parm2_x;
6732         CALL3           String_EntitySet;
6733         INDIRECT_E      self,   _link,  parm0_x;
6734         STORE_F ITEM_DATALINK_SET,      parm1_x;
6735         CALL2           Raise_DataEvent;
6736         GOTO            36;
6737         INDIRECT_E      self,   _link,  locked_1586;
6738         IF              locked_1586,    3;
6739         RETURN  offset_0;
6740         GOTO            32;
6741         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1586;
6742         IFNOT           locked_1586,    27;
6743         INDIRECT_E      self,   _link,  parm0_x;
6744         STORE_F ITEM_DATALINK_GET,      parm1_x;
6745         CALL2           Raise_DataEvent;
6746         ADDRESS self,   _realValue,     locked_1586;
6747         INDIRECT_E      self,   _link,  temp_1;
6748         INDIRECT_S      temp_1, value,  parm0_x;
6749         CALL1           stof;
6750         STOREP_F        return_x,       locked_1586;
6751         CALL0           Item_DataLink_Value_Clamp;
6752         INDIRECT_F      self,   _realValue,     locked_1586;
6753         INDIRECT_F      self,   minValue,       temp_1;
6754         SUB_F           locked_1586,    temp_1, locked_1586;
6755         INDIRECT_F      self,   stepValue,      temp_1;
6756         DIV_F           locked_1586,    temp_1, parm0_x;
6757         CALL1           rint;
6758         STORE_F return_x,       lPos;
6759         INDIRECT_S      self,   descList,       parm0_x;
6760         STORE_F lPos,   parm1_x;
6761         CALL2           Util_GetAltStringItem;
6762         STORE_F return_x,       parm0_x;
6763         CALL1           String_Normal;
6764         STORE_F self,   parm0_x;
6765         STORE_F value,  parm1_x;
6766         STORE_F return_x,       parm2_x;
6767         CALL3           String_EntitySet;
6768         GOTO            4;
6769         INDIRECT_E      self,   _link,  parm0_x;
6770         STORE_F pEvent, parm1_x;
6771         CALL2           Raise_DataEvent;
6772         DONE;
6773 }
6774
6775 void() Item_DataLink_ValueSwitch_Spawn = asm
6776 {
6777 local float locked_1585;
6778 local float locked_1586;
6779 local float lCount;
6780 local float temp_5;
6781 local float temp_6;
6782         CALL0           Item_DataLink_Switch_Init;
6783         INDIRECT_F      self,   maxValue,       locked_1586;
6784         EQ_F            locked_1586,    KEY_GAME,       locked_1586;
6785         IFNOT           locked_1586,    11;
6786         ADDRESS self,   maxValue,       locked_1586;
6787         INDIRECT_F      self,   minValue,       locked_1585;
6788         INDIRECT_S      self,   descList,       parm0_x;
6789         CALL1           Util_GetAltStringCount;
6790         SUB_F           return_x,       FILE_APPEND,    temp_5;
6791         INDIRECT_F      self,   stepValue,      temp_6;
6792         MUL_F           temp_5, temp_6, temp_5;
6793         ADD_F           locked_1585,    temp_5, locked_1585;
6794         STOREP_F        locked_1585,    locked_1586;
6795         GOTO            15;
6796         INDIRECT_S      self,   descList,       parm0_x;
6797         CALL1           Util_GetAltStringCount;
6798         STORE_F return_x,       lCount;
6799         IFNOT           lCount, 9;
6800         ADDRESS self,   stepValue,      locked_1586;
6801         INDIRECT_F      self,   maxValue,       locked_1585;
6802         INDIRECT_F      self,   minValue,       temp_5;
6803         SUB_F           locked_1585,    temp_5, locked_1585;
6804         SUB_F           lCount, FILE_APPEND,    temp_5;
6805         DIV_F           locked_1585,    temp_5, locked_1585;
6806         STOREP_F        locked_1585,    locked_1586;
6807         GOTO            3;
6808         ADDRESS self,   stepValue,      locked_1586;
6809         STOREP_F        KEY_GAME,       locked_1586;
6810         ADDRESS self,   _dataEvent,     locked_1586;
6811         STOREP_FNC      Item_DataLink_ValueSwitch_DataEvent,    locked_1586;
6812         ADDRESS self,   _destroy,       locked_1586;
6813         STOREP_FNC      Item_DataLink_Switch_Destroy,   locked_1586;
6814         DONE;
6815 }
6816
6817 void (float) Item_DataLink_FastResync_DataEvent;
6818 void(float pEvent) Item_DataLink_FastResync_DataEvent = asm
6819 {
6820 local float temp_0;
6821 local float temp_1;
6822         EQ_F            pEvent, ITEM_DATALINK_GET,      temp_0;
6823         IFNOT           temp_0, 19;
6824         INDIRECT_F      self,   _presstime,     temp_0;
6825         NE_F            temp_0, Timer_Time,     temp_0;
6826         IFNOT           temp_0, 6;
6827         INDIRECT_E      self,   _link,  parm0_x;
6828         STORE_F ITEM_DATA_SYNC, parm1_x;
6829         CALL2           Raise_DataEvent;
6830         ADDRESS self,   _presstime,     temp_0;
6831         STOREP_F        Timer_Time,     temp_0;
6832         INDIRECT_E      self,   _link,  parm0_x;
6833         STORE_F ITEM_DATALINK_GET,      parm1_x;
6834         CALL2           Raise_DataEvent;
6835         INDIRECT_E      self,   _link,  temp_0;
6836         INDIRECT_S      temp_0, value,  temp_0;
6837         STORE_F self,   parm0_x;
6838         STORE_F value,  parm1_x;
6839         STORE_F temp_0, parm2_x;
6840         CALL3           String_EntitySet;
6841         GOTO            18;
6842         EQ_F            pEvent, ITEM_DATALINK_SET,      temp_0;
6843         IFNOT           temp_0, 13;
6844         INDIRECT_E      self,   _link,  temp_0;
6845         IFNOT           temp_0, 10;
6846         INDIRECT_E      self,   _link,  temp_0;
6847         INDIRECT_S      self,   value,  temp_1;
6848         STORE_F temp_0, parm0_x;
6849         STORE_F value,  parm1_x;
6850         STORE_F temp_1, parm2_x;
6851         CALL3           String_EntitySet;
6852         INDIRECT_E      self,   _link,  parm0_x;
6853         STORE_F ITEM_DATALINK_SET,      parm1_x;
6854         CALL2           Raise_DataEvent;
6855         GOTO            4;
6856         INDIRECT_E      self,   _link,  parm0_x;
6857         STORE_F pEvent, parm1_x;
6858         CALL2           Raise_DataEvent;
6859         DONE;
6860 }
6861
6862 void() Item_DataLink_FastResync_Spawn = asm
6863 {
6864 local float temp_0;
6865 local float temp_1;
6866         CALL0           Item_DataLink_Init;
6867         ADDRESS self,   _presstime,     temp_0;
6868         SUB_F           Timer_Time,     FILE_APPEND,    temp_1;
6869         STOREP_F        temp_1, temp_0;
6870         ADDRESS self,   _dataEvent,     temp_0;
6871         STOREP_FNC      Item_DataLink_FastResync_DataEvent,     temp_0;
6872         DONE;
6873 }
6874
6875 void (float) Item_DataLink_TextValue_DataEvent;
6876 void(float pEvent) Item_DataLink_TextValue_DataEvent = asm
6877 {
6878 local float locked_1586;
6879 local float temp_1;
6880         CALL0           Item_DataLink_Update;
6881         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1586;
6882         IFNOT           locked_1586,    14;
6883         INDIRECT_E      self,   _link,  locked_1586;
6884         ADDRESS locked_1586,    _realValue,     locked_1586;
6885         INDIRECT_S      self,   value,  parm0_x;
6886         CALL1           stof;
6887         STOREP_F        return_x,       locked_1586;
6888         INDIRECT_E      self,   _link,  parm0_x;
6889         STORE_F ITEM_DATALINK_SET,      parm1_x;
6890         CALL2           Raise_DataEvent;
6891         ADDRESS self,   _realValue,     locked_1586;
6892         INDIRECT_E      self,   _link,  temp_1;
6893         INDIRECT_F      temp_1, _realValue,     temp_1;
6894         STOREP_F        temp_1, locked_1586;
6895         GOTO            39;
6896         INDIRECT_E      self,   _link,  locked_1586;
6897         IF              locked_1586,    3;
6898         RETURN  offset_0;
6899         GOTO            35;
6900         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1586;
6901         IFNOT           locked_1586,    20;
6902         INDIRECT_E      self,   _link,  parm0_x;
6903         STORE_F ITEM_DATALINK_GET,      parm1_x;
6904         CALL2           Raise_DataEvent;
6905         INDIRECT_E      self,   _link,  locked_1586;
6906         INDIRECT_F      locked_1586,    _realValue,     locked_1586;
6907         INDIRECT_F      self,   _realValue,     temp_1;
6908         NE_F            locked_1586,    temp_1, locked_1586;
6909         IFNOT           locked_1586,    11;
6910         ADDRESS self,   _realValue,     locked_1586;
6911         INDIRECT_E      self,   _link,  temp_1;
6912         INDIRECT_F      temp_1, _realValue,     temp_1;
6913         STOREP_F        temp_1, locked_1586;
6914         INDIRECT_E      self,   _link,  locked_1586;
6915         INDIRECT_S      locked_1586,    value,  locked_1586;
6916         STORE_F self,   parm0_x;
6917         STORE_F value,  parm1_x;
6918         STORE_F locked_1586,    parm2_x;
6919         CALL3           String_EntitySet;
6920         GOTO            14;
6921         INDIRECT_E      self,   _link,  parm0_x;
6922         STORE_F pEvent, parm1_x;
6923         CALL2           Raise_DataEvent;
6924         ADDRESS self,   _realValue,     locked_1586;
6925         INDIRECT_E      self,   _link,  temp_1;
6926         INDIRECT_F      temp_1, _realValue,     temp_1;
6927         STOREP_F        temp_1, locked_1586;
6928         INDIRECT_E      self,   _link,  locked_1586;
6929         INDIRECT_S      locked_1586,    value,  locked_1586;
6930         STORE_F self,   parm0_x;
6931         STORE_F value,  parm1_x;
6932         STORE_F locked_1586,    parm2_x;
6933         CALL3           String_EntitySet;
6934         DONE;
6935 }
6936
6937 void() Item_DataLink_TextValue_Spawn = asm
6938 {
6939 local float temp_0;
6940 local float temp_1;
6941         CALL0           Item_DataLink_Init;
6942         ADDRESS self,   _dataEvent,     temp_0;
6943         STOREP_FNC      Item_DataLink_TextValue_DataEvent,      temp_0;
6944         ADDRESS self,   _realValue,     temp_0;
6945         INDIRECT_E      self,   _link,  temp_1;
6946         INDIRECT_F      temp_1, minValue,       temp_1;
6947         SUB_F           temp_1, FILE_APPEND,    temp_1;
6948         STOREP_F        temp_1, temp_0;
6949         DONE;
6950 }
6951
6952 float () _IDLTT_ConvertTime;
6953 float() _IDLTT_ConvertTime = asm
6954 {
6955 local float lCounter;
6956 local float lCount;
6957 local float lCurrent;
6958 local float lTotal;
6959 local float temp_0;
6960         STORE_F KEY_GAME,       lTotal;
6961         INDIRECT_S      self,   value,  parm0_x;
6962         CALL1           tokenize;
6963         STORE_F return_x,       lCount;
6964         STORE_F KEY_GAME,       lCounter;
6965         LT              lCounter,       lCount, temp_0;
6966         IFNOT           temp_0, 16;
6967         STORE_F lCounter,       parm0_x;
6968         CALL1           argv;
6969         STORE_F return_x,       parm0_x;
6970         CALL1           stof;
6971         STORE_F return_x,       lCurrent;
6972         MUL_F           lTotal, 60.000000,      temp_0;
6973         ADD_F           temp_0, lCurrent,       lTotal;
6974         ADD_F           lCounter,       FILE_APPEND,    lCounter;
6975         STORE_F lCounter,       parm0_x;
6976         CALL1           argv;
6977         NE_S            return_x,       ":",    temp_0;
6978         IFNOT           temp_0, 2;
6979         GOTO            3;
6980         ADD_F           lCounter,       FILE_APPEND,    lCounter;
6981         GOTO            -16;
6982         STORE_F lTotal, parm0_x;
6983         CALL1           rint;
6984         RETURN  return_x;
6985         DONE;
6986 }
6987
6988 string () _IDLTT_MakeString;
6989 string() _IDLTT_MakeString = asm
6990 {
6991 local float lCurrent;
6992 local float lTotal;
6993 local string lString;
6994 local float temp_0;
6995         INDIRECT_F      self,   _realValue,     parm0_x;
6996         CALL1           rint;
6997         STORE_F return_x,       lTotal;
6998         STORE_S "",     lString;
6999         STORE_F lTotal, parm0_x;
7000         STORE_F 60.000000,      parm1_x;
7001         CALL2           mod;
7002         STORE_F return_x,       lCurrent;
7003         EQ_S            lString,        "",     temp_0;
7004         IFNOT           temp_0, 7;
7005         STORE_F lCurrent,       parm0_x;
7006         CALL1           ftos;
7007         STORE_F return_x,       parm0_x;
7008         CALL1           String_Zone;
7009         STORE_S return_x,       lString;
7010         GOTO            11;
7011         STORE_F lCurrent,       parm0_x;
7012         CALL1           ftos;
7013         STORE_F return_x,       parm0_x;
7014         STORE_F ":",    parm1_x;
7015         STORE_F lString,        parm2_x;
7016         CALL3           strcat;
7017         STORE_F lString,        parm0_x;
7018         STORE_F return_x,       parm1_x;
7019         CALL2           String_Set;
7020         STORE_S return_x,       lString;
7021         DIV_F           lTotal, 60.000000,      parm0_x;
7022         CALL1           floor;
7023         STORE_F return_x,       lTotal;
7024         IF              lTotal, -25;
7025         RETURN  lString;
7026         DONE;
7027 }
7028
7029 void (float) Item_DataLink_TextTime_DataEvent;
7030 void(float pEvent) Item_DataLink_TextTime_DataEvent = asm
7031 {
7032 local float locked_1586;
7033 local float temp_1;
7034         CALL0           Item_DataLink_Update;
7035         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1586;
7036         IFNOT           locked_1586,    13;
7037         INDIRECT_E      self,   _link,  locked_1586;
7038         ADDRESS locked_1586,    _realValue,     locked_1586;
7039         CALL0           _IDLTT_ConvertTime;
7040         STOREP_F        return_x,       locked_1586;
7041         INDIRECT_E      self,   _link,  parm0_x;
7042         STORE_F ITEM_DATALINK_SET,      parm1_x;
7043         CALL2           Raise_DataEvent;
7044         ADDRESS self,   _realValue,     locked_1586;
7045         INDIRECT_E      self,   _link,  temp_1;
7046         INDIRECT_F      temp_1, _realValue,     temp_1;
7047         STOREP_F        temp_1, locked_1586;
7048         GOTO            41;
7049         INDIRECT_E      self,   _link,  locked_1586;
7050         IF              locked_1586,    3;
7051         RETURN  offset_0;
7052         GOTO            37;
7053         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1586;
7054         IFNOT           locked_1586,    21;
7055         INDIRECT_E      self,   _link,  parm0_x;
7056         STORE_F ITEM_DATALINK_GET,      parm1_x;
7057         CALL2           Raise_DataEvent;
7058         INDIRECT_E      self,   _link,  locked_1586;
7059         INDIRECT_F      locked_1586,    _realValue,     locked_1586;
7060         INDIRECT_F      self,   _realValue,     temp_1;
7061         NE_F            locked_1586,    temp_1, locked_1586;
7062         IFNOT           locked_1586,    12;
7063         ADDRESS self,   _realValue,     locked_1586;
7064         INDIRECT_E      self,   _link,  temp_1;
7065         INDIRECT_F      temp_1, _realValue,     temp_1;
7066         STOREP_F        temp_1, locked_1586;
7067         CALL0           _IDLTT_MakeString;
7068         STORE_F return_x,       parm0_x;
7069         CALL1           String_Normal;
7070         STORE_F self,   parm0_x;
7071         STORE_F value,  parm1_x;
7072         STORE_F return_x,       parm2_x;
7073         CALL3           String_EntitySet;
7074         GOTO            15;
7075         INDIRECT_E      self,   _link,  parm0_x;
7076         STORE_F pEvent, parm1_x;
7077         CALL2           Raise_DataEvent;
7078         ADDRESS self,   _realValue,     locked_1586;
7079         INDIRECT_E      self,   _link,  temp_1;
7080         INDIRECT_F      temp_1, _realValue,     temp_1;
7081         STOREP_F        temp_1, locked_1586;
7082         CALL0           _IDLTT_MakeString;
7083         STORE_F return_x,       parm0_x;
7084         CALL1           String_Normal;
7085         STORE_F self,   parm0_x;
7086         STORE_F value,  parm1_x;
7087         STORE_F return_x,       parm2_x;
7088         CALL3           String_EntitySet;
7089         DONE;
7090 }
7091
7092 void() Item_DataLink_TextTime_Spawn = asm
7093 {
7094 local float temp_0;
7095 local float temp_1;
7096         CALL0           Item_DataLink_Init;
7097         ADDRESS self,   _dataEvent,     temp_0;
7098         STOREP_FNC      Item_DataLink_TextTime_DataEvent,       temp_0;
7099         ADDRESS self,   _realValue,     temp_0;
7100         INDIRECT_E      self,   _link,  temp_1;
7101         INDIRECT_F      temp_1, minValue,       temp_1;
7102         SUB_F           temp_1, FILE_APPEND,    temp_1;
7103         STOREP_F        temp_1, temp_0;
7104         DONE;
7105 }
7106
7107 void (float) Item_DataLink_AltString_DataEvent;
7108 void(float pEvent) Item_DataLink_AltString_DataEvent = asm
7109 {
7110 local float locked_1586;
7111 local float temp_1;
7112 local float temp_5;
7113 local float temp_6;
7114         CALL0           Item_DataLink_Update;
7115         INDIRECT_E      self,   _link,  locked_1586;
7116         IF              locked_1586,    2;
7117         RETURN  offset_0;
7118         EQ_F            pEvent, ITEM_DATALINK_SET,      locked_1586;
7119         IFNOT           locked_1586,    16;
7120         INDIRECT_E      self,   _link,  locked_1586;
7121         ADDRESS locked_1586,    value,  locked_1586;
7122         INDIRECT_E      self,   _link,  temp_1;
7123         INDIRECT_S      temp_1, value,  temp_1;
7124         INDIRECT_F      self,   stepValue,      temp_5;
7125         INDIRECT_S      self,   value,  temp_6;
7126         STORE_F temp_1, parm0_x;
7127         STORE_F temp_5, parm1_x;
7128         STORE_F temp_6, parm2_x;
7129         CALL3           Util_SetAltStringItem;
7130         STOREP_S        return_x,       locked_1586;
7131         INDIRECT_E      self,   _link,  parm0_x;
7132         STORE_F ITEM_DATALINK_SET,      parm1_x;
7133         CALL2           Raise_DataEvent;
7134         GOTO            22;
7135         EQ_F            pEvent, ITEM_DATALINK_GET,      locked_1586;
7136         IFNOT           locked_1586,    17;
7137         INDIRECT_E      self,   _link,  parm0_x;
7138         STORE_F ITEM_DATALINK_GET,      parm1_x;
7139         CALL2           Raise_DataEvent;
7140         INDIRECT_E      self,   _link,  locked_1586;
7141         INDIRECT_S      locked_1586,    value,  locked_1586;
7142         INDIRECT_F      self,   stepValue,      temp_1;
7143         STORE_F locked_1586,    parm0_x;
7144         STORE_F temp_1, parm1_x;
7145         CALL2           Util_GetAltStringItem;
7146         STORE_F return_x,       parm0_x;
7147         CALL1           String_Normal;
7148         STORE_F self,   parm0_x;
7149         STORE_F value,  parm1_x;
7150         STORE_F return_x,       parm2_x;
7151         CALL3           String_EntitySet;
7152         GOTO            4;
7153         INDIRECT_E      self,   _link,  parm0_x;
7154         STORE_F pEvent, parm1_x;
7155         CALL2           Raise_DataEvent;
7156         DONE;
7157 }
7158
7159 void() Item_DataLink_AltString_Spawn = asm
7160 {
7161 local float temp_0;
7162         CALL0           Item_DataLink_Init;
7163         ADDRESS self,   _dataEvent,     temp_0;
7164         STOREP_FNC      Item_DataLink_AltString_DataEvent,      temp_0;
7165         DONE;
7166 }
7167
7168 void (float) Item_DataLink_Router_DataEvent;
7169 void(float pEvent) Item_DataLink_Router_DataEvent = asm
7170 {
7171 local entity lChild;
7172 local float temp_0;
7173 local float temp_1;
7174         GOTO            29;
7175         INDIRECT_E      self,   _child, lChild;
7176         IFNOT           lChild, 9;
7177         ADDRESS lChild, _realValue,     temp_0;
7178         INDIRECT_F      self,   _realValue,     temp_1;
7179         STOREP_F        temp_1, temp_0;
7180         STORE_F lChild, parm0_x;
7181         STORE_F ITEM_DATALINK_SET,      parm1_x;
7182         CALL2           Raise_DataEvent;
7183         INDIRECT_E      lChild, _next,  lChild;
7184         GOTO            -8;
7185         INDIRECT_E      self,   _child, temp_0;
7186         IFNOT           temp_0, 8;
7187         INDIRECT_E      self,   _child, parm0_x;
7188         STORE_F ITEM_DATALINK_GET,      parm1_x;
7189         CALL2           Raise_DataEvent;
7190         ADDRESS self,   _realValue,     temp_0;
7191         INDIRECT_E      self,   _child, temp_1;
7192         INDIRECT_F      temp_1, _realValue,     temp_1;
7193         STOREP_F        temp_1, temp_0;
7194         GOTO            14;
7195         INDIRECT_E      self,   _child, lChild;
7196         IFNOT           lChild, 6;
7197         STORE_F lChild, parm0_x;
7198         STORE_F pEvent, parm1_x;
7199         CALL2           Raise_DataEvent;
7200         INDIRECT_E      lChild, _next,  lChild;
7201         GOTO            -5;
7202         GOTO            6;
7203         EQ_F            pEvent, ITEM_DATALINK_SET,      temp_0;
7204         IF              temp_0, -29;
7205         EQ_F            pEvent, ITEM_DATALINK_GET,      temp_0;
7206         IF              temp_0, -21;
7207         GOTO            -12;
7208         DONE;
7209 }
7210
7211 void() Item_DataLink_Router_Spawn = asm
7212 {
7213 local float temp_0;
7214         CALL0           Item_DataLink_Init;
7215         ADDRESS self,   _dataEvent,     temp_0;
7216         STOREP_FNC      Item_DataLink_Router_DataEvent, temp_0;
7217         DONE;
7218 }
7219
7220 float(float pKey, float pAscii) Item_Window_Key = asm
7221 {
7222         STORE_F pKey,   parm0_x;
7223         STORE_F pAscii, parm1_x;
7224         CALL2           CtCall_Key;
7225         IFNOT           return_x,       2;
7226         RETURN  FILE_APPEND;
7227         RETURN  KEY_GAME;
7228         DONE;
7229 }
7230
7231 void() Item_Window_Draw = asm
7232 {
7233 local vector lColor;
7234 local entity lChild;
7235 local float temp_0;
7236 local vector temp_2;
7237 local vector temp_3;
7238         IF              sys_debug,      2;
7239         RETURN  offset_0;
7240         INDIRECT_F      self,   _runFlag,       temp_0;
7241         BITAND  temp_0, RUNFLAG_MOUSEINAREA,    temp_0;
7242         IFNOT           temp_0, 56;
7243         IFNOT           sys_debug_area, 50;
7244         INDIRECT_V      self,   pos_x,  temp_2;
7245         INDIRECT_V      self,   size_x, temp_3;
7246         STORE_V temp_2, parm0;
7247         STORE_V temp_3, parm1;
7248         STORE_V '0.200000 0.000000 0.000000',   parm2;
7249         STORE_F ITEM_BUTTON_ACTIONTIME, parm3_x;
7250         STORE_F KEY_GAME,       parm4_x;
7251         CALL5           Menu_Fill;
7252         INDIRECT_E      self,   _child, lChild;
7253         IFNOT           lChild, 40;
7254         INDIRECT_F      lChild, _runFlag,       temp_0;
7255         BITAND  temp_0, 96.000000,      temp_0;
7256         NOT_F           temp_0, temp_0;
7257         IF              temp_0, 2;
7258         GOTO            33;
7259         INDIRECT_F      lChild, orderPos,       parm0_x;
7260         CALL1           fabs;
7261         ADD_F           return_x,       SLIST_SERVERREPLYCOUNT, parm0_x;
7262         STORE_F K_TAB,  parm1_x;
7263         CALL2           mod;
7264         DIV_F           return_x,       8.000000,       lColor_x;
7265         INDIRECT_F      lChild, orderPos,       temp_0;
7266         MUL_F           temp_0, 8.000000,       parm0_x;
7267         CALL1           fabs;
7268         STORE_F return_x,       parm0_x;
7269         STORE_F K_TAB,  parm1_x;
7270         CALL2           mod;
7271         DIV_F           return_x,       8.000000,       lColor_y;
7272         INDIRECT_F      lChild, orderPos,       temp_0;
7273         MUL_F           temp_0, SLIST_SORTDESCENDING,   parm0_x;
7274         CALL1           fabs;
7275         STORE_F return_x,       parm0_x;
7276         STORE_F K_TAB,  parm1_x;
7277         CALL2           mod;
7278         DIV_F           return_x,       8.000000,       lColor_z;
7279         INDIRECT_V      self,   pos_x,  temp_2;
7280         INDIRECT_V      self,   origin_x,       temp_3;
7281         ADD_V           temp_2, temp_3, temp_2;
7282         INDIRECT_V      lChild, pos_x,  temp_3;
7283         ADD_V           temp_2, temp_3, temp_2;
7284         INDIRECT_V      lChild, size_x, temp_3;
7285         STORE_V temp_2, parm0;
7286         STORE_V temp_3, parm1;
7287         STORE_V lColor, parm2;
7288         STORE_F ITEM_BUTTON_ACTIONTIME, parm3_x;
7289         STORE_F KEY_GAME,       parm4_x;
7290         CALL5           Menu_Fill;
7291         INDIRECT_E      lChild, _next,  lChild;
7292         GOTO            -39;
7293         IFNOT           sys_debug_mouse,        5;
7294         INDIRECT_V      self,   origin_x,       temp_2;
7295         SUB_V           Menu_Cursor_Position,   temp_2, temp_2;
7296         INDIRECT_V      self,   pos_x,  temp_3;
7297         SUB_V           temp_2, temp_3, sys_debug_cursor_localpos;
7298         DONE;
7299 }
7300
7301 void() Item_Window_Spawn = asm
7302 {
7303 local float temp_0;
7304 local float temp_1;
7305         ADDRESS self,   flag,   temp_0;
7306         INDIRECT_F      self,   flag,   temp_1;
7307         BITOR           temp_1, FLAG_NOSELECT,  temp_1;
7308         STOREP_F        temp_1, temp_0;
7309         ADDRESS self,   _key,   temp_0;
7310         STOREP_FNC      Item_Window_Key,        temp_0;
7311         ADDRESS self,   _draw,  temp_0;
7312         STOREP_FNC      Item_Window_Draw,       temp_0;
7313         DONE;
7314 }
7315
7316 void() Item_Reference_Update = asm
7317 {
7318 local float locked_1586;
7319 local float temp_1;
7320         INDIRECT_S      self,   link,   locked_1586;
7321         EQ_S            locked_1586,    "",     locked_1586;
7322         IFNOT           locked_1586,    4;
7323         ADDRESS self,   _child, locked_1586;
7324         STOREP_ENT      null_entity,    locked_1586;
7325         RETURN  offset_0;
7326         INDIRECT_S      self,   link,   locked_1586;
7327         INDIRECT_E      self,   _link,  temp_1;
7328         INDIRECT_S      temp_1, name,   temp_1;
7329         NE_S            locked_1586,    temp_1, locked_1586;
7330         IFNOT           locked_1586,    5;
7331         ADDRESS self,   _link,  locked_1586;
7332         INDIRECT_S      self,   link,   parm0_x;
7333         CALL1           Menu_GetItem;
7334         STOREP_ENT      return_x,       locked_1586;
7335         ADDRESS self,   _child, locked_1586;
7336         INDIRECT_E      self,   _link,  temp_1;
7337         STOREP_ENT      temp_1, locked_1586;
7338         INDIRECT_E      self,   _child, locked_1586;
7339         ADDRESS locked_1586,    _parent,        locked_1586;
7340         STOREP_ENT      self,   locked_1586;
7341         DONE;
7342 }
7343
7344 void() Item_Reference_Draw = asm
7345 {
7346 local vector temp_2;
7347 local vector temp_3;
7348         IFNOT           sys_debug_ref,  9;
7349         INDIRECT_V      self,   pos_x,  temp_2;
7350         INDIRECT_V      self,   size_x, temp_3;
7351         STORE_V temp_2, parm0;
7352         STORE_V temp_3, parm1;
7353         STORE_V '0.000000 0.000000 0.200000',   parm2;
7354         STORE_F FILE_APPEND,    parm3_x;
7355         STORE_F FILE_APPEND,    parm4_x;
7356         CALL5           Menu_Fill;
7357         DONE;
7358 }
7359
7360 void() Item_Reference_Destroy = asm
7361 {
7362         STORE_F self,   parm0_x;
7363         STORE_F link,   parm1_x;
7364         CALL2           String_EntityFree;
7365         DONE;
7366 }
7367
7368 void() Item_Reference_Spawn = asm
7369 {
7370 local float temp_0;
7371 local float temp_1;
7372         ADDRESS self,   flag,   temp_0;
7373         INDIRECT_F      self,   flag,   temp_1;
7374         BITOR           temp_1, FLAG_NOSELECT,  temp_1;
7375         BITOR           temp_1, FLAG_EMBEDDED,  temp_1;
7376         STOREP_F        temp_1, temp_0;
7377         STORE_F self,   parm0_x;
7378         STORE_F link,   parm1_x;
7379         CALL2           String_EntityZone;
7380         CALL0           Item_Reference_Update;
7381         ADDRESS self,   _destroy,       temp_0;
7382         STOREP_FNC      Item_Reference_Destroy, temp_0;
7383         ADDRESS self,   _draw,  temp_0;
7384         STOREP_FNC      Item_Reference_Draw,    temp_0;
7385         ADDRESS self,   _update,        temp_0;
7386         STOREP_FNC      Item_Reference_Update,  temp_0;
7387         DONE;
7388 }
7389
7390 void() Item_Layout_Update = asm
7391 {
7392 local vector lCurrent;
7393 local entity lChild;
7394 local float temp_0;
7395 local float temp_1;
7396         STORE_V '0.000000 0.000000 0.000000',   lCurrent;
7397         INDIRECT_E      self,   _child, lChild;
7398         IFNOT           lChild, 92;
7399         INDIRECT_F      lChild, _runFlag,       temp_0;
7400         BITAND  temp_0, RUNFLAG_HIDDEN, temp_0;
7401         IFNOT           temp_0, 2;
7402         GOTO            86;
7403         INDIRECT_F      self,   direction_y,    temp_0;
7404         IFNOT           temp_0, 33;
7405         INDIRECT_F      self,   alignment,      temp_0;
7406         EQ_F            temp_0, ITEM_ALIGN_FIRST,       temp_0;
7407         IFNOT           temp_0, 2;
7408         INDIRECT_E      lChild, _child, temp_1;
7409         AND             temp_0, temp_1, temp_0;
7410         IFNOT           temp_0, 7;
7411         ADDRESS lChild, pos_x,  temp_0;
7412         INDIRECT_E      lChild, _child, temp_1;
7413         INDIRECT_F      temp_1, size_x, temp_1;
7414         SUB_F           lCurrent_x,     temp_1, temp_1;
7415         STOREP_F        temp_1, temp_0;
7416         GOTO            20;
7417         INDIRECT_F      self,   alignment,      temp_0;
7418         EQ_F            temp_0, KEY_GAME,       temp_0;
7419         IFNOT           temp_0, 4;
7420         ADDRESS lChild, pos_x,  temp_0;
7421         STOREP_F        lCurrent_x,     temp_0;
7422         GOTO            14;
7423         INDIRECT_F      self,   alignment,      temp_0;
7424         EQ_F            temp_0, ITEM_ALIGN_CENTER,      temp_0;
7425         IFNOT           temp_0, 7;
7426         ADDRESS lChild, pos_x,  temp_0;
7427         INDIRECT_F      lChild, size_x, temp_1;
7428         DIV_F           temp_1, KEY_MENU,       temp_1;
7429         SUB_F           lCurrent_x,     temp_1, temp_1;
7430         STOREP_F        temp_1, temp_0;
7431         GOTO            5;
7432         ADDRESS lChild, pos_x,  temp_0;
7433         INDIRECT_F      lChild, size_x, temp_1;
7434         SUB_F           lCurrent_x,     temp_1, temp_1;
7435         STOREP_F        temp_1, temp_0;
7436         GOTO            3;
7437         ADDRESS lChild, pos_x,  temp_0;
7438         STOREP_F        lCurrent_x,     temp_0;
7439         INDIRECT_F      self,   direction_x,    temp_0;
7440         IFNOT           temp_0, 33;
7441         INDIRECT_F      self,   alignment,      temp_0;
7442         EQ_F            temp_0, KEY_GAME,       temp_0;
7443         IFNOT           temp_0, 4;
7444         ADDRESS lChild, pos_y,  temp_0;
7445         STOREP_F        lCurrent_y,     temp_0;
7446         GOTO            26;
7447         INDIRECT_F      self,   alignment,      temp_0;
7448         EQ_F            temp_0, ITEM_ALIGN_CENTER,      temp_0;
7449         IFNOT           temp_0, 7;
7450         ADDRESS lChild, pos_y,  temp_0;
7451         INDIRECT_F      lChild, size_y, temp_1;
7452         DIV_F           temp_1, KEY_MENU,       temp_1;
7453         SUB_F           lCurrent_y,     temp_1, temp_1;
7454         STOREP_F        temp_1, temp_0;
7455         GOTO            17;
7456         INDIRECT_F      self,   alignment,      temp_0;
7457         EQ_F            temp_0, ITEM_ALIGN_FIRST,       temp_0;
7458         IFNOT           temp_0, 2;
7459         INDIRECT_E      lChild, _child, temp_1;
7460         AND             temp_0, temp_1, temp_0;
7461         IFNOT           temp_0, 7;
7462         ADDRESS lChild, pos_y,  temp_0;
7463         INDIRECT_E      lChild, _child, temp_1;
7464         INDIRECT_F      temp_1, size_y, temp_1;
7465         SUB_F           lCurrent_y,     temp_1, temp_1;
7466         STOREP_F        temp_1, temp_0;
7467         GOTO            5;
7468         ADDRESS lChild, pos_y,  temp_0;
7469         INDIRECT_F      lChild, size_y, temp_1;
7470         SUB_F           lCurrent_y,     temp_1, temp_1;
7471         STOREP_F        temp_1, temp_0;
7472         GOTO            3;
7473         ADDRESS lChild, pos_y,  temp_0;
7474         STOREP_F        lCurrent_y,     temp_0;
7475         INDIRECT_F      self,   direction_x,    temp_0;
7476         IFNOT           temp_0, 6;
7477         INDIRECT_F      lChild, size_x, temp_0;
7478         INDIRECT_F      self,   direction_x,    temp_1;
7479         ADD_F           temp_0, temp_1, temp_0;
7480         ADD_F           lCurrent_x,     temp_0, lCurrent_x;
7481         GOTO            7;
7482         INDIRECT_F      self,   direction_y,    temp_0;
7483         IFNOT           temp_0, 5;
7484         INDIRECT_F      lChild, size_y, temp_0;
7485         INDIRECT_F      self,   direction_y,    temp_1;
7486         ADD_F           temp_0, temp_1, temp_0;
7487         ADD_F           lCurrent_y,     temp_0, lCurrent_y;
7488         INDIRECT_E      lChild, _next,  lChild;
7489         GOTO            -91;
7490         DONE;
7491 }
7492
7493 void() Item_Layout_Spawn = asm
7494 {
7495 local float temp_0;
7496         CALL0           Item_Window_Spawn;
7497         CALL0           Item_Layout_Update;
7498         ADDRESS self,   _update,        temp_0;
7499         STOREP_FNC      Item_Layout_Update,     temp_0;
7500         DONE;
7501 }
7502
7503 void() Item_Arrangement_CalculateSize = asm
7504 {
7505 local entity lChild;
7506 local vector lMax;
7507 local vector lMin;
7508 local float temp_0;
7509 local float temp_1;
7510 local vector temp_2;
7511 local vector temp_3;
7512         STORE_V '0.000000 0.000000 0.000000',   lMax;
7513         STORE_F INFINITY,       lMin_x;
7514         STORE_F INFINITY,       lMin_y;
7515         INDIRECT_E      self,   _child, lChild;
7516         IFNOT           lChild, 31;
7517         INDIRECT_F      lChild, _runFlag,       temp_0;
7518         BITAND  temp_0, RUNFLAG_HIDDEN, temp_0;
7519         IFNOT           temp_0, 2;
7520         GOTO            25;
7521         INDIRECT_F      lChild, pos_x,  temp_0;
7522         STORE_F lMin_x, parm0_x;
7523         STORE_F temp_0, parm1_x;
7524         CALL2           min;
7525         STORE_F return_x,       lMin_x;
7526         INDIRECT_F      lChild, pos_y,  temp_0;
7527         STORE_F lMin_y, parm0_x;
7528         STORE_F temp_0, parm1_x;
7529         CALL2           min;
7530         STORE_F return_x,       lMin_y;
7531         INDIRECT_F      lChild, pos_x,  temp_0;
7532         INDIRECT_F      lChild, size_x, temp_1;
7533         ADD_F           temp_0, temp_1, temp_0;
7534         STORE_F lMax_x, parm0_x;
7535         STORE_F temp_0, parm1_x;
7536         CALL2           max;
7537         STORE_F return_x,       lMax_x;
7538         INDIRECT_F      lChild, pos_y,  temp_0;
7539         INDIRECT_F      lChild, size_y, temp_1;
7540         ADD_F           temp_0, temp_1, temp_0;
7541         STORE_F lMax_y, parm0_x;
7542         STORE_F temp_0, parm1_x;
7543         CALL2           max;
7544         STORE_F return_x,       lMax_y;
7545         INDIRECT_E      lChild, _next,  lChild;
7546         GOTO            -30;
7547         ADDRESS self,   size_x, temp_2_x;
7548         SUB_V           lMax,   lMin,   temp_3;
7549         STOREP_V        temp_3_x,       temp_2;
7550         DONE;
7551 }
7552
7553 void() Item_Arrangement_Update = asm
7554 {
7555 local float temp_0;
7556 local float temp_1;
7557         CALL0           Item_Layout_Update;
7558         CALL0           Item_Arrangement_CalculateSize;
7559         INDIRECT_F      self,   direction_x,    temp_0;
7560         IFNOT           temp_0, 23;
7561         INDIRECT_F      self,   alignment,      temp_0;
7562         EQ_F            temp_0, KEY_GAME,       temp_0;
7563         IFNOT           temp_0, 4;
7564         ADDRESS self,   origin_y,       temp_0;
7565         STOREP_F        KEY_GAME,       temp_0;
7566         GOTO            16;
7567         INDIRECT_F      self,   alignment,      temp_0;
7568         EQ_F            temp_0, ITEM_ALIGN_CENTER,      temp_0;
7569         IF              temp_0, 3;
7570         INDIRECT_F      self,   alignment,      temp_1;
7571         EQ_F            temp_1, ITEM_ALIGN_FIRST,       temp_1;
7572         OR              temp_0, temp_1, temp_0;
7573         IFNOT           temp_0, 6;
7574         ADDRESS self,   origin_y,       temp_0;
7575         INDIRECT_F      self,   size_y, temp_1;
7576         DIV_F           temp_1, KEY_MENU,       temp_1;
7577         STOREP_F        temp_1, temp_0;
7578         GOTO            4;
7579         ADDRESS self,   origin_y,       temp_0;
7580         INDIRECT_F      self,   size_y, temp_1;
7581         STOREP_F        temp_1, temp_0;
7582         GOTO            3;
7583         ADDRESS self,   origin_y,       temp_0;
7584         STOREP_F        KEY_GAME,       temp_0;
7585         INDIRECT_F      self,   direction_y,    temp_0;
7586         IFNOT           temp_0, 23;
7587         INDIRECT_F      self,   alignment,      temp_0;
7588         EQ_F            temp_0, KEY_GAME,       temp_0;
7589         IFNOT           temp_0, 4;
7590         ADDRESS self,   origin_x,       temp_0;
7591         STOREP_F        KEY_GAME,       temp_0;
7592         GOTO            16;
7593         INDIRECT_F      self,   alignment,      temp_0;
7594         EQ_F            temp_0, ITEM_ALIGN_CENTER,      temp_0;
7595         IF              temp_0, 3;
7596         INDIRECT_F      self,   alignment,      temp_1;
7597         EQ_F            temp_1, ITEM_ALIGN_FIRST,       temp_1;
7598         OR              temp_0, temp_1, temp_0;
7599         IFNOT           temp_0, 6;
7600         ADDRESS self,   origin_x,       temp_0;
7601         INDIRECT_F      self,   size_x, temp_1;
7602         DIV_F           temp_1, KEY_MENU,       temp_1;
7603         STOREP_F        temp_1, temp_0;
7604         GOTO            4;
7605         ADDRESS self,   origin_x,       temp_0;
7606         INDIRECT_F      self,   size_x, temp_1;
7607         STOREP_F        temp_1, temp_0;
7608         GOTO            3;
7609         ADDRESS self,   origin_x,       temp_0;
7610         STOREP_F        KEY_GAME,       temp_0;
7611         DONE;
7612 }
7613
7614 void() Item_Arrangement_Spawn = asm
7615 {
7616 local float temp_0;
7617         CALL0           Item_Layout_Spawn;
7618         CALL0           Item_Arrangement_Update;
7619         ADDRESS self,   _update,        temp_0;
7620         STOREP_FNC      Item_Arrangement_Update,        temp_0;
7621         DONE;
7622 }
7623
7624 void() Item_ScrollWindow_Update = asm
7625 {
7626 local float locked_1586;
7627 local entity lParent;
7628 local float lOldLevel;
7629 local float lLevel;
7630 local float temp_1;
7631 local float temp_5;
7632 local float temp_6;
7633         INDIRECT_F      self,   _runFlag,       locked_1586;
7634         BITAND  locked_1586,    96.000000,      locked_1586;
7635         NOT_F           locked_1586,    locked_1586;
7636         NOT_F           locked_1586,    locked_1586;
7637         IF              locked_1586,    6;
7638         INDIRECT_E      self,   _child, temp_1;
7639         STORE_F Menu_ActiveItem,        parm0_x;
7640         STORE_F temp_1, parm1_x;
7641         CALL2           _Menu_IsEmbeddedParentOf;
7642         NOT_F           return_x,       temp_1;
7643         OR              locked_1586,    temp_1, locked_1586;
7644         IFNOT           locked_1586,    4;
7645         ADDRESS self,   _link,  locked_1586;
7646         STOREP_ENT      null_entity,    locked_1586;
7647         RETURN  offset_0;
7648         INDIRECT_E      self,   _link,  locked_1586;
7649         EQ_E            locked_1586,    Menu_ActiveItem,        locked_1586;
7650         IFNOT           locked_1586,    3;
7651         RETURN  offset_0;
7652         GOTO            3;
7653         ADDRESS self,   _link,  locked_1586;
7654         STOREP_ENT      Menu_ActiveItem,        locked_1586;
7655         INDIRECT_F      Menu_ActiveItem,        pos_y,  lLevel;
7656         INDIRECT_E      Menu_ActiveItem,        _parent,        lParent;
7657         NE_E            lParent,        self,   locked_1586;
7658         IFNOT           locked_1586,    7;
7659         INDIRECT_F      lParent,        origin_y,       locked_1586;
7660         INDIRECT_F      lParent,        pos_y,  temp_1;
7661         ADD_F           locked_1586,    temp_1, locked_1586;
7662         ADD_F           lLevel, locked_1586,    lLevel;
7663         INDIRECT_E      lParent,        _parent,        lParent;
7664         GOTO            -7;
7665         INDIRECT_F      self,   origin_y,       locked_1586;
7666         SUB_F           KEY_GAME,       locked_1586,    lOldLevel;
7667         INDIRECT_F      Menu_ActiveItem,        size_y, locked_1586;
7668         INDIRECT_F      self,   size_y, temp_1;
7669         GT              locked_1586,    temp_1, locked_1586;
7670         IFNOT           locked_1586,    4;
7671         INDIRECT_F      Menu_ActiveItem,        size_y, temp_1;
7672         ADD_F           lLevel, temp_1, temp_1;
7673         GT              temp_1, lOldLevel,      temp_1;
7674         AND             locked_1586,    temp_1, locked_1586;
7675         IFNOT           locked_1586,    4;
7676         INDIRECT_F      self,   size_y, temp_1;
7677         ADD_F           temp_1, lOldLevel,      temp_1;
7678         LT              lLevel, temp_1, temp_1;
7679         AND             locked_1586,    temp_1, locked_1586;
7680         IF              locked_1586,    9;
7681         GE              lLevel, lOldLevel,      temp_1;
7682         IFNOT           temp_1, 6;
7683         INDIRECT_F      Menu_ActiveItem,        size_y, temp_5;
7684         ADD_F           lLevel, temp_5, temp_5;
7685         INDIRECT_F      self,   size_y, temp_6;
7686         ADD_F           lOldLevel,      temp_6, temp_6;
7687         LT              temp_5, temp_6, temp_5;
7688         AND             temp_1, temp_5, temp_1;
7689         OR              locked_1586,    temp_1, locked_1586;
7690         IFNOT           locked_1586,    2;
7691         RETURN  offset_0;
7692         LT              lOldLevel,      lLevel, locked_1586;
7693         IFNOT           locked_1586,    6;
7694         ADDRESS self,   origin_y,       locked_1586;
7695         INDIRECT_F      self,   direction_x,    temp_1;
7696         SUB_F           temp_1, lLevel, temp_1;
7697         STOREP_F        temp_1, locked_1586;
7698         GOTO            7;
7699         ADDRESS self,   origin_y,       locked_1586;
7700         INDIRECT_F      self,   size_y, temp_1;
7701         INDIRECT_F      self,   direction_x,    temp_5;
7702         SUB_F           temp_1, temp_5, temp_1;
7703         SUB_F           temp_1, lLevel, temp_1;
7704         STOREP_F        temp_1, locked_1586;
7705         ADDRESS self,   origin_y,       locked_1586;
7706         INDIRECT_F      self,   size_y, temp_1;
7707         INDIRECT_E      self,   _child, temp_5;
7708         INDIRECT_F      temp_5, size_y, temp_5;
7709         SUB_F           temp_1, temp_5, temp_1;
7710         INDIRECT_F      self,   origin_y,       temp_5;
7711         STORE_F temp_1, parm0_x;
7712         STORE_F temp_5, parm1_x;
7713         STORE_F KEY_GAME,       parm2_x;
7714         CALL3           bound;
7715         STOREP_F        return_x,       locked_1586;
7716         DONE;
7717 }
7718
7719 void () Item_ScrollWindow_Reinit;
7720 void() Item_ScrollWindow_Reinit = asm
7721 {
7722 local float temp_0;
7723         ADDRESS self,   origin_y,       temp_0;
7724         STOREP_F        KEY_GAME,       temp_0;
7725         DONE;
7726 }
7727
7728 void() Item_ScrollWindow_Spawn = asm
7729 {
7730 local float temp_0;
7731         CALL0           Item_Window_Spawn;
7732         ADDRESS self,   _update,        temp_0;
7733         STOREP_FNC      Item_ScrollWindow_Update,       temp_0;
7734         ADDRESS self,   _reinit,        temp_0;
7735         STOREP_FNC      Item_ScrollWindow_Reinit,       temp_0;
7736         DONE;
7737 }
7738
7739 void() Item_EventWindow_Spawn = asm
7740 {
7741 local float temp_0;
7742         CALL0           Item_Window_Spawn;
7743         ADDRESS self,   _destroy,       temp_0;
7744         STOREP_FNC      CtCall_Destroy, temp_0;
7745         ADDRESS self,   _reinit,        temp_0;
7746         STOREP_FNC      CtCall_Reinit,  temp_0;
7747         ADDRESS self,   _update,        temp_0;
7748         STOREP_FNC      CtCall_Update,  temp_0;
7749         CALL0           CtCall_Init;
7750         DONE;
7751 }
7752
7753 void() Item_Frame_Spawn = asm
7754 {
7755 local float temp_0;
7756 local float temp_1;
7757         CALL0           Item_Window_Spawn;
7758         ADDRESS self,   flag,   temp_0;
7759         INDIRECT_F      self,   flag,   temp_1;
7760         SUB_F           temp_1, FLAG_NOSELECT,  temp_1;
7761         STOREP_F        temp_1, temp_0;
7762         DONE;
7763 }
7764
7765 float () _IL_GetItemUnderCursor;
7766 float() _IL_GetItemUnderCursor = asm
7767 {
7768 local float locked_1586;
7769 local float lLines;
7770 local float lStart;
7771 local float lItem;
7772 local float temp_1;
7773 local float temp_5;
7774         INDIRECT_F      self,   size_y, locked_1586;
7775         INDIRECT_F      self,   fontSize_y,     temp_1;
7776         ADD_F           temp_1, KEY_MENU,       temp_1;
7777         DIV_F           locked_1586,    temp_1, parm0_x;
7778         CALL1           floor;
7779         STORE_F return_x,       lLines;
7780         INDIRECT_E      self,   _target,        locked_1586;
7781         INDIRECT_E      self,   _target,        temp_1;
7782         INDIRECT_F      temp_1, _realValue,     temp_1;
7783         STORE_F locked_1586,    parm0_x;
7784         STORE_F temp_1, parm1_x;
7785         CALL2           DataLink_Switch_GetOrdinal;
7786         DIV_F           lLines, KEY_MENU,       locked_1586;
7787         SUB_F           return_x,       locked_1586,    parm0_x;
7788         CALL1           floor;
7789         STORE_F KEY_GAME,       parm0_x;
7790         STORE_F return_x,       parm1_x;
7791         CALL2           max;
7792         STORE_F return_x,       lStart;
7793         INDIRECT_F      self,   pos_y,  locked_1586;
7794         SUB_F           Menu_Cursor_Position_y, locked_1586,    locked_1586;
7795         INDIRECT_F      self,   fontSize_y,     temp_1;
7796         ADD_F           temp_1, KEY_MENU,       temp_1;
7797         DIV_F           locked_1586,    temp_1, parm0_x;
7798         CALL1           floor;
7799         STORE_F return_x,       lItem;
7800         ADD_F           lStart, lItem,  locked_1586;
7801         INDIRECT_E      self,   _target,        temp_1;
7802         INDIRECT_E      self,   _target,        temp_5;
7803         INDIRECT_F      temp_5, maxValue,       temp_5;
7804         STORE_F temp_1, parm0_x;
7805         STORE_F temp_5, parm1_x;
7806         CALL2           DataLink_Switch_GetOrdinal;
7807         STORE_F locked_1586,    parm0_x;
7808         STORE_F return_x,       parm1_x;
7809         CALL2           min;
7810         STORE_F return_x,       lItem;
7811         RETURN  lItem;
7812         DONE;
7813 }
7814
7815 void() Item_List_Draw = asm
7816 {
7817 local float locked_1586;
7818 local string lText;
7819 local float lItemUnderCursor;
7820 local vector lPos;
7821 local float lEnd;
7822 local float lLine;
7823 local float lLines;
7824 local float lStart;
7825 local float temp_1;
7826 local vector temp_2;
7827 local vector temp_3;
7828 local float temp_5;
7829         INDIRECT_E      self,   _target,        locked_1586;
7830         IF              locked_1586,    2;
7831         RETURN  offset_0;
7832         INDIRECT_E      self,   _target,        parm0_x;
7833         STORE_F ITEM_DATALINK_GET,      parm1_x;
7834         CALL2           Raise_DataEvent;
7835         INDIRECT_F      self,   size_y, locked_1586;
7836         INDIRECT_F      self,   fontSize_y,     temp_1;
7837         ADD_F           temp_1, KEY_MENU,       temp_1;
7838         DIV_F           locked_1586,    temp_1, parm0_x;
7839         CALL1           floor;
7840         STORE_F return_x,       lLines;
7841         INDIRECT_E      self,   _target,        locked_1586;
7842         INDIRECT_E      self,   _target,        temp_1;
7843         INDIRECT_F      temp_1, _realValue,     temp_1;
7844         STORE_F locked_1586,    parm0_x;
7845         STORE_F temp_1, parm1_x;
7846         CALL2           DataLink_Switch_GetOrdinal;
7847         DIV_F           lLines, KEY_MENU,       locked_1586;
7848         SUB_F           return_x,       locked_1586,    parm0_x;
7849         CALL1           floor;
7850         STORE_F KEY_GAME,       parm0_x;
7851         STORE_F return_x,       parm1_x;
7852         CALL2           max;
7853         STORE_F return_x,       lStart;
7854         ADD_F           lStart, lLines, locked_1586;
7855         INDIRECT_E      self,   _target,        temp_1;
7856         INDIRECT_E      self,   _target,        temp_5;
7857         INDIRECT_F      temp_5, maxValue,       temp_5;
7858         STORE_F temp_1, parm0_x;
7859         STORE_F temp_5, parm1_x;
7860         CALL2           DataLink_Switch_GetOrdinal;
7861         STORE_F locked_1586,    parm0_x;
7862         STORE_F return_x,       parm1_x;
7863         CALL2           min;
7864         STORE_F return_x,       lEnd;
7865         INDIRECT_F      self,   _state, locked_1586;
7866         EQ_F            locked_1586,    ITEM_STATE_NORMAL,      locked_1586;
7867         IFNOT           locked_1586,    3;
7868         STORE_F ERR_CANNOTOPEN, lItemUnderCursor;
7869         GOTO            3;
7870         CALL0           _IL_GetItemUnderCursor;
7871         STORE_F return_x,       lItemUnderCursor;
7872         INDIRECT_V      self,   pos_x,  temp_2;
7873         ADD_V           '0.000000 1.000000 0.000000',   temp_2, lPos;
7874         STORE_F lStart, lLine;
7875         LE              lLine,  lEnd,   locked_1586;
7876         IFNOT           locked_1586,    89;
7877         INDIRECT_E      self,   _target,        locked_1586;
7878         INDIRECT_S      locked_1586,    descList,       parm0_x;
7879         STORE_F lLine,  parm1_x;
7880         CALL2           Util_GetAltStringItem;
7881         STORE_S return_x,       lText;
7882         INDIRECT_E      self,   _target,        locked_1586;
7883         INDIRECT_E      self,   _target,        temp_1;
7884         INDIRECT_F      temp_1, _realValue,     temp_1;
7885         STORE_F locked_1586,    parm0_x;
7886         STORE_F temp_1, parm1_x;
7887         CALL2           DataLink_Switch_GetOrdinal;
7888         EQ_F            lLine,  return_x,       locked_1586;
7889         IFNOT           locked_1586,    43;
7890         INDIRECT_F      self,   _state, locked_1586;
7891         EQ_F            locked_1586,    ITEM_STATE_SELECTED,    locked_1586;
7892         IFNOT           locked_1586,    13;
7893         INDIRECT_V      self,   fontSize_x,     temp_2;
7894         INDIRECT_V      self,   colorSelected_x,        temp_3;
7895         INDIRECT_F      self,   alphas_y,       locked_1586;
7896         INDIRECT_F      self,   drawFlags_y,    temp_1;
7897         STORE_V lPos,   parm0;
7898         STORE_F lText,  parm1_x;
7899         STORE_V temp_2, parm2;
7900         STORE_V temp_3, parm3;
7901         STORE_F locked_1586,    parm4_x;
7902         STORE_F temp_1, parm5_x;
7903         CALL6           Menu_DrawString;
7904         GOTO            27;
7905         INDIRECT_F      self,   _state, locked_1586;
7906         EQ_F            locked_1586,    ITEM_STATE_PRESSED,     locked_1586;
7907         IFNOT           locked_1586,    13;
7908         INDIRECT_V      self,   fontSize_x,     temp_2;
7909         INDIRECT_V      self,   colorPressed_x, temp_3;
7910         INDIRECT_F      self,   alphas_z,       locked_1586;
7911         INDIRECT_F      self,   drawFlags_z,    temp_1;
7912         STORE_V lPos,   parm0;
7913         STORE_F lText,  parm1_x;
7914         STORE_V temp_2, parm2;
7915         STORE_V temp_3, parm3;
7916         STORE_F locked_1586,    parm4_x;
7917         STORE_F temp_1, parm5_x;
7918         CALL6           Menu_DrawString;
7919         GOTO            12;
7920         INDIRECT_V      self,   fontSize_x,     temp_2;
7921         INDIRECT_V      self,   colorInactive_x,        temp_3;
7922         INDIRECT_F      self,   alphaInactive,  locked_1586;
7923         INDIRECT_F      self,   drawFlagInactive,       temp_1;
7924         STORE_V lPos,   parm0;
7925         STORE_F lText,  parm1_x;
7926         STORE_V temp_2, parm2;
7927         STORE_V temp_3, parm3;
7928         STORE_F locked_1586,    parm4_x;
7929         STORE_F temp_1, parm5_x;
7930         CALL6           Menu_DrawString;
7931         GOTO            26;
7932         EQ_F            lLine,  lItemUnderCursor,       locked_1586;
7933         IFNOT           locked_1586,    13;
7934         INDIRECT_V      self,   fontSize_x,     temp_2;
7935         INDIRECT_V      self,   colorInactive_x,        temp_3;
7936         INDIRECT_F      self,   alphaInactive,  locked_1586;
7937         INDIRECT_F      self,   drawFlagInactive,       temp_1;
7938         STORE_V lPos,   parm0;
7939         STORE_F lText,  parm1_x;
7940         STORE_V temp_2, parm2;
7941         STORE_V temp_3, parm3;
7942         STORE_F locked_1586,    parm4_x;
7943         STORE_F temp_1, parm5_x;
7944         CALL6           Menu_DrawString;
7945         GOTO            12;
7946         INDIRECT_V      self,   fontSize_x,     temp_2;
7947         INDIRECT_V      self,   color_x,        temp_3;
7948         INDIRECT_F      self,   alphas_x,       locked_1586;
7949         INDIRECT_F      self,   drawFlags_x,    temp_1;
7950         STORE_V lPos,   parm0;
7951         STORE_F lText,  parm1_x;
7952         STORE_V temp_2, parm2;
7953         STORE_V temp_3, parm3;
7954         STORE_F locked_1586,    parm4_x;
7955         STORE_F temp_1, parm5_x;
7956         CALL6           Menu_DrawString;
7957         INDIRECT_F      self,   fontSize_y,     locked_1586;
7958         ADD_F           lPos_y, locked_1586,    locked_1586;
7959         ADD_F           locked_1586,    KEY_MENU,       lPos_y;
7960         STORE_F lText,  parm0_x;
7961         CALL1           String_Free;
7962         STORE_F lLine,  temp_1;
7963         ADD_F           lLine,  FILE_APPEND,    lLine;
7964         GOTO            -89;
7965         DONE;
7966 }
7967
7968 void() Item_List_Update = asm
7969 {
7970 local float temp_0;
7971         CALL0           Item_DataUser_Update;
7972         INDIRECT_F      self,   _presstime,     temp_0;
7973         ADD_F           temp_0, ITEM_BUTTON_ACTIONTIME, temp_0;
7974         GT              temp_0, Timer_Time,     temp_0;
7975         IFNOT           temp_0, 4;
7976         ADDRESS self,   _state, temp_0;
7977         STOREP_F        ITEM_STATE_PRESSED,     temp_0;
7978         GOTO            8;
7979         EQ_E            Menu_ActiveItem,        self,   temp_0;
7980         IFNOT           temp_0, 4;
7981         ADDRESS self,   _state, temp_0;
7982         STOREP_F        ITEM_STATE_SELECTED,    temp_0;
7983         GOTO            3;
7984         ADDRESS self,   _state, temp_0;
7985         STOREP_F        ITEM_STATE_NORMAL,      temp_0;
7986         DONE;
7987 }
7988
7989 void(float pSelect, float pUser) Item_List_Select = asm
7990 {
7991 local float temp_0;
7992         IFNOT           pSelect,        1;
7993         AND             pSelect,        pUser,  temp_0;
7994         IFNOT           temp_0, 3;
7995         INDIRECT_S      self,   soundSelected,  parm0_x;
7996         CALL1           Sound_Play;
7997         DONE;
7998 }
7999
8000 float(float pKey, float pAscii) Item_List_Key = asm
8001 {
8002 local float lSelected;
8003 local float temp_0;
8004 local float temp_1;
8005         EQ_F            pKey,   K_DOWNARROW,    temp_0;
8006         IFNOT           temp_0, 16;
8007         INDIRECT_S      self,   soundPressed,   parm0_x;
8008         CALL1           Sound_Play;
8009         ADDRESS self,   _presstime,     temp_0;
8010         STOREP_F        Timer_Time,     temp_0;
8011         INDIRECT_E      self,   _target,        temp_0;
8012         ADDRESS temp_0, _realValue,     temp_0;
8013         INDIRECT_E      self,   _target,        temp_1;
8014         INDIRECT_F      temp_1, _realValue,     temp_1;
8015         ADD_F           temp_1, FILE_APPEND,    temp_1;
8016         STOREP_F        temp_1, temp_0;
8017         INDIRECT_E      self,   _target,        parm0_x;
8018         STORE_F ITEM_DATALINK_SET,      parm1_x;
8019         CALL2           Raise_DataEvent;
8020         RETURN  FILE_APPEND;
8021         GOTO            49;
8022         EQ_F            pKey,   K_UPARROW,      temp_0;
8023         IFNOT           temp_0, 16;
8024         INDIRECT_S      self,   soundPressed,   parm0_x;
8025         CALL1           Sound_Play;
8026         ADDRESS self,   _presstime,     temp_0;
8027         STOREP_F        Timer_Time,     temp_0;
8028         INDIRECT_E      self,   _target,        temp_0;
8029         ADDRESS temp_0, _realValue,     temp_0;
8030         INDIRECT_E      self,   _target,        temp_1;
8031         INDIRECT_F      temp_1, _realValue,     temp_1;
8032         SUB_F           temp_1, FILE_APPEND,    temp_1;
8033         STOREP_F        temp_1, temp_0;
8034         INDIRECT_E      self,   _target,        parm0_x;
8035         STORE_F ITEM_DATALINK_SET,      parm1_x;
8036         CALL2           Raise_DataEvent;
8037         RETURN  FILE_APPEND;
8038         GOTO            32;
8039         EQ_F            pKey,   K_MOUSE1,       temp_0;
8040         IFNOT           temp_0, 30;
8041         INDIRECT_S      self,   soundPressed,   parm0_x;
8042         CALL1           Sound_Play;
8043         CALL0           _IL_GetItemUnderCursor;
8044         INDIRECT_E      self,   _target,        temp_0;
8045         INDIRECT_F      temp_0, stepValue,      temp_0;
8046         MUL_F           return_x,       temp_0, temp_0;
8047         INDIRECT_E      self,   _target,        temp_1;
8048         INDIRECT_F      temp_1, minValue,       temp_1;
8049         ADD_F           temp_0, temp_1, lSelected;
8050         INDIRECT_F      self,   _presstime,     temp_0;
8051         ADD_F           temp_0, ITEM_BUTTON_ACTIONTIME, temp_0;
8052         GT              temp_0, Timer_Time,     temp_0;
8053         IFNOT           temp_0, 4;
8054         INDIRECT_E      self,   _target,        temp_1;
8055         INDIRECT_F      temp_1, _realValue,     temp_1;
8056         EQ_F            lSelected,      temp_1, temp_1;
8057         AND             temp_0, temp_1, temp_0;
8058         IFNOT           temp_0, 3;
8059         CALL0           CtCall_Action;
8060         GOTO            9;
8061         ADDRESS self,   _presstime,     temp_0;
8062         STOREP_F        Timer_Time,     temp_0;
8063         INDIRECT_E      self,   _target,        temp_0;
8064         ADDRESS temp_0, _realValue,     temp_0;
8065         STOREP_F        lSelected,      temp_0;
8066         INDIRECT_E      self,   _target,        parm0_x;
8067         STORE_F ITEM_DATALINK_SET,      parm1_x;
8068         CALL2           Raise_DataEvent;
8069         RETURN  FILE_APPEND;
8070         RETURN  KEY_GAME;
8071         DONE;
8072 }
8073
8074 void() Item_List_Destroy = asm
8075 {
8076         CALL0           CtCall_Destroy;
8077         STORE_F self,   parm0_x;
8078         STORE_F soundSelected,  parm1_x;
8079         CALL2           String_EntityFree;
8080         STORE_F self,   parm0_x;
8081         STORE_F soundPressed,   parm1_x;
8082         CALL2           String_EntityFree;
8083         CALL0           Item_DataUser_Destroy;
8084         DONE;
8085 }
8086
8087 void() Item_List_Spawn = asm
8088 {
8089 local float temp_0;
8090         CALL0           Item_DataUser_Init;
8091         STORE_F self,   parm0_x;
8092         STORE_F soundSelected,  parm1_x;
8093         CALL2           String_EntityZone;
8094         STORE_F self,   parm0_x;
8095         STORE_F soundPressed,   parm1_x;
8096         CALL2           String_EntityZone;
8097         INDIRECT_S      self,   soundSelected,  parm0_x;
8098         CALL1           Sound_Precache;
8099         INDIRECT_S      self,   soundPressed,   parm0_x;
8100         CALL1           Sound_Precache;
8101         ADDRESS self,   _draw,  temp_0;
8102         STOREP_FNC      Item_List_Draw, temp_0;
8103         ADDRESS self,   _update,        temp_0;
8104         STOREP_FNC      Item_List_Update,       temp_0;
8105         ADDRESS self,   _select,        temp_0;
8106         STOREP_FNC      Item_List_Select,       temp_0;
8107         ADDRESS self,   _key,   temp_0;
8108         STOREP_FNC      Item_List_Key,  temp_0;
8109         ADDRESS self,   _reinit,        temp_0;
8110         STOREP_FNC      CtCall_Reinit,  temp_0;
8111         CALL0           CtCall_Init;
8112         DONE;
8113 }
8114
8115 float (string) _IB_IsPicture;
8116 float(string pString) _IB_IsPicture = asm
8117 {
8118 local float temp_0;
8119         STORE_F pString,        parm0_x;
8120         STORE_F KEY_GAME,       parm1_x;
8121         STORE_F FILE_APPEND,    parm2_x;
8122         CALL3           substring;
8123         EQ_S            return_x,       "$",    temp_0;
8124         RETURN  temp_0;
8125         DONE;
8126 }
8127
8128 string (string) _IB_GetPath;
8129 string(string pString) _IB_GetPath = asm
8130 {
8131         STORE_F pString,        parm0_x;
8132         STORE_F FILE_APPEND,    parm1_x;
8133         STORE_F 1000.000000,    parm2_x;
8134         CALL3           substring;
8135         RETURN  return_x;
8136         DONE;
8137 }
8138
8139 vector (string) _IB_GetSize;
8140 vector(string pString) _IB_GetSize = asm
8141 {
8142 local vector lSize;
8143 local float temp_0;
8144         STORE_F pString,        parm0_x;
8145         CALL1           _IB_IsPicture;
8146         IFNOT           return_x,       6;
8147         STORE_F pString,        parm0_x;
8148         CALL1           _IB_GetPath;
8149         STORE_F return_x,       parm0_x;
8150         CALL1           Gfx_GetImageSize;
8151         RETURN  return_x;
8152         STORE_F pString,        parm0_x;
8153         CALL1           strlen;
8154         INDIRECT_F      self,   fontSize_x,     temp_0;
8155         MUL_F           return_x,       temp_0, lSize_x;
8156         INDIRECT_F      self,   fontSize_y,     lSize_y;
8157         STORE_F KEY_GAME,       lSize_z;
8158         RETURN  lSize_x;
8159         DONE;
8160 }
8161
8162 vector () _IB_GetMaxSize;
8163 vector() _IB_GetMaxSize = asm
8164 {
8165 local vector lSize;
8166 local vector lPressed;
8167 local vector lSelected;
8168 local vector lNormal;
8169 local float temp_0;
8170         INDIRECT_S      self,   normal, parm0_x;
8171         CALL1           _IB_GetSize;
8172         STORE_V return, lNormal;
8173         INDIRECT_S      self,   selected,       parm0_x;
8174         CALL1           _IB_GetSize;
8175         STORE_V return, lSelected;
8176         INDIRECT_S      self,   pressed,        parm0_x;
8177         CALL1           _IB_GetSize;
8178         STORE_V return, lPressed;
8179         STORE_F lNormal_x,      parm0_x;
8180         STORE_F lSelected_x,    parm1_x;
8181         STORE_F lPressed_x,     parm2_x;
8182         CALL3           max;
8183         STORE_F return_x,       lSize_x;
8184         STORE_F lNormal_y,      parm0_x;
8185         STORE_F lSelected_y,    parm1_x;
8186         STORE_F lPressed_y,     parm2_x;
8187         CALL3           max;
8188         STORE_F return_x,       lSize_y;
8189         STORE_F KEY_GAME,       lSize_z;
8190         RETURN  lSize_x;
8191         DONE;
8192 }
8193
8194 void (string, vector, float, float) _IB_Draw;
8195 void(string pName, vector pColor, float pAlpha, float pDrawFlag) _IB_Draw = asm
8196 {
8197 local vector lMaxSize;
8198 local vector lPos;
8199 local vector lSize;
8200 local float temp_0;
8201 local float temp_1;
8202 local vector temp_2;
8203         STORE_F pName,  parm0_x;
8204         CALL1           _IB_GetSize;
8205         STORE_V return, lSize;
8206         CALL0           _IB_GetMaxSize;
8207         STORE_V return, lMaxSize;
8208         STORE_F pName,  parm0_x;
8209         CALL1           _IB_IsPicture;
8210         IFNOT           return_x,       7;
8211         INDIRECT_F      self,   size_x, temp_0;
8212         DIV_F           temp_0, lMaxSize_x,     temp_0;
8213         MUL_F           lSize_x,        temp_0, lSize_x;
8214         INDIRECT_F      self,   size_y, temp_0;
8215         DIV_F           temp_0, lMaxSize_y,     temp_0;
8216         MUL_F           lSize_y,        temp_0, lSize_y;
8217         INDIRECT_F      self,   pos_y,  lPos_y;
8218         INDIRECT_F      self,   alignment,      temp_0;
8219         EQ_F            temp_0, KEY_GAME,       temp_0;
8220         IFNOT           temp_0, 2;
8221         INDIRECT_F      self,   pos_x,  lPos_x;
8222         INDIRECT_F      self,   alignment,      temp_0;
8223         EQ_F            temp_0, ITEM_ALIGN_CENTER,      temp_0;
8224         IFNOT           temp_0, 7;
8225         INDIRECT_F      self,   pos_x,  temp_0;
8226         INDIRECT_F      self,   size_x, temp_1;
8227         SUB_F           temp_1, lSize_x,        temp_1;
8228         DIV_F           temp_1, KEY_MENU,       temp_1;
8229         ADD_F           temp_0, temp_1, lPos_x;
8230         GOTO            10;
8231         INDIRECT_F      self,   alignment,      temp_0;
8232         EQ_F            temp_0, ITEM_ALIGN_RIGHT,       temp_0;
8233         IFNOT           temp_0, 6;
8234         INDIRECT_F      self,   pos_x,  temp_0;
8235         INDIRECT_F      self,   size_x, temp_1;
8236         ADD_F           temp_0, temp_1, temp_0;
8237         SUB_F           temp_0, lSize_x,        lPos_x;
8238         GOTO            2;
8239         INDIRECT_F      self,   pos_x,  lPos_x;
8240         STORE_F pName,  parm0_x;
8241         CALL1           _IB_IsPicture;
8242         IFNOT           return_x,       11;
8243         STORE_F pName,  parm0_x;
8244         CALL1           _IB_GetPath;
8245         STORE_V lPos,   parm0;
8246         STORE_F return_x,       parm1_x;
8247         STORE_V lSize,  parm2;
8248         STORE_V pColor, parm3;
8249         STORE_F pAlpha, parm4_x;
8250         STORE_F pDrawFlag,      parm5_x;
8251         CALL6           Menu_DrawPicture;
8252         GOTO            9;
8253         INDIRECT_V      self,   fontSize_x,     temp_2;
8254         STORE_V lPos,   parm0;
8255         STORE_F pName,  parm1_x;
8256         STORE_V temp_2, parm2;
8257         STORE_V pColor, parm3;
8258         STORE_F pAlpha, parm4_x;
8259         STORE_F pDrawFlag,      parm5_x;
8260         CALL6           Menu_DrawString;
8261         DONE;
8262 }
8263
8264 void() Item_Button_Draw = asm
8265 {
8266 local string lText;
8267 local float temp_0;
8268 local float temp_1;
8269 local vector temp_2;
8270 local float temp_5;
8271         INDIRECT_F      self,   _state, temp_0;
8272         EQ_F            temp_0, ITEM_STATE_NORMAL,      temp_0;
8273         IFNOT           temp_0, 11;
8274         INDIRECT_S      self,   normal, temp_0;
8275         INDIRECT_V      self,   color_x,        temp_2;
8276         INDIRECT_F      self,   alphas_x,       temp_1;
8277         INDIRECT_F      self,   drawFlags_x,    temp_5;
8278         STORE_F temp_0, parm0_x;
8279         STORE_V temp_2, parm1;
8280         STORE_F temp_1, parm2_x;
8281         STORE_F temp_5, parm3_x;
8282         CALL4           _IB_Draw;
8283         GOTO            41;
8284         INDIRECT_F      self,   _state, temp_0;
8285         EQ_F            temp_0, ITEM_STATE_SELECTED,    temp_0;
8286         IFNOT           temp_0, 16;
8287         INDIRECT_S      self,   selected,       temp_0;
8288         NE_S            temp_0, string_null,    temp_0;
8289         IFNOT           temp_0, 3;
8290         INDIRECT_S      self,   selected,       lText;
8291         GOTO            2;
8292         INDIRECT_S      self,   normal, lText;
8293         INDIRECT_V      self,   colorSelected_x,        temp_2;
8294         INDIRECT_F      self,   alphas_y,       temp_0;
8295         INDIRECT_F      self,   drawFlags_y,    temp_1;
8296         STORE_F lText,  parm0_x;
8297         STORE_V temp_2, parm1;
8298         STORE_F temp_0, parm2_x;
8299         STORE_F temp_1, parm3_x;
8300         CALL4           _IB_Draw;
8301         GOTO            23;
8302         INDIRECT_F      self,   _state, temp_0;
8303         EQ_F            temp_0, ITEM_STATE_PRESSED,     temp_0;
8304         IFNOT           temp_0, 20;
8305         INDIRECT_S      self,   pressed,        temp_0;
8306         NE_S            temp_0, string_null,    temp_0;
8307         IFNOT           temp_0, 3;
8308         INDIRECT_S      self,   pressed,        lText;
8309         GOTO            7;
8310         INDIRECT_S      self,   selected,       temp_0;
8311         NE_S            temp_0, string_null,    temp_0;
8312         IFNOT           temp_0, 3;
8313         INDIRECT_S      self,   selected,       lText;
8314         GOTO            2;
8315         INDIRECT_S      self,   normal, lText;
8316         INDIRECT_V      self,   colorPressed_x, temp_2;
8317         INDIRECT_F      self,   alphas_z,       temp_0;
8318         INDIRECT_F      self,   drawFlags_z,    temp_1;
8319         STORE_F lText,  parm0_x;
8320         STORE_V temp_2, parm1;
8321         STORE_F temp_0, parm2_x;
8322         STORE_F temp_1, parm3_x;
8323         CALL4           _IB_Draw;
8324         DONE;
8325 }
8326
8327 void () _IB_Calc;
8328 void() _IB_Calc = asm
8329 {
8330 local float locked_1292;
8331 local float temp_0;
8332         INDIRECT_V      self,   size_x, locked_1292;
8333         EQ_V            locked_1292,    '0.000000 0.000000 0.000000',   temp_0;
8334         IFNOT           temp_0, 4;
8335         ADDRESS self,   size_x, locked_1292;
8336         CALL0           _IB_GetMaxSize;
8337         STOREP_V        return_x,       locked_1292;
8338         DONE;
8339 }
8340
8341 void() Item_Button_Update = asm
8342 {
8343 local float temp_0;
8344         CALL0           Item_Link_Update;
8345         CALL0           _IB_Calc;
8346         INDIRECT_F      self,   _presstime,     temp_0;
8347         ADD_F           temp_0, ITEM_BUTTON_ACTIONTIME, temp_0;
8348         GT              temp_0, Timer_Time,     temp_0;
8349         IFNOT           temp_0, 4;
8350         ADDRESS self,   _state, temp_0;
8351         STOREP_F        ITEM_STATE_PRESSED,     temp_0;
8352         GOTO            8;
8353         CALL0           Item_Link_IsSelected;
8354         IFNOT           return_x,       4;
8355         ADDRESS self,   _state, temp_0;
8356         STOREP_F        ITEM_STATE_SELECTED,    temp_0;
8357         GOTO            3;
8358         ADDRESS self,   _state, temp_0;
8359         STOREP_F        ITEM_STATE_NORMAL,      temp_0;
8360         DONE;
8361 }
8362
8363 void(float pSelect, float pUser) Item_Button_Select = asm
8364 {
8365 local float temp_0;
8366         IFNOT           pSelect,        1;
8367         AND             pSelect,        pUser,  temp_0;
8368         IFNOT           temp_0, 3;
8369         INDIRECT_S      self,   soundSelected,  parm0_x;
8370         CALL1           Sound_Play;
8371         DONE;
8372 }
8373
8374 float(float pKey, float pAscii) Item_Button_Key = asm
8375 {
8376 local float temp_0;
8377 local float temp_1;
8378         STORE_F pKey,   parm0_x;
8379         STORE_F pAscii, parm1_x;
8380         CALL2           Item_Link_Key;
8381         IFNOT           return_x,       2;
8382         RETURN  FILE_APPEND;
8383         EQ_F            pKey,   K_SPACE,        temp_0;
8384         IF              temp_0, 2;
8385         EQ_F            pKey,   K_ENTER,        temp_1;
8386         OR              temp_0, temp_1, temp_0;
8387         IF              temp_0, 2;
8388         EQ_F            pKey,   K_MOUSE1,       temp_1;
8389         OR              temp_0, temp_1, temp_0;
8390         IFNOT           temp_0, 7;
8391         INDIRECT_S      self,   soundPressed,   parm0_x;
8392         CALL1           Sound_Play;
8393         ADDRESS self,   _presstime,     temp_0;
8394         STOREP_F        Timer_Time,     temp_0;
8395         CALL0           CtCall_Action;
8396         RETURN  FILE_APPEND;
8397         RETURN  KEY_GAME;
8398         DONE;
8399 }
8400
8401 void() Item_Button_Destroy = asm
8402 {
8403         CALL0           CtCall_Destroy;
8404         STORE_F self,   parm0_x;
8405         STORE_F normal, parm1_x;
8406         CALL2           String_EntityFree;
8407         STORE_F self,   parm0_x;
8408         STORE_F selected,       parm1_x;
8409         CALL2           String_EntityFree;
8410         STORE_F self,   parm0_x;
8411         STORE_F pressed,        parm1_x;
8412         CALL2           String_EntityFree;
8413         STORE_F self,   parm0_x;
8414         STORE_F soundSelected,  parm1_x;
8415         CALL2           String_EntityFree;
8416         STORE_F self,   parm0_x;
8417         STORE_F soundPressed,   parm1_x;
8418         CALL2           String_EntityFree;
8419         CALL0           Item_Link_Destroy;
8420         DONE;
8421 }
8422
8423 void() Item_Button_Spawn = asm
8424 {
8425 local float temp_0;
8426 local float temp_1;
8427         ADDRESS self,   _presstime,     temp_0;
8428         SUB_F           Timer_Time,     FILE_APPEND,    temp_1;
8429         SUB_F           temp_1, ITEM_BUTTON_ACTIONTIME, temp_1;
8430         STOREP_F        temp_1, temp_0;
8431         STORE_F self,   parm0_x;
8432         STORE_F normal, parm1_x;
8433         CALL2           String_EntityZone;
8434         STORE_F self,   parm0_x;
8435         STORE_F selected,       parm1_x;
8436         CALL2           String_EntityZone;
8437         STORE_F self,   parm0_x;
8438         STORE_F pressed,        parm1_x;
8439         CALL2           String_EntityZone;
8440         STORE_F self,   parm0_x;
8441         STORE_F soundSelected,  parm1_x;
8442         CALL2           String_EntityZone;
8443         STORE_F self,   parm0_x;
8444         STORE_F soundPressed,   parm1_x;
8445         CALL2           String_EntityZone;
8446         CALL0           Item_Link_Init;
8447         INDIRECT_S      self,   normal, parm0_x;
8448         CALL1           _IB_IsPicture;
8449         IFNOT           return_x,       5;
8450         INDIRECT_S      self,   normal, parm0_x;
8451         CALL1           _IB_GetPath;
8452         STORE_F return_x,       parm0_x;
8453         CALL1           Gfx_Precache;
8454         INDIRECT_S      self,   selected,       parm0_x;
8455         CALL1           _IB_IsPicture;
8456         IFNOT           return_x,       5;
8457         INDIRECT_S      self,   selected,       parm0_x;
8458         CALL1           _IB_GetPath;
8459         STORE_F return_x,       parm0_x;
8460         CALL1           Gfx_Precache;
8461         INDIRECT_S      self,   pressed,        parm0_x;
8462         CALL1           _IB_IsPicture;
8463         IFNOT           return_x,       5;
8464         INDIRECT_S      self,   pressed,        parm0_x;
8465         CALL1           _IB_GetPath;
8466         STORE_F return_x,       parm0_x;
8467         CALL1           Gfx_Precache;
8468         INDIRECT_S      self,   soundSelected,  parm0_x;
8469         CALL1           Sound_Precache;
8470         INDIRECT_S      self,   soundPressed,   parm0_x;
8471         CALL1           Sound_Precache;
8472         CALL0           _IB_Calc;
8473         ADDRESS self,   _reinit,        temp_0;
8474         STOREP_FNC      CtCall_Reinit,  temp_0;
8475         ADDRESS self,   _destroy,       temp_0;
8476         STOREP_FNC      Item_Button_Destroy,    temp_0;
8477         ADDRESS self,   _key,   temp_0;
8478         STOREP_FNC      Item_Button_Key,        temp_0;
8479         ADDRESS self,   _draw,  temp_0;
8480         STOREP_FNC      Item_Button_Draw,       temp_0;
8481         ADDRESS self,   _select,        temp_0;
8482         STOREP_FNC      Item_Button_Select,     temp_0;
8483         ADDRESS self,   _update,        temp_0;
8484         STOREP_FNC      Item_Button_Update,     temp_0;
8485         CALL0           CtCall_Init;
8486         DONE;
8487 }
8488
8489 void() Item_EditBox_Draw = asm
8490 {
8491 local float lAlpha;
8492 local vector lCursor;
8493 local float temp_0;
8494 local float temp_1;
8495 local vector temp_2;
8496 local vector temp_3;
8497 local vector temp_4;
8498 local float temp_5;
8499         INDIRECT_E      self,   _target,        temp_0;
8500         IF              temp_0, 2;
8501         RETURN  offset_0;
8502         INDIRECT_E      self,   _target,        parm0_x;
8503         STORE_F ITEM_DATALINK_GET,      parm1_x;
8504         CALL2           Raise_DataEvent;
8505         INDIRECT_F      self,   _state, temp_0;
8506         EQ_F            temp_0, ITEM_STATE_NORMAL,      temp_0;
8507         IFNOT           temp_0, 18;
8508         INDIRECT_V      self,   pos_x,  temp_2;
8509         INDIRECT_V      self,   origin_x,       temp_3;
8510         ADD_V           temp_2, temp_3, temp_2;
8511         INDIRECT_E      self,   _target,        temp_0;
8512         INDIRECT_S      temp_0, value,  temp_0;
8513         INDIRECT_V      self,   fontSize_x,     temp_3;
8514         INDIRECT_V      self,   color_x,        temp_4;
8515         INDIRECT_F      self,   alphas_x,       temp_1;
8516         INDIRECT_F      self,   drawFlags_x,    temp_5;
8517         STORE_V temp_2, parm0;
8518         STORE_F temp_0, parm1_x;
8519         STORE_V temp_3, parm2;
8520         STORE_V temp_4, parm3;
8521         STORE_F temp_1, parm4_x;
8522         STORE_F temp_5, parm5_x;
8523         CALL6           Menu_DrawString;
8524         RETURN  offset_0;
8525         INDIRECT_F      self,   _cursorPos,     temp_0;
8526         INDIRECT_F      self,   fontSize_x,     temp_1;
8527         MUL_F           temp_0, temp_1, lCursor_x;
8528         INDIRECT_F      self,   fontSize_y,     lCursor_y;
8529         MUL_F           Timer_Time,     1000.000000,    parm0_x;
8530         STORE_F 500.000000,     parm1_x;
8531         CALL2           mod;
8532         GT              return_x,       250.000000,     temp_0;
8533         IFNOT           temp_0, 3;
8534         STORE_F FILE_APPEND,    lAlpha;
8535         GOTO            2;
8536         STORE_F KEY_GAME,       lAlpha;
8537         INDIRECT_F      self,   _state, temp_0;
8538         EQ_F            temp_0, ITEM_STATE_SELECTED,    temp_0;
8539         IFNOT           temp_0, 35;
8540         INDIRECT_F      self,   sizeCursor_y,   temp_0;
8541         SUB_F           lCursor_y,      temp_0, lCursor_y;
8542         INDIRECT_V      self,   pos_x,  temp_2;
8543         INDIRECT_V      self,   origin_x,       temp_3;
8544         ADD_V           temp_2, temp_3, temp_2;
8545         INDIRECT_E      self,   _target,        temp_0;
8546         INDIRECT_S      temp_0, value,  temp_0;
8547         INDIRECT_V      self,   fontSize_x,     temp_3;
8548         INDIRECT_V      self,   colorSelected_x,        temp_4;
8549         INDIRECT_F      self,   alphas_y,       temp_1;
8550         INDIRECT_F      self,   drawFlags_y,    temp_5;
8551         STORE_V temp_2, parm0;
8552         STORE_F temp_0, parm1_x;
8553         STORE_V temp_3, parm2;
8554         STORE_V temp_4, parm3;
8555         STORE_F temp_1, parm4_x;
8556         STORE_F temp_5, parm5_x;
8557         CALL6           Menu_DrawString;
8558         INDIRECT_V      self,   pos_x,  temp_2;
8559         INDIRECT_V      self,   origin_x,       temp_3;
8560         ADD_V           temp_2, temp_3, temp_2;
8561         ADD_V           temp_2, lCursor,        temp_2;
8562         INDIRECT_V      self,   sizeCursor_x,   temp_3;
8563         INDIRECT_V      self,   colorCursor_x,  temp_4;
8564         INDIRECT_F      self,   alphasCursor_x, temp_0;
8565         MUL_F           temp_0, lAlpha, temp_0;
8566         INDIRECT_F      self,   drawFlagsCursor_x,      temp_1;
8567         STORE_V temp_2, parm0;
8568         STORE_V temp_3, parm1;
8569         STORE_V temp_4, parm2;
8570         STORE_F temp_0, parm3_x;
8571         STORE_F temp_1, parm4_x;
8572         CALL5           Menu_Fill;
8573         GOTO            34;
8574         INDIRECT_F      self,   sizeCursorFlash_y,      temp_0;
8575         SUB_F           lCursor_y,      temp_0, lCursor_y;
8576         INDIRECT_V      self,   pos_x,  temp_2;
8577         INDIRECT_V      self,   origin_x,       temp_3;
8578         ADD_V           temp_2, temp_3, temp_2;
8579         INDIRECT_E      self,   _target,        temp_0;
8580         INDIRECT_S      temp_0, value,  temp_0;
8581         INDIRECT_V      self,   fontSize_x,     temp_3;
8582         INDIRECT_V      self,   colorPressed_x, temp_4;
8583         INDIRECT_F      self,   alphas_z,       temp_1;
8584         INDIRECT_F      self,   drawFlags_z,    temp_5;
8585         STORE_V temp_2, parm0;
8586         STORE_F temp_0, parm1_x;
8587         STORE_V temp_3, parm2;
8588         STORE_V temp_4, parm3;
8589         STORE_F temp_1, parm4_x;
8590         STORE_F temp_5, parm5_x;
8591         CALL6           Menu_DrawString;
8592         INDIRECT_V      self,   pos_x,  temp_2;
8593         INDIRECT_V      self,   origin_x,       temp_3;
8594         ADD_V           temp_2, temp_3, temp_2;
8595         ADD_V           temp_2, lCursor,        temp_2;
8596         INDIRECT_V      self,   sizeCursorFlash_x,      temp_3;
8597         INDIRECT_V      self,   colorCursorFlash_x,     temp_4;
8598         INDIRECT_F      self,   alphasCursor_y, temp_0;
8599         MUL_F           temp_0, lAlpha, temp_0;
8600         INDIRECT_F      self,   drawFlagsCursor_y,      temp_1;
8601         STORE_V temp_2, parm0;
8602         STORE_V temp_3, parm1;
8603         STORE_V temp_4, parm2;
8604         STORE_F temp_0, parm3_x;
8605         STORE_F temp_1, parm4_x;
8606         CALL5           Menu_Fill;
8607         DONE;
8608 }
8609
8610 void() Item_EditBox_Update = asm
8611 {
8612 local float locked_1585;
8613 local float locked_1586;
8614 local float temp_5;
8615 local float temp_6;
8616         CALL0           Item_DataUser_Update;
8617         INDIRECT_F      self,   _presstime,     locked_1586;
8618         ADD_F           locked_1586,    ITEM_EDITBOX_FLASHTIME, locked_1586;
8619         GT              locked_1586,    Timer_Time,     locked_1586;
8620         IFNOT           locked_1586,    4;
8621         ADDRESS self,   _state, locked_1586;
8622         STOREP_F        ITEM_STATE_PRESSED,     locked_1586;
8623         GOTO            8;
8624         EQ_E            Menu_ActiveItem,        self,   locked_1586;
8625         IFNOT           locked_1586,    4;
8626         ADDRESS self,   _state, locked_1586;
8627         STOREP_F        ITEM_STATE_SELECTED,    locked_1586;
8628         GOTO            3;
8629         ADDRESS self,   _state, locked_1586;
8630         STOREP_F        ITEM_STATE_NORMAL,      locked_1586;
8631         INDIRECT_E      self,   _target,        locked_1586;
8632         IF              locked_1586,    2;
8633         RETURN  offset_0;
8634         INDIRECT_E      self,   _target,        parm0_x;
8635         STORE_F ITEM_DATALINK_GET,      parm1_x;
8636         CALL2           Raise_DataEvent;
8637         ADDRESS self,   _cursorPos,     locked_1586;
8638         INDIRECT_F      self,   _cursorPos,     locked_1585;
8639         INDIRECT_E      self,   _target,        temp_5;
8640         INDIRECT_S      temp_5, value,  parm0_x;
8641         CALL1           strlen;
8642         STORE_F KEY_GAME,       parm0_x;
8643         STORE_F locked_1585,    parm1_x;
8644         STORE_F return_x,       parm2_x;
8645         CALL3           bound;
8646         STOREP_F        return_x,       locked_1586;
8647         ADDRESS self,   origin_y,       locked_1586;
8648         STOREP_F        KEY_GAME,       locked_1586;
8649         INDIRECT_F      self,   _cursorPos,     locked_1586;
8650         ADD_F           locked_1586,    ITEM_EDITBOX_SCROLLDISTANCE,    locked_1586;
8651         INDIRECT_F      self,   size_x, locked_1585;
8652         INDIRECT_F      self,   fontSize_x,     temp_5;
8653         DIV_F           locked_1585,    temp_5, locked_1585;
8654         GT              locked_1586,    locked_1585,    locked_1586;
8655         IFNOT           locked_1586,    8;
8656         INDIRECT_E      self,   _target,        locked_1585;
8657         INDIRECT_F      locked_1585,    maxValue,       locked_1585;
8658         SUB_F           locked_1585,    ITEM_EDITBOX_SCROLLDISTANCE,    locked_1585;
8659         INDIRECT_F      self,   size_x, temp_5;
8660         INDIRECT_F      self,   fontSize_x,     temp_6;
8661         DIV_F           temp_5, temp_6, temp_5;
8662         GT              locked_1585,    temp_5, locked_1585;
8663         AND             locked_1586,    locked_1585,    locked_1586;
8664         IFNOT           locked_1586,    13;
8665         ADDRESS self,   origin_x,       locked_1586;
8666         INDIRECT_F      self,   fontSize_x,     locked_1585;
8667         INDIRECT_F      self,   size_x, temp_5;
8668         INDIRECT_F      self,   fontSize_x,     temp_6;
8669         DIV_F           temp_5, temp_6, parm0_x;
8670         CALL1           floor;
8671         INDIRECT_F      self,   _cursorPos,     temp_5;
8672         SUB_F           return_x,       temp_5, temp_5;
8673         SUB_F           temp_5, ITEM_EDITBOX_SCROLLDISTANCE,    temp_5;
8674         MUL_F           locked_1585,    temp_5, locked_1585;
8675         STOREP_F        locked_1585,    locked_1586;
8676         GOTO            3;
8677         ADDRESS self,   origin_x,       locked_1586;
8678         STOREP_F        KEY_GAME,       locked_1586;
8679         DONE;
8680 }
8681
8682 void () _IEB_RemoveChar;
8683 void() _IEB_RemoveChar = asm
8684 {
8685 local string lValue;
8686 local string lTemp;
8687 local float temp_0;
8688         INDIRECT_E      self,   _target,        temp_0;
8689         INDIRECT_S      temp_0, value,  lValue;
8690         INDIRECT_F      self,   _cursorPos,     temp_0;
8691         STORE_F lValue, parm0_x;
8692         STORE_F KEY_GAME,       parm1_x;
8693         STORE_F temp_0, parm2_x;
8694         CALL3           substring;
8695         STORE_F return_x,       parm0_x;
8696         CALL1           strcat;
8697         STORE_S return_x,       lTemp;
8698         INDIRECT_F      self,   _cursorPos,     temp_0;
8699         ADD_F           temp_0, FILE_APPEND,    temp_0;
8700         STORE_F lValue, parm0_x;
8701         STORE_F temp_0, parm1_x;
8702         STORE_F 100000.000000,  parm2_x;
8703         CALL3           substring;
8704         STORE_F lTemp,  parm0_x;
8705         STORE_F return_x,       parm1_x;
8706         CALL2           strcat;
8707         STORE_S return_x,       lTemp;
8708         INDIRECT_E      self,   _target,        parm0_x;
8709         STORE_F value,  parm1_x;
8710         STORE_F lTemp,  parm2_x;
8711         CALL3           String_EntitySet;
8712         INDIRECT_E      self,   _target,        parm0_x;
8713         STORE_F ITEM_DATALINK_SET,      parm1_x;
8714         CALL2           Raise_DataEvent;
8715         ADDRESS self,   _presstime,     temp_0;
8716         STOREP_F        Timer_Time,     temp_0;
8717         INDIRECT_S      self,   soundKey,       parm0_x;
8718         CALL1           Sound_Play;
8719         DONE;
8720 }
8721
8722 void (float) _IEB_InsertChar;
8723 void(float pAscii) _IEB_InsertChar = asm
8724 {
8725 local string lTemp;
8726 local string lValue;
8727 local float temp_0;
8728 local float temp_1;
8729         INDIRECT_E      self,   _target,        temp_0;
8730         INDIRECT_S      temp_0, value,  lValue;
8731         INDIRECT_F      self,   _cursorPos,     temp_0;
8732         STORE_F lValue, parm0_x;
8733         STORE_F KEY_GAME,       parm1_x;
8734         STORE_F temp_0, parm2_x;
8735         CALL3           substring;
8736         STORE_F pAscii, parm0_x;
8737         STORE_F return_x,       temp_0;
8738         CALL1           chr;
8739         STORE_F return_x,       temp_1;
8740         STORE_F temp_0, return_x;
8741         STORE_F return_x,       parm0_x;
8742         STORE_F temp_1, parm1_x;
8743         CALL2           strcat;
8744         STORE_S return_x,       lTemp;
8745         INDIRECT_F      self,   _cursorPos,     temp_0;
8746         STORE_F lValue, parm0_x;
8747         STORE_F temp_0, parm1_x;
8748         STORE_F 100000.000000,  parm2_x;
8749         CALL3           substring;
8750         STORE_F lTemp,  parm0_x;
8751         STORE_F return_x,       parm1_x;
8752         CALL2           strcat;
8753         STORE_S return_x,       lTemp;
8754         INDIRECT_E      self,   _target,        parm0_x;
8755         STORE_F value,  parm1_x;
8756         STORE_F lTemp,  parm2_x;
8757         CALL3           String_EntitySet;
8758         INDIRECT_E      self,   _target,        parm0_x;
8759         STORE_F ITEM_DATALINK_SET,      parm1_x;
8760         CALL2           Raise_DataEvent;
8761         ADDRESS self,   _cursorPos,     temp_0;
8762         INDIRECT_F      self,   _cursorPos,     temp_1;
8763         ADD_F           temp_1, FILE_APPEND,    temp_1;
8764         STOREP_F        temp_1, temp_0;
8765         ADDRESS self,   _presstime,     temp_0;
8766         STOREP_F        Timer_Time,     temp_0;
8767         INDIRECT_S      self,   soundKey,       parm0_x;
8768         CALL1           Sound_Play;
8769         DONE;
8770 }
8771
8772 float(float pKey, float pAscii) Item_EditBox_Key = asm
8773 {
8774 local float locked_1586;
8775 local float temp_1;
8776         INDIRECT_E      self,   _target,        locked_1586;
8777         IF              locked_1586,    3;
8778         RETURN  KEY_GAME;
8779         GOTO            67;
8780         EQ_F            pKey,   K_ENTER,        locked_1586;
8781         IFNOT           locked_1586,    6;
8782         CALL0           CtCall_Action;
8783         INDIRECT_S      self,   soundKey,       parm0_x;
8784         CALL1           Sound_Play;
8785         RETURN  FILE_APPEND;
8786         GOTO            60;
8787         EQ_F            pKey,   K_LEFTARROW,    locked_1586;
8788         IFNOT           locked_1586,    11;
8789         INDIRECT_F      self,   _cursorPos,     locked_1586;
8790         IFNOT           locked_1586,    5;
8791         ADDRESS self,   _cursorPos,     locked_1586;
8792         INDIRECT_F      self,   _cursorPos,     temp_1;
8793         SUB_F           temp_1, FILE_APPEND,    temp_1;
8794         STOREP_F        temp_1, locked_1586;
8795         INDIRECT_S      self,   soundMove,      parm0_x;
8796         CALL1           Sound_Play;
8797         RETURN  FILE_APPEND;
8798         GOTO            48;
8799         EQ_F            pKey,   K_RIGHTARROW,   locked_1586;
8800         IFNOT           locked_1586,    15;
8801         INDIRECT_F      self,   _cursorPos,     locked_1586;
8802         INDIRECT_E      self,   _target,        temp_1;
8803         INDIRECT_S      temp_1, value,  parm0_x;
8804         CALL1           strlen;
8805         LT              locked_1586,    return_x,       locked_1586;
8806         IFNOT           locked_1586,    5;
8807         ADDRESS self,   _cursorPos,     locked_1586;
8808         INDIRECT_F      self,   _cursorPos,     temp_1;
8809         ADD_F           temp_1, FILE_APPEND,    temp_1;
8810         STOREP_F        temp_1, locked_1586;
8811         INDIRECT_S      self,   soundMove,      parm0_x;
8812         CALL1           Sound_Play;
8813         RETURN  FILE_APPEND;
8814         GOTO            32;
8815         EQ_F            pKey,   K_BACKSPACE,    locked_1586;
8816         IFNOT           locked_1586,    11;
8817         INDIRECT_F      self,   _cursorPos,     locked_1586;
8818         GT              locked_1586,    KEY_GAME,       locked_1586;
8819         IFNOT           locked_1586,    6;
8820         ADDRESS self,   _cursorPos,     locked_1586;
8821         INDIRECT_F      self,   _cursorPos,     temp_1;
8822         SUB_F           temp_1, FILE_APPEND,    temp_1;
8823         STOREP_F        temp_1, locked_1586;
8824         CALL0           _IEB_RemoveChar;
8825         RETURN  FILE_APPEND;
8826         GOTO            20;
8827         EQ_F            pKey,   K_DEL,  locked_1586;
8828         IFNOT           locked_1586,    10;
8829         INDIRECT_F      self,   _cursorPos,     locked_1586;
8830         INDIRECT_E      self,   _target,        temp_1;
8831         INDIRECT_S      temp_1, value,  parm0_x;
8832         CALL1           strlen;
8833         LT              locked_1586,    return_x,       locked_1586;
8834         IFNOT           locked_1586,    2;
8835         CALL0           _IEB_RemoveChar;
8836         RETURN  FILE_APPEND;
8837         GOTO            9;
8838         LE              30.000000,      pAscii, locked_1586;
8839         IFNOT           locked_1586,    2;
8840         LE              pAscii, 126.000000,     temp_1;
8841         AND             locked_1586,    temp_1, locked_1586;
8842         IFNOT           locked_1586,    4;
8843         STORE_F pAscii, parm0_x;
8844         CALL1           _IEB_InsertChar;
8845         RETURN  FILE_APPEND;
8846         RETURN  KEY_GAME;
8847         DONE;
8848 }
8849
8850 void(float pSelect, float pUser) Item_EditBox_Select = asm
8851 {
8852 local float temp_0;
8853         STORE_F pSelect,        parm0_x;
8854         STORE_F pUser,  parm1_x;
8855         CALL2           CtCall_Select;
8856         IFNOT           pSelect,        1;
8857         AND             pSelect,        pUser,  temp_0;
8858         IFNOT           temp_0, 3;
8859         INDIRECT_S      self,   soundSelected,  parm0_x;
8860         CALL1           Sound_Play;
8861         DONE;
8862 }
8863
8864 void() Item_EditBox_Destroy = asm
8865 {
8866         CALL0           CtCall_Destroy;
8867         CALL0           Item_DataUser_Destroy;
8868         STORE_F self,   parm0_x;
8869         STORE_F soundSelected,  parm1_x;
8870         CALL2           String_EntityFree;
8871         STORE_F self,   parm0_x;
8872         STORE_F soundKey,       parm1_x;
8873         CALL2           String_EntityFree;
8874         STORE_F self,   parm0_x;
8875         STORE_F soundMove,      parm1_x;
8876         CALL2           String_EntityFree;
8877         DONE;
8878 }
8879
8880 void() Item_EditBox_Reinit = asm
8881 {
8882 local float temp_0;
8883         ADDRESS self,   _cursorPos,     temp_0;
8884         STOREP_F        KEY_GAME,       temp_0;
8885         CALL0           CtCall_Reinit;
8886         DONE;
8887 }
8888
8889 void() Item_EditBox_Spawn = asm
8890 {
8891 local float locked_1585;
8892 local float locked_1586;
8893 local vector temp_2;
8894 local float temp_5;
8895         CALL0           Item_DataUser_Init;
8896         STORE_F self,   parm0_x;
8897         STORE_F soundSelected,  parm1_x;
8898         CALL2           String_EntityZone;
8899         STORE_F self,   parm0_x;
8900         STORE_F soundKey,       parm1_x;
8901         CALL2           String_EntityZone;
8902         STORE_F self,   parm0_x;
8903         STORE_F soundMove,      parm1_x;
8904         CALL2           String_EntityZone;
8905         INDIRECT_S      self,   soundSelected,  parm0_x;
8906         CALL1           Sound_Precache;
8907         INDIRECT_S      self,   soundKey,       parm0_x;
8908         CALL1           Sound_Precache;
8909         INDIRECT_S      self,   soundMove,      parm0_x;
8910         CALL1           Sound_Precache;
8911         INDIRECT_V      self,   size_x, temp_2;
8912         EQ_V            temp_2, '0.000000 0.000000 0.000000',   locked_1586;
8913         IFNOT           locked_1586,    2;
8914         INDIRECT_E      self,   _target,        locked_1585;
8915         AND             locked_1586,    locked_1585,    locked_1586;
8916         IFNOT           locked_1586,    4;
8917         INDIRECT_E      self,   _target,        locked_1585;
8918         INDIRECT_F      locked_1585,    maxValue,       locked_1585;
8919         GE              locked_1585,    KEY_GAME,       locked_1585;
8920         AND             locked_1586,    locked_1585,    locked_1586;
8921         IFNOT           locked_1586,    16;
8922         ADDRESS self,   size_x, locked_1586;
8923         INDIRECT_F      self,   fontSize_x,     locked_1585;
8924         INDIRECT_E      self,   _target,        temp_5;
8925         INDIRECT_F      temp_5, maxValue,       temp_5;
8926         MUL_F           locked_1585,    temp_5, locked_1585;
8927         INDIRECT_F      self,   sizeCursor_x,   temp_5;
8928         INDIRECT_V      self,   sizeCursorFlash_x,      temp_2;
8929         STORE_F temp_5, parm0_x;
8930         STORE_V temp_2, parm1;
8931         CALL2           max;
8932         ADD_F           locked_1585,    return_x,       locked_1585;
8933         STOREP_F        locked_1585,    locked_1586;
8934         ADDRESS self,   size_y, locked_1586;
8935         INDIRECT_F      self,   fontSize_y,     locked_1585;
8936         STOREP_F        locked_1585,    locked_1586;
8937         ADDRESS self,   _reinit,        locked_1586;
8938         STOREP_FNC      Item_EditBox_Reinit,    locked_1586;
8939         ADDRESS self,   _destroy,       locked_1586;
8940         STOREP_FNC      Item_EditBox_Destroy,   locked_1586;
8941         ADDRESS self,   _key,   locked_1586;
8942         STOREP_FNC      Item_EditBox_Key,       locked_1586;
8943         ADDRESS self,   _draw,  locked_1586;
8944         STOREP_FNC      Item_EditBox_Draw,      locked_1586;
8945         ADDRESS self,   _select,        locked_1586;
8946         STOREP_FNC      Item_EditBox_Select,    locked_1586;
8947         ADDRESS self,   _update,        locked_1586;
8948         STOREP_FNC      Item_EditBox_Update,    locked_1586;
8949         CALL0           CtCall_Init;
8950         DONE;
8951 }
8952
8953 void () _IL_Calc;
8954 void() _IL_Calc = asm
8955 {
8956 local float locked_1585;
8957 local float locked_1586;
8958 local vector temp_2;
8959 local float temp_5;
8960         INDIRECT_V      self,   size_x, temp_2;
8961         EQ_V            temp_2, '0.000000 0.000000 0.000000',   locked_1586;
8962         IFNOT           locked_1586,    11;
8963         ADDRESS self,   size_x, locked_1586;
8964         INDIRECT_F      self,   fontSize_x,     locked_1585;
8965         INDIRECT_S      self,   text,   parm0_x;
8966         CALL1           strlen;
8967         MUL_F           locked_1585,    return_x,       locked_1585;
8968         STOREP_F        locked_1585,    locked_1586;
8969         ADDRESS self,   size_y, locked_1586;
8970         INDIRECT_F      self,   fontSize_y,     locked_1585;
8971         STOREP_F        locked_1585,    locked_1586;
8972         GOTO            13;
8973         INDIRECT_V      self,   fontSize_x,     temp_2;
8974         EQ_V            temp_2, '0.000000 0.000000 0.000000',   locked_1586;
8975         IFNOT           locked_1586,    10;
8976         ADDRESS self,   fontSize_x,     locked_1586;
8977         INDIRECT_F      self,   size_x, locked_1585;
8978         INDIRECT_S      self,   text,   parm0_x;
8979         CALL1           strlen;
8980         DIV_F           locked_1585,    return_x,       locked_1585;
8981         STOREP_F        locked_1585,    locked_1586;
8982         ADDRESS self,   fontSize_y,     locked_1586;
8983         INDIRECT_F      self,   size_y, locked_1585;
8984         STOREP_F        locked_1585,    locked_1586;
8985         DONE;
8986 }
8987
8988 void() Item_Label_Update = asm
8989 {
8990         CALL0           _IL_Calc;
8991         DONE;
8992 }
8993
8994 void() Item_Label_Draw = asm
8995 {
8996 local float locked_1585;
8997 local float locked_1586;
8998 local vector lAligned;
8999 local vector temp_2;
9000 local vector temp_3;
9001 local float temp_5;
9002         INDIRECT_F      self,   alignment,      locked_1586;
9003         EQ_F            locked_1586,    KEY_GAME,       locked_1586;
9004         IFNOT           locked_1586,    3;
9005         INDIRECT_F      self,   pos_x,  lAligned_x;
9006         GOTO            27;
9007         INDIRECT_F      self,   alignment,      locked_1586;
9008         BITAND  locked_1586,    ITEM_ALIGN_CENTER,      locked_1586;
9009         IFNOT           locked_1586,    11;
9010         INDIRECT_F      self,   pos_x,  locked_1586;
9011         INDIRECT_F      self,   size_x, locked_1585;
9012         INDIRECT_S      self,   text,   parm0_x;
9013         CALL1           strlen;
9014         INDIRECT_F      self,   fontSize_x,     temp_5;
9015         MUL_F           return_x,       temp_5, temp_5;
9016         SUB_F           locked_1585,    temp_5, locked_1585;
9017         DIV_F           locked_1585,    KEY_MENU,       locked_1585;
9018         ADD_F           locked_1586,    locked_1585,    lAligned_x;
9019         GOTO            14;
9020         INDIRECT_F      self,   alignment,      locked_1586;
9021         BITAND  locked_1586,    ITEM_ALIGN_RIGHT,       locked_1586;
9022         IFNOT           locked_1586,    10;
9023         INDIRECT_F      self,   pos_x,  locked_1586;
9024         INDIRECT_F      self,   size_x, locked_1585;
9025         ADD_F           locked_1586,    locked_1585,    locked_1586;
9026         INDIRECT_S      self,   text,   parm0_x;
9027         CALL1           strlen;
9028         INDIRECT_F      self,   fontSize_x,     locked_1585;
9029         MUL_F           return_x,       locked_1585,    locked_1585;
9030         SUB_F           locked_1586,    locked_1585,    lAligned_x;
9031         GOTO            2;
9032         INDIRECT_F      self,   pos_x,  lAligned_x;
9033         INDIRECT_F      self,   pos_y,  lAligned_y;
9034         INDIRECT_S      self,   text,   locked_1586;
9035         INDIRECT_V      self,   fontSize_x,     temp_2;
9036         INDIRECT_V      self,   color_x,        temp_3;
9037         INDIRECT_F      self,   alpha,  locked_1585;
9038         INDIRECT_F      self,   drawFlag,       temp_5;
9039         STORE_V lAligned,       parm0;
9040         STORE_F locked_1586,    parm1_x;
9041         STORE_V temp_2, parm2;
9042         STORE_V temp_3, parm3;
9043         STORE_F locked_1585,    parm4_x;
9044         STORE_F temp_5, parm5_x;
9045         CALL6           Menu_DrawString;
9046         DONE;
9047 }
9048
9049 void() Item_Label_Destroy = asm
9050 {
9051         STORE_F self,   parm0_x;
9052         STORE_F text,   parm1_x;
9053         CALL2           String_EntityFree;
9054         DONE;
9055 }
9056
9057 void() Item_Label_Spawn = asm
9058 {
9059 local float temp_0;
9060 local float temp_1;
9061 local float temp_5;
9062         INDIRECT_F      self,   flag,   temp_0;
9063         EQ_F            temp_0, KEY_GAME,       temp_0;
9064         IFNOT           temp_0, 5;
9065         ADDRESS self,   flag,   temp_0;
9066         INDIRECT_F      self,   flag,   temp_1;
9067         BITOR           temp_1, FLAG_DRAWUPDATEONLY,    temp_1;
9068         STOREP_F        temp_1, temp_0;
9069         STORE_F self,   parm0_x;
9070         STORE_F text,   parm1_x;
9071         CALL2           String_EntityZone;
9072         CALL0           _IL_Calc;
9073         INDIRECT_F      self,   alignment,      temp_0;
9074         BITAND  temp_0, ITEM_ALIGN_FIX_CENTER,  temp_0;
9075         IFNOT           temp_0, 8;
9076         ADDRESS self,   pos_x,  temp_0;
9077         INDIRECT_F      self,   pos_x,  temp_1;
9078         INDIRECT_F      self,   size_x, temp_5;
9079         DIV_F           temp_5, KEY_MENU,       temp_5;
9080         SUB_F           temp_1, temp_5, temp_1;
9081         STOREP_F        temp_1, temp_0;
9082         GOTO            9;
9083         INDIRECT_F      self,   alignment,      temp_0;
9084         BITAND  temp_0, ITEM_ALIGN_FIX_LEFT,    temp_0;
9085         IFNOT           temp_0, 6;
9086         ADDRESS self,   pos_x,  temp_0;
9087         INDIRECT_F      self,   pos_x,  temp_1;
9088         INDIRECT_F      self,   size_x, temp_5;
9089         SUB_F           temp_1, temp_5, temp_1;
9090         STOREP_F        temp_1, temp_0;
9091         ADDRESS self,   _destroy,       temp_0;
9092         STOREP_FNC      Item_Label_Destroy,     temp_0;
9093         ADDRESS self,   _draw,  temp_0;
9094         STOREP_FNC      Item_Label_Draw,        temp_0;
9095         ADDRESS self,   _update,        temp_0;
9096         STOREP_FNC      Item_Label_Update,      temp_0;
9097         DONE;
9098 }
9099
9100 void () _IML_Calc;
9101 void() _IML_Calc = asm
9102 {
9103 local vector lLine;
9104 local float lLineNumber;
9105 local float lMaxWidth;
9106 local float temp_0;
9107 local float temp_1;
9108         STORE_F KEY_GAME,       lMaxWidth;
9109         STORE_F KEY_GAME,       lLineNumber;
9110         STORE_V '0.000000 0.000000 0.000000',   lLine;
9111         INDIRECT_F      self,   wrap,   temp_0;
9112         IFNOT           temp_0, 9;
9113         INDIRECT_S      self,   text,   temp_0;
9114         INDIRECT_F      self,   wrap,   temp_1;
9115         STORE_F temp_0, parm0_x;
9116         STORE_V lLine,  parm1;
9117         STORE_F temp_1, parm2_x;
9118         CALL3           Util_GetEndOfWrappedLine;
9119         STORE_V return, lLine;
9120         GOTO            5;
9121         INDIRECT_S      self,   text,   parm0_x;
9122         STORE_V lLine,  parm1;
9123         CALL2           Util_GetEndOfLine;
9124         STORE_V return, lLine;
9125         ADD_F           lLineNumber,    FILE_APPEND,    lLineNumber;
9126         STORE_F lMaxWidth,      parm0_x;
9127         STORE_F lLine_z,        parm1_x;
9128         CALL2           max;
9129         STORE_F return_x,       lMaxWidth;
9130         NE_F            lLine_x,        lLine_y,        temp_0;
9131         IF              temp_0, -20;
9132         ADDRESS self,   size_x, temp_0;
9133         INDIRECT_F      self,   fontSize_x,     temp_1;
9134         MUL_F           lMaxWidth,      temp_1, temp_1;
9135         STOREP_F        temp_1, temp_0;
9136         ADDRESS self,   size_y, temp_0;
9137         INDIRECT_F      self,   fontSize_y,     temp_1;
9138         MUL_F           lLineNumber,    temp_1, temp_1;
9139         STOREP_F        temp_1, temp_0;
9140         DONE;
9141 }
9142
9143 void (vector, string) _IML_DrawLine;
9144 void(vector pPosition, string pText) _IML_DrawLine = asm
9145 {
9146 local float locked_1585;
9147 local float locked_1586;
9148 local vector temp_2;
9149 local vector temp_3;
9150 local float temp_5;
9151         INDIRECT_F      self,   alignment,      locked_1586;
9152         EQ_F            locked_1586,    ITEM_ALIGN_CENTER,      locked_1586;
9153         IFNOT           locked_1586,    11;
9154         INDIRECT_F      self,   pos_x,  locked_1586;
9155         INDIRECT_F      self,   size_x, locked_1585;
9156         STORE_F pText,  parm0_x;
9157         CALL1           strlen;
9158         INDIRECT_F      self,   fontSize_x,     temp_5;
9159         MUL_F           return_x,       temp_5, temp_5;
9160         SUB_F           locked_1585,    temp_5, locked_1585;
9161         DIV_F           locked_1585,    KEY_MENU,       locked_1585;
9162         ADD_F           locked_1586,    locked_1585,    pPosition_x;
9163         GOTO            14;
9164         INDIRECT_F      self,   alignment,      locked_1586;
9165         EQ_F            locked_1586,    ITEM_ALIGN_RIGHT,       locked_1586;
9166         IFNOT           locked_1586,    10;
9167         INDIRECT_F      self,   pos_x,  locked_1586;
9168         INDIRECT_F      self,   size_x, locked_1585;
9169         ADD_F           locked_1586,    locked_1585,    locked_1586;
9170         STORE_F pText,  parm0_x;
9171         CALL1           strlen;
9172         INDIRECT_F      self,   fontSize_x,     locked_1585;
9173         MUL_F           return_x,       locked_1585,    locked_1585;
9174         SUB_F           locked_1586,    locked_1585,    pPosition_x;
9175         GOTO            2;
9176         INDIRECT_F      self,   pos_x,  pPosition_x;
9177         INDIRECT_V      self,   fontSize_x,     temp_2;
9178         INDIRECT_V      self,   color_x,        temp_3;
9179         INDIRECT_F      self,   alpha,  locked_1586;
9180         INDIRECT_F      self,   drawFlag,       locked_1585;
9181         STORE_V pPosition,      parm0;
9182         STORE_F pText,  parm1_x;
9183         STORE_V temp_2, parm2;
9184         STORE_V temp_3, parm3;
9185         STORE_F locked_1586,    parm4_x;
9186         STORE_F locked_1585,    parm5_x;
9187         CALL6           Menu_DrawString;
9188         DONE;
9189 }
9190
9191 void() Item_MultiLabel_Draw = asm
9192 {
9193 local vector lLine;
9194 local vector lPosition;
9195 local float temp_0;
9196 local float temp_1;
9197         INDIRECT_F      self,   pos_y,  lPosition_y;
9198         STORE_V '0.000000 0.000000 0.000000',   lLine;
9199         INDIRECT_F      self,   wrap,   temp_0;
9200         IFNOT           temp_0, 9;
9201         INDIRECT_S      self,   text,   temp_0;
9202         INDIRECT_F      self,   wrap,   temp_1;
9203         STORE_F temp_0, parm0_x;
9204         STORE_V lLine,  parm1;
9205         STORE_F temp_1, parm2_x;
9206         CALL3           Util_GetEndOfWrappedLine;
9207         STORE_V return, lLine;
9208         GOTO            5;
9209         INDIRECT_S      self,   text,   parm0_x;
9210         STORE_V lLine,  parm1;
9211         CALL2           Util_GetEndOfLine;
9212         STORE_V return, lLine;
9213         INDIRECT_S      self,   text,   temp_0;
9214         SUB_F           lLine_x,        lLine_z,        temp_1;
9215         ADD_F           temp_1, FILE_APPEND,    temp_1;
9216         STORE_F temp_0, parm0_x;
9217         STORE_F temp_1, parm1_x;
9218         STORE_F lLine_z,        parm2_x;
9219         CALL3           substring;
9220         STORE_V lPosition,      parm0;
9221         STORE_F return_x,       parm1_x;
9222         CALL2           _IML_DrawLine;
9223         INDIRECT_F      self,   fontSize_y,     temp_0;
9224         ADD_F           lPosition_y,    temp_0, lPosition_y;
9225         NE_F            lLine_x,        lLine_y,        temp_0;
9226         IF              temp_0, -27;
9227         DONE;
9228 }
9229
9230 void() Item_MultiLabel_Update = asm
9231 {
9232 local float temp_0;
9233 local vector temp_2;
9234         INDIRECT_V      self,   size_x, temp_2;
9235         EQ_V            temp_2, '0.000000 0.000000 0.000000',   temp_0;
9236         IFNOT           temp_0, 2;
9237         CALL0           _IML_Calc;
9238         DONE;
9239 }
9240
9241 void() Item_MultiLabel_Destroy = asm
9242 {
9243         STORE_F self,   parm0_x;
9244         STORE_F text,   parm1_x;
9245         CALL2           String_EntityFree;
9246         DONE;
9247 }
9248
9249 void() Item_MultiLabel_Spawn = asm
9250 {
9251 local float temp_0;
9252 local float temp_1;
9253         INDIRECT_F      self,   flag,   temp_0;
9254         EQ_F            temp_0, KEY_GAME,       temp_0;
9255         IFNOT           temp_0, 5;
9256         ADDRESS self,   flag,   temp_0;
9257         INDIRECT_F      self,   flag,   temp_1;
9258         BITOR           temp_1, FLAG_DRAWUPDATEONLY,    temp_1;
9259         STOREP_F        temp_1, temp_0;
9260         STORE_F self,   parm0_x;
9261         STORE_F text,   parm1_x;
9262         CALL2           String_EntityZone;
9263         CALL0           Item_MultiLabel_Update;
9264         ADDRESS self,   _destroy,       temp_0;
9265         STOREP_FNC      Item_MultiLabel_Destroy,        temp_0;
9266         ADDRESS self,   _draw,  temp_0;
9267         STOREP_FNC      Item_MultiLabel_Draw,   temp_0;
9268         ADDRESS self,   _update,        temp_0;
9269         STOREP_FNC      Item_MultiLabel_Update, temp_0;
9270         DONE;
9271 }
9272
9273 void() Item_Picture_Draw = asm
9274 {
9275 local float temp_0;
9276 local float temp_1;
9277 local vector temp_2;
9278 local vector temp_3;
9279 local vector temp_4;
9280 local float temp_5;
9281         INDIRECT_V      self,   pos_x,  temp_2;
9282         INDIRECT_S      self,   picture,        temp_0;
9283         INDIRECT_V      self,   size_x, temp_3;
9284         INDIRECT_V      self,   color_x,        temp_4;
9285         INDIRECT_F      self,   alpha,  temp_1;
9286         INDIRECT_F      self,   drawFlag,       temp_5;
9287         STORE_V temp_2, parm0;
9288         STORE_F temp_0, parm1_x;
9289         STORE_V temp_3, parm2;
9290         STORE_V temp_4, parm3;
9291         STORE_F temp_1, parm4_x;
9292         STORE_F temp_5, parm5_x;
9293         CALL6           Menu_DrawPicture;
9294         DONE;
9295 }
9296
9297 void() Item_Picture_Destroy = asm
9298 {
9299         STORE_F self,   parm0_x;
9300         STORE_F picture,        parm1_x;
9301         CALL2           String_EntityFree;
9302         DONE;
9303 }
9304
9305 void() Item_Picture_Spawn = asm
9306 {
9307 local float temp_0;
9308 local float temp_1;
9309         INDIRECT_S      self,   picture,        temp_0;
9310         NOT_S           temp_0, temp_0;
9311         IFNOT           temp_0, 4;
9312         STORE_F self,   parm0_x;
9313         CALL1           Menu_DeleteAfterFrame;
9314         RETURN  offset_0;
9315         STORE_F self,   parm0_x;
9316         STORE_F picture,        parm1_x;
9317         CALL2           String_EntityZone;
9318         INDIRECT_S      self,   picture,        parm0_x;
9319         CALL1           Gfx_Precache;
9320         INDIRECT_F      self,   flag,   temp_0;
9321         EQ_F            temp_0, KEY_GAME,       temp_0;
9322         IFNOT           temp_0, 5;
9323         ADDRESS self,   flag,   temp_0;
9324         INDIRECT_F      self,   flag,   temp_1;
9325         BITOR           temp_1, FLAG_NOSELECT,  temp_1;
9326         STOREP_F        temp_1, temp_0;
9327         ADDRESS self,   _destroy,       temp_0;
9328         STOREP_FNC      Item_Picture_Destroy,   temp_0;
9329         ADDRESS self,   _draw,  temp_0;
9330         STOREP_FNC      Item_Picture_Draw,      temp_0;
9331         DONE;
9332 }
9333
9334 void() Item_Rect_Draw = asm
9335 {
9336 local float temp_0;
9337 local float temp_1;
9338 local vector temp_2;
9339 local vector temp_3;
9340 local vector temp_4;
9341         INDIRECT_V      self,   pos_x,  temp_2;
9342         INDIRECT_V      self,   size_x, temp_3;
9343         INDIRECT_V      self,   color_x,        temp_4;
9344         INDIRECT_F      self,   alpha,  temp_0;
9345         INDIRECT_F      self,   drawFlag,       temp_1;
9346         STORE_V temp_2, parm0;
9347         STORE_V temp_3, parm1;
9348         STORE_V temp_4, parm2;
9349         STORE_F temp_0, parm3_x;
9350         STORE_F temp_1, parm4_x;
9351         CALL5           Menu_Fill;
9352         DONE;
9353 }
9354
9355 void() Item_Rect_Spawn = asm
9356 {
9357 local float temp_0;
9358 local float temp_1;
9359         ADDRESS self,   flag,   temp_0;
9360         INDIRECT_F      self,   flag,   temp_1;
9361         BITOR           temp_1, FLAG_NOSELECT,  temp_1;
9362         STOREP_F        temp_1, temp_0;
9363         ADDRESS self,   _draw,  temp_0;
9364         STOREP_FNC      Item_Rect_Draw, temp_0;
9365         DONE;
9366 }
9367
9368 float () _IS_GetValue;
9369 float() _IS_GetValue = asm
9370 {
9371 local entity lLink;
9372 local float lValue;
9373 local float temp_0;
9374 local float temp_1;
9375 local float temp_5;
9376         INDIRECT_E      self,   _target,        temp_0;
9377         IF              temp_0, 2;
9378         RETURN  KEY_GAME;
9379         INDIRECT_E      self,   _target,        lLink;
9380         STORE_F lLink,  parm0_x;
9381         STORE_F ITEM_DATALINK_GET,      parm1_x;
9382         CALL2           Raise_DataEvent;
9383         INDIRECT_F      lLink,  maxValue,       temp_0;
9384         INDIRECT_F      lLink,  minValue,       temp_1;
9385         LE              temp_0, temp_1, temp_0;
9386         IFNOT           temp_0, 3;
9387         STORE_F KEY_GAME,       lValue;
9388         GOTO            8;
9389         INDIRECT_F      lLink,  _realValue,     temp_0;
9390         INDIRECT_F      lLink,  minValue,       temp_1;
9391         SUB_F           temp_0, temp_1, temp_0;
9392         INDIRECT_F      lLink,  maxValue,       temp_1;
9393         INDIRECT_F      lLink,  minValue,       temp_5;
9394         SUB_F           temp_1, temp_5, temp_1;
9395         DIV_F           temp_0, temp_1, lValue;
9396         RETURN  lValue;
9397         DONE;
9398 }
9399
9400 void(float pSelect, float pUser) Item_Slider_Select = asm
9401 {
9402 local float temp_0;
9403         BITAND  pSelect,        pUser,  temp_0;
9404         IFNOT           temp_0, 3;
9405         INDIRECT_S      self,   soundSelected,  parm0_x;
9406         CALL1           Sound_Play;
9407         DONE;
9408 }
9409
9410 void() Item_Slider_Draw = asm
9411 {
9412 local vector lSliderPos;
9413 local float lValue;
9414 local float temp_0;
9415 local float temp_1;
9416 local vector temp_2;
9417 local vector temp_3;
9418 local vector temp_4;
9419 local float temp_5;
9420 local float temp_6;
9421         CALL0           _IS_GetValue;
9422         STORE_F return_x,       lValue;
9423         INDIRECT_F      self,   pos_x,  temp_0;
9424         INDIRECT_F      self,   size_x, temp_1;
9425         INDIRECT_F      self,   proportions_x,  temp_5;
9426         INDIRECT_F      self,   proportions_y,  temp_6;
9427         MUL_F           lValue, temp_6, temp_6;
9428         ADD_F           temp_5, temp_6, temp_5;
9429         MUL_F           temp_1, temp_5, temp_1;
9430         ADD_F           temp_0, temp_1, temp_0;
9431         INDIRECT_F      self,   sizeSlider_x,   temp_1;
9432         MUL_F           lValue, temp_1, temp_1;
9433         SUB_F           temp_0, temp_1, lSliderPos_x;
9434         INDIRECT_F      self,   pos_y,  temp_0;
9435         INDIRECT_F      self,   size_y, temp_1;
9436         INDIRECT_F      self,   sizeSlider_y,   temp_5;
9437         SUB_F           temp_1, temp_5, temp_1;
9438         INDIRECT_F      self,   direction_y,    temp_5;
9439         INDIRECT_F      self,   direction_x,    temp_6;
9440         SUB_F           temp_5, temp_6, temp_5;
9441         MUL_F           temp_5, lValue, temp_5;
9442         SUB_F           FILE_APPEND,    temp_5, temp_5;
9443         INDIRECT_F      self,   direction_x,    temp_6;
9444         SUB_F           temp_5, temp_6, temp_5;
9445         MUL_F           temp_1, temp_5, temp_1;
9446         ADD_F           temp_0, temp_1, lSliderPos_y;
9447         EQ_E            Menu_ActiveItem,        self,   temp_0;
9448         IFNOT           temp_0, 27;
9449         INDIRECT_V      self,   pos_x,  temp_2;
9450         INDIRECT_S      self,   picture,        temp_0;
9451         INDIRECT_V      self,   size_x, temp_3;
9452         INDIRECT_V      self,   colorSelected_x,        temp_4;
9453         INDIRECT_F      self,   alphas_y,       temp_1;
9454         INDIRECT_F      self,   drawFlags_y,    temp_5;
9455         STORE_V temp_2, parm0;
9456         STORE_F temp_0, parm1_x;
9457         STORE_V temp_3, parm2;
9458         STORE_V temp_4, parm3;
9459         STORE_F temp_1, parm4_x;
9460         STORE_F temp_5, parm5_x;
9461         CALL6           Menu_DrawPicture;
9462         INDIRECT_S      self,   pictureSlider,  temp_0;
9463         INDIRECT_V      self,   sizeSlider_x,   temp_2;
9464         INDIRECT_V      self,   colorSelected_x,        temp_3;
9465         INDIRECT_F      self,   alphas_y,       temp_1;
9466         INDIRECT_F      self,   drawFlags_y,    temp_5;
9467         STORE_V lSliderPos,     parm0;
9468         STORE_F temp_0, parm1_x;
9469         STORE_V temp_2, parm2;
9470         STORE_V temp_3, parm3;
9471         STORE_F temp_1, parm4_x;
9472         STORE_F temp_5, parm5_x;
9473         CALL6           Menu_DrawPicture;
9474         GOTO            26;
9475         INDIRECT_V      self,   pos_x,  temp_2;
9476         INDIRECT_S      self,   picture,        temp_0;
9477         INDIRECT_V      self,   size_x, temp_3;
9478         INDIRECT_V      self,   color_x,        temp_4;
9479         INDIRECT_F      self,   alphas_x,       temp_1;
9480         INDIRECT_F      self,   drawFlags_x,    temp_5;
9481         STORE_V temp_2, parm0;
9482         STORE_F temp_0, parm1_x;
9483         STORE_V temp_3, parm2;
9484         STORE_V temp_4, parm3;
9485         STORE_F temp_1, parm4_x;
9486         STORE_F temp_5, parm5_x;
9487         CALL6           Menu_DrawPicture;
9488         INDIRECT_S      self,   pictureSlider,  temp_0;
9489         INDIRECT_V      self,   sizeSlider_x,   temp_2;
9490         INDIRECT_V      self,   color_x,        temp_3;
9491         INDIRECT_F      self,   alphas_x,       temp_1;
9492         INDIRECT_F      self,   drawFlags_x,    temp_5;
9493         STORE_V lSliderPos,     parm0;
9494         STORE_F temp_0, parm1_x;
9495         STORE_V temp_2, parm2;
9496         STORE_V temp_3, parm3;
9497         STORE_F temp_1, parm4_x;
9498         STORE_F temp_5, parm5_x;
9499         CALL6           Menu_DrawPicture;
9500         DONE;
9501 }
9502
9503 void (float) _IS_Change;
9504 void(float pValue) _IS_Change = asm
9505 {
9506 local float temp_0;
9507 local float temp_1;
9508         LT              pValue, KEY_GAME,       temp_0;
9509         IFNOT           temp_0, 4;
9510         INDIRECT_S      self,   soundDecrease,  parm0_x;
9511         CALL1           Sound_Play;
9512         GOTO            3;
9513         INDIRECT_S      self,   soundIncrease,  parm0_x;
9514         CALL1           Sound_Play;
9515         INDIRECT_E      self,   _target,        temp_0;
9516         ADDRESS temp_0, _realValue,     temp_0;
9517         INDIRECT_E      self,   _target,        temp_1;
9518         INDIRECT_F      temp_1, _realValue,     temp_1;
9519         ADD_F           temp_1, pValue, temp_1;
9520         STOREP_F        temp_1, temp_0;
9521         INDIRECT_E      self,   _target,        parm0_x;
9522         STORE_F ITEM_DATALINK_SET,      parm1_x;
9523         CALL2           Raise_DataEvent;
9524         CALL0           CtCall_Action;
9525         DONE;
9526 }
9527
9528 float(float pKey, float pAscii) Item_Slider_Key = asm
9529 {
9530 local float lValue;
9531 local float lPos;
9532 local float temp_0;
9533 local float temp_1;
9534 local vector temp_2;
9535 local vector temp_3;
9536 local float temp_5;
9537         INDIRECT_E      self,   _target,        temp_0;
9538         IF              temp_0, 2;
9539         RETURN  KEY_GAME;
9540         GOTO            73;
9541         INDIRECT_E      self,   _target,        temp_0;
9542         INDIRECT_F      temp_0, stepValue,      temp_0;
9543         SUB_F           KEY_GAME,       temp_0, parm0_x;
9544         CALL1           _IS_Change;
9545         RETURN  FILE_APPEND;
9546         GOTO            73;
9547         INDIRECT_E      self,   _target,        temp_0;
9548         INDIRECT_F      temp_0, stepValue,      parm0_x;
9549         CALL1           _IS_Change;
9550         RETURN  FILE_APPEND;
9551         GOTO            68;
9552         INDIRECT_V      self,   pos_x,  temp_2;
9553         INDIRECT_V      self,   size_x, temp_3;
9554         STORE_V Menu_Cursor_Position,   parm0;
9555         STORE_V temp_2, parm1;
9556         STORE_V temp_3, parm2;
9557         CALL3           Util_InRect;
9558         IF              return_x,       2;
9559         RETURN  KEY_GAME;
9560         INDIRECT_F      self,   pos_x,  temp_0;
9561         SUB_F           Menu_Cursor_Position_x, temp_0, temp_0;
9562         INDIRECT_F      self,   size_x, temp_1;
9563         DIV_F           temp_0, temp_1, lPos;
9564         INDIRECT_F      self,   proportions_x,  temp_0;
9565         LE              lPos,   temp_0, temp_0;
9566         IFNOT           temp_0, 6;
9567         INDIRECT_E      self,   _target,        temp_0;
9568         INDIRECT_F      temp_0, stepValue,      temp_0;
9569         SUB_F           KEY_GAME,       temp_0, parm0_x;
9570         CALL1           _IS_Change;
9571         GOTO            41;
9572         INDIRECT_F      self,   proportions_x,  temp_0;
9573         INDIRECT_F      self,   proportions_y,  temp_1;
9574         ADD_F           temp_0, temp_1, temp_0;
9575         LE              lPos,   temp_0, temp_0;
9576         IFNOT           temp_0, 2;
9577         INDIRECT_F      self,   proportions_y,  temp_1;
9578         AND             temp_0, temp_1, temp_0;
9579         IFNOT           temp_0, 30;
9580         INDIRECT_F      self,   pos_x,  temp_0;
9581         SUB_F           Menu_Cursor_Position_x, temp_0, temp_0;
9582         INDIRECT_F      self,   sizeSlider_x,   temp_1;
9583         DIV_F           temp_1, KEY_MENU,       temp_1;
9584         SUB_F           temp_0, temp_1, temp_0;
9585         INDIRECT_F      self,   size_x, temp_1;
9586         INDIRECT_F      self,   proportions_x,  temp_5;
9587         MUL_F           temp_1, temp_5, temp_1;
9588         SUB_F           temp_0, temp_1, lValue;
9589         INDIRECT_F      self,   size_x, temp_0;
9590         INDIRECT_F      self,   proportions_y,  temp_1;
9591         MUL_F           temp_0, temp_1, temp_0;
9592         INDIRECT_F      self,   sizeSlider_x,   temp_1;
9593         SUB_F           temp_0, temp_1, temp_0;
9594         DIV_F           lValue, temp_0, lValue;
9595         INDIRECT_E      self,   _target,        temp_0;
9596         INDIRECT_F      temp_0, maxValue,       temp_0;
9597         INDIRECT_E      self,   _target,        temp_1;
9598         INDIRECT_F      temp_1, minValue,       temp_1;
9599         SUB_F           temp_0, temp_1, temp_0;
9600         MUL_F           lValue, temp_0, temp_0;
9601         INDIRECT_E      self,   _target,        temp_1;
9602         INDIRECT_F      temp_1, minValue,       temp_1;
9603         ADD_F           temp_0, temp_1, lValue;
9604         INDIRECT_E      self,   _target,        temp_0;
9605         INDIRECT_F      temp_0, _realValue,     temp_0;
9606         SUB_F           lValue, temp_0, parm0_x;
9607         CALL1           _IS_Change;
9608         GOTO            4;
9609         INDIRECT_E      self,   _target,        temp_0;
9610         INDIRECT_F      temp_0, stepValue,      parm0_x;
9611         CALL1           _IS_Change;
9612         RETURN  FILE_APPEND;
9613         EQ_F            pKey,   K_LEFTARROW,    temp_0;
9614         IF              temp_0, -73;
9615         EQ_F            pKey,   K_RIGHTARROW,   temp_0;
9616         IF              temp_0, -69;
9617         EQ_F            pKey,   K_MOUSE1,       temp_0;
9618         IF              temp_0, -66;
9619         RETURN  KEY_GAME;
9620         DONE;
9621 }
9622
9623 void() Item_Slider_Destroy = asm
9624 {
9625         CALL0           CtCall_Destroy;
9626         CALL0           Item_DataUser_Destroy;
9627         STORE_F self,   parm0_x;
9628         STORE_F picture,        parm1_x;
9629         CALL2           String_EntityFree;
9630         STORE_F self,   parm0_x;
9631         STORE_F pictureSlider,  parm1_x;
9632         CALL2           String_EntityFree;
9633         STORE_F self,   parm0_x;
9634         STORE_F soundSelected,  parm1_x;
9635         CALL2           String_EntityFree;
9636         STORE_F self,   parm0_x;
9637         STORE_F soundIncrease,  parm1_x;
9638         CALL2           String_EntityFree;
9639         STORE_F self,   parm0_x;
9640         STORE_F soundDecrease,  parm1_x;
9641         CALL2           String_EntityFree;
9642         DONE;
9643 }
9644
9645 void() Item_Slider_Spawn = asm
9646 {
9647 local float locked_1292;
9648 local float temp_0;
9649         STORE_F self,   parm0_x;
9650         STORE_F picture,        parm1_x;
9651         CALL2           String_EntityZone;
9652         STORE_F self,   parm0_x;
9653         STORE_F pictureSlider,  parm1_x;
9654         CALL2           String_EntityZone;
9655         STORE_F self,   parm0_x;
9656         STORE_F soundSelected,  parm1_x;
9657         CALL2           String_EntityZone;
9658         STORE_F self,   parm0_x;
9659         STORE_F soundIncrease,  parm1_x;
9660         CALL2           String_EntityZone;
9661         STORE_F self,   parm0_x;
9662         STORE_F soundDecrease,  parm1_x;
9663         CALL2           String_EntityZone;
9664         CALL0           Item_DataUser_Init;
9665         INDIRECT_S      self,   picture,        parm0_x;
9666         CALL1           Gfx_Precache;
9667         INDIRECT_S      self,   pictureSlider,  parm0_x;
9668         CALL1           Gfx_Precache;
9669         INDIRECT_S      self,   soundSelected,  parm0_x;
9670         CALL1           Sound_Precache;
9671         INDIRECT_S      self,   soundIncrease,  parm0_x;
9672         CALL1           Sound_Precache;
9673         INDIRECT_S      self,   soundDecrease,  parm0_x;
9674         CALL1           Sound_Precache;
9675         INDIRECT_V      self,   size_x, locked_1292;
9676         EQ_V            locked_1292,    '0.000000 0.000000 0.000000',   temp_0;
9677         IFNOT           temp_0, 5;
9678         ADDRESS self,   size_x, locked_1292;
9679         INDIRECT_S      self,   picture,        parm0_x;
9680         CALL1           Gfx_GetImageSize;
9681         STOREP_V        return_x,       locked_1292;
9682         INDIRECT_V      self,   sizeSlider_x,   locked_1292;
9683         EQ_V            locked_1292,    '0.000000 0.000000 0.000000',   temp_0;
9684         IFNOT           temp_0, 5;
9685         ADDRESS self,   sizeSlider_x,   locked_1292;
9686         INDIRECT_S      self,   pictureSlider,  parm0_x;
9687         CALL1           Gfx_GetImageSize;
9688         STOREP_V        return_x,       locked_1292;
9689         ADDRESS self,   _reinit,        temp_0;
9690         STOREP_FNC      CtCall_Reinit,  temp_0;
9691         ADDRESS self,   _destroy,       temp_0;
9692         STOREP_FNC      Item_Slider_Destroy,    temp_0;
9693         ADDRESS self,   _key,   temp_0;
9694         STOREP_FNC      Item_Slider_Key,        temp_0;
9695         ADDRESS self,   _draw,  temp_0;
9696         STOREP_FNC      Item_Slider_Draw,       temp_0;
9697         ADDRESS self,   _select,        temp_0;
9698         STOREP_FNC      Item_Slider_Select,     temp_0;
9699         ADDRESS self,   _update,        temp_0;
9700         STOREP_FNC      Item_DataUser_Update,   temp_0;
9701         CALL0           CtCall_Init;
9702         DONE;
9703 }
9704
9705 void() Item_ValueButton_Update = asm
9706 {
9707 local float temp_0;
9708 local vector temp_2;
9709         CALL0           Item_DataUser_Update;
9710         INDIRECT_E      self,   _target,        parm0_x;
9711         STORE_F ITEM_DATALINK_GET,      parm1_x;
9712         CALL2           Raise_DataEvent;
9713         INDIRECT_E      self,   _target,        temp_0;
9714         INDIRECT_S      temp_0, value,  temp_0;
9715         STORE_F self,   parm0_x;
9716         STORE_F normal, parm1_x;
9717         STORE_F temp_0, parm2_x;
9718         CALL3           String_EntitySet;
9719         ADDRESS self,   size_x, temp_2_x;
9720         STOREP_V        '0.000000 0.000000 0.000000',   temp_2;
9721         CALL0           Item_Button_Update;
9722         DONE;
9723 }
9724
9725 void() Item_ValueButton_Destroy = asm
9726 {
9727         CALL0           Item_DataUser_Destroy;
9728         CALL0           Item_Button_Destroy;
9729         DONE;
9730 }
9731
9732 void() Item_ValueButton_Spawn = asm
9733 {
9734 local float temp_0;
9735         CALL0           Item_DataUser_Init;
9736         CALL0           Item_Button_Spawn;
9737         ADDRESS self,   _destroy,       temp_0;
9738         STOREP_FNC      Item_ValueButton_Destroy,       temp_0;
9739         ADDRESS self,   _update,        temp_0;
9740         STOREP_FNC      Item_ValueButton_Update,        temp_0;
9741         DONE;
9742 }
9743
9744 float(float pKey, float pAscii) Item_FloatingArea_Key = asm
9745 {
9746 local float temp_0;
9747 local float temp_1;
9748         EQ_F            pKey,   K_MOUSE1,       temp_0;
9749         IF              temp_0, 2;
9750         EQ_F            pKey,   K_ENTER,        temp_1;
9751         OR              temp_0, temp_1, temp_0;
9752         IFNOT           temp_0, 11;
9753         INDIRECT_F      self,   _state, temp_0;
9754         NE_F            temp_0, ITEM_STATE_PRESSED,     temp_0;
9755         IFNOT           temp_0, 4;
9756         ADDRESS self,   _state, temp_0;
9757         STOREP_F        ITEM_STATE_PRESSED,     temp_0;
9758         GOTO            3;
9759         ADDRESS self,   _state, temp_0;
9760         STOREP_F        ITEM_STATE_NORMAL,      temp_0;
9761         RETURN  FILE_APPEND;
9762         GOTO            5;
9763         EQ_F            pKey,   K_ESCAPE,       temp_0;
9764         IFNOT           temp_0, 3;
9765         ADDRESS self,   _state, temp_0;
9766         STOREP_F        ITEM_STATE_NORMAL,      temp_0;
9767         RETURN  KEY_GAME;
9768         DONE;
9769 }
9770
9771 void() Item_FloatingArea_Update = asm
9772 {
9773 local float locked_1586;
9774 local float temp_1;
9775 local vector temp_2;
9776 local vector temp_3;
9777         INDIRECT_S      self,   target, locked_1586;
9778         NOT_S           locked_1586,    locked_1586;
9779         IFNOT           locked_1586,    5;
9780         ADDRESS self,   _state, locked_1586;
9781         STOREP_F        ITEM_STATE_NORMAL,      locked_1586;
9782         RETURN  offset_0;
9783         GOTO            10;
9784         INDIRECT_S      self,   target, locked_1586;
9785         INDIRECT_E      self,   _target,        temp_1;
9786         INDIRECT_S      temp_1, name,   temp_1;
9787         NE_S            locked_1586,    temp_1, locked_1586;
9788         IFNOT           locked_1586,    5;
9789         ADDRESS self,   _target,        locked_1586;
9790         INDIRECT_S      self,   target, parm0_x;
9791         CALL1           Menu_GetItem;
9792         STOREP_ENT      return_x,       locked_1586;
9793         INDIRECT_F      self,   _state, locked_1586;
9794         EQ_F            locked_1586,    ITEM_STATE_PRESSED,     locked_1586;
9795         IFNOT           locked_1586,    8;
9796         INDIRECT_E      self,   _target,        locked_1586;
9797         ADDRESS locked_1586,    pos_x,  temp_2_x;
9798         INDIRECT_E      self,   _target,        locked_1586;
9799         INDIRECT_V      locked_1586,    pos_x,  temp_3;
9800         ADD_V           temp_3, Cursor_Relative,        temp_3;
9801         STOREP_V        temp_3_x,       temp_2;
9802         GOTO            5;
9803         EQ_E            Menu_ActiveItem,        self,   locked_1586;
9804         IFNOT           locked_1586,    3;
9805         ADDRESS self,   _state, locked_1586;
9806         STOREP_F        ITEM_STATE_SELECTED,    locked_1586;
9807         DONE;
9808 }
9809
9810 void () Item_FloatingArea_Destroy;
9811 void() Item_FloatingArea_Destroy = asm
9812 {
9813         STORE_F self,   parm0_x;
9814         STORE_F target, parm1_x;
9815         CALL2           String_EntityFree;
9816         DONE;
9817 }
9818
9819 void (float, float) Item_FloatingArea_Select;
9820 void(float pSelect, float pUser) Item_FloatingArea_Select = asm
9821 {
9822 local float temp_0;
9823 local float temp_1;
9824         NOT_F           pSelect,        temp_0;
9825         IFNOT           temp_0, 3;
9826         INDIRECT_F      self,   _state, temp_1;
9827         EQ_F            temp_1, ITEM_STATE_PRESSED,     temp_1;
9828         AND             temp_0, temp_1, temp_0;
9829         IFNOT           temp_0, 4;
9830         STORE_F self,   parm0_x;
9831         STORE_F KEY_GAME,       parm1_x;
9832         CALL2           Menu_CorrectSelection;
9833         DONE;
9834 }
9835
9836 void() Item_FloatingArea_Spawn = asm
9837 {
9838 local float temp_0;
9839 local float temp_1;
9840         ADDRESS self,   flag,   temp_0;
9841         INDIRECT_F      self,   flag,   temp_1;
9842         BITOR           temp_1, FLAG_CHILDDRAWUPDATEONLY,       temp_1;
9843         STOREP_F        temp_1, temp_0;
9844         STORE_F self,   parm0_x;
9845         STORE_F target, parm1_x;
9846         CALL2           String_EntityZone;
9847         ADDRESS self,   _update,        temp_0;
9848         STOREP_FNC      Item_FloatingArea_Update,       temp_0;
9849         ADDRESS self,   _key,   temp_0;
9850         STOREP_FNC      Item_FloatingArea_Key,  temp_0;
9851         ADDRESS self,   _destroy,       temp_0;
9852         STOREP_FNC      Item_FloatingArea_Destroy,      temp_0;
9853         ADDRESS self,   _select,        temp_0;
9854         STOREP_FNC      Item_FloatingArea_Select,       temp_0;
9855         DONE;
9856 }
9857
9858 float(float pKey, float pAscii) Item_SwitchButton_Key = asm
9859 {
9860 local float temp_0;
9861 local float temp_1;
9862         INDIRECT_E      self,   _target,        temp_0;
9863         IF              temp_0, 2;
9864         RETURN  KEY_GAME;
9865         EQ_F            pKey,   K_SPACE,        temp_0;
9866         IF              temp_0, 2;
9867         EQ_F            pKey,   K_ENTER,        temp_1;
9868         OR              temp_0, temp_1, temp_0;
9869         IF              temp_0, 2;
9870         EQ_F            pKey,   K_MOUSE1,       temp_1;
9871         OR              temp_0, temp_1, temp_0;
9872         IF              temp_0, 2;
9873         EQ_F            pKey,   K_RIGHTARROW,   temp_1;
9874         OR              temp_0, temp_1, temp_0;
9875         IFNOT           temp_0, 28;
9876         INDIRECT_S      self,   soundPressed,   parm0_x;
9877         CALL1           Sound_Play;
9878         ADDRESS self,   _presstime,     temp_0;
9879         STOREP_F        Timer_Time,     temp_0;
9880         INDIRECT_E      self,   _target,        temp_0;
9881         ADDRESS temp_0, _realValue,     temp_0;
9882         INDIRECT_E      self,   _target,        temp_1;
9883         INDIRECT_F      temp_1, _realValue,     temp_1;
9884         ADD_F           temp_1, FILE_APPEND,    temp_1;
9885         STOREP_F        temp_1, temp_0;
9886         INDIRECT_E      self,   _target,        temp_0;
9887         INDIRECT_F      temp_0, _realValue,     temp_0;
9888         INDIRECT_E      self,   _target,        temp_1;
9889         INDIRECT_F      temp_1, maxValue,       temp_1;
9890         GT              temp_0, temp_1, temp_0;
9891         IFNOT           temp_0, 6;
9892         INDIRECT_E      self,   _target,        temp_0;
9893         ADDRESS temp_0, _realValue,     temp_0;
9894         INDIRECT_E      self,   _target,        temp_1;
9895         INDIRECT_F      temp_1, minValue,       temp_1;
9896         STOREP_F        temp_1, temp_0;
9897         INDIRECT_E      self,   _target,        parm0_x;
9898         STORE_F ITEM_DATALINK_SET,      parm1_x;
9899         CALL2           Raise_DataEvent;
9900         CALL0           CtCall_Action;
9901         RETURN  FILE_APPEND;
9902         GOTO            35;
9903         EQ_F            pKey,   K_BACKSPACE,    temp_0;
9904         IF              temp_0, 2;
9905         EQ_F            pKey,   K_MOUSE2,       temp_1;
9906         OR              temp_0, temp_1, temp_0;
9907         IF              temp_0, 2;
9908         EQ_F            pKey,   K_LEFTARROW,    temp_1;
9909         OR              temp_0, temp_1, temp_0;
9910         IFNOT           temp_0, 27;
9911         INDIRECT_S      self,   soundPressed,   parm0_x;
9912         CALL1           Sound_Play;
9913         ADDRESS self,   _presstime,     temp_0;
9914         STOREP_F        Timer_Time,     temp_0;
9915         INDIRECT_E      self,   _target,        temp_0;
9916         ADDRESS temp_0, _realValue,     temp_0;
9917         INDIRECT_E      self,   _target,        temp_1;
9918         INDIRECT_F      temp_1, _realValue,     temp_1;
9919         SUB_F           temp_1, FILE_APPEND,    temp_1;
9920         STOREP_F        temp_1, temp_0;
9921         INDIRECT_E      self,   _target,        temp_0;
9922         INDIRECT_F      temp_0, _realValue,     temp_0;
9923         INDIRECT_E      self,   _target,        temp_1;
9924         INDIRECT_F      temp_1, minValue,       temp_1;
9925         LT              temp_0, temp_1, temp_0;
9926         IFNOT           temp_0, 6;
9927         INDIRECT_E      self,   _target,        temp_0;
9928         ADDRESS temp_0, _realValue,     temp_0;
9929         INDIRECT_E      self,   _target,        temp_1;
9930         INDIRECT_F      temp_1, maxValue,       temp_1;
9931         STOREP_F        temp_1, temp_0;
9932         INDIRECT_E      self,   _target,        parm0_x;
9933         STORE_F ITEM_DATALINK_SET,      parm1_x;
9934         CALL2           Raise_DataEvent;
9935         CALL0           CtCall_Action;
9936         RETURN  FILE_APPEND;
9937         RETURN  KEY_GAME;
9938         DONE;
9939 }
9940
9941 void() Item_SwitchButton_Spawn = asm
9942 {
9943 local float temp_0;
9944         CALL0           Item_ValueButton_Spawn;
9945         ADDRESS self,   _key,   temp_0;
9946         STOREP_FNC      Item_SwitchButton_Key,  temp_0;
9947         DONE;
9948 }
9949
9950 float _VSB_UP_HEIGHT;
9951 float _VSB_DOWN_HEIGHT;
9952 float _VSB_PRECISION;
9953 float _VSB_MINHEIGHT;
9954 float _VSB_CLICKAREA_COLOR_x;
9955 float _VSB_CLICKAREA_COLOR_y;
9956 float _VSB_CLICKAREA_COLOR_z;
9957 vector _VSB_CLICKAREA_COLOR;
9958 float _VSB_SCOLLER_COLOR_x;
9959 float _VSB_SCOLLER_COLOR_y;
9960 float _VSB_SCOLLER_COLOR_z;
9961 vector _VSB_SCOLLER_COLOR;
9962 float _VSB_SCROLLAREA_COLOR_x;
9963 float _VSB_SCROLLAREA_COLOR_y;
9964 float _VSB_SCROLLAREA_COLOR_z;
9965 vector _VSB_SCROLLAREA_COLOR;
9966 float () _IVSB_GetSizeOfScroller;
9967 float() _IVSB_GetSizeOfScroller = asm
9968 {
9969 local float lScrollerSize;
9970 local float lTotalSize;
9971 local float lVisibleSize;
9972 local float lScrollerRange;
9973 local float temp_0;
9974         INDIRECT_E      self,   _target,        temp_0;
9975         INDIRECT_E      temp_0, _child, temp_0;
9976         INDIRECT_F      temp_0, size_y, lTotalSize;
9977         INDIRECT_F      self,   size_y, lVisibleSize;
9978         INDIRECT_F      self,   size_y, temp_0;
9979         SUB_F           temp_0, _VSB_UP_HEIGHT, temp_0;
9980         SUB_F           temp_0, _VSB_UP_HEIGHT, lScrollerRange;
9981         MUL_F           lVisibleSize,   lScrollerRange, temp_0;
9982         DIV_F           temp_0, lTotalSize,     lScrollerSize;
9983         STORE_F _VSB_MINHEIGHT, parm0_x;
9984         STORE_F lScrollerSize,  parm1_x;
9985         CALL2           max;
9986         STORE_F return_x,       lScrollerSize;
9987         RETURN  lScrollerSize;
9988         DONE;
9989 }
9990
9991 void() Item_VScrollBar_Draw = asm
9992 {
9993 local vector lSize;
9994 local vector lPosition;
9995 local float temp_0;
9996 local float temp_1;
9997 local vector temp_2;
9998 local float temp_5;
9999 local float temp_6;
10000         INDIRECT_E      self,   _target,        temp_0;
10001         EQ_E            temp_0, null_entity,    temp_0;
10002         IFNOT           temp_0, 2;
10003         RETURN  offset_0;
10004         INDIRECT_V      self,   pos_x,  lPosition;
10005         INDIRECT_V      self,   size_x, lSize;
10006         STORE_F _VSB_UP_HEIGHT, lSize_y;
10007         STORE_V lPosition,      parm0;
10008         STORE_V lSize,  parm1;
10009         STORE_V _VSB_CLICKAREA_COLOR,   parm2;
10010         STORE_F FILE_APPEND,    parm3_x;
10011         STORE_F KEY_GAME,       parm4_x;
10012         CALL5           Menu_Fill;
10013         INDIRECT_F      self,   pos_y,  temp_0;
10014         ADD_F           temp_0, _VSB_UP_HEIGHT, lPosition_y;
10015         INDIRECT_F      self,   size_y, temp_0;
10016         SUB_F           temp_0, _VSB_UP_HEIGHT, temp_0;
10017         SUB_F           temp_0, _VSB_UP_HEIGHT, lSize_y;
10018         STORE_V lPosition,      parm0;
10019         STORE_V lSize,  parm1;
10020         STORE_V _VSB_SCROLLAREA_COLOR,  parm2;
10021         STORE_F FILE_APPEND,    parm3_x;
10022         STORE_F KEY_GAME,       parm4_x;
10023         CALL5           Menu_Fill;
10024         INDIRECT_F      self,   pos_y,  temp_0;
10025         INDIRECT_F      self,   size_y, temp_1;
10026         ADD_F           temp_0, temp_1, temp_0;
10027         SUB_F           temp_0, _VSB_UP_HEIGHT, lPosition_y;
10028         STORE_F _VSB_UP_HEIGHT, lSize_y;
10029         STORE_V lPosition,      parm0;
10030         STORE_V lSize,  parm1;
10031         STORE_V _VSB_CLICKAREA_COLOR,   parm2;
10032         STORE_F FILE_APPEND,    parm3_x;
10033         STORE_F KEY_GAME,       parm4_x;
10034         CALL5           Menu_Fill;
10035         CALL0           _IVSB_GetSizeOfScroller;
10036         STORE_F return_x,       lSize_y;
10037         INDIRECT_F      self,   pos_y,  temp_0;
10038         ADD_F           temp_0, _VSB_UP_HEIGHT, temp_0;
10039         INDIRECT_E      self,   _target,        temp_1;
10040         INDIRECT_F      temp_1, origin_y,       temp_1;
10041         INDIRECT_F      self,   size_y, temp_5;
10042         SUB_F           temp_5, _VSB_UP_HEIGHT, temp_5;
10043         SUB_F           temp_5, _VSB_UP_HEIGHT, temp_5;
10044         SUB_F           temp_5, lSize_y,        temp_5;
10045         MUL_F           temp_1, temp_5, temp_1;
10046         INDIRECT_E      self,   _target,        temp_5;
10047         INDIRECT_E      temp_5, _child, temp_5;
10048         INDIRECT_F      temp_5, size_y, temp_5;
10049         INDIRECT_F      self,   size_y, temp_6;
10050         SUB_F           temp_5, temp_6, temp_5;
10051         DIV_F           temp_1, temp_5, temp_1;
10052         SUB_F           temp_0, temp_1, lPosition_y;
10053         STORE_V lPosition,      parm0;
10054         STORE_V lSize,  parm1;
10055         STORE_V _VSB_SCOLLER_COLOR,     parm2;
10056         STORE_F FILE_APPEND,    parm3_x;
10057         STORE_F KEY_GAME,       parm4_x;
10058         CALL5           Menu_Fill;
10059         DONE;
10060 }
10061
10062 void () _IVSB_RangeBound;
10063 void() _IVSB_RangeBound = asm
10064 {
10065 local float locked_1586;
10066 local float temp_1;
10067 local float temp_5;
10068         INDIRECT_E      self,   _target,        locked_1586;
10069         ADDRESS locked_1586,    origin_y,       locked_1586;
10070         INDIRECT_E      self,   _target,        temp_1;
10071         INDIRECT_E      temp_1, _child, temp_1;
10072         INDIRECT_F      temp_1, size_y, temp_1;
10073         INDIRECT_F      self,   size_y, temp_5;
10074         SUB_F           temp_1, temp_5, temp_1;
10075         SUB_F           KEY_GAME,       temp_1, temp_1;
10076         INDIRECT_E      self,   _target,        temp_5;
10077         INDIRECT_F      temp_5, origin_y,       temp_5;
10078         STORE_F temp_1, parm0_x;
10079         STORE_F temp_5, parm1_x;
10080         STORE_F KEY_GAME,       parm2_x;
10081         CALL3           bound;
10082         STOREP_F        return_x,       locked_1586;
10083         DONE;
10084 }
10085
10086 void () _IVSB_ScrollUp;
10087 void() _IVSB_ScrollUp = asm
10088 {
10089 local float temp_0;
10090 local float temp_1;
10091         INDIRECT_E      self,   _target,        temp_0;
10092         ADDRESS temp_0, origin_y,       temp_0;
10093         INDIRECT_E      self,   _target,        temp_1;
10094         INDIRECT_F      temp_1, origin_y,       temp_1;
10095         ADD_F           temp_1, SLIST_SERVERREPLYCOUNT, temp_1;
10096         STOREP_F        temp_1, temp_0;
10097         CALL0           _IVSB_RangeBound;
10098         DONE;
10099 }
10100
10101 void () _IVSB_ScrollDown;
10102 void() _IVSB_ScrollDown = asm
10103 {
10104 local float temp_0;
10105 local float temp_1;
10106         INDIRECT_E      self,   _target,        temp_0;
10107         ADDRESS temp_0, origin_y,       temp_0;
10108         INDIRECT_E      self,   _target,        temp_1;
10109         INDIRECT_F      temp_1, origin_y,       temp_1;
10110         SUB_F           temp_1, SLIST_SERVERREPLYCOUNT, temp_1;
10111         STOREP_F        temp_1, temp_0;
10112         CALL0           _IVSB_RangeBound;
10113         DONE;
10114 }
10115
10116 void (float) _IVSB_MouseSelect;
10117 void(float lLevel) _IVSB_MouseSelect = asm
10118 {
10119 local float lScrollerSize;
10120 local float lTotalSize;
10121 local float lVisibleSize;
10122 local float lScrollerRange;
10123 local float temp_0;
10124 local float temp_1;
10125 local float temp_5;
10126         INDIRECT_E      self,   _target,        temp_0;
10127         INDIRECT_E      temp_0, _child, temp_0;
10128         INDIRECT_F      temp_0, size_y, lTotalSize;
10129         INDIRECT_F      self,   size_y, lVisibleSize;
10130         INDIRECT_F      self,   size_y, temp_0;
10131         SUB_F           temp_0, _VSB_UP_HEIGHT, temp_0;
10132         SUB_F           temp_0, _VSB_UP_HEIGHT, lScrollerRange;
10133         CALL0           _IVSB_GetSizeOfScroller;
10134         STORE_F return_x,       lScrollerSize;
10135         SUB_F           lLevel, _VSB_UP_HEIGHT, temp_0;
10136         DIV_F           lScrollerSize,  KEY_MENU,       temp_1;
10137         SUB_F           temp_0, temp_1, lLevel;
10138         INDIRECT_E      self,   _target,        temp_0;
10139         ADDRESS temp_0, origin_y,       temp_0;
10140         SUB_F           lTotalSize,     lVisibleSize,   temp_1;
10141         MUL_F           lLevel, temp_1, temp_1;
10142         SUB_F           lScrollerRange, lScrollerSize,  temp_5;
10143         DIV_F           temp_1, temp_5, temp_1;
10144         SUB_F           KEY_GAME,       temp_1, temp_1;
10145         STOREP_F        temp_1, temp_0;
10146         CALL0           _IVSB_RangeBound;
10147         DONE;
10148 }
10149
10150 float(float pKey, float Ascii) Item_VScrollBar_Key = asm
10151 {
10152 local float lLevel;
10153 local float temp_0;
10154 local vector temp_2;
10155 local vector temp_3;
10156         INDIRECT_E      self,   _target,        temp_0;
10157         EQ_E            temp_0, null_entity,    temp_0;
10158         IFNOT           temp_0, 2;
10159         RETURN  KEY_GAME;
10160         EQ_F            pKey,   K_UPARROW,      temp_0;
10161         IFNOT           temp_0, 4;
10162         CALL0           _IVSB_ScrollUp;
10163         RETURN  FILE_APPEND;
10164         GOTO            41;
10165         EQ_F            pKey,   K_DOWNARROW,    temp_0;
10166         IFNOT           temp_0, 4;
10167         CALL0           _IVSB_ScrollDown;
10168         RETURN  FILE_APPEND;
10169         GOTO            36;
10170         EQ_F            pKey,   K_MOUSE1,       temp_0;
10171         IFNOT           temp_0, 25;
10172         INDIRECT_V      self,   pos_x,  temp_2;
10173         INDIRECT_V      self,   size_x, temp_3;
10174         STORE_V Menu_Cursor_Position,   parm0;
10175         STORE_V temp_2, parm1;
10176         STORE_V temp_3, parm2;
10177         CALL3           Util_InRect;
10178         IF              return_x,       2;
10179         RETURN  KEY_GAME;
10180         INDIRECT_F      self,   pos_y,  temp_0;
10181         SUB_F           Menu_Cursor_Position_y, temp_0, lLevel;
10182         LT              lLevel, _VSB_UP_HEIGHT, temp_0;
10183         IFNOT           temp_0, 3;
10184         CALL0           _IVSB_ScrollUp;
10185         GOTO            9;
10186         INDIRECT_F      self,   size_y, temp_0;
10187         SUB_F           temp_0, _VSB_UP_HEIGHT, temp_0;
10188         GE              lLevel, temp_0, temp_0;
10189         IFNOT           temp_0, 3;
10190         CALL0           _IVSB_ScrollDown;
10191         GOTO            3;
10192         STORE_F lLevel, parm0_x;
10193         CALL1           _IVSB_MouseSelect;
10194         RETURN  FILE_APPEND;
10195         GOTO            10;
10196         EQ_F            pKey,   K_MWHEELUP,     temp_0;
10197         IFNOT           temp_0, 4;
10198         CALL0           _IVSB_ScrollUp;
10199         RETURN  FILE_APPEND;
10200         GOTO            5;
10201         EQ_F            pKey,   K_MWHEELDOWN,   temp_0;
10202         IFNOT           temp_0, 3;
10203         CALL0           _IVSB_ScrollDown;
10204         RETURN  FILE_APPEND;
10205         RETURN  KEY_GAME;
10206         DONE;
10207 }
10208
10209 void() Item_VScrollBar_Update = asm
10210 {
10211 local float locked_1586;
10212 local float temp_1;
10213         INDIRECT_S      self,   target, locked_1586;
10214         EQ_S            locked_1586,    "",     locked_1586;
10215         IFNOT           locked_1586,    4;
10216         ADDRESS self,   _target,        locked_1586;
10217         STOREP_ENT      null_entity,    locked_1586;
10218         GOTO            10;
10219         INDIRECT_S      self,   target, locked_1586;
10220         INDIRECT_E      self,   _target,        temp_1;
10221         INDIRECT_S      temp_1, name,   temp_1;
10222         NE_S            locked_1586,    temp_1, locked_1586;
10223         IFNOT           locked_1586,    5;
10224         ADDRESS self,   _target,        locked_1586;
10225         INDIRECT_S      self,   target, parm0_x;
10226         CALL1           Menu_GetItem;
10227         STOREP_ENT      return_x,       locked_1586;
10228         INDIRECT_E      self,   _target,        locked_1586;
10229         EQ_E            locked_1586,    null_entity,    locked_1586;
10230         IFNOT           locked_1586,    2;
10231         RETURN  offset_0;
10232         ADDRESS self,   size_y, locked_1586;
10233         INDIRECT_E      self,   _target,        temp_1;
10234         INDIRECT_F      temp_1, size_y, temp_1;
10235         STOREP_F        temp_1, locked_1586;
10236         INDIRECT_F      self,   size_y, locked_1586;
10237         INDIRECT_E      self,   _target,        temp_1;
10238         INDIRECT_E      temp_1, _child, temp_1;
10239         INDIRECT_F      temp_1, size_y, temp_1;
10240         GE              locked_1586,    temp_1, locked_1586;
10241         IFNOT           locked_1586,    6;
10242         ADDRESS self,   flag,   locked_1586;
10243         INDIRECT_F      self,   flag,   temp_1;
10244         BITOR           temp_1, FLAG_HIDDEN,    temp_1;
10245         STOREP_F        temp_1, locked_1586;
10246         GOTO            8;
10247         INDIRECT_F      self,   flag,   locked_1586;
10248         BITAND  locked_1586,    FLAG_HIDDEN,    locked_1586;
10249         IFNOT           locked_1586,    5;
10250         ADDRESS self,   flag,   locked_1586;
10251         INDIRECT_F      self,   flag,   temp_1;
10252         SUB_F           temp_1, FLAG_HIDDEN,    temp_1;
10253         STOREP_F        temp_1, locked_1586;
10254         DONE;
10255 }
10256
10257 void () Item_VScrollBar_Destroy;
10258 void() Item_VScrollBar_Destroy = asm
10259 {
10260         STORE_F self,   parm0_x;
10261         STORE_F target, parm1_x;
10262         CALL2           String_EntityFree;
10263         DONE;
10264 }
10265
10266 void() Item_VScrollBar_Spawn = asm
10267 {
10268 local float temp_0;
10269         STORE_F self,   parm0_x;
10270         STORE_F target, parm1_x;
10271         CALL2           String_EntityZone;
10272         CALL0           Item_VScrollBar_Update;
10273         ADDRESS self,   _update,        temp_0;
10274         STOREP_FNC      Item_VScrollBar_Update, temp_0;
10275         ADDRESS self,   _key,   temp_0;
10276         STOREP_FNC      Item_VScrollBar_Key,    temp_0;
10277         ADDRESS self,   _draw,  temp_0;
10278         STOREP_FNC      Item_VScrollBar_Draw,   temp_0;
10279         ADDRESS self,   _destroy,       temp_0;
10280         STOREP_FNC      Item_VScrollBar_Destroy,        temp_0;
10281         DONE;
10282 }
10283
10284 void() Item_Cinematic_Destroy = asm
10285 {
10286 local float temp_0;
10287         INDIRECT_S      self,   normal, parm0_x;
10288         CALL1           cin_close;
10289         STORE_F self,   parm0_x;
10290         STORE_F link,   parm1_x;
10291         CALL2           String_EntityFree;
10292         STORE_F self,   parm0_x;
10293         STORE_F normal, parm1_x;
10294         CALL2           String_EntityFree;
10295         DONE;
10296 }
10297
10298 void() Item_Cinematic_Init = asm
10299 {
10300 local float temp_0;
10301 local float temp_1;
10302         ADDRESS self,   flag,   temp_0;
10303         INDIRECT_F      self,   flag,   temp_1;
10304         BITOR           temp_1, FLAG_HIDDEN,    temp_1;
10305         STOREP_F        temp_1, temp_0;
10306         STORE_F self,   parm0_x;
10307         STORE_F link,   parm1_x;
10308         CALL2           String_EntityZone;
10309         STORE_F self,   parm0_x;
10310         STORE_F normal, parm1_x;
10311         CALL2           String_EntityZone;
10312         INDIRECT_S      self,   link,   temp_0;
10313         INDIRECT_S      self,   normal, temp_1;
10314         STORE_F temp_0, parm0_x;
10315         STORE_F temp_1, parm1_x;
10316         CALL2           cin_open;
10317         ADDRESS self,   _destroy,       temp_0;
10318         STOREP_FNC      Item_Cinematic_Destroy, temp_0;
10319         DONE;
10320 }
10321
10322 void() Item_Cinematic_Loop_Spawn = asm
10323 {
10324 local float temp_0;
10325         CALL0           Item_Cinematic_Init;
10326         INDIRECT_S      self,   normal, parm0_x;
10327         STORE_F KEY_MENU,       parm1_x;
10328         CALL2           cin_setstate;
10329         DONE;
10330 }
10331
10332 void() Item_Container_Spawn = asm
10333 {
10334 local float temp_0;
10335 local float temp_1;
10336         ADDRESS self,   flag,   temp_0;
10337         INDIRECT_F      self,   flag,   temp_1;
10338         BITOR           temp_1, FLAG_HIDDEN,    temp_1;
10339         STOREP_F        temp_1, temp_0;
10340         DONE;
10341 }
10342
10343 void () Item_Custom_Spawn;
10344 void() Item_Custom_Spawn = asm
10345 {
10346 local float temp_0;
10347         ADDRESS self,   _reinit,        temp_0;
10348         STOREP_FNC      CtCall_Reinit,  temp_0;
10349         ADDRESS self,   _destroy,       temp_0;
10350         STOREP_FNC      CtCall_Destroy, temp_0;
10351         ADDRESS self,   _key,   temp_0;
10352         STOREP_FNC      CtCall_Key,     temp_0;
10353         ADDRESS self,   _draw,  temp_0;
10354         STOREP_FNC      CtCall_Draw,    temp_0;
10355         ADDRESS self,   _mouseEnter,    temp_0;
10356         STOREP_FNC      CtCall_MouseEnter,      temp_0;
10357         ADDRESS self,   _mouseLeave,    temp_0;
10358         STOREP_FNC      CtCall_MouseLeave,      temp_0;
10359         ADDRESS self,   _select,        temp_0;
10360         STOREP_FNC      CtCall_Select,  temp_0;
10361         ADDRESS self,   _update,        temp_0;
10362         STOREP_FNC      CtCall_Update,  temp_0;
10363         CALL0           CtCall_Init;
10364         DONE;
10365 }
10366
10367 void() Item_Link_Update = asm
10368 {
10369 local float locked_1586;
10370 local float temp_1;
10371         INDIRECT_S      self,   link,   locked_1586;
10372         EQ_S            locked_1586,    "",     locked_1586;
10373         IFNOT           locked_1586,    4;
10374         ADDRESS self,   _link,  locked_1586;
10375         STOREP_ENT      null_entity,    locked_1586;
10376         GOTO            14;
10377         INDIRECT_S      self,   link,   locked_1586;
10378         INDIRECT_E      self,   _link,  temp_1;
10379         INDIRECT_S      temp_1, name,   temp_1;
10380         NE_S            locked_1586,    temp_1, locked_1586;
10381         IFNOT           locked_1586,    9;
10382         ADDRESS self,   _link,  locked_1586;
10383         INDIRECT_S      self,   link,   parm0_x;
10384         CALL1           Menu_GetItem;
10385         STOREP_ENT      return_x,       locked_1586;
10386         ADDRESS self,   flag,   locked_1586;
10387         INDIRECT_F      self,   flag,   temp_1;
10388         BITOR           temp_1, FLAG_NOSELECT,  temp_1;
10389         STOREP_F        temp_1, locked_1586;
10390         DONE;
10391 }
10392
10393 float(float pKey, float pAscii) Item_Link_Key = asm
10394 {
10395 local float temp_0;
10396         INDIRECT_E      self,   _link,  temp_0;
10397         IFNOT           temp_0, 6;
10398         INDIRECT_E      self,   _link,  parm0_x;
10399         STORE_F pKey,   parm1_x;
10400         STORE_F pAscii, parm2_x;
10401         CALL3           Raise_Key;
10402         RETURN  return_x;
10403         RETURN  KEY_GAME;
10404         DONE;
10405 }
10406
10407 void() Item_Link_MouseEnter = asm
10408 {
10409 local float temp_0;
10410 local float temp_1;
10411         INDIRECT_E      self,   _link,  temp_0;
10412         IFNOT           temp_0, 5;
10413         INDIRECT_E      self,   _link,  temp_1;
10414         INDIRECT_F      temp_1, _runFlag,       temp_1;
10415         BITAND  temp_1, RUNFLAG_NOSELECT,       temp_1;
10416         NOT_F           temp_1, temp_1;
10417         AND             temp_0, temp_1, temp_0;
10418         IFNOT           temp_0, 4;
10419         INDIRECT_E      self,   _link,  parm0_x;
10420         STORE_F FILE_APPEND,    parm1_x;
10421         CALL2           Menu_Select;
10422         DONE;
10423 }
10424
10425 float() Item_Link_IsSelected = asm
10426 {
10427 local float temp_0;
10428         EQ_E            Menu_ActiveItem,        self,   temp_0;
10429         IFNOT           temp_0, 2;
10430         RETURN  FILE_APPEND;
10431         INDIRECT_E      self,   _link,  temp_0;
10432         IFNOT           temp_0, 5;
10433         INDIRECT_E      self,   _link,  temp_0;
10434         EQ_E            Menu_ActiveItem,        temp_0, temp_0;
10435         RETURN  temp_0;
10436         GOTO            2;
10437         RETURN  KEY_GAME;
10438         DONE;
10439 }
10440
10441 void() Item_Link_Destroy = asm
10442 {
10443         STORE_F self,   parm0_x;
10444         STORE_F link,   parm1_x;
10445         CALL2           String_EntityFree;
10446         DONE;
10447 }
10448
10449 void() Item_Link_Init = asm
10450 {
10451 local float temp_0;
10452         STORE_F self,   parm0_x;
10453         STORE_F link,   parm1_x;
10454         CALL2           String_EntityZone;
10455         CALL0           Item_Link_Update;
10456         ADDRESS self,   _destroy,       temp_0;
10457         STOREP_FNC      Item_Link_Destroy,      temp_0;
10458         ADDRESS self,   _key,   temp_0;
10459         STOREP_FNC      Item_Link_Key,  temp_0;
10460         ADDRESS self,   _mouseEnter,    temp_0;
10461         STOREP_FNC      Item_Link_MouseEnter,   temp_0;
10462         ADDRESS self,   _update,        temp_0;
10463         STOREP_FNC      Item_Link_MouseEnter,   temp_0;
10464         DONE;
10465 }
10466
10467 void(entity pEntity, void () pPopFunction) Menu_History_Push = asm
10468 {
10469 local entity lHistory;
10470 local float temp_0;
10471         STORE_FNC       Util_NullFunction,      Menu_KeyHook;
10472         CALL0           spawn;
10473         STORE_ENT       return_x,       lHistory;
10474         ADDRESS lHistory,       type,   temp_0;
10475         STOREP_S        "MMANAGER_HISTORY",     temp_0;
10476         ADDRESS lHistory,       _prev,  temp_0;
10477         STOREP_ENT      Menu_History,   temp_0;
10478         ADDRESS lHistory,       _child, temp_0;
10479         STOREP_ENT      Menu_ActiveItem,        temp_0;
10480         ADDRESS lHistory,       _parent,        temp_0;
10481         STOREP_ENT      Menu_ActiveWindow,      temp_0;
10482         ADDRESS lHistory,       _next,  temp_0;
10483         STOREP_ENT      pEntity,        temp_0;
10484         ADDRESS lHistory,       _destroy,       temp_0;
10485         STOREP_FNC      pPopFunction,   temp_0;
10486         STORE_ENT       lHistory,       Menu_History;
10487         DONE;
10488 }
10489
10490 void() Menu_History_Pop = asm
10491 {
10492 local entity lTemp;
10493 local float temp_0;
10494         EQ_E            Menu_History,   null_entity,    temp_0;
10495         IFNOT           temp_0, 2;
10496         RETURN  offset_0;
10497         STORE_FNC       Util_NullFunction,      Menu_KeyHook;
10498         INDIRECT_E      Menu_History,   _child, Menu_ActiveItem;
10499         INDIRECT_E      Menu_History,   _parent,        Menu_ActiveWindow;
10500         STORE_ENT       Menu_History,   lTemp;
10501         STORE_F lTemp,  parm0_x;
10502         CALL1           Raise_Destroy;
10503         INDIRECT_E      Menu_History,   _prev,  Menu_History;
10504         STORE_F lTemp,  parm0_x;
10505         CALL1           remove;
10506         DONE;
10507 }
10508
10509 float(entity pEntity) Menu_History_Verify = asm
10510 {
10511 local float temp_0;
10512         EQ_E            Menu_History,   null_entity,    temp_0;
10513         IFNOT           temp_0, 2;
10514         RETURN  KEY_GAME;
10515         INDIRECT_E      Menu_History,   _next,  temp_0;
10516         EQ_E            temp_0, pEntity,        temp_0;
10517         IFNOT           temp_0, 2;
10518         RETURN  FILE_APPEND;
10519         RETURN  KEY_GAME;
10520         DONE;
10521 }
10522
10523 void() Menu_History_Clear = asm
10524 {
10525 local entity lEntity;
10526 local float temp_0;
10527         STORE_ENT       null_entity,    lEntity;
10528         STORE_F lEntity,        parm0_x;
10529         STORE_F type,   parm1_x;
10530         STORE_F "MMANAGER_HISTORY",     parm2_x;
10531         CALL3           findstring;
10532         STORE_ENT       return_x,       lEntity;
10533         NE_E            return_x,       null_entity,    temp_0;
10534         IFNOT           temp_0, 4;
10535         STORE_F lEntity,        parm0_x;
10536         CALL1           remove;
10537         GOTO            -9;
10538         STORE_ENT       null_entity,    Menu_History;
10539         DONE;
10540 }
10541
10542 void (float, float) _Menu_Process_Debug_Filter;
10543 void(float pMode, float pSelectState) _Menu_Process_Debug_Filter = asm
10544 {
10545 local float temp_0;
10546 local float temp_1;
10547         IF              sys_debug_process,      3;
10548         STORE_F KEY_GAME,       _menu_process_filtered;
10549         GOTO            5;
10550         IFNOT           sys_debug_process_filter,       3;
10551         BITAND  pMode,  sys_debug_process_filter,       _menu_process_filtered;
10552         GOTO            2;
10553         STORE_F FILE_APPEND,    _menu_process_filtered;
10554         EQ_F            _menu_process_filtered, MENU_PROCESS_MOUSE,     temp_0;
10555         IFNOT           temp_0, 2;
10556         EQ_F            pSelectState,   MENU_SELECT_NEVER,      temp_1;
10557         AND             temp_0, temp_1, temp_0;
10558         IFNOT           temp_0, 2;
10559         STORE_F KEY_GAME,       _menu_process_filtered;
10560         DONE;
10561 }
10562
10563 void() Menu_Process_Setup = asm
10564 {
10565         STORE_V '0.000000 0.000000 0.000000',   Menu_Origin;
10566         STORE_V '0.000000 0.000000 0.000000',   Menu_Clip_Position;
10567         STORE_V '0.000000 0.000000 0.000000',   Menu_Clip_Size;
10568         DONE;
10569 }
10570
10571 void (entity) _Menu_Env_LoadClipArea;
10572 void(entity pItem) _Menu_Env_LoadClipArea = asm
10573 {
10574 local float temp_0;
10575 local float temp_1;
10576 local vector temp_2;
10577         INDIRECT_V      pItem,  _cache_clip_pos_x,      Menu_Clip_Position;
10578         INDIRECT_V      pItem,  _cache_clip_size_x,     Menu_Clip_Size;
10579         IFNOT           sys_debug_mgfx, 1;
10580         AND             sys_debug_mgfx, _menu_process_filtered, temp_0;
10581         IFNOT           temp_0, 14;
10582         STORE_V Menu_Clip_Position,     parm0;
10583         CALL1           vtos;
10584         STORE_V Menu_Clip_Size, parm0;
10585         STORE_F return_x,       temp_0;
10586         CALL1           vtos;
10587         STORE_F return_x,       temp_1;
10588         STORE_F temp_0, return_x;
10589         STORE_F "MGFX Loaded clip area = (",    parm0_x;
10590         STORE_F return_x,       parm1_x;
10591         STORE_F "; ",   parm2_x;
10592         STORE_F temp_1, parm3_x;
10593         STORE_F ")
10594 ",      parm4_x;
10595         CALL5           print;
10596         DONE;
10597 }
10598
10599 void (entity) _Menu_Env_LoadOrigin;
10600 void(entity pItem) _Menu_Env_LoadOrigin = asm
10601 {
10602 local float temp_0;
10603 local vector temp_2;
10604         INDIRECT_V      pItem,  _cache_origin_x,        Menu_Origin;
10605         SUB_V           Cursor_Position,        Menu_Origin,    Menu_Cursor_Position;
10606         IFNOT           sys_debug_mgfx, 1;
10607         AND             sys_debug_mgfx, _menu_process_filtered, temp_0;
10608         IFNOT           temp_0, 7;
10609         STORE_V Menu_Origin,    parm0;
10610         CALL1           vtos;
10611         STORE_F "MGFX Loaded org = ",   parm0_x;
10612         STORE_F return_x,       parm1_x;
10613         STORE_F "
10614 ",      parm2_x;
10615         CALL3           print;
10616         DONE;
10617 }
10618
10619 void (entity) _Menu_Env_Reload;
10620 void(entity pItem) _Menu_Env_Reload = asm
10621 {
10622 local float locked_1585;
10623 local float temp_0;
10624 local vector temp_2;
10625 local float temp_5;
10626         INDIRECT_V      pItem,  _cache_origin_x,        Menu_Origin;
10627         SUB_V           Cursor_Position,        Menu_Origin,    Menu_Cursor_Position;
10628         INDIRECT_V      pItem,  _cache_clip_pos_x,      Menu_Clip_Position;
10629         INDIRECT_V      pItem,  _cache_clip_size_x,     Menu_Clip_Size;
10630         IFNOT           sys_debug_mgfx, 1;
10631         AND             sys_debug_mgfx, _menu_process_filtered, temp_0;
10632         IFNOT           temp_0, 21;
10633         STORE_V Menu_Origin,    parm0;
10634         CALL1           vtos;
10635         STORE_V Menu_Clip_Position,     parm0;
10636         STORE_F return_x,       temp_0;
10637         CALL1           vtos;
10638         STORE_F return_x,       locked_1585;
10639         STORE_F temp_0, return_x;
10640         STORE_V Menu_Clip_Size, parm0;
10641         STORE_F return_x,       temp_0;
10642         CALL1           vtos;
10643         STORE_F return_x,       temp_5;
10644         STORE_F temp_0, return_x;
10645         STORE_F "MGFX Reloaded env for: org = ",        parm0_x;
10646         STORE_F return_x,       parm1_x;
10647         STORE_F "; clip area = (",      parm2_x;
10648         STORE_F locked_1585,    parm3_x;
10649         STORE_F "; ",   parm4_x;
10650         STORE_F temp_5, parm5_x;
10651         STORE_F ")
10652 ",      parm6_x;
10653         CALL7           print;
10654         DONE;
10655 }
10656
10657 void () _MGX_SetClipArea;
10658 void() _MGX_SetClipArea = asm
10659 {
10660 local float temp_0;
10661 local float temp_1;
10662         EQ_V            Menu_Clip_Position,     '0.000000 0.000000 0.000000',   temp_0;
10663         IFNOT           temp_0, 2;
10664         EQ_V            Menu_Clip_Size, '0.000000 0.000000 0.000000',   temp_1;
10665         AND             temp_0, temp_1, temp_0;
10666         IFNOT           temp_0, 3;
10667         CALL0           Gfx_ResetClipArea;
10668         GOTO            6;
10669         STORE_F Menu_Clip_Position_x,   parm0_x;
10670         STORE_F Menu_Clip_Position_y,   parm1_x;
10671         STORE_F Menu_Clip_Size_x,       parm2_x;
10672         STORE_F Menu_Clip_Size_y,       parm3_x;
10673         CALL4           Gfx_SetClipArea;
10674         DONE;
10675 }
10676
10677 void (entity) _Menu_Env_SetupClipArea;
10678 void(entity pItem) _Menu_Env_SetupClipArea = asm
10679 {
10680 local vector lSize;
10681 local vector lPos;
10682 local vector lDelta;
10683 local float temp_0;
10684 local float temp_1;
10685 local vector temp_2;
10686         INDIRECT_V      pItem,  pos_x,  lPos;
10687         INDIRECT_V      pItem,  size_x, lSize;
10688         NE_V            lPos,   '0.000000 0.000000 0.000000',   temp_0;
10689         IF              temp_0, 2;
10690         NE_V            lSize,  '0.000000 0.000000 0.000000',   temp_1;
10691         OR              temp_0, temp_1, temp_0;
10692         IFNOT           temp_0, 22;
10693         NE_V            Menu_Clip_Position,     '0.000000 0.000000 0.000000',   temp_0;
10694         IF              temp_0, 2;
10695         NE_V            Menu_Clip_Size, '0.000000 0.000000 0.000000',   temp_1;
10696         OR              temp_0, temp_1, temp_0;
10697         IFNOT           temp_0, 15;
10698         ADD_V           Menu_Origin,    lPos,   lPos;
10699         STORE_V lPos,   parm0;
10700         STORE_V Menu_Clip_Position,     parm1;
10701         STORE_V Menu_Clip_Size, parm2;
10702         CALL3           Util_GetClipDelta;
10703         STORE_V return, lDelta;
10704         ADD_V           lPos,   lDelta, lPos;
10705         SUB_V           lSize,  lDelta, temp_2;
10706         STORE_V lPos,   parm0;
10707         STORE_V temp_2, parm1;
10708         STORE_V Menu_Clip_Position,     parm2;
10709         STORE_V Menu_Clip_Size, parm3;
10710         CALL4           Util_ClipRect;
10711         STORE_V return, lSize;
10712         STORE_V lPos,   Menu_Clip_Position;
10713         STORE_V lSize,  Menu_Clip_Size;
10714         ADDRESS pItem,  _cache_clip_pos_x,      temp_2_x;
10715         STOREP_V        Menu_Clip_Position_x,   temp_2;
10716         ADDRESS pItem,  _cache_clip_size_x,     temp_2_x;
10717         STOREP_V        Menu_Clip_Size_x,       temp_2;
10718         IFNOT           sys_debug_mgfx, 1;
10719         AND             sys_debug_mgfx, _menu_process_filtered, temp_0;
10720         IFNOT           temp_0, 26;
10721         INDIRECT_V      pItem,  pos_x,  parm0;
10722         CALL1           vtos;
10723         INDIRECT_V      pItem,  size_x, parm0;
10724         STORE_F return_x,       temp_0;
10725         CALL1           vtos;
10726         STORE_F return_x,       temp_1;
10727         STORE_F temp_0, return_x;
10728         STORE_F "MGFX Setup clip area: (",      parm0_x;
10729         STORE_F return_x,       parm1_x;
10730         STORE_F "; ",   parm2_x;
10731         STORE_F temp_1, parm3_x;
10732         CALL4           print;
10733         STORE_V Menu_Clip_Position,     parm0;
10734         CALL1           vtos;
10735         STORE_V Menu_Clip_Size, parm0;
10736         STORE_F return_x,       temp_0;
10737         CALL1           vtos;
10738         STORE_F return_x,       temp_1;
10739         STORE_F temp_0, return_x;
10740         STORE_F ") clipped to (",       parm0_x;
10741         STORE_F return_x,       parm1_x;
10742         STORE_F "; ",   parm2_x;
10743         STORE_F temp_1, parm3_x;
10744         STORE_F ")
10745 ",      parm4_x;
10746         CALL5           print;
10747         DONE;
10748 }
10749
10750 void (entity) _Menu_Env_SetupOrigin;
10751 void(entity pItem) _Menu_Env_SetupOrigin = asm
10752 {
10753 local float temp_0;
10754 local vector temp_2;
10755 local vector temp_3;
10756         INDIRECT_V      pItem,  origin_x,       temp_2;
10757         ADD_V           Menu_Origin,    temp_2, temp_2;
10758         INDIRECT_V      pItem,  pos_x,  temp_3;
10759         ADD_V           temp_2, temp_3, Menu_Origin;
10760         ADDRESS pItem,  _cache_origin_x,        temp_2_x;
10761         STOREP_V        Menu_Origin_x,  temp_2;
10762         IFNOT           sys_debug_mgfx, 1;
10763         AND             sys_debug_mgfx, _menu_process_filtered, temp_0;
10764         IFNOT           temp_0, 7;
10765         STORE_V Menu_Origin,    parm0;
10766         CALL1           vtos;
10767         STORE_F "MGFX Setup org = ",    parm0_x;
10768         STORE_F return_x,       parm1_x;
10769         STORE_F "
10770 ",      parm2_x;
10771         CALL3           print;
10772         DONE;
10773 }
10774
10775 void (entity) _Menu_ProcessRunFlag;
10776 void(entity pItem) _Menu_ProcessRunFlag = asm
10777 {
10778 local entity lChild;
10779 local float temp_0;
10780         IFNOT           _menu_process_filtered, 8;
10781         INDIRECT_S      pItem,  name,   temp_0;
10782         STORE_F "R ",   parm0_x;
10783         STORE_F temp_0, parm1_x;
10784         STORE_F "
10785 ",      parm2_x;
10786         CALL3           strcat;
10787         STORE_F return_x,       parm0_x;
10788         CALL1           print;
10789         STORE_F pItem,  parm0_x;
10790         CALL1           _Menu_Env_SetupClipArea;
10791         STORE_F pItem,  parm0_x;
10792         CALL1           Menu_SetRunFlag;
10793         STORE_F pItem,  parm0_x;
10794         CALL1           _Menu_Env_SetupOrigin;
10795         INDIRECT_E      pItem,  _child, lChild;
10796         IFNOT           lChild, 10;
10797         STORE_F pItem,  parm0_x;
10798         STORE_F lChild, parm1_x;
10799         CALL2           Menu_InheritRunFlag;
10800         STORE_F lChild, parm0_x;
10801         CALL1           _Menu_ProcessRunFlag;
10802         STORE_F pItem,  parm0_x;
10803         CALL1           _Menu_Env_Reload;
10804         INDIRECT_E      lChild, _next,  lChild;
10805         GOTO            -9;
10806         DONE;
10807 }
10808
10809 void (entity) _Menu_ProcessDraw;
10810 void(entity pItem) _Menu_ProcessDraw = asm
10811 {
10812 local entity lChild;
10813 local float temp_0;
10814         IFNOT           _menu_process_filtered, 8;
10815         INDIRECT_S      pItem,  name,   temp_0;
10816         STORE_F "D ",   parm0_x;
10817         STORE_F temp_0, parm1_x;
10818         STORE_F " ",    parm2_x;
10819         CALL3           strcat;
10820         STORE_F return_x,       parm0_x;
10821         CALL1           print;
10822         INDIRECT_F      pItem,  _runFlag,       temp_0;
10823         BITAND  temp_0, 96.000000,      temp_0;
10824         NOT_F           temp_0, temp_0;
10825         IF              temp_0, 5;
10826         IFNOT           _menu_process_filtered, 3;
10827         STORE_F "Failed (Not visible)
10828 ",      parm0_x;
10829         CALL1           print;
10830         RETURN  offset_0;
10831         IFNOT           _menu_process_filtered, 3;
10832         STORE_F "
10833 ",      parm0_x;
10834         CALL1           print;
10835         STORE_F pItem,  parm0_x;
10836         CALL1           _Menu_Env_LoadClipArea;
10837         CALL0           _MGX_SetClipArea;
10838         STORE_F pItem,  parm0_x;
10839         CALL1           Raise_Draw;
10840         STORE_F pItem,  parm0_x;
10841         CALL1           _Menu_Env_LoadOrigin;
10842         INDIRECT_E      pItem,  _child, lChild;
10843         IFNOT           lChild, 8;
10844         STORE_F lChild, parm0_x;
10845         CALL1           _Menu_ProcessDraw;
10846         STORE_F pItem,  parm0_x;
10847         CALL1           _Menu_Env_Reload;
10848         CALL0           _MGX_SetClipArea;
10849         INDIRECT_E      lChild, _next,  lChild;
10850         GOTO            -7;
10851         DONE;
10852 }
10853
10854 void (entity) _Menu_ProcessUpdate;
10855 void(entity pItem) _Menu_ProcessUpdate = asm
10856 {
10857 local entity lChild;
10858 local float temp_0;
10859         IFNOT           _menu_process_filtered, 8;
10860         INDIRECT_S      pItem,  name,   temp_0;
10861         STORE_F "U ",   parm0_x;
10862         STORE_F temp_0, parm1_x;
10863         STORE_F " ",    parm2_x;
10864         CALL3           strcat;
10865         STORE_F return_x,       parm0_x;
10866         CALL1           print;
10867         INDIRECT_F      pItem,  _runFlag,       temp_0;
10868         BITAND  temp_0, RUNFLAG_CHILDDRAWONLY,  temp_0;
10869         IFNOT           temp_0, 5;
10870         IFNOT           _menu_process_filtered, 3;
10871         STORE_F "Failed (RUNFLAG_CHILDDRAWONLY)
10872 ",      parm0_x;
10873         CALL1           print;
10874         RETURN  offset_0;
10875         STORE_F pItem,  parm0_x;
10876         CALL1           _Menu_Env_LoadClipArea;
10877         STORE_F pItem,  parm0_x;
10878         CALL1           Raise_Update;
10879         INDIRECT_F      pItem,  _runFlag,       temp_0;
10880         BITAND  temp_0, RUNFLAG_HIDDEN, temp_0;
10881         IFNOT           temp_0, 5;
10882         IFNOT           _menu_process_filtered, 3;
10883         STORE_F "Aborted branching (RUNFLAG_HIDDEN)
10884 ",      parm0_x;
10885         CALL1           print;
10886         RETURN  offset_0;
10887         IFNOT           _menu_process_filtered, 3;
10888         STORE_F "
10889 ",      parm0_x;
10890         CALL1           print;
10891         STORE_F pItem,  parm0_x;
10892         CALL1           _Menu_Env_LoadOrigin;
10893         INDIRECT_E      pItem,  _child, lChild;
10894         IFNOT           lChild, 7;
10895         STORE_F lChild, parm0_x;
10896         CALL1           _Menu_ProcessUpdate;
10897         STORE_F lChild, parm0_x;
10898         CALL1           _Menu_Env_Reload;
10899         INDIRECT_E      lChild, _next,  lChild;
10900         GOTO            -6;
10901         DONE;
10902 }
10903
10904 void (entity, bool) _Menu_ProcessMouse;
10905 void(entity pItem, bool pSelectMode) _Menu_ProcessMouse = asm
10906 {
10907 local float locked_1586;
10908 local entity lChild;
10909 local float temp_1;
10910 local float temp_5;
10911         IFNOT           _menu_process_filtered, 21;
10912         STORE_F "M ",   parm0_x;
10913         CALL1           print;
10914         GOTO            10;
10915         STORE_F "S ",   parm0_x;
10916         CALL1           print;
10917         GOTO            12;
10918         STORE_F "A ",   parm0_x;
10919         CALL1           print;
10920         GOTO            9;
10921         STORE_F "N ",   parm0_x;
10922         CALL1           print;
10923         GOTO            6;
10924         IFNOT           pSelectMode,    -9;
10925         EQ_F            pSelectMode,    MENU_SELECT_ALWAYS,     locked_1586;
10926         IF              locked_1586,    -8;
10927         EQ_F            pSelectMode,    MENU_SELECT_NEVER,      locked_1586;
10928         IF              locked_1586,    -7;
10929         INDIRECT_S      pItem,  name,   parm0_x;
10930         STORE_F " ",    parm1_x;
10931         CALL2           print;
10932         INDIRECT_F      pItem,  _runFlag,       locked_1586;
10933         BITAND  locked_1586,    96.000000,      locked_1586;
10934         NOT_F           locked_1586,    locked_1586;
10935         IF              locked_1586,    5;
10936         IFNOT           _menu_process_filtered, 3;
10937         STORE_F "Failed (Not visible)
10938 ",      parm0_x;
10939         CALL1           print;
10940         RETURN  offset_0;
10941         STORE_F pItem,  parm0_x;
10942         CALL1           _Menu_Env_LoadClipArea;
10943         STORE_V Cursor_Position,        parm0;
10944         STORE_V Menu_Clip_Position,     parm1;
10945         STORE_V Menu_Clip_Size, parm2;
10946         CALL3           Util_InRect;
10947         IF              return_x,       5;
10948         EQ_V            Menu_Clip_Position,     '0.000000 0.000000 0.000000',   locked_1586;
10949         IFNOT           locked_1586,    2;
10950         EQ_V            Menu_Clip_Size, '0.000000 0.000000 0.000000',   temp_1;
10951         AND             locked_1586,    temp_1, locked_1586;
10952         OR              return_x,       locked_1586,    locked_1586;
10953         IFNOT           locked_1586,    34;
10954         ADDRESS pItem,  _runFlag,       locked_1586;
10955         INDIRECT_F      pItem,  _runFlag,       temp_1;
10956         BITOR           temp_1, RUNFLAG_MOUSEINAREA,    temp_1;
10957         STOREP_F        temp_1, locked_1586;
10958         INDIRECT_F      pItem,  _runFlag,       locked_1586;
10959         BITAND  locked_1586,    RUNFLAG_HADMOUSE,       locked_1586;
10960         NOT_F           locked_1586,    locked_1586;
10961         IFNOT           locked_1586,    3;
10962         STORE_F pItem,  parm0_x;
10963         CALL1           Menu_HasEvents;
10964         AND             locked_1586,    return_x,       locked_1586;
10965         IFNOT           locked_1586,    3;
10966         STORE_F pItem,  parm0_x;
10967         CALL1           Raise_MouseEnter;
10968         NE_F            pSelectMode,    MENU_SELECT_NEVER,      locked_1586;
10969         IFNOT           locked_1586,    3;
10970         INDIRECT_F      pItem,  flag,   temp_1;
10971         BITAND  temp_1, FLAG_SEALOFFMOUSE,      temp_1;
10972         AND             locked_1586,    temp_1, locked_1586;
10973         IFNOT           locked_1586,    2;
10974         STORE_ENT       null_entity,    Menu_ActiveItem;
10975         EQ_F            pSelectMode,    MENU_SELECT_ALWAYS,     locked_1586;
10976         IF              locked_1586,    7;
10977         INDIRECT_F      pItem,  _runFlag,       temp_1;
10978         BITAND  temp_1, RUNFLAG_NOSELECT,       temp_1;
10979         NOT_F           temp_1, temp_1;
10980         IFNOT           temp_1, 2;
10981         EQ_F            pSelectMode,    MENU_SELECT_SELECTABLE, temp_5;
10982         AND             temp_1, temp_5, temp_1;
10983         OR              locked_1586,    temp_1, locked_1586;
10984         IFNOT           locked_1586,    2;
10985         STORE_ENT       pItem,  Menu_ActiveItem;
10986         GOTO            14;
10987         INDIRECT_F      pItem,  _runFlag,       locked_1586;
10988         BITAND  locked_1586,    RUNFLAG_HADMOUSE,       locked_1586;
10989         IFNOT           locked_1586,    3;
10990         STORE_F pItem,  parm0_x;
10991         CALL1           Menu_HasEvents;
10992         AND             locked_1586,    return_x,       locked_1586;
10993         IFNOT           locked_1586,    3;
10994         STORE_F pItem,  parm0_x;
10995         CALL1           Raise_MouseLeave;
10996         IFNOT           _menu_process_filtered, 3;
10997         STORE_F "Aborted branching (Outside the clip area)
10998 ",      parm0_x;
10999         CALL1           print;
11000         RETURN  offset_0;
11001         IFNOT           _menu_process_filtered, 3;
11002         STORE_F "
11003 ",      parm0_x;
11004         CALL1           print;
11005         STORE_F pItem,  parm0_x;
11006         CALL1           _Menu_Env_LoadOrigin;
11007         INDIRECT_E      pItem,  _child, lChild;
11008         IFNOT           lChild, 21;
11009         INDIRECT_F      pItem,  _runFlag,       locked_1586;
11010         BITAND  locked_1586,    RUNFLAG_CHILDDRAWUPDATEONLY,    locked_1586;
11011         NOT_F           locked_1586,    locked_1586;
11012         IF              locked_1586,    4;
11013         INDIRECT_F      pItem,  _runFlag,       temp_1;
11014         BITAND  temp_1, RUNFLAG_CHILDDRAWONLY,  temp_1;
11015         NOT_F           temp_1, temp_1;
11016         OR              locked_1586,    temp_1, locked_1586;
11017         IFNOT           locked_1586,    5;
11018         STORE_F lChild, parm0_x;
11019         STORE_F pSelectMode,    parm1_x;
11020         CALL2           _Menu_ProcessMouse;
11021         GOTO            4;
11022         STORE_F lChild, parm0_x;
11023         STORE_F MENU_SELECT_NEVER,      parm1_x;
11024         CALL2           _Menu_ProcessMouse;
11025         STORE_F pItem,  parm0_x;
11026         CALL1           _Menu_Env_Reload;
11027         INDIRECT_E      lChild, _next,  lChild;
11028         GOTO            -20;
11029         DONE;
11030 }
11031
11032 float (float) _Menu_Process_Debug_Return;
11033 float(float pRetValue) _Menu_Process_Debug_Return = asm
11034 {
11035 local float temp_0;
11036         IFNOT           _menu_process_filtered, 17;
11037         GOTO            10;
11038         STORE_F "MENU_EVENT_CONTINUE
11039 ",      parm0_x;
11040         CALL1           print;
11041         GOTO            13;
11042         STORE_F "MENU_EVENT_RAISEPARENT
11043 ",      parm0_x;
11044         CALL1           print;
11045         GOTO            10;
11046         STORE_F "MENU_EVENT_PROCESSED
11047 ",      parm0_x;
11048         CALL1           print;
11049         GOTO            7;
11050         IFNOT           pRetValue,      -9;
11051         IFNOT           pRetValue,      -10;
11052         EQ_F            pRetValue,      MENU_EVENT_RAISEPARENT, temp_0;
11053         IF              temp_0, -9;
11054         EQ_F            pRetValue,      MENU_EVENT_PROCESSED,   temp_0;
11055         IF              temp_0, -8;
11056         RETURN  pRetValue;
11057         DONE;
11058 }
11059
11060 bool (entity, float, float) _Menu_ProcessKey;
11061 bool(entity pItem, float pKey, float pAscii) _Menu_ProcessKey = asm
11062 {
11063 local float lResult;
11064 local entity lChild;
11065 local float temp_0;
11066 local float temp_1;
11067         IFNOT           _menu_process_filtered, 12;
11068         STORE_F pKey,   parm0_x;
11069         CALL1           ftos;
11070         INDIRECT_S      pItem,  name,   temp_0;
11071         STORE_F "K ",   parm0_x;
11072         STORE_F return_x,       parm1_x;
11073         STORE_F " ",    parm2_x;
11074         STORE_F temp_0, parm3_x;
11075         STORE_F " ",    parm4_x;
11076         CALL5           strcat;
11077         STORE_F return_x,       parm0_x;
11078         CALL1           print;
11079         INDIRECT_F      pItem,  _runFlag,       temp_0;
11080         BITAND  temp_0, RUNFLAG_CHILDDRAWUPDATEONLY,    temp_0;
11081         IF              temp_0, 3;
11082         INDIRECT_F      pItem,  _runFlag,       temp_1;
11083         BITAND  temp_1, RUNFLAG_CHILDDRAWONLY,  temp_1;
11084         OR              temp_0, temp_1, temp_0;
11085         IFNOT           temp_0, 4;
11086         STORE_F MENU_EVENT_CONTINUE,    parm0_x;
11087         CALL1           _Menu_Process_Debug_Return;
11088         RETURN  return_x;
11089         STORE_F pItem,  parm0_x;
11090         CALL1           _Menu_Env_LoadClipArea;
11091         EQ_E            Menu_ActiveItem,        pItem,  temp_0;
11092         IFNOT           temp_0, 12;
11093         STORE_F pItem,  parm0_x;
11094         STORE_F pKey,   parm1_x;
11095         STORE_F pAscii, parm2_x;
11096         CALL3           Raise_Key;
11097         IFNOT           return_x,       3;
11098         STORE_F MENU_EVENT_PROCESSED,   lResult;
11099         GOTO            2;
11100         STORE_F MENU_EVENT_RAISEPARENT, lResult;
11101         STORE_F lResult,        parm0_x;
11102         CALL1           _Menu_Process_Debug_Return;
11103         RETURN  return_x;
11104         STORE_F pItem,  parm0_x;
11105         CALL1           _Menu_Env_LoadOrigin;
11106         INDIRECT_E      pItem,  _child, lChild;
11107         IFNOT           lChild, 30;
11108         STORE_F lChild, parm0_x;
11109         STORE_F pKey,   parm1_x;
11110         STORE_F pAscii, parm2_x;
11111         CALL3           _Menu_ProcessKey;
11112         STORE_F return_x,       lResult;
11113         STORE_F pItem,  parm0_x;
11114         CALL1           _Menu_Env_Reload;
11115         EQ_F            lResult,        MENU_EVENT_PROCESSED,   temp_0;
11116         IFNOT           temp_0, 5;
11117         STORE_F MENU_EVENT_PROCESSED,   parm0_x;
11118         CALL1           _Menu_Process_Debug_Return;
11119         RETURN  return_x;
11120         GOTO            15;
11121         EQ_F            lResult,        MENU_EVENT_RAISEPARENT, temp_0;
11122         IFNOT           temp_0, 13;
11123         STORE_F pItem,  parm0_x;
11124         STORE_F pKey,   parm1_x;
11125         STORE_F pAscii, parm2_x;
11126         CALL3           Raise_Key;
11127         IFNOT           return_x,       5;
11128         STORE_F MENU_EVENT_PROCESSED,   parm0_x;
11129         CALL1           _Menu_Process_Debug_Return;
11130         RETURN  return_x;
11131         GOTO            4;
11132         STORE_F MENU_EVENT_RAISEPARENT, parm0_x;
11133         CALL1           _Menu_Process_Debug_Return;
11134         RETURN  return_x;
11135         INDIRECT_E      lChild, _next,  lChild;
11136         GOTO            -29;
11137         STORE_F MENU_EVENT_CONTINUE,    parm0_x;
11138         CALL1           _Menu_Process_Debug_Return;
11139         RETURN  return_x;
11140         DONE;
11141 }
11142
11143 float(entity pItem, float pMode, float pSelectMode, float pKey, float pAscii) Menu_Process = asm
11144 {
11145 local float lResult;
11146 local vector lOrigin;
11147 local vector lPos;
11148 local vector lSize;
11149 local float temp_0;
11150 local vector temp_2;
11151         STORE_V Menu_Clip_Size, lSize;
11152         STORE_V Menu_Clip_Position,     lPos;
11153         STORE_V Menu_Origin,    lOrigin;
11154         STORE_F pMode,  parm0_x;
11155         STORE_F pSelectMode,    parm1_x;
11156         CALL2           _Menu_Process_Debug_Filter;
11157         STORE_F KEY_GAME,       lResult;
11158         GOTO            20;
11159         STORE_F pItem,  parm0_x;
11160         CALL1           _Menu_ProcessRunFlag;
11161         GOTO            27;
11162         STORE_F pItem,  parm0_x;
11163         CALL1           _Menu_ProcessUpdate;
11164         GOTO            24;
11165         STORE_F pItem,  parm0_x;
11166         CALL1           _Menu_ProcessDraw;
11167         GOTO            21;
11168         STORE_F pItem,  parm0_x;
11169         STORE_F pSelectMode,    parm1_x;
11170         CALL2           _Menu_ProcessMouse;
11171         GOTO            17;
11172         STORE_F pItem,  parm0_x;
11173         STORE_F pKey,   parm1_x;
11174         STORE_F pAscii, parm2_x;
11175         CALL3           _Menu_ProcessKey;
11176         STORE_F return_x,       lResult;
11177         GOTO            11;
11178         EQ_F            pMode,  MENU_PROCESS_RUNFLAG,   temp_0;
11179         IF              temp_0, -20;
11180         EQ_F            pMode,  MENU_PROCESS_UPDATE,    temp_0;
11181         IF              temp_0, -19;
11182         EQ_F            pMode,  MENU_PROCESS_DRAW,      temp_0;
11183         IF              temp_0, -18;
11184         EQ_F            pMode,  MENU_PROCESS_MOUSE,     temp_0;
11185         IF              temp_0, -17;
11186         EQ_F            pMode,  MENU_PROCESS_KEY,       temp_0;
11187         IF              temp_0, -15;
11188         STORE_V lSize,  Menu_Clip_Size;
11189         STORE_V lPos,   Menu_Clip_Position;
11190         STORE_V lOrigin,        Menu_Origin;
11191         SUB_V           Cursor_Position,        Menu_Origin,    Menu_Cursor_Position;
11192         EQ_F            pMode,  MENU_PROCESS_DRAW,      temp_0;
11193         IFNOT           temp_0, 2;
11194         CALL0           _MGX_SetClipArea;
11195         RETURN  lResult;
11196         DONE;
11197 }
11198
11199 void() Menu_Frame = asm
11200 {
11201 local entity lOld;
11202 local float temp_0;
11203         CALL0           Sys_Debug_Frame;
11204         IFNOT           sys_debug_halt, 2;
11205         RETURN  offset_0;
11206         CALL0           Menu_UpdateRunFlags;
11207         CALL0           Menu_Process_Setup;
11208         NE_V            Cursor_Relative,        '0.000000 0.000000 0.000000',   temp_0;
11209         IFNOT           temp_0, 22;
11210         STORE_ENT       Menu_ActiveItem,        lOld;
11211         STORE_F Menu_ActiveWindow,      parm0_x;
11212         STORE_F MENU_PROCESS_MOUSE,     parm1_x;
11213         STORE_F MENU_SELECT_SELECTABLE, parm2_x;
11214         STORE_F KEY_GAME,       parm3_x;
11215         STORE_F KEY_GAME,       parm4_x;
11216         CALL5           Menu_Process;
11217         IF              Menu_ActiveItem,        3;
11218         STORE_ENT       lOld,   Menu_ActiveItem;
11219         GOTO            11;
11220         NE_E            lOld,   Menu_ActiveItem,        temp_0;
11221         IFNOT           temp_0, 9;
11222         STORE_F lOld,   parm0_x;
11223         STORE_F KEY_GAME,       parm1_x;
11224         STORE_F FILE_APPEND,    parm2_x;
11225         CALL3           Raise_Select;
11226         STORE_F Menu_ActiveItem,        parm0_x;
11227         STORE_F FILE_APPEND,    parm1_x;
11228         STORE_F FILE_APPEND,    parm2_x;
11229         CALL3           Raise_Select;
11230         GOTO            7;
11231         STORE_F Menu_ActiveWindow,      parm0_x;
11232         STORE_F MENU_PROCESS_MOUSE,     parm1_x;
11233         STORE_F MENU_SELECT_NEVER,      parm2_x;
11234         STORE_F KEY_GAME,       parm3_x;
11235         STORE_F KEY_GAME,       parm4_x;
11236         CALL5           Menu_Process;
11237         CALL0           Menu_Process_Setup;
11238         STORE_F Menu_ActiveWindow,      parm0_x;
11239         STORE_F MENU_PROCESS_UPDATE,    parm1_x;
11240         STORE_F KEY_GAME,       parm2_x;
11241         STORE_F KEY_GAME,       parm3_x;
11242         STORE_F KEY_GAME,       parm4_x;
11243         CALL5           Menu_Process;
11244         STORE_F KEY_GAME,       parm0_x;
11245         CALL1           Menu_CollectGarbage;
11246         DONE;
11247 }
11248
11249 void() Menu_Draw = asm
11250 {
11251 local float temp_0;
11252         IFNOT           sys_debug_halt, 2;
11253         RETURN  offset_0;
11254         INDIRECT_F      Menu_ActiveWindow,      _runFlag,       temp_0;
11255         BITAND  temp_0, 96.000000,      temp_0;
11256         IF              temp_0, 8;
11257         CALL0           Menu_Process_Setup;
11258         STORE_F Menu_ActiveWindow,      parm0_x;
11259         STORE_F MENU_PROCESS_DRAW,      parm1_x;
11260         STORE_F KEY_GAME,       parm2_x;
11261         STORE_F KEY_GAME,       parm3_x;
11262         STORE_F KEY_GAME,       parm4_x;
11263         CALL5           Menu_Process;
11264         CALL0           Sys_Debug_Draw;
11265         DONE;
11266 }
11267
11268 void(float pKey, float pAscii) Menu_Key = asm
11269 {
11270 local float locked_1586;
11271 local entity lOld;
11272 local float temp_1;
11273         IFNOT           sys_debug_halt, 2;
11274         RETURN  offset_0;
11275         NE_FNC  Menu_KeyHook,   Util_NullFunction,      locked_1586;
11276         IFNOT           locked_1586,    5;
11277         STORE_F pKey,   parm0_x;
11278         STORE_F pAscii, parm1_x;
11279         CALL2           Menu_KeyHook;
11280         RETURN  offset_0;
11281         LE              K_MOUSE1,       pKey,   locked_1586;
11282         IFNOT           locked_1586,    2;
11283         LE              pKey,   K_MOUSE10,      temp_1;
11284         AND             locked_1586,    temp_1, locked_1586;
11285         IFNOT           locked_1586,    23;
11286         STORE_ENT       Menu_ActiveItem,        lOld;
11287         STORE_ENT       null_entity,    Menu_ActiveItem;
11288         STORE_F Menu_ActiveWindow,      parm0_x;
11289         STORE_F MENU_PROCESS_MOUSE,     parm1_x;
11290         STORE_F MENU_SELECT_SELECTABLE, parm2_x;
11291         STORE_F KEY_GAME,       parm3_x;
11292         STORE_F KEY_GAME,       parm4_x;
11293         CALL5           Menu_Process;
11294         IF              Menu_ActiveItem,        4;
11295         STORE_ENT       lOld,   Menu_ActiveItem;
11296         RETURN  offset_0;
11297         GOTO            11;
11298         NE_E            lOld,   Menu_ActiveItem,        locked_1586;
11299         IFNOT           locked_1586,    9;
11300         STORE_F lOld,   parm0_x;
11301         STORE_F KEY_GAME,       parm1_x;
11302         STORE_F FILE_APPEND,    parm2_x;
11303         CALL3           Raise_Select;
11304         STORE_F Menu_ActiveItem,        parm0_x;
11305         STORE_F FILE_APPEND,    parm1_x;
11306         STORE_F FILE_APPEND,    parm2_x;
11307         CALL3           Raise_Select;
11308         EQ_E            Menu_ActiveItem,        null_entity,    locked_1586;
11309         IFNOT           locked_1586,    3;
11310         STORE_F KEY_GAME,       parm0_x;
11311         CALL1           Menu_Reselect;
11312         INDIRECT_F      Menu_ActiveItem,        _runFlag,       locked_1586;
11313         BITAND  locked_1586,    RUNFLAG_NOSELECT,       locked_1586;
11314         NOT_F           locked_1586,    locked_1586;
11315         NOT_F           locked_1586,    locked_1586;
11316         IFNOT           locked_1586,    2;
11317         NE_E            Menu_ActiveItem,        Menu_ActiveWindow,      temp_1;
11318         AND             locked_1586,    temp_1, locked_1586;
11319         IF              locked_1586,    8;
11320         STORE_F Menu_ActiveWindow,      parm0_x;
11321         STORE_F MENU_PROCESS_KEY,       parm1_x;
11322         STORE_F KEY_GAME,       parm2_x;
11323         STORE_F pKey,   parm3_x;
11324         STORE_F pAscii, parm4_x;
11325         CALL5           Menu_Process;
11326         NE_F            return_x,       MENU_EVENT_PROCESSED,   temp_1;
11327         OR              locked_1586,    temp_1, locked_1586;
11328         IFNOT           locked_1586,    25;
11329         EQ_F            pKey,   K_ESCAPE,       locked_1586;
11330         IFNOT           locked_1586,    10;
11331         BITAND  gamestatus,     CVAR_READONLY,  locked_1586;
11332         IFNOT           locked_1586,    4;
11333         STORE_F " K_ESCAPE wasnt processed!
11334 ",      parm0_x;
11335         CALL1           error;
11336         GOTO            4;
11337         CALL0           Menu_Toggle;
11338         STORE_F "menu_restart
11339 ",      parm0_x;
11340         CALL1           cmd;
11341         GOTO            14;
11342         BITAND  gamestatus,     CVAR_READONLY,  locked_1586;
11343         IFNOT           locked_1586,    12;
11344         STORE_F pKey,   parm0_x;
11345         CALL1           ftos;
11346         STORE_F " Key ",        parm0_x;
11347         STORE_F return_x,       parm1_x;
11348         STORE_F " ('",  parm2_x;
11349         CALL3           print;
11350         STORE_F pAscii, parm0_x;
11351         CALL1           chr;
11352         STORE_F return_x,       parm0_x;
11353         STORE_F "') wasn't processed!
11354 ",      parm1_x;
11355         CALL2           print;
11356         DONE;
11357 }
11358
11359 float() Menu_Toggle = asm
11360 {
11361 local float temp_0;
11362 local float temp_1;
11363         BITAND  gamestatus,     KEY_MENU,       temp_0;
11364         IF              temp_0, 2;
11365         BITAND  gamestatus,     CVAR_READONLY,  temp_1;
11366         OR              temp_0, temp_1, temp_0;
11367         IFNOT           temp_0, 4;
11368         CALL0           m_hide;
11369         RETURN  FILE_APPEND;
11370         GOTO            2;
11371         RETURN  KEY_GAME;
11372         DONE;
11373 }
11374
11375 void(entity pEntity) Raise_Reinit = asm
11376 {
11377 local float locked_1586;
11378 local entity lOld;
11379         INDIRECT_FU     pEntity,        _reinit,        locked_1586;
11380         IF              locked_1586,    2;
11381         RETURN  offset_0;
11382         STORE_ENT       self,   lOld;
11383         STORE_ENT       pEntity,        self;
11384         INDIRECT_FU     self,   _reinit,        locked_1586;
11385         CALL0           locked_1586;
11386         STORE_ENT       lOld,   self;
11387         DONE;
11388 }
11389
11390 void(entity pEntity) Raise_Destroy = asm
11391 {
11392 local float locked_1586;
11393 local entity lOld;
11394         INDIRECT_FU     pEntity,        _destroy,       locked_1586;
11395         IF              locked_1586,    2;
11396         RETURN  offset_0;
11397         STORE_ENT       self,   lOld;
11398         STORE_ENT       pEntity,        self;
11399         INDIRECT_FU     self,   _destroy,       locked_1586;
11400         CALL0           locked_1586;
11401         STORE_ENT       lOld,   self;
11402         DONE;
11403 }
11404
11405 bool(entity pEntity, float pKey, float pAscii) Raise_Key = asm
11406 {
11407 local float locked_1586;
11408 local bool lResult;
11409 local entity lOld;
11410         INDIRECT_FU     pEntity,        _key,   locked_1586;
11411         IF              locked_1586,    2;
11412         RETURN  KEY_GAME;
11413         STORE_ENT       self,   lOld;
11414         STORE_ENT       pEntity,        self;
11415         INDIRECT_FU     self,   _key,   locked_1586;
11416         STORE_F pKey,   parm0_x;
11417         STORE_F pAscii, parm1_x;
11418         CALL2           locked_1586;
11419         STORE_F return_x,       lResult;
11420         STORE_ENT       lOld,   self;
11421         RETURN  lResult;
11422         DONE;
11423 }
11424
11425 void(entity pEntity) Raise_Draw = asm
11426 {
11427 local float locked_1586;
11428 local entity lOld;
11429         INDIRECT_FU     pEntity,        _draw,  locked_1586;
11430         IF              locked_1586,    2;
11431         RETURN  offset_0;
11432         STORE_ENT       self,   lOld;
11433         STORE_ENT       pEntity,        self;
11434         INDIRECT_FU     self,   _draw,  locked_1586;
11435         CALL0           locked_1586;
11436         STORE_ENT       lOld,   self;
11437         DONE;
11438 }
11439
11440 void(entity pEntity) Raise_MouseEnter = asm
11441 {
11442 local float locked_1586;
11443 local entity lOld;
11444         INDIRECT_FU     pEntity,        _mouseEnter,    locked_1586;
11445         IF              locked_1586,    2;
11446         RETURN  offset_0;
11447         STORE_ENT       self,   lOld;
11448         STORE_ENT       pEntity,        self;
11449         INDIRECT_FU     self,   _mouseEnter,    locked_1586;
11450         CALL0           locked_1586;
11451         STORE_ENT       lOld,   self;
11452         DONE;
11453 }
11454
11455 void(entity pEntity) Raise_MouseLeave = asm
11456 {
11457 local float locked_1586;
11458 local entity lOld;
11459         INDIRECT_FU     pEntity,        _mouseLeave,    locked_1586;
11460         IF              locked_1586,    2;
11461         RETURN  offset_0;
11462         STORE_ENT       self,   lOld;
11463         STORE_ENT       pEntity,        self;
11464         INDIRECT_FU     self,   _mouseLeave,    locked_1586;
11465         CALL0           locked_1586;
11466         STORE_ENT       lOld,   self;
11467         DONE;
11468 }
11469
11470 void(entity pEntity) Raise_Update = asm
11471 {
11472 local float locked_1586;
11473 local entity lOld;
11474         INDIRECT_FU     pEntity,        _update,        locked_1586;
11475         IF              locked_1586,    2;
11476         RETURN  offset_0;
11477         STORE_ENT       self,   lOld;
11478         STORE_ENT       pEntity,        self;
11479         INDIRECT_FU     self,   _update,        locked_1586;
11480         CALL0           locked_1586;
11481         STORE_ENT       lOld,   self;
11482         DONE;
11483 }
11484
11485 void(entity pEntity, float pSelect, float pUser) Raise_Select = asm
11486 {
11487 local float locked_1586;
11488 local entity lOld;
11489         INDIRECT_FU     pEntity,        _select,        locked_1586;
11490         IF              locked_1586,    2;
11491         RETURN  offset_0;
11492         STORE_ENT       self,   lOld;
11493         STORE_ENT       pEntity,        self;
11494         INDIRECT_FU     self,   _select,        locked_1586;
11495         STORE_F pSelect,        parm0_x;
11496         STORE_F pUser,  parm1_x;
11497         CALL2           locked_1586;
11498         STORE_ENT       lOld,   self;
11499         DONE;
11500 }
11501
11502 void() CtCall_Init = asm
11503 {
11504 local float locked_1586;
11505         INDIRECT_FU     self,   init,   locked_1586;
11506         IFNOT           locked_1586,    3;
11507         INDIRECT_FU     self,   init,   locked_1586;
11508         CALL0           locked_1586;
11509         DONE;
11510 }
11511
11512 void() CtCall_Reinit = asm
11513 {
11514 local float locked_1586;
11515         INDIRECT_FU     self,   reinit, locked_1586;
11516         IFNOT           locked_1586,    3;
11517         INDIRECT_FU     self,   reinit, locked_1586;
11518         CALL0           locked_1586;
11519         DONE;
11520 }
11521
11522 void() CtCall_Destroy = asm
11523 {
11524 local float locked_1586;
11525         INDIRECT_FU     self,   destroy,        locked_1586;
11526         IFNOT           locked_1586,    3;
11527         INDIRECT_FU     self,   destroy,        locked_1586;
11528         CALL0           locked_1586;
11529         DONE;
11530 }
11531
11532 float(float pKey, float pAscii) CtCall_Key = asm
11533 {
11534 local float locked_1586;
11535         INDIRECT_FU     self,   key,    locked_1586;
11536         IFNOT           locked_1586,    6;
11537         INDIRECT_FU     self,   key,    locked_1586;
11538         STORE_F pKey,   parm0_x;
11539         STORE_F pAscii, parm1_x;
11540         CALL2           locked_1586;
11541         RETURN  return_x;
11542         RETURN  KEY_GAME;
11543         DONE;
11544 }
11545
11546 void() CtCall_Draw = asm
11547 {
11548 local float locked_1586;
11549         INDIRECT_FU     self,   draw,   locked_1586;
11550         IFNOT           locked_1586,    3;
11551         INDIRECT_FU     self,   draw,   locked_1586;
11552         CALL0           locked_1586;
11553         DONE;
11554 }
11555
11556 void() CtCall_MouseEnter = asm
11557 {
11558 local float locked_1586;
11559         INDIRECT_FU     self,   mouseEnter,     locked_1586;
11560         IFNOT           locked_1586,    3;
11561         INDIRECT_FU     self,   mouseEnter,     locked_1586;
11562         CALL0           locked_1586;
11563         DONE;
11564 }
11565
11566 void() CtCall_MouseLeave = asm
11567 {
11568 local float locked_1586;
11569         INDIRECT_FU     self,   mouseLeave,     locked_1586;
11570         IFNOT           locked_1586,    3;
11571         INDIRECT_FU     self,   mouseLeave,     locked_1586;
11572         CALL0           locked_1586;
11573         DONE;
11574 }
11575
11576 void() CtCall_Action = asm
11577 {
11578 local float locked_1586;
11579         INDIRECT_FU     self,   action, locked_1586;
11580         IFNOT           locked_1586,    3;
11581         INDIRECT_FU     self,   action, locked_1586;
11582         CALL0           locked_1586;
11583         DONE;
11584 }
11585
11586 void() CtCall_Update = asm
11587 {
11588 local float locked_1586;
11589         INDIRECT_FU     self,   update, locked_1586;
11590         IFNOT           locked_1586,    3;
11591         INDIRECT_FU     self,   update, locked_1586;
11592         CALL0           locked_1586;
11593         DONE;
11594 }
11595
11596 void(float pSelect, float pUser) CtCall_Select = asm
11597 {
11598 local float locked_1586;
11599         INDIRECT_FU     self,   select, locked_1586;
11600         IFNOT           locked_1586,    5;
11601         INDIRECT_FU     self,   select, locked_1586;
11602         STORE_F pSelect,        parm0_x;
11603         STORE_F pUser,  parm1_x;
11604         CALL2           locked_1586;
11605         DONE;
11606 }
11607
11608 void() DefCt_Reinit = asm
11609 {
11610         DONE;
11611 }
11612
11613 void() DefCt_Destroy = asm
11614 {
11615         DONE;
11616 }
11617
11618 float(float pKey, float pAscii) DefCt_Key = asm
11619 {
11620         RETURN  KEY_GAME;
11621         DONE;
11622 }
11623
11624 void() DefCt_Draw = asm
11625 {
11626         DONE;
11627 }
11628
11629 void() DefCt_MouseEnter = asm
11630 {
11631         DONE;
11632 }
11633
11634 void() DefCt_MouseLeave = asm
11635 {
11636         DONE;
11637 }
11638
11639 void () DefCt_Action;
11640 void() DefCt_Action = asm
11641 {
11642         DONE;
11643 }
11644
11645 void(float pSelect, float pUser) DefCt_Select = asm
11646 {
11647         DONE;
11648 }
11649
11650 void() DefCt_Update = asm
11651 {
11652         DONE;
11653 }
11654
11655 void (float, string) _Menu_Structure_Debug;
11656 void(float pLevel, string pText) _Menu_Structure_Debug = asm
11657 {
11658 local float temp_0;
11659         LE              pLevel, sys_debug_structure,    temp_0;
11660         IFNOT           temp_0, 3;
11661         STORE_F pText,  parm0_x;
11662         CALL1           print;
11663         DONE;
11664 }
11665
11666 void (float) _Menu_Select;
11667 void(float pUser) _Menu_Select = asm
11668 {
11669         STORE_F Menu_ActiveItem,        parm0_x;
11670         STORE_F FILE_APPEND,    parm1_x;
11671         STORE_F pUser,  parm2_x;
11672         CALL3           Raise_Select;
11673         DONE;
11674 }
11675
11676 entity(entity pItem) _Menu_GetParent = asm
11677 {
11678 local float temp_0;
11679         INDIRECT_E      pItem,  _parent,        temp_0;
11680         IF              temp_0, 2;
11681         RETURN  null_entity;
11682         INDIRECT_E      pItem,  _parent,        temp_0;
11683         INDIRECT_F      temp_0, flag,   temp_0;
11684         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
11685         IFNOT           temp_0, 4;
11686         INDIRECT_E      pItem,  _parent,        parm0_x;
11687         CALL1           _Menu_GetParent;
11688         RETURN  return_x;
11689         INDIRECT_E      pItem,  _parent,        temp_0;
11690         RETURN  temp_0;
11691         DONE;
11692 }
11693
11694 bool(entity pItem, entity pParent) _Menu_IsEmbeddedParentOf = asm
11695 {
11696 local float temp_0;
11697         INDIRECT_E      pItem,  _parent,        temp_0;
11698         EQ_E            temp_0, pParent,        temp_0;
11699         IFNOT           temp_0, 2;
11700         RETURN  FILE_APPEND;
11701         INDIRECT_E      pItem,  _parent,        temp_0;
11702         INDIRECT_F      temp_0, flag,   temp_0;
11703         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
11704         IFNOT           temp_0, 5;
11705         INDIRECT_E      pItem,  _parent,        parm0_x;
11706         STORE_F pParent,        parm1_x;
11707         CALL2           _Menu_IsEmbeddedParentOf;
11708         RETURN  return_x;
11709         RETURN  KEY_GAME;
11710         DONE;
11711 }
11712
11713 entity(entity pItem) _Menu_GetFirst = asm
11714 {
11715 local float temp_0;
11716 local float temp_1;
11717         INDIRECT_F      pItem,  flag,   temp_0;
11718         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
11719         IFNOT           temp_0, 2;
11720         INDIRECT_E      pItem,  _child, temp_1;
11721         AND             temp_0, temp_1, temp_0;
11722         IFNOT           temp_0, 4;
11723         INDIRECT_E      pItem,  _child, parm0_x;
11724         CALL1           _Menu_GetFirst;
11725         RETURN  return_x;
11726         RETURN  pItem;
11727         DONE;
11728 }
11729
11730 entity(entity pItem) _Menu_GetLast = asm
11731 {
11732 local entity lNode;
11733 local float temp_0;
11734 local float temp_1;
11735         INDIRECT_F      pItem,  flag,   temp_0;
11736         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
11737         IFNOT           temp_0, 2;
11738         INDIRECT_E      pItem,  _child, temp_1;
11739         AND             temp_0, temp_1, temp_0;
11740         IFNOT           temp_0, 9;
11741         INDIRECT_E      pItem,  _child, lNode;
11742         INDIRECT_E      lNode,  _next,  temp_0;
11743         IFNOT           temp_0, 3;
11744         INDIRECT_E      lNode,  _next,  lNode;
11745         GOTO            -3;
11746         STORE_F lNode,  parm0_x;
11747         CALL1           _Menu_GetLast;
11748         RETURN  return_x;
11749         RETURN  pItem;
11750         DONE;
11751 }
11752
11753 entity(entity pItem) _Menu_GetNext = asm
11754 {
11755 local entity lNext;
11756 local float temp_0;
11757 local float temp_1;
11758         INDIRECT_E      pItem,  _next,  lNext;
11759         IFNOT           lNext,  4;
11760         STORE_F lNext,  parm0_x;
11761         CALL1           _Menu_GetFirst;
11762         RETURN  return_x;
11763         INDIRECT_E      pItem,  _parent,        temp_0;
11764         INDIRECT_F      temp_0, flag,   temp_0;
11765         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
11766         IFNOT           temp_0, 3;
11767         INDIRECT_E      pItem,  _parent,        temp_1;
11768         NE_E            temp_1, Menu_ActiveWindow,      temp_1;
11769         AND             temp_0, temp_1, temp_0;
11770         IFNOT           temp_0, 5;
11771         INDIRECT_E      pItem,  _parent,        parm0_x;
11772         CALL1           _Menu_GetNext;
11773         RETURN  return_x;
11774         GOTO            2;
11775         RETURN  null_entity;
11776         DONE;
11777 }
11778
11779 entity(entity pItem) _Menu_GetPrev = asm
11780 {
11781 local entity lPrev;
11782 local float temp_0;
11783 local float temp_1;
11784         INDIRECT_E      pItem,  _prev,  lPrev;
11785         IFNOT           lPrev,  4;
11786         STORE_F lPrev,  parm0_x;
11787         CALL1           _Menu_GetLast;
11788         RETURN  return_x;
11789         INDIRECT_E      pItem,  _parent,        temp_0;
11790         INDIRECT_F      temp_0, flag,   temp_0;
11791         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
11792         IFNOT           temp_0, 3;
11793         INDIRECT_E      pItem,  _parent,        temp_1;
11794         NE_E            temp_1, Menu_ActiveWindow,      temp_1;
11795         AND             temp_0, temp_1, temp_0;
11796         IFNOT           temp_0, 5;
11797         INDIRECT_E      pItem,  _parent,        parm0_x;
11798         CALL1           _Menu_GetPrev;
11799         RETURN  return_x;
11800         GOTO            2;
11801         RETURN  null_entity;
11802         DONE;
11803 }
11804
11805 void() _Menu_SelectNext = asm
11806 {
11807 local float locked_1586;
11808 local entity lTemp;
11809 local float temp_1;
11810         IF              Menu_ActiveItem,        5;
11811         STORE_F FILE_APPEND,    parm0_x;
11812         STORE_F "_SelectNext: Bad Menu_ActiveItem!
11813 ",      parm1_x;
11814         CALL2           _Menu_Structure_Debug;
11815         RETURN  offset_0;
11816         STORE_ENT       Menu_ActiveItem,        lTemp;
11817         STORE_F lTemp,  parm0_x;
11818         CALL1           _Menu_GetNext;
11819         STORE_ENT       return_x,       lTemp;
11820         NE_E            return_x,       null_entity,    locked_1586;
11821         IFNOT           locked_1586,    15;
11822         INDIRECT_F      lTemp,  _runFlag,       locked_1586;
11823         BITAND  locked_1586,    RUNFLAG_NOSELECT,       locked_1586;
11824         IF              locked_1586,    11;
11825         STORE_ENT       lTemp,  Menu_ActiveItem;
11826         INDIRECT_S      lTemp,  name,   locked_1586;
11827         STORE_F "_SelectNext: ",        parm0_x;
11828         STORE_F locked_1586,    parm1_x;
11829         STORE_F "
11830 ",      parm2_x;
11831         CALL3           strcat;
11832         STORE_F FILE_APPEND,    parm0_x;
11833         STORE_F return_x,       parm1_x;
11834         CALL2           _Menu_Structure_Debug;
11835         RETURN  offset_0;
11836         GOTO            -18;
11837         STORE_ENT       Menu_ActiveItem,        lTemp;
11838         STORE_F lTemp,  parm0_x;
11839         CALL1           _Menu_GetPrev;
11840         IFNOT           return_x,       8;
11841         STORE_F lTemp,  parm0_x;
11842         STORE_F return_x,       locked_1586;
11843         CALL1           _Menu_GetPrev;
11844         STORE_F return_x,       temp_1;
11845         STORE_F locked_1586,    return_x;
11846         STORE_ENT       temp_1, lTemp;
11847         GOTO            -9;
11848         NE_E            lTemp,  Menu_ActiveItem,        locked_1586;
11849         IFNOT           locked_1586,    18;
11850         INDIRECT_F      lTemp,  _runFlag,       locked_1586;
11851         BITAND  locked_1586,    RUNFLAG_NOSELECT,       locked_1586;
11852         IF              locked_1586,    11;
11853         STORE_ENT       lTemp,  Menu_ActiveItem;
11854         INDIRECT_S      lTemp,  name,   locked_1586;
11855         STORE_F "_SelectNext after loop: ",     parm0_x;
11856         STORE_F locked_1586,    parm1_x;
11857         STORE_F "
11858 ",      parm2_x;
11859         CALL3           strcat;
11860         STORE_F FILE_APPEND,    parm0_x;
11861         STORE_F return_x,       parm1_x;
11862         CALL2           _Menu_Structure_Debug;
11863         RETURN  offset_0;
11864         STORE_F lTemp,  parm0_x;
11865         CALL1           _Menu_GetNext;
11866         STORE_ENT       return_x,       lTemp;
11867         GOTO            -18;
11868         DONE;
11869 }
11870
11871 void() _Menu_SelectPrev = asm
11872 {
11873 local float locked_1586;
11874 local entity lTemp;
11875 local float temp_1;
11876         IF              Menu_ActiveItem,        5;
11877         STORE_F FILE_APPEND,    parm0_x;
11878         STORE_F "_SelectPrev: Bad Menu_ActiveItem!
11879 ",      parm1_x;
11880         CALL2           _Menu_Structure_Debug;
11881         RETURN  offset_0;
11882         STORE_ENT       Menu_ActiveItem,        lTemp;
11883         STORE_F lTemp,  parm0_x;
11884         CALL1           _Menu_GetPrev;
11885         STORE_ENT       return_x,       lTemp;
11886         NE_E            return_x,       null_entity,    locked_1586;
11887         IFNOT           locked_1586,    15;
11888         INDIRECT_F      lTemp,  _runFlag,       locked_1586;
11889         BITAND  locked_1586,    RUNFLAG_NOSELECT,       locked_1586;
11890         IF              locked_1586,    11;
11891         STORE_ENT       lTemp,  Menu_ActiveItem;
11892         INDIRECT_S      lTemp,  name,   locked_1586;
11893         STORE_F "_SelectPrev: ",        parm0_x;
11894         STORE_F locked_1586,    parm1_x;
11895         STORE_F "
11896 ",      parm2_x;
11897         CALL3           strcat;
11898         STORE_F FILE_APPEND,    parm0_x;
11899         STORE_F return_x,       parm1_x;
11900         CALL2           _Menu_Structure_Debug;
11901         RETURN  offset_0;
11902         GOTO            -18;
11903         STORE_ENT       Menu_ActiveItem,        lTemp;
11904         STORE_F lTemp,  parm0_x;
11905         CALL1           _Menu_GetNext;
11906         IFNOT           return_x,       8;
11907         STORE_F lTemp,  parm0_x;
11908         STORE_F return_x,       locked_1586;
11909         CALL1           _Menu_GetNext;
11910         STORE_F return_x,       temp_1;
11911         STORE_F locked_1586,    return_x;
11912         STORE_ENT       temp_1, lTemp;
11913         GOTO            -9;
11914         NE_E            lTemp,  Menu_ActiveItem,        locked_1586;
11915         IFNOT           locked_1586,    18;
11916         INDIRECT_F      lTemp,  _runFlag,       locked_1586;
11917         BITAND  locked_1586,    RUNFLAG_NOSELECT,       locked_1586;
11918         IF              locked_1586,    11;
11919         STORE_ENT       lTemp,  Menu_ActiveItem;
11920         INDIRECT_S      lTemp,  name,   locked_1586;
11921         STORE_F "_SelectPrev after loop: ",     parm0_x;
11922         STORE_F locked_1586,    parm1_x;
11923         STORE_F "
11924 ",      parm2_x;
11925         CALL3           strcat;
11926         STORE_F FILE_APPEND,    parm0_x;
11927         STORE_F return_x,       parm1_x;
11928         CALL2           _Menu_Structure_Debug;
11929         RETURN  offset_0;
11930         STORE_F lTemp,  parm0_x;
11931         CALL1           _Menu_GetPrev;
11932         STORE_ENT       return_x,       lTemp;
11933         GOTO            -18;
11934         DONE;
11935 }
11936
11937 float() _Menu_SelectUp = asm
11938 {
11939 local entity lNode;
11940 local entity lParent;
11941 local entity lSelected;
11942 local float temp_0;
11943         STORE_ENT       Menu_ActiveItem,        lSelected;
11944         IF              lSelected,      5;
11945         STORE_F FILE_APPEND,    parm0_x;
11946         STORE_F "_SelectUp: Bad Menu_ActiveItem!
11947 ",      parm1_x;
11948         CALL2           _Menu_Structure_Debug;
11949         RETURN  KEY_GAME;
11950         EQ_E            lSelected,      Menu_ActiveWindow,      temp_0;
11951         IFNOT           temp_0, 18;
11952         STORE_F KEY_MENU,       parm0_x;
11953         STORE_F "_SelectUp: Selecting up current active window..
11954 ",      parm1_x;
11955         CALL2           _Menu_Structure_Debug;
11956         EQ_E            Menu_History,   null_entity,    temp_0;
11957         IFNOT           temp_0, 9;
11958         STORE_F KEY_MENU,       parm0_x;
11959         STORE_F "_SelectUp: Empty history -> toggling menu..
11960 ",      parm1_x;
11961         CALL2           _Menu_Structure_Debug;
11962         CALL0           Menu_Toggle;
11963         IF              return_x,       3;
11964         STORE_F KEY_GAME,       parm0_x;
11965         CALL1           Menu_Reselect;
11966         RETURN  FILE_APPEND;
11967         STORE_F KEY_MENU,       parm0_x;
11968         STORE_F "_SelectUp: Popping history..
11969 ",      parm1_x;
11970         CALL2           _Menu_Structure_Debug;
11971         CALL0           Menu_History_Pop;
11972         STORE_F lSelected,      parm0_x;
11973         CALL1           _Menu_GetParent;
11974         STORE_ENT       return_x,       lParent;
11975         IF              lParent,        5;
11976         STORE_F KEY_MENU,       parm0_x;
11977         STORE_F "_SelectUp: No parent and not active window!
11978 ",      parm1_x;
11979         CALL2           _Menu_Structure_Debug;
11980         RETURN  KEY_GAME;
11981         INDIRECT_F      lParent,        _runFlag,       temp_0;
11982         BITAND  temp_0, RUNFLAG_NOSELECT,       temp_0;
11983         IF              temp_0, 11;
11984         STORE_ENT       lParent,        Menu_ActiveItem;
11985         INDIRECT_S      lParent,        name,   temp_0;
11986         STORE_F "_SelectUp: first parent: ",    parm0_x;
11987         STORE_F temp_0, parm1_x;
11988         STORE_F "
11989 ",      parm2_x;
11990         CALL3           strcat;
11991         STORE_F FILE_APPEND,    parm0_x;
11992         STORE_F return_x,       parm1_x;
11993         CALL2           _Menu_Structure_Debug;
11994         RETURN  FILE_APPEND;
11995         EQ_E            lParent,        Menu_ActiveWindow,      temp_0;
11996         IFNOT           temp_0, 16;
11997         STORE_ENT       Menu_ActiveWindow,      Menu_ActiveItem;
11998         INDIRECT_S      Menu_ActiveItem,        name,   temp_0;
11999         STORE_F "_SelectUp: select up parent: ",        parm0_x;
12000         STORE_F temp_0, parm1_x;
12001         STORE_F "
12002 ",      parm2_x;
12003         CALL3           strcat;
12004         STORE_F KEY_MENU,       parm0_x;
12005         STORE_F return_x,       parm1_x;
12006         CALL2           _Menu_Structure_Debug;
12007         CALL0           _Menu_SelectUp;
12008         IFNOT           return_x,       2;
12009         RETURN  FILE_APPEND;
12010         STORE_ENT       lSelected,      Menu_ActiveItem;
12011         RETURN  KEY_GAME;
12012         GOTO            7;
12013         INDIRECT_E      lParent,        _parent,        temp_0;
12014         IF              temp_0, 5;
12015         STORE_F FILE_APPEND,    parm0_x;
12016         STORE_F "_SelectUp: No parent of parent and not active window!
12017 ",      parm1_x;
12018         CALL2           _Menu_Structure_Debug;
12019         RETURN  KEY_GAME;
12020         STORE_F lParent,        parm0_x;
12021         CALL1           _Menu_GetParent;
12022         STORE_ENT       return_x,       Menu_ActiveItem;
12023         INDIRECT_S      Menu_ActiveItem,        name,   temp_0;
12024         STORE_F "_SelectUp: SelectDown on parent of parent '",  parm0_x;
12025         STORE_F temp_0, parm1_x;
12026         STORE_F "' 
12027 ",      parm2_x;
12028         CALL3           strcat;
12029         STORE_F KEY_MENU,       parm0_x;
12030         STORE_F return_x,       parm1_x;
12031         CALL2           _Menu_Structure_Debug;
12032         CALL0           _Menu_SelectDown;
12033         STORE_ENT       Menu_ActiveItem,        lNode;
12034         IFNOT           lNode,  14;
12035         INDIRECT_E      lNode,  _parent,        temp_0;
12036         EQ_E            temp_0, lParent,        temp_0;
12037         IFNOT           temp_0, 9;
12038         STORE_F lSelected,      parm0_x;
12039         CALL1           _Menu_GetParent;
12040         STORE_ENT       return_x,       Menu_ActiveItem;
12041         CALL0           _Menu_SelectUp;
12042         IFNOT           return_x,       2;
12043         RETURN  FILE_APPEND;
12044         STORE_ENT       lSelected,      Menu_ActiveItem;
12045         RETURN  KEY_GAME;
12046         INDIRECT_E      lNode,  _parent,        lNode;
12047         GOTO            -13;
12048         RETURN  FILE_APPEND;
12049         DONE;
12050 }
12051
12052 void (entity) _Menu_PrintRunFlag;
12053 float() _Menu_SelectDown = asm
12054 {
12055 local entity lChild;
12056 local entity lParent;
12057 local float temp_0;
12058         STORE_ENT       Menu_ActiveItem,        lParent;
12059         IF              lParent,        5;
12060         STORE_F FILE_APPEND,    parm0_x;
12061         STORE_F "_SelectDown: Bad Menu_ActiveItem!
12062 ",      parm1_x;
12063         CALL2           _Menu_Structure_Debug;
12064         RETURN  KEY_GAME;
12065         INDIRECT_E      lParent,        _child, parm0_x;
12066         CALL1           _Menu_GetFirst;
12067         STORE_ENT       return_x,       lChild;
12068         IFNOT           lChild, 20;
12069         INDIRECT_F      lChild, _runFlag,       temp_0;
12070         BITAND  temp_0, RUNFLAG_NOSELECT,       temp_0;
12071         IF              temp_0, 13;
12072         STORE_ENT       lChild, Menu_ActiveItem;
12073         STORE_F lChild, parm0_x;
12074         CALL1           _Menu_PrintRunFlag;
12075         INDIRECT_S      lChild, name,   temp_0;
12076         STORE_F "_SelectDown: ",        parm0_x;
12077         STORE_F temp_0, parm1_x;
12078         STORE_F "
12079 ",      parm2_x;
12080         CALL3           strcat;
12081         STORE_F FILE_APPEND,    parm0_x;
12082         STORE_F return_x,       parm1_x;
12083         CALL2           _Menu_Structure_Debug;
12084         RETURN  FILE_APPEND;
12085         STORE_F lChild, parm0_x;
12086         CALL1           _Menu_GetNext;
12087         STORE_ENT       return_x,       lChild;
12088         GOTO            -19;
12089         INDIRECT_E      lParent,        _child, parm0_x;
12090         CALL1           _Menu_GetFirst;
12091         STORE_ENT       return_x,       lChild;
12092         IFNOT           lChild, 20;
12093         INDIRECT_F      lChild, flag,   temp_0;
12094         BITAND  temp_0, FLAG_EMBEDDED,  temp_0;
12095         IF              temp_0, 13;
12096         STORE_ENT       lChild, Menu_ActiveItem;
12097         INDIRECT_S      Menu_ActiveItem,        name,   temp_0;
12098         STORE_F "_SelectDown: Try child: ",     parm0_x;
12099         STORE_F temp_0, parm1_x;
12100         STORE_F "
12101 ",      parm2_x;
12102         CALL3           strcat;
12103         STORE_F KEY_MENU,       parm0_x;
12104         STORE_F return_x,       parm1_x;
12105         CALL2           _Menu_Structure_Debug;
12106         CALL0           _Menu_SelectDown;
12107         IFNOT           return_x,       2;
12108         RETURN  FILE_APPEND;
12109         STORE_F lChild, parm0_x;
12110         CALL1           _Menu_GetNext;
12111         STORE_ENT       return_x,       lChild;
12112         GOTO            -19;
12113         STORE_ENT       lParent,        Menu_ActiveItem;
12114         RETURN  KEY_GAME;
12115         DONE;
12116 }
12117
12118 void() _Menu_Reselect = asm
12119 {
12120         STORE_ENT       Menu_ActiveWindow,      Menu_ActiveItem;
12121         CALL0           _Menu_SelectDown;
12122         DONE;
12123 }
12124
12125 void(float pUser) Menu_SelectNext = asm
12126 {
12127         STORE_F Menu_ActiveItem,        parm0_x;
12128         STORE_F KEY_GAME,       parm1_x;
12129         STORE_F pUser,  parm2_x;
12130         CALL3           Raise_Select;
12131         CALL0           _Menu_SelectNext;
12132         STORE_F Menu_ActiveItem,        parm0_x;
12133         STORE_F FILE_APPEND,    parm1_x;
12134         STORE_F pUser,  parm2_x;
12135         CALL3           Raise_Select;
12136         DONE;
12137 }
12138
12139 void(float pUser) Menu_SelectPrev = asm
12140 {
12141         STORE_F Menu_ActiveItem,        parm0_x;
12142         STORE_F KEY_GAME,       parm1_x;
12143         STORE_F pUser,  parm2_x;
12144         CALL3           Raise_Select;
12145         CALL0           _Menu_SelectPrev;
12146         STORE_F Menu_ActiveItem,        parm0_x;
12147         STORE_F FILE_APPEND,    parm1_x;
12148         STORE_F pUser,  parm2_x;
12149         CALL3           Raise_Select;
12150         DONE;
12151 }
12152
12153 float(float pUser) Menu_SelectUp = asm
12154 {
12155 local entity lOld;
12156         STORE_ENT       Menu_ActiveItem,        lOld;
12157         CALL0           _Menu_SelectUp;
12158         IFNOT           return_x,       10;
12159         STORE_F lOld,   parm0_x;
12160         STORE_F KEY_GAME,       parm1_x;
12161         STORE_F pUser,  parm2_x;
12162         CALL3           Raise_Select;
12163         STORE_F Menu_ActiveItem,        parm0_x;
12164         STORE_F FILE_APPEND,    parm1_x;
12165         STORE_F pUser,  parm2_x;
12166         CALL3           Raise_Select;
12167         RETURN  FILE_APPEND;
12168         RETURN  KEY_GAME;
12169         DONE;
12170 }
12171
12172 float(float pUser) Menu_SelectDown = asm
12173 {
12174 local entity lOld;
12175         STORE_ENT       Menu_ActiveItem,        lOld;
12176         CALL0           _Menu_SelectDown;
12177         IFNOT           return_x,       10;
12178         STORE_F lOld,   parm0_x;
12179         STORE_F KEY_GAME,       parm1_x;
12180         STORE_F pUser,  parm2_x;
12181         CALL3           Raise_Select;
12182         STORE_F Menu_ActiveItem,        parm0_x;
12183         STORE_F FILE_APPEND,    parm1_x;
12184         STORE_F pUser,  parm2_x;
12185         CALL3           Raise_Select;
12186         RETURN  FILE_APPEND;
12187         RETURN  KEY_GAME;
12188         DONE;
12189 }
12190
12191 void(entity pItem, bool pUser) Menu_Select = asm
12192 {
12193 local float temp_0;
12194         STORE_F Menu_ActiveItem,        parm0_x;
12195         STORE_F KEY_GAME,       parm1_x;
12196         STORE_F pUser,  parm2_x;
12197         CALL3           Raise_Select;
12198         INDIRECT_S      pItem,  name,   temp_0;
12199         STORE_F "Menu_Select: ",        parm0_x;
12200         STORE_F temp_0, parm1_x;
12201         STORE_F "
12202 ",      parm2_x;
12203         CALL3           strcat;
12204         STORE_F FILE_APPEND,    parm0_x;
12205         STORE_F return_x,       parm1_x;
12206         CALL2           _Menu_Structure_Debug;
12207         STORE_ENT       pItem,  Menu_ActiveItem;
12208         STORE_F Menu_ActiveItem,        parm0_x;
12209         STORE_F FILE_APPEND,    parm1_x;
12210         STORE_F pUser,  parm2_x;
12211         CALL3           Raise_Select;
12212         DONE;
12213 }
12214
12215 void(entity pItem, bool pUser) Menu_CorrectSelection = asm
12216 {
12217 local float temp_0;
12218         NE_E            Menu_ActiveItem,        pItem,  temp_0;
12219         IFNOT           temp_0, 4;
12220         STORE_F pItem,  parm0_x;
12221         STORE_F pUser,  parm1_x;
12222         CALL2           Menu_Select;
12223         DONE;
12224 }
12225
12226 void(float pUser) Menu_Reselect = asm
12227 {
12228         STORE_F Menu_ActiveItem,        parm0_x;
12229         STORE_F KEY_GAME,       parm1_x;
12230         STORE_F pUser,  parm2_x;
12231         CALL3           Raise_Select;
12232         CALL0           _Menu_Reselect;
12233         STORE_F Menu_ActiveItem,        parm0_x;
12234         STORE_F FILE_APPEND,    parm1_x;
12235         STORE_F pUser,  parm2_x;
12236         CALL3           Raise_Select;
12237         DONE;
12238 }
12239
12240 void(entity pMenu, float pMakeActive, float pUser) Menu_JumpToWindow = asm
12241 {
12242 local float temp_0;
12243         STORE_F Menu_ActiveItem,        parm0_x;
12244         STORE_F KEY_GAME,       parm1_x;
12245         STORE_F pUser,  parm2_x;
12246         CALL3           Raise_Select;
12247         INDIRECT_E      pMenu,  _child, temp_0;
12248         IF              temp_0, 6;
12249         INDIRECT_S      pMenu,  name,   temp_0;
12250         STORE_F "Cant jump to ",        parm0_x;
12251         STORE_F temp_0, parm1_x;
12252         STORE_F " !
12253 ",      parm2_x;
12254         CALL3           error;
12255         IFNOT           pMakeActive,    5;
12256         STORE_F pMenu,  parm0_x;
12257         STORE_F Util_NullFunction,      parm1_x;
12258         CALL2           Menu_History_Push;
12259         STORE_ENT       pMenu,  Menu_ActiveWindow;
12260         STORE_ENT       pMenu,  Menu_ActiveItem;
12261         CALL0           _Menu_SelectDown;
12262         IF              return_x,       6;
12263         INDIRECT_S      pMenu,  name,   temp_0;
12264         STORE_F "Couldn't jump to ",    parm0_x;
12265         STORE_F temp_0, parm1_x;
12266         STORE_F " !
12267 ",      parm2_x;
12268         CALL3           error;
12269         STORE_F Menu_ActiveItem,        parm0_x;
12270         STORE_F FILE_APPEND,    parm1_x;
12271         STORE_F pUser,  parm2_x;
12272         CALL3           Raise_Select;
12273         DONE;
12274 }
12275
12276 entity(entity pOrigin, string pName, bool pThrow) Menu_GetItemEx = asm
12277 {
12278 local float lCounter;
12279 local float lCount;
12280 local string lToken;
12281 local string lFirstTwo;
12282 local entity lItem;
12283 local float temp_0;
12284 local float temp_1;
12285         STORE_F pName,  parm0_x;
12286         STORE_F KEY_GAME,       parm1_x;
12287         STORE_F KEY_MENU,       parm2_x;
12288         CALL3           substring;
12289         STORE_S return_x,       lFirstTwo;
12290         EQ_S            lFirstTwo,      "::",   temp_0;
12291         IFNOT           temp_0, 11;
12292         STORE_F pName,  parm0_x;
12293         STORE_F KEY_MENU,       parm1_x;
12294         STORE_F 100000.000000,  parm2_x;
12295         CALL3           substring;
12296         STORE_F null_entity,    parm0_x;
12297         STORE_F name,   parm1_x;
12298         STORE_F return_x,       parm2_x;
12299         CALL3           findstring;
12300         STORE_ENT       return_x,       lItem;
12301         GOTO            65;
12302         EQ_S            lFirstTwo,      "##",   temp_0;
12303         IFNOT           temp_0, 40;
12304         STORE_ENT       pOrigin,        lItem;
12305         STORE_F pName,  parm0_x;
12306         STORE_F KEY_MENU,       parm1_x;
12307         STORE_F 100000.000000,  parm2_x;
12308         CALL3           substring;
12309         STORE_F return_x,       parm0_x;
12310         CALL1           tokenize;
12311         STORE_F return_x,       lCount;
12312         STORE_F KEY_GAME,       lCounter;
12313         LT              lCounter,       lCount, temp_0;
12314         IFNOT           temp_0, 1;
12315         AND             temp_0, lItem,  temp_0;
12316         IFNOT           temp_0, 26;
12317         STORE_F lCounter,       parm0_x;
12318         CALL1           argv;
12319         STORE_S return_x,       lToken;
12320         EQ_S            lToken, "up",   temp_0;
12321         IFNOT           temp_0, 3;
12322         INDIRECT_E      lItem,  _parent,        lItem;
12323         GOTO            17;
12324         EQ_S            lToken, "down", temp_0;
12325         IFNOT           temp_0, 3;
12326         INDIRECT_E      lItem,  _child, lItem;
12327         GOTO            13;
12328         EQ_S            lToken, "next", temp_0;
12329         IFNOT           temp_0, 3;
12330         INDIRECT_E      lItem,  _next,  lItem;
12331         GOTO            9;
12332         EQ_S            lToken, "prev", temp_0;
12333         IFNOT           temp_0, 3;
12334         INDIRECT_E      lItem,  _prev,  lItem;
12335         GOTO            5;
12336         STORE_F "Bad direction link(bad token): '",     parm0_x;
12337         STORE_F pName,  parm1_x;
12338         STORE_F "'!",   parm2_x;
12339         CALL3           error;
12340         ADD_F           lCounter,       FILE_APPEND,    lCounter;
12341         GOTO            -28;
12342         GOTO            24;
12343         STORE_ENT       null_entity,    lItem;
12344         NOT_ENT lItem,  temp_0;
12345         IFNOT           temp_0, 3;
12346         INDIRECT_E      pOrigin,        _parent,        pOrigin;
12347         NE_E            pOrigin,        null_entity,    temp_1;
12348         AND             temp_0, temp_1, temp_0;
12349         IFNOT           temp_0, 11;
12350         INDIRECT_S      pOrigin,        name,   parm0_x;
12351         STORE_F "::",   parm1_x;
12352         STORE_F pName,  parm2_x;
12353         CALL3           strcat;
12354         STORE_F null_entity,    parm0_x;
12355         STORE_F name,   parm1_x;
12356         STORE_F return_x,       parm2_x;
12357         CALL3           findstring;
12358         STORE_ENT       return_x,       lItem;
12359         GOTO            -15;
12360         IF              lItem,  6;
12361         STORE_F null_entity,    parm0_x;
12362         STORE_F name,   parm1_x;
12363         STORE_F pName,  parm2_x;
12364         CALL3           findstring;
12365         STORE_ENT       return_x,       lItem;
12366         EQ_E            lItem,  null_entity,    temp_0;
12367         IFNOT           temp_0, 1;
12368         AND             temp_0, pThrow, temp_0;
12369         IFNOT           temp_0, 5;
12370         STORE_F "Couldn't find item '", parm0_x;
12371         STORE_F pName,  parm1_x;
12372         STORE_F "'!",   parm2_x;
12373         CALL3           error;
12374         RETURN  lItem;
12375         DONE;
12376 }
12377
12378 entity(entity pOrigin, string pName, bool pThrow) Menu_GetChildEx = asm
12379 {
12380 local entity lItem;
12381 local float temp_0;
12382         IFNOT           pOrigin,        11;
12383         INDIRECT_S      pOrigin,        name,   parm0_x;
12384         STORE_F "::",   parm1_x;
12385         STORE_F pName,  parm2_x;
12386         CALL3           strcat;
12387         STORE_F null_entity,    parm0_x;
12388         STORE_F name,   parm1_x;
12389         STORE_F return_x,       parm2_x;
12390         CALL3           findstring;
12391         STORE_ENT       return_x,       lItem;
12392         GOTO            6;
12393         STORE_F null_entity,    parm0_x;
12394         STORE_F name,   parm1_x;
12395         STORE_F pName,  parm2_x;
12396         CALL3           findstring;
12397         STORE_ENT       return_x,       lItem;
12398         EQ_E            lItem,  null_entity,    temp_0;
12399         IFNOT           temp_0, 1;
12400         AND             temp_0, pThrow, temp_0;
12401         IFNOT           temp_0, 5;
12402         STORE_F "Couldn't find item '", parm0_x;
12403         STORE_F pName,  parm1_x;
12404         STORE_F "'!",   parm2_x;
12405         CALL3           error;
12406         RETURN  lItem;
12407         DONE;
12408 }
12409
12410 entity(string pName) Menu_GetItem = asm
12411 {
12412         STORE_F self,   parm0_x;
12413         STORE_F pName,  parm1_x;
12414         STORE_F FILE_APPEND,    parm2_x;
12415         CALL3           Menu_GetItemEx;
12416         RETURN  return_x;
12417         DONE;
12418 }
12419
12420 entity(string pName) Menu_GetChild = asm
12421 {
12422         STORE_F self,   parm0_x;
12423         STORE_F pName,  parm1_x;
12424         STORE_F FILE_APPEND,    parm2_x;
12425         CALL3           Menu_GetChildEx;
12426         RETURN  return_x;
12427         DONE;
12428 }
12429
12430 void(entity pWindow) Menu_EmptyWindow = asm
12431 {
12432 local entity lChild;
12433 local float temp_0;
12434         INDIRECT_E      pWindow,        _child, lChild;
12435         IFNOT           lChild, 9;
12436         STORE_F lChild, parm0_x;
12437         CALL1           Menu_EmptyWindow;
12438         STORE_F lChild, parm0_x;
12439         CALL1           Raise_Destroy;
12440         STORE_F lChild, parm0_x;
12441         CALL1           remove;
12442         INDIRECT_E      lChild, _next,  lChild;
12443         GOTO            -8;
12444         ADDRESS pWindow,        _child, temp_0;
12445         STOREP_ENT      null_entity,    temp_0;
12446         DONE;
12447 }
12448
12449 void(entity pEntity) Menu_RemoveItem = asm
12450 {
12451 local entity lParent;
12452 local float temp_0;
12453         INDIRECT_E      pEntity,        _parent,        lParent;
12454         STORE_F pEntity,        parm0_x;
12455         CALL1           Menu_EmptyWindow;
12456         STORE_F pEntity,        parm0_x;
12457         CALL1           Raise_Destroy;
12458         STORE_F pEntity,        parm0_x;
12459         CALL1           remove;
12460         IFNOT           lParent,        3;
12461         STORE_F lParent,        parm0_x;
12462         CALL1           Menu_LinkChildren;
12463         DONE;
12464 }
12465
12466 void(entity pItem) _Menu_PrintRunFlag = asm
12467 {
12468 local float temp_0;
12469         IFNOT           sys_debug_runflag,      48;
12470         INDIRECT_S      pItem,  name,   temp_0;
12471         STORE_F " ",    parm0_x;
12472         STORE_F temp_0, parm1_x;
12473         STORE_F " Runflags: ",  parm2_x;
12474         CALL3           print;
12475         INDIRECT_F      pItem,  _runFlag,       temp_0;
12476         BITAND  temp_0, RUNFLAG_TEMPLATE,       temp_0;
12477         IFNOT           temp_0, 3;
12478         STORE_F "TEMPLATE ",    parm0_x;
12479         CALL1           print;
12480         INDIRECT_F      pItem,  _runFlag,       temp_0;
12481         BITAND  temp_0, RUNFLAG_MOUSEINAREA,    temp_0;
12482         IFNOT           temp_0, 3;
12483         STORE_F "MOUSEINAREA ", parm0_x;
12484         CALL1           print;
12485         INDIRECT_F      pItem,  _runFlag,       temp_0;
12486         BITAND  temp_0, RUNFLAG_HADMOUSE,       temp_0;
12487         IFNOT           temp_0, 3;
12488         STORE_F "HADMOUSE ",    parm0_x;
12489         CALL1           print;
12490         INDIRECT_F      pItem,  _runFlag,       temp_0;
12491         BITAND  temp_0, RUNFLAG_CHILDDRAWONLY,  temp_0;
12492         IFNOT           temp_0, 3;
12493         STORE_F "CHILDDRAWONLY ",       parm0_x;
12494         CALL1           print;
12495         INDIRECT_F      pItem,  _runFlag,       temp_0;
12496         BITAND  temp_0, RUNFLAG_CHILDDRAWUPDATEONLY,    temp_0;
12497         IFNOT           temp_0, 3;
12498         STORE_F "CHILDDRAWUPDATEONLY ", parm0_x;
12499         CALL1           print;
12500         INDIRECT_F      pItem,  _runFlag,       temp_0;
12501         BITAND  temp_0, RUNFLAG_HIDDEN, temp_0;
12502         IFNOT           temp_0, 3;
12503         STORE_F "HIDDEN ",      parm0_x;
12504         CALL1           print;
12505         INDIRECT_F      pItem,  _runFlag,       temp_0;
12506         BITAND  temp_0, RUNFLAG_CLIPPED,        temp_0;
12507         IFNOT           temp_0, 3;
12508         STORE_F "CLIPPED ",     parm0_x;
12509         CALL1           print;
12510         INDIRECT_F      pItem,  _runFlag,       temp_0;
12511         BITAND  temp_0, RUNFLAG_NOSELECT,       temp_0;
12512         IFNOT           temp_0, 3;
12513         STORE_F "NOSELECT ",    parm0_x;
12514         CALL1           print;
12515         STORE_F "
12516 ",      parm0_x;
12517         CALL1           print;
12518         DONE;
12519 }
12520
12521 void(entity pItem) Menu_SetRunFlag = asm
12522 {
12523 local float lRunFlag;
12524 local float lFlag;
12525 local float temp_0;
12526 local float temp_1;
12527 local float temp_5;
12528         INDIRECT_F      pItem,  flag,   lFlag;
12529         BITAND  lFlag,  FLAG_TEMPLATE,  temp_0;
12530         IFNOT           temp_0, 5;
12531         ADDRESS pItem,  _runFlag,       temp_0;
12532         INDIRECT_F      pItem,  _runFlag,       temp_1;
12533         BITOR           temp_1, RUNFLAG_TEMPLATE,       temp_1;
12534         STOREP_F        temp_1, temp_0;
12535         INDIRECT_F      pItem,  _runFlag,       lRunFlag;
12536         BITAND  lRunFlag,       RUNFLAG_MOUSEINAREA,    temp_0;
12537         IFNOT           temp_0, 5;
12538         ADDRESS pItem,  _runFlag,       temp_0;
12539         SUB_F           lRunFlag,       RUNFLAG_MOUSEINAREA,    temp_1;
12540         BITOR           temp_1, RUNFLAG_HADMOUSE,       temp_1;
12541         STOREP_F        temp_1, temp_0;
12542         EQ_V            Menu_Clip_Size, '0.000000 0.000000 0.000000',   temp_0;
12543         IFNOT           temp_0, 2;
12544         NE_V            Menu_Clip_Position,     '0.000000 0.000000 0.000000',   temp_1;
12545         AND             temp_0, temp_1, temp_0;
12546         IFNOT           temp_0, 5;
12547         ADDRESS pItem,  _runFlag,       temp_0;
12548         INDIRECT_F      pItem,  _runFlag,       temp_1;
12549         BITOR           temp_1, RUNFLAG_CLIPPED,        temp_1;
12550         STOREP_F        temp_1, temp_0;
12551         INDIRECT_F      pItem,  _runFlag,       lRunFlag;
12552         BITAND  lFlag,  FLAG_HIDDEN,    temp_0;
12553         IF              temp_0, 2;
12554         BITAND  lRunFlag,       RUNFLAG_TEMPLATE,       temp_1;
12555         OR              temp_0, temp_1, temp_0;
12556         IF              temp_0, 6;
12557         BITAND  lFlag,  FLAG_SERVERONLY,        temp_1;
12558         IFNOT           temp_1, 3;
12559         BITAND  gamestatus,     FILE_APPEND,    temp_5;
12560         NOT_F           temp_5, temp_5;
12561         AND             temp_1, temp_5, temp_1;
12562         OR              temp_0, temp_1, temp_0;
12563         IF              temp_0, 6;
12564         BITAND  lFlag,  FLAG_CONNECTEDONLY,     temp_1;
12565         IFNOT           temp_1, 3;
12566         BITAND  gamestatus,     KEY_MENU,       temp_5;
12567         NOT_F           temp_5, temp_5;
12568         AND             temp_1, temp_5, temp_1;
12569         OR              temp_0, temp_1, temp_0;
12570         IF              temp_0, 6;
12571         BITAND  lFlag,  FLAG_DEVELOPERONLY,     temp_1;
12572         IFNOT           temp_1, 3;
12573         BITAND  gamestatus,     CVAR_READONLY,  temp_5;
12574         NOT_F           temp_5, temp_5;
12575         AND             temp_1, temp_5, temp_1;
12576         OR              temp_0, temp_1, temp_0;
12577         IFNOT           temp_0, 4;
12578         ADDRESS pItem,  _runFlag,       temp_0;
12579         BITOR           lRunFlag,       RUNFLAG_HIDDEN, temp_1;
12580         STOREP_F        temp_1, temp_0;
12581         INDIRECT_F      pItem,  _runFlag,       lRunFlag;
12582         BITAND  lFlag,  FLAG_NOSELECT,  temp_0;
12583         IF              temp_0, 2;
12584         BITAND  lFlag,  FLAG_DRAWONLY,  temp_1;
12585         OR              temp_0, temp_1, temp_0;
12586         IF              temp_0, 2;
12587         BITAND  lFlag,  FLAG_DRAWUPDATEONLY,    temp_1;
12588         OR              temp_0, temp_1, temp_0;
12589         IF              temp_0, 2;
12590         BITAND  lFlag,  FLAG_EMBEDDED,  temp_1;
12591         OR              temp_0, temp_1, temp_0;
12592         IF              temp_0, 2;
12593         BITAND  lRunFlag,       RUNFLAG_TEMPLATE,       temp_1;
12594         OR              temp_0, temp_1, temp_0;
12595         IF              temp_0, 2;
12596         BITAND  lRunFlag,       RUNFLAG_HIDDEN, temp_1;
12597         OR              temp_0, temp_1, temp_0;
12598         IF              temp_0, 2;
12599         BITAND  lRunFlag,       RUNFLAG_CHILDDRAWONLY,  temp_1;
12600         OR              temp_0, temp_1, temp_0;
12601         IF              temp_0, 2;
12602         BITAND  lRunFlag,       RUNFLAG_CHILDDRAWUPDATEONLY,    temp_1;
12603         OR              temp_0, temp_1, temp_0;
12604         IFNOT           temp_0, 4;
12605         ADDRESS pItem,  _runFlag,       temp_0;
12606         BITOR           lRunFlag,       RUNFLAG_NOSELECT,       temp_1;
12607         STOREP_F        temp_1, temp_0;
12608         STORE_F pItem,  parm0_x;
12609         CALL1           _Menu_PrintRunFlag;
12610         DONE;
12611 }
12612
12613 void(entity pParent, entity pItem) Menu_InheritRunFlag = asm
12614 {
12615 local float temp_0;
12616 local float temp_1;
12617         ADDRESS pItem,  _runFlag,       temp_0;
12618         INDIRECT_F      pItem,  _runFlag,       temp_1;
12619         BITAND  temp_1, 3588.000000,    temp_1;
12620         STOREP_F        temp_1, temp_0;
12621         INDIRECT_F      pParent,        _runFlag,       temp_0;
12622         BITAND  temp_0, RUNFLAG_TEMPLATE,       temp_0;
12623         IFNOT           temp_0, 5;
12624         ADDRESS pItem,  _runFlag,       temp_0;
12625         INDIRECT_F      pItem,  _runFlag,       temp_1;
12626         BITOR           temp_1, RUNFLAG_TEMPLATE,       temp_1;
12627         STOREP_F        temp_1, temp_0;
12628         INDIRECT_F      pParent,        _runFlag,       temp_0;
12629         BITAND  temp_0, RUNFLAG_CHILDDRAWONLY,  temp_0;
12630         IF              temp_0, 3;
12631         INDIRECT_F      pParent,        flag,   temp_1;
12632         BITAND  temp_1, FLAG_CHILDDRAWONLY,     temp_1;
12633         OR              temp_0, temp_1, temp_0;
12634         IFNOT           temp_0, 5;
12635         ADDRESS pItem,  _runFlag,       temp_0;
12636         INDIRECT_F      pItem,  _runFlag,       temp_1;
12637         BITOR           temp_1, RUNFLAG_CHILDDRAWONLY,  temp_1;
12638         STOREP_F        temp_1, temp_0;
12639         INDIRECT_F      pParent,        _runFlag,       temp_0;
12640         BITAND  temp_0, RUNFLAG_CHILDDRAWUPDATEONLY,    temp_0;
12641         IF              temp_0, 3;
12642         INDIRECT_F      pParent,        flag,   temp_1;
12643         BITAND  temp_1, FLAG_CHILDDRAWUPDATEONLY,       temp_1;
12644         OR              temp_0, temp_1, temp_0;
12645         IFNOT           temp_0, 5;
12646         ADDRESS pItem,  _runFlag,       temp_0;
12647         INDIRECT_F      pItem,  _runFlag,       temp_1;
12648         BITOR           temp_1, RUNFLAG_CHILDDRAWUPDATEONLY,    temp_1;
12649         STOREP_F        temp_1, temp_0;
12650         INDIRECT_F      pParent,        _runFlag,       temp_0;
12651         BITAND  temp_0, RUNFLAG_HIDDEN, temp_0;
12652         IFNOT           temp_0, 5;
12653         ADDRESS pItem,  _runFlag,       temp_0;
12654         INDIRECT_F      pItem,  _runFlag,       temp_1;
12655         BITOR           temp_1, RUNFLAG_HIDDEN, temp_1;
12656         STOREP_F        temp_1, temp_0;
12657         DONE;
12658 }
12659
12660 void() Menu_UpdateRunFlags = asm
12661 {
12662 local vector lOrg;
12663 local vector lSize;
12664 local vector lPos;
12665 local float temp_0;
12666 local float temp_1;
12667 local vector temp_2;
12668         STORE_V Menu_Clip_Position,     lPos;
12669         STORE_V Menu_Clip_Size, lSize;
12670         STORE_V Menu_Origin,    lOrg;
12671         CALL0           Menu_Process_Setup;
12672         ADDRESS Menu_ActiveWindow,      _runFlag,       temp_0;
12673         INDIRECT_F      Menu_ActiveWindow,      _runFlag,       temp_1;
12674         BITAND  temp_1, RUNFLAG_MOUSEINAREA,    temp_1;
12675         STOREP_F        temp_1, temp_0;
12676         STORE_F Menu_ActiveWindow,      parm0_x;
12677         STORE_F MENU_PROCESS_RUNFLAG,   parm1_x;
12678         STORE_F KEY_GAME,       parm2_x;
12679         STORE_F KEY_GAME,       parm3_x;
12680         STORE_F KEY_GAME,       parm4_x;
12681         CALL5           Menu_Process;
12682         STORE_V lSize,  Menu_Clip_Size;
12683         STORE_V lPos,   Menu_Clip_Position;
12684         STORE_V lOrg,   Menu_Origin;
12685         SUB_V           Cursor_Position,        Menu_Origin,    Menu_Cursor_Position;
12686         DONE;
12687 }
12688
12689 float(entity pEntity) Menu_HasEvents = asm
12690 {
12691 local float temp_0;
12692         INDIRECT_F      pEntity,        _runFlag,       temp_0;
12693         BITAND  temp_0, RUNFLAG_CHILDDRAWONLY,  temp_0;
12694         IFNOT           temp_0, 2;
12695         RETURN  KEY_GAME;
12696         INDIRECT_F      pEntity,        _runFlag,       temp_0;
12697         BITAND  temp_0, RUNFLAG_CHILDDRAWUPDATEONLY,    temp_0;
12698         IFNOT           temp_0, 2;
12699         RETURN  KEY_GAME;
12700         INDIRECT_F      pEntity,        flag,   temp_0;
12701         BITAND  temp_0, FLAG_DRAWONLY,  temp_0;
12702         IFNOT           temp_0, 2;
12703         RETURN  KEY_GAME;
12704         INDIRECT_F      pEntity,        flag,   temp_0;
12705         BITAND  temp_0, FLAG_DRAWUPDATEONLY,    temp_0;
12706         IFNOT           temp_0, 2;
12707         RETURN  KEY_GAME;
12708         RETURN  FILE_APPEND;
12709         DONE;
12710 }
12711
12712 void (vector, vector, vector, float, float, string) _Mgfx_Debug_Info;
12713 void(vector pPos, vector pSize, vector pColor, float pAlpha, float pDrawFlag, string pText) _Mgfx_Debug_Info = asm
12714 {
12715 local float locked_1585;
12716 local float temp_0;
12717 local float temp_5;
12718         IF              sys_debug_mgfx, 2;
12719         RETURN  offset_0;
12720         STORE_F pText,  parm0_x;
12721         CALL1           String_Zone;
12722         STORE_S return_x,       pText;
12723         STORE_V pPos,   parm0;
12724         CALL1           vtos;
12725         STORE_V pSize,  parm0;
12726         STORE_F return_x,       temp_0;
12727         CALL1           vtos;
12728         STORE_F return_x,       locked_1585;
12729         STORE_F temp_0, return_x;
12730         STORE_V pColor, parm0;
12731         STORE_F return_x,       temp_0;
12732         CALL1           vtos;
12733         STORE_F return_x,       temp_5;
12734         STORE_F temp_0, return_x;
12735         STORE_F "MGFX output: ",        parm0_x;
12736         STORE_F return_x,       parm1_x;
12737         STORE_F " - ",  parm2_x;
12738         STORE_F locked_1585,    parm3_x;
12739         STORE_F " C",   parm4_x;
12740         STORE_F temp_5, parm5_x;
12741         CALL6           print;
12742         STORE_F pAlpha, parm0_x;
12743         CALL1           ftos;
12744         STORE_F pDrawFlag,      parm0_x;
12745         STORE_F return_x,       temp_0;
12746         CALL1           ftos;
12747         STORE_F return_x,       locked_1585;
12748         STORE_F temp_0, return_x;
12749         STORE_F " A",   parm0_x;
12750         STORE_F return_x,       parm1_x;
12751         STORE_F " X",   parm2_x;
12752         STORE_F locked_1585,    parm3_x;
12753         STORE_F " ",    parm4_x;
12754         STORE_F pText,  parm5_x;
12755         STORE_F "
12756 ",      parm6_x;
12757         CALL7           print;
12758         STORE_F pText,  parm0_x;
12759         CALL1           String_Free;
12760         DONE;
12761 }
12762
12763 vector(vector pPos) Menu_MenToOrg = asm
12764 {
12765 local vector temp_2;
12766         SUB_V           pPos,   Menu_Origin,    temp_2;
12767         RETURN  temp_2_x;
12768         DONE;
12769 }
12770
12771 vector(vector pPos) Menu_OrgToMen = asm
12772 {
12773 local vector temp_2;
12774         ADD_V           pPos,   Menu_Origin,    temp_2;
12775         RETURN  temp_2_x;
12776         DONE;
12777 }
12778
12779 vector(vector pPos) Menu_ConToOrg = asm
12780 {
12781         STORE_V pPos,   parm0;
12782         CALL1           Gfx_ConToMen;
12783         STORE_V return, pPos;
12784         STORE_V pPos,   parm0;
12785         CALL1           Menu_MenToOrg;
12786         RETURN  return_x;
12787         DONE;
12788 }
12789
12790 vector(vector pPos) Menu_OrgToCon = asm
12791 {
12792         STORE_V pPos,   parm0;
12793         CALL1           Menu_OrgToMen;
12794         STORE_V return, pPos;
12795         STORE_V pPos,   parm0;
12796         CALL1           Gfx_MenToCon;
12797         RETURN  return_x;
12798         DONE;
12799 }
12800
12801 float(vector pPosition, float pCharacter, vector pScale, vector pRGB, float pAlpha, float pFlag) Menu_DrawCharacter = asm
12802 {
12803         STORE_F pCharacter,     parm0_x;
12804         CALL1           ftos;
12805         STORE_F "DrawChar: ",   parm0_x;
12806         STORE_F return_x,       parm1_x;
12807         CALL2           strcat;
12808         STORE_V pPosition,      parm0;
12809         STORE_V pScale, parm1;
12810         STORE_V pRGB,   parm2;
12811         STORE_F pAlpha, parm3_x;
12812         STORE_F pFlag,  parm4_x;
12813         STORE_F return_x,       parm5_x;
12814         CALL6           _Mgfx_Debug_Info;
12815         STORE_V pPosition,      parm0;
12816         CALL1           Menu_OrgToMen;
12817         STORE_V return, pPosition;
12818         STORE_V pPosition,      parm0;
12819         STORE_F pCharacter,     parm1_x;
12820         STORE_V pScale, parm2;
12821         STORE_V pRGB,   parm3;
12822         STORE_F pAlpha, parm4_x;
12823         STORE_F pFlag,  parm5_x;
12824         CALL6           Gfx_DrawCharacter;
12825         RETURN  return_x;
12826         DONE;
12827 }
12828
12829 float(vector pPosition, string pText, vector pScale, vector pRGB, float pAlpha, float pFlag) Menu_DrawString = asm
12830 {
12831 local float temp_0;
12832         NOT_S           pText,  temp_0;
12833         IFNOT           temp_0, 2;
12834         RETURN  FILE_APPEND;
12835         STORE_F "DrawString: ", parm0_x;
12836         STORE_F pText,  parm1_x;
12837         CALL2           strcat;
12838         STORE_V pPosition,      parm0;
12839         STORE_V pScale, parm1;
12840         STORE_V pRGB,   parm2;
12841         STORE_F pAlpha, parm3_x;
12842         STORE_F pFlag,  parm4_x;
12843         STORE_F return_x,       parm5_x;
12844         CALL6           _Mgfx_Debug_Info;
12845         STORE_V pPosition,      parm0;
12846         CALL1           Menu_OrgToMen;
12847         STORE_V return, pPosition;
12848         STORE_V pPosition,      parm0;
12849         STORE_F pText,  parm1_x;
12850         STORE_V pScale, parm2;
12851         STORE_V pRGB,   parm3;
12852         STORE_F pAlpha, parm4_x;
12853         STORE_F pFlag,  parm5_x;
12854         CALL6           Gfx_DrawString;
12855         RETURN  return_x;
12856         DONE;
12857 }
12858
12859 float(vector pPosition, string pPicture, vector pSize, vector pRGB, float pAlpha, float pFlag) Menu_DrawPicture = asm
12860 {
12861         STORE_F "DrawPicture: ",        parm0_x;
12862         STORE_F pPicture,       parm1_x;
12863         CALL2           strcat;
12864         STORE_V pPosition,      parm0;
12865         STORE_V pSize,  parm1;
12866         STORE_V pRGB,   parm2;
12867         STORE_F pAlpha, parm3_x;
12868         STORE_F pFlag,  parm4_x;
12869         STORE_F return_x,       parm5_x;
12870         CALL6           _Mgfx_Debug_Info;
12871         STORE_V pPosition,      parm0;
12872         CALL1           Menu_OrgToMen;
12873         STORE_V return, pPosition;
12874         STORE_V pPosition,      parm0;
12875         STORE_F pPicture,       parm1_x;
12876         STORE_V pSize,  parm2;
12877         STORE_V pRGB,   parm3;
12878         STORE_F pAlpha, parm4_x;
12879         STORE_F pFlag,  parm5_x;
12880         CALL6           Gfx_DrawPic;
12881         RETURN  return_x;
12882         DONE;
12883 }
12884
12885 float(vector pPosition, vector pSize, vector pRGB, float pAlpha, float pFlag) Menu_Fill = asm
12886 {
12887         STORE_V pPosition,      parm0;
12888         STORE_V pSize,  parm1;
12889         STORE_V pRGB,   parm2;
12890         STORE_F pAlpha, parm3_x;
12891         STORE_F pFlag,  parm4_x;
12892         STORE_F "Fill", parm5_x;
12893         CALL6           _Mgfx_Debug_Info;
12894         STORE_V pPosition,      parm0;
12895         CALL1           Menu_OrgToMen;
12896         STORE_V return, pPosition;
12897         STORE_V pPosition,      parm0;
12898         STORE_V pSize,  parm1;
12899         STORE_V pRGB,   parm2;
12900         STORE_F pAlpha, parm3_x;
12901         STORE_F pFlag,  parm4_x;
12902         CALL5           Gfx_Fill;
12903         RETURN  return_x;
12904         DONE;
12905 }
12906
12907 void(float pX, float pY, float pWidth, float pHeight) Menu_SetClipArea = asm
12908 {
12909 local vector lSize;
12910 local vector lDelta;
12911 local vector lPosition;
12912 local vector temp_2;
12913         STORE_F pX,     lPosition_x;
12914         STORE_F pY,     lPosition_y;
12915         STORE_V lPosition,      parm0;
12916         CALL1           Menu_OrgToMen;
12917         STORE_V return, lPosition;
12918         STORE_F pWidth, lSize_x;
12919         STORE_F pHeight,        lSize_y;
12920         STORE_V lPosition,      parm0;
12921         STORE_V Menu_Clip_Position,     parm1;
12922         STORE_V Menu_Clip_Size, parm2;
12923         CALL3           Util_GetClipDelta;
12924         STORE_V return, lDelta;
12925         ADD_V           lPosition,      lDelta, lPosition;
12926         SUB_V           lSize,  lDelta, temp_2;
12927         STORE_V lPosition,      parm0;
12928         STORE_V temp_2, parm1;
12929         STORE_V Menu_Clip_Position,     parm2;
12930         STORE_V Menu_Clip_Size, parm3;
12931         CALL4           Util_ClipRect;
12932         STORE_V return, lSize;
12933         STORE_F lPosition_x,    parm0_x;
12934         STORE_F lPosition_y,    parm1_x;
12935         STORE_F pWidth, parm2_x;
12936         STORE_F pHeight,        parm3_x;
12937         CALL4           Gfx_SetClipArea;
12938         DONE;
12939 }
12940
12941 void() Menu_ResetClipArea = asm
12942 {
12943 local float temp_0;
12944 local float temp_1;
12945         EQ_V            Menu_Clip_Position,     '0.000000 0.000000 0.000000',   temp_0;
12946         IFNOT           temp_0, 2;
12947         EQ_V            Menu_Clip_Size, '0.000000 0.000000 0.000000',   temp_1;
12948         AND             temp_0, temp_1, temp_0;
12949         IFNOT           temp_0, 3;
12950         CALL0           Gfx_ResetClipArea;
12951         GOTO            6;
12952         STORE_F Menu_Clip_Position_x,   parm0_x;
12953         STORE_F Menu_Clip_Position_y,   parm1_x;
12954         STORE_F Menu_Clip_Size_x,       parm2_x;
12955         STORE_F Menu_Clip_Size_y,       parm3_x;
12956         CALL4           Gfx_SetClipArea;
12957         DONE;
12958 }
12959
12960 void() Menu_Init = asm
12961 {
12962         CALL0           Sys_Debug_Init;
12963         CALL0           Sys_Debug_Frame;
12964         CALL0           Menu_InitGarbageStats;
12965         CALL0           Menu_Load;
12966         DONE;
12967 }
12968
12969 void() Menu_Load = asm
12970 {
12971         STORE_F MENU_MAINFILE,  parm0_x;
12972         CALL1           Parser_ParseMenu;
12973         CALL0           Menu_LinkWindows;
12974         DONE;
12975 }
12976
12977 entity (entity, FIELD TYPE, string, FIELD TYPE, float) finddef;
12978 entity(entity pStart, .string pFind1, string pMatch, .float pFind2, float pMatch2) finddef = asm
12979 {
12980 local float temp_0;
12981         STORE_F pStart, parm0_x;
12982         STORE_F pFind1, parm1_x;
12983         STORE_F pMatch, parm2_x;
12984         CALL3           findstring;
12985         STORE_ENT       return_x,       pStart;
12986         EQ_E            pStart, null_entity,    temp_0;
12987         IFNOT           temp_0, 2;
12988         GOTO            6;
12989         INDIRECT_F      pStart, pFind2, temp_0;
12990         EQ_F            temp_0, pMatch2,        temp_0;
12991         IFNOT           temp_0, 2;
12992         GOTO            2;
12993         GOTO            -12;
12994         RETURN  pStart;
12995         DONE;
12996 }
12997
12998 void(entity pParent) Menu_LinkChildren = asm
12999 {
13000 local entity lOPrevious;
13001 local entity lOverwrite;
13002 local entity lNext;
13003 local entity lPrevious;
13004 local float lOrder;
13005 local entity lChild;
13006 local float temp_0;
13007 local float temp_1;
13008         INDIRECT_S      pParent,        name,   temp_0;
13009         STORE_F parent, parm0_x;
13010         STORE_F temp_0, parm1_x;
13011         CALL2           findchainstring;
13012         STORE_ENT       return_x,       lChild;
13013         EQ_E            lChild, null_entity,    temp_0;
13014         IFNOT           temp_0, 2;
13015         RETURN  offset_0;
13016         STORE_ENT       null_entity,    lPrevious;
13017         IFNOT           lChild, 7;
13018         INDIRECT_E      lChild, chain,  lNext;
13019         ADDRESS lChild, chain,  temp_0;
13020         STOREP_ENT      lPrevious,      temp_0;
13021         STORE_ENT       lChild, lPrevious;
13022         STORE_ENT       lNext,  lChild;
13023         GOTO            -6;
13024         STORE_ENT       lPrevious,      lChild;
13025         STORE_F FILE_APPEND,    lOrder;
13026         STORE_ENT       null_entity,    lPrevious;
13027         IFNOT           lChild, 45;
13028         INDIRECT_S      pParent,        name,   temp_0;
13029         STORE_F null_entity,    parm0_x;
13030         STORE_F parent, parm1_x;
13031         STORE_F temp_0, parm2_x;
13032         STORE_F orderPos,       parm3_x;
13033         STORE_F lOrder, parm4_x;
13034         CALL5           finddef;
13035         STORE_ENT       return_x,       lOverwrite;
13036         EQ_E            lOverwrite,     lChild, temp_0;
13037         IFNOT           temp_0, 4;
13038         ADDRESS lChild, orderPos,       temp_0;
13039         STOREP_F        lOrder, temp_0;
13040         GOTO            17;
13041         IFNOT           lOverwrite,     13;
13042         STORE_F null_entity,    parm0_x;
13043         STORE_F chain,  parm1_x;
13044         STORE_F lOverwrite,     parm2_x;
13045         CALL3           findentity;
13046         STORE_ENT       return_x,       lOPrevious;
13047         ADDRESS lOPrevious,     chain,  temp_0;
13048         INDIRECT_E      lOverwrite,     chain,  temp_1;
13049         STOREP_ENT      temp_1, temp_0;
13050         ADDRESS lOverwrite,     chain,  temp_0;
13051         STOREP_ENT      lChild, temp_0;
13052         STORE_ENT       lOverwrite,     lChild;
13053         GOTO            4;
13054         ADDRESS lChild, orderPos,       temp_0;
13055         SUB_F           KEY_GAME,       lOrder, temp_1;
13056         STOREP_F        temp_1, temp_0;
13057         IFNOT           lPrevious,      4;
13058         ADDRESS lPrevious,      _next,  temp_0;
13059         STOREP_ENT      lChild, temp_0;
13060         GOTO            3;
13061         ADDRESS pParent,        _child, temp_0;
13062         STOREP_ENT      lChild, temp_0;
13063         ADDRESS lChild, _prev,  temp_0;
13064         STOREP_ENT      lPrevious,      temp_0;
13065         ADDRESS lChild, _parent,        temp_0;
13066         STOREP_ENT      pParent,        temp_0;
13067         STORE_ENT       lChild, lPrevious;
13068         INDIRECT_E      lChild, chain,  lChild;
13069         STORE_F lOrder, temp_0;
13070         ADD_F           lOrder, FILE_APPEND,    lOrder;
13071         GOTO            -44;
13072         ADDRESS lPrevious,      _next,  temp_0;
13073         STOREP_ENT      null_entity,    temp_0;
13074         DONE;
13075 }
13076
13077 void() Menu_LinkWindows = asm
13078 {
13079 local entity lEntity;
13080 local float temp_0;
13081 local float temp_1;
13082         STORE_F "Loading defaults if necessary
13083 ",      parm0_x;
13084         CALL1           dprint;
13085         STORE_F null_entity,    parm0_x;
13086         STORE_F name,   parm1_x;
13087         STORE_F MENU_NORMAL_NAME,       parm2_x;
13088         CALL3           findstring;
13089         STORE_ENT       return_x,       lEntity;
13090         EQ_E            lEntity,        null_entity,    temp_0;
13091         IFNOT           temp_0, 3;
13092         STORE_F MENU_NORMAL_DEFAULT,    parm0_x;
13093         CALL1           loadfromdata;
13094         STORE_F null_entity,    parm0_x;
13095         STORE_F name,   parm1_x;
13096         STORE_F MENU_NORMAL_NAME,       parm2_x;
13097         CALL3           findstring;
13098         STORE_ENT       return_x,       lEntity;
13099         EQ_E            lEntity,        null_entity,    temp_0;
13100         IFNOT           temp_0, 3;
13101         STORE_F "Bad MENU_NORMAL_DEFAULT!
13102 ",      parm0_x;
13103         CALL1           error;
13104         STORE_F null_entity,    parm0_x;
13105         STORE_F name,   parm1_x;
13106         STORE_F MENU_INGAME_NAME,       parm2_x;
13107         CALL3           findstring;
13108         STORE_ENT       return_x,       lEntity;
13109         EQ_E            lEntity,        null_entity,    temp_0;
13110         IFNOT           temp_0, 3;
13111         STORE_F MENU_INGAME_DEFAULT,    parm0_x;
13112         CALL1           loadfromdata;
13113         STORE_F null_entity,    parm0_x;
13114         STORE_F name,   parm1_x;
13115         STORE_F MENU_INGAME_NAME,       parm2_x;
13116         CALL3           findstring;
13117         STORE_ENT       return_x,       lEntity;
13118         EQ_E            lEntity,        null_entity,    temp_0;
13119         IFNOT           temp_0, 3;
13120         STORE_F "Bad MENU_INGAME_DEFAULT!
13121 ",      parm0_x;
13122         CALL1           error;
13123         STORE_F "Verifying that every name is used only once
13124 ",      parm0_x;
13125         CALL1           dprint;
13126         STORE_ENT       null_entity,    lEntity;
13127         STORE_F lEntity,        parm0_x;
13128         CALL1           nextent;
13129         STORE_ENT       return_x,       lEntity;
13130         NE_E            return_x,       null_entity,    temp_0;
13131         IFNOT           temp_0, 19;
13132         STORE_ENT       lEntity,        self;
13133         INDIRECT_S      lEntity,        name,   temp_0;
13134         STORE_F self,   parm0_x;
13135         STORE_F name,   parm1_x;
13136         STORE_F temp_0, parm2_x;
13137         CALL3           findstring;
13138         STORE_ENT       return_x,       self;
13139         NE_E            return_x,       null_entity,    temp_0;
13140         IFNOT           temp_0, 9;
13141         NE_E            self,   null_entity,    temp_0;
13142         IFNOT           temp_0, 6;
13143         INDIRECT_S      lEntity,        name,   temp_0;
13144         STORE_F "Name ",        parm0_x;
13145         STORE_F temp_0, parm1_x;
13146         STORE_F " already used!
13147 ",      parm2_x;
13148         CALL3           objerror;
13149         GOTO            -15;
13150         GOTO            -22;
13151         STORE_F "Verification of: name, type and parent fields
13152 ",      parm0_x;
13153         CALL1           dprint;
13154         STORE_ENT       null_entity,    self;
13155         STORE_F self,   parm0_x;
13156         CALL1           nextent;
13157         STORE_ENT       return_x,       self;
13158         NE_E            return_x,       null_entity,    temp_0;
13159         IFNOT           temp_0, 46;
13160         INDIRECT_S      self,   name,   temp_0;
13161         EQ_S            temp_0, "",     temp_0;
13162         IFNOT           temp_0, 4;
13163         STORE_F "Name is missing!
13164 ",      parm0_x;
13165         CALL1           objerror;
13166         GOTO            -10;
13167         INDIRECT_S      self,   type,   temp_0;
13168         EQ_S            temp_0, "",     temp_0;
13169         IFNOT           temp_0, 4;
13170         STORE_F "Type is missing!
13171 ",      parm0_x;
13172         CALL1           objerror;
13173         GOTO            -16;
13174         INDIRECT_S      self,   type,   parm0_x;
13175         STORE_F "_Spawn",       parm1_x;
13176         CALL2           strcat;
13177         STORE_F return_x,       parm0_x;
13178         CALL1           isfunction;
13179         IF              return_x,       7;
13180         INDIRECT_S      self,   type,   temp_0;
13181         STORE_F "Control ",     parm0_x;
13182         STORE_F temp_0, parm1_x;
13183         STORE_F " not found!
13184 ",      parm2_x;
13185         CALL3           objerror;
13186         GOTO            -28;
13187         INDIRECT_S      self,   parent, temp_0;
13188         NE_S            temp_0, "",     temp_0;
13189         IFNOT           temp_0, 16;
13190         INDIRECT_S      self,   parent, temp_0;
13191         STORE_F null_entity,    parm0_x;
13192         STORE_F name,   parm1_x;
13193         STORE_F temp_0, parm2_x;
13194         CALL3           findstring;
13195         STORE_ENT       return_x,       lEntity;
13196         EQ_E            lEntity,        null_entity,    temp_0;
13197         IFNOT           temp_0, 7;
13198         INDIRECT_S      self,   parent, temp_0;
13199         STORE_F "Item ",        parm0_x;
13200         STORE_F temp_0, parm1_x;
13201         STORE_F " not found!
13202 ",      parm2_x;
13203         CALL3           objerror;
13204         GOTO            -45;
13205         GOTO            3;
13206         ADDRESS self,   _parent,        temp_0;
13207         STOREP_ENT      null_entity,    temp_0;
13208         GOTO            -49;
13209         STORE_F "Building the child lists
13210 ",      parm0_x;
13211         CALL1           dprint;
13212         STORE_ENT       null_entity,    lEntity;
13213         STORE_F lEntity,        parm0_x;
13214         CALL1           nextent;
13215         STORE_ENT       return_x,       lEntity;
13216         NE_E            return_x,       null_entity,    temp_0;
13217         IFNOT           temp_0, 4;
13218         STORE_F lEntity,        parm0_x;
13219         CALL1           Menu_LinkChildren;
13220         GOTO            -7;
13221         STORE_F "Calling the type functions
13222 ",      parm0_x;
13223         CALL1           dprint;
13224         STORE_ENT       null_entity,    lEntity;
13225         STORE_F lEntity,        parm0_x;
13226         CALL1           nextent;
13227         STORE_ENT       return_x,       lEntity;
13228         NE_E            return_x,       null_entity,    temp_0;
13229         IFNOT           temp_0, 21;
13230         STORE_ENT       lEntity,        self;
13231         INDIRECT_F      self,   flag,   temp_0;
13232         BITAND  temp_0, FLAG_TEMPLATE,  temp_0;
13233         NOT_F           temp_0, temp_0;
13234         IFNOT           temp_0, 4;
13235         INDIRECT_F      self,   _runFlag,       temp_1;
13236         BITAND  temp_1, RUNFLAG_SPAWNED,        temp_1;
13237         NOT_F           temp_1, temp_1;
13238         AND             temp_0, temp_1, temp_0;
13239         IFNOT           temp_0, 10;
13240         INDIRECT_S      self,   type,   parm0_x;
13241         STORE_F "_Spawn",       parm1_x;
13242         CALL2           strcat;
13243         STORE_F return_x,       parm0_x;
13244         CALL1           callfunction;
13245         ADDRESS self,   _runFlag,       temp_0;
13246         INDIRECT_F      self,   _runFlag,       temp_1;
13247         BITOR           temp_1, RUNFLAG_SPAWNED,        temp_1;
13248         STOREP_F        temp_1, temp_0;
13249         GOTO            -24;
13250         STORE_F "Linking windows finished.
13251 ",      parm0_x;
13252         CALL1           dprint;
13253         DONE;
13254 }
13255
13256 void(entity pItem) Menu_LinkItem = asm
13257 {
13258 local float locked_1586;
13259 local entity lOldSelf;
13260 local entity lEntity;
13261 local float temp_1;
13262 local float temp_5;
13263         INDIRECT_F      pItem,  _runFlag,       locked_1586;
13264         BITAND  locked_1586,    RUNFLAG_SPAWNED,        locked_1586;
13265         IFNOT           locked_1586,    2;
13266         RETURN  offset_0;
13267         INDIRECT_S      pItem,  type,   locked_1586;
13268         EQ_S            locked_1586,    "",     locked_1586;
13269         IFNOT           locked_1586,    7;
13270         STORE_F pItem,  parm0_x;
13271         CALL1           etos;
13272         STORE_F "LinkItem: Type is missing (",  parm0_x;
13273         STORE_F return_x,       parm1_x;
13274         STORE_F ")!
13275 ",      parm2_x;
13276         CALL3           error;
13277         INDIRECT_S      pItem,  type,   parm0_x;
13278         STORE_F "_Spawn",       parm1_x;
13279         CALL2           strcat;
13280         STORE_F return_x,       parm0_x;
13281         CALL1           isfunction;
13282         IF              return_x,       10;
13283         INDIRECT_S      pItem,  type,   locked_1586;
13284         STORE_F pItem,  parm0_x;
13285         CALL1           etos;
13286         STORE_F "LinkItem: Control ",   parm0_x;
13287         STORE_F locked_1586,    parm1_x;
13288         STORE_F " not found (", parm2_x;
13289         STORE_F return_x,       parm3_x;
13290         STORE_F ")!
13291 ",      parm4_x;
13292         CALL5           error;
13293         STORE_ENT       null_entity,    lEntity;
13294         INDIRECT_S      pItem,  name,   locked_1586;
13295         STORE_F lEntity,        parm0_x;
13296         STORE_F name,   parm1_x;
13297         STORE_F locked_1586,    parm2_x;
13298         CALL3           findstring;
13299         STORE_ENT       return_x,       lEntity;
13300         NE_E            return_x,       null_entity,    locked_1586;
13301         IFNOT           locked_1586,    20;
13302         NE_E            lEntity,        pItem,  locked_1586;
13303         IFNOT           locked_1586,    17;
13304         INDIRECT_S      pItem,  name,   locked_1586;
13305         STORE_F pItem,  parm0_x;
13306         CALL1           etos;
13307         STORE_F lEntity,        parm0_x;
13308         STORE_F return_x,       temp_1;
13309         CALL1           etos;
13310         STORE_F return_x,       temp_5;
13311         STORE_F temp_1, return_x;
13312         STORE_F "LinkItem: Name '",     parm0_x;
13313         STORE_F locked_1586,    parm1_x;
13314         STORE_F "' already in use (",   parm2_x;
13315         STORE_F return_x,       parm3_x;
13316         STORE_F ", ",   parm4_x;
13317         STORE_F temp_5, parm5_x;
13318         STORE_F ")!",   parm6_x;
13319         CALL7           error;
13320         GOTO            -26;
13321         INDIRECT_S      pItem,  parent, locked_1586;
13322         NE_S            locked_1586,    "",     locked_1586;
13323         IFNOT           locked_1586,    20;
13324         ADDRESS pItem,  _parent,        locked_1586;
13325         INDIRECT_S      pItem,  parent, temp_1;
13326         STORE_F null_entity,    parm0_x;
13327         STORE_F name,   parm1_x;
13328         STORE_F temp_1, parm2_x;
13329         CALL3           findstring;
13330         STOREP_ENT      return_x,       locked_1586;
13331         INDIRECT_E      pItem,  _parent,        locked_1586;
13332         IF              locked_1586,    10;
13333         INDIRECT_S      pItem,  parent, locked_1586;
13334         STORE_F pItem,  parm0_x;
13335         CALL1           etos;
13336         STORE_F "LinkItem: Couldnt find parent '",      parm0_x;
13337         STORE_F locked_1586,    parm1_x;
13338         STORE_F "' (",  parm2_x;
13339         STORE_F return_x,       parm3_x;
13340         STORE_F ")!",   parm4_x;
13341         CALL5           error;
13342         GOTO            3;
13343         ADDRESS pItem,  _parent,        locked_1586;
13344         STOREP_ENT      null_entity,    locked_1586;
13345         STORE_F pItem,  parm0_x;
13346         CALL1           Menu_LinkChildren;
13347         INDIRECT_E      pItem,  _child, lEntity;
13348         IFNOT           lEntity,        5;
13349         STORE_F lEntity,        parm0_x;
13350         CALL1           Menu_LinkItem;
13351         INDIRECT_E      lEntity,        _next,  lEntity;
13352         GOTO            -4;
13353         STORE_ENT       self,   lOldSelf;
13354         STORE_ENT       pItem,  self;
13355         INDIRECT_F      self,   flag,   locked_1586;
13356         BITAND  locked_1586,    FLAG_TEMPLATE,  locked_1586;
13357         IF              locked_1586,    10;
13358         INDIRECT_S      self,   type,   parm0_x;
13359         STORE_F "_Spawn",       parm1_x;
13360         CALL2           strcat;
13361         STORE_F return_x,       parm0_x;
13362         CALL1           callfunction;
13363         ADDRESS self,   _runFlag,       locked_1586;
13364         INDIRECT_F      self,   _runFlag,       temp_1;
13365         BITOR           temp_1, RUNFLAG_SPAWNED,        temp_1;
13366         STOREP_F        temp_1, locked_1586;
13367         STORE_ENT       lOldSelf,       self;
13368         DONE;
13369 }
13370
13371 void() Menu_Hide = asm
13372 {
13373         STORE_F Menu_ActiveItem,        parm0_x;
13374         STORE_F KEY_GAME,       parm1_x;
13375         STORE_F KEY_GAME,       parm2_x;
13376         CALL3           Raise_Select;
13377         STORE_F FILE_APPEND,    parm0_x;
13378         CALL1           Menu_CollectGarbage;
13379         CALL0           Menu_ResetGarbageStats;
13380         DONE;
13381 }
13382
13383 void() Menu_PerformReinit = asm
13384 {
13385 local float temp_0;
13386 local float temp_1;
13387 local float temp_5;
13388         CALL0           Menu_History_Clear;
13389         STORE_FNC       Util_NullFunction,      Menu_KeyHook;
13390         STORE_ENT       null_entity,    self;
13391         STORE_F self,   parm0_x;
13392         CALL1           nextent;
13393         STORE_ENT       return_x,       self;
13394         NE_E            return_x,       null_entity,    temp_0;
13395         IFNOT           temp_0, 27;
13396         INDIRECT_S      self,   parent, temp_0;
13397         EQ_S            temp_0, "",     temp_0;
13398         IFNOT           temp_0, 4;
13399         ADDRESS self,   _parent,        temp_0;
13400         STOREP_ENT      null_entity,    temp_0;
13401         GOTO            18;
13402         INDIRECT_E      self,   _parent,        temp_0;
13403         INDIRECT_S      temp_0, name,   temp_0;
13404         INDIRECT_S      self,   parent, temp_1;
13405         NE_S            temp_0, temp_1, temp_0;
13406         IFNOT           temp_0, 13;
13407         INDIRECT_S      self,   parent, temp_0;
13408         INDIRECT_S      self,   name,   temp_1;
13409         INDIRECT_E      self,   _parent,        temp_5;
13410         INDIRECT_S      temp_5, name,   temp_5;
13411         STORE_F "Parent (should be ",   parm0_x;
13412         STORE_F temp_0, parm1_x;
13413         STORE_F ") of menu item ",      parm2_x;
13414         STORE_F temp_1, parm3_x;
13415         STORE_F " changed to ", parm4_x;
13416         STORE_F temp_5, parm5_x;
13417         STORE_F " !
13418 ",      parm6_x;
13419         CALL7           objerror;
13420         STORE_F self,   parm0_x;
13421         CALL1           Raise_Reinit;
13422         GOTO            -30;
13423         IFNOT           MENU_ALLOWINGAME,       2;
13424         BITAND  gamestatus,     KEY_MENU,       temp_0;
13425         AND             MENU_ALLOWINGAME,       temp_0, temp_0;
13426         IFNOT           temp_0, 7;
13427         STORE_F null_entity,    parm0_x;
13428         STORE_F name,   parm1_x;
13429         STORE_F MENU_INGAME_NAME,       parm2_x;
13430         CALL3           findstring;
13431         STORE_ENT       return_x,       Menu_ActiveWindow;
13432         GOTO            6;
13433         STORE_F null_entity,    parm0_x;
13434         STORE_F name,   parm1_x;
13435         STORE_F MENU_NORMAL_NAME,       parm2_x;
13436         CALL3           findstring;
13437         STORE_ENT       return_x,       Menu_ActiveWindow;
13438         CALL0           Menu_UpdateRunFlags;
13439         STORE_F KEY_GAME,       parm0_x;
13440         CALL1           Menu_Reselect;
13441         DONE;
13442 }
13443
13444 void() Menu_Shutdown = asm
13445 {
13446 local float temp_0;
13447         STORE_ENT       null_entity,    self;
13448         STORE_F self,   parm0_x;
13449         CALL1           nextent;
13450         STORE_ENT       return_x,       self;
13451         NE_E            return_x,       null_entity,    temp_0;
13452         IFNOT           temp_0, 4;
13453         STORE_F self,   parm0_x;
13454         CALL1           Raise_Destroy;
13455         GOTO            -7;
13456         DONE;
13457 }
13458
13459 entity(string pType, string pName, string pParent) Menu_CreateItem = asm
13460 {
13461 local entity lItem;
13462 local float temp_0;
13463         NOT_S           pType,  temp_0;
13464         IFNOT           temp_0, 5;
13465         STORE_F "Bad pType '",  parm0_x;
13466         STORE_F pType,  parm1_x;
13467         STORE_F "'!",   parm2_x;
13468         CALL3           error;
13469         NOT_S           pName,  temp_0;
13470         IFNOT           temp_0, 5;
13471         STORE_F "Bad pName '",  parm0_x;
13472         STORE_F pName,  parm1_x;
13473         STORE_F "'!",   parm2_x;
13474         CALL3           error;
13475         CALL0           spawn;
13476         STORE_ENT       return_x,       lItem;
13477         STORE_F pParent,        parm0_x;
13478         STORE_F "::",   parm1_x;
13479         STORE_F pName,  parm2_x;
13480         CALL3           strcat;
13481         STORE_F "{ type "",     parm0_x;
13482         STORE_F pType,  parm1_x;
13483         STORE_F "" name "",     parm2_x;
13484         STORE_F return_x,       parm3_x;
13485         STORE_F "" parent "",   parm4_x;
13486         STORE_F pParent,        parm5_x;
13487         STORE_F "" }",  parm6_x;
13488         CALL7           strcat;
13489         STORE_F lItem,  parm0_x;
13490         STORE_F return_x,       parm1_x;
13491         CALL2           parseentitydata;
13492         RETURN  lItem;
13493         DONE;
13494 }
13495
13496 entity(entity pTemplate, string pName, string pParent, bool pTree) Menu_DeriveItem = asm
13497 {
13498 local float locked_1586;
13499 local string lName;
13500 local entity lChild;
13501 local entity lItem;
13502 local float temp_1;
13503         IF              pTemplate,      3;
13504         STORE_F "Null pTemplate!",      parm0_x;
13505         CALL1           error;
13506         NOT_S           pName,  locked_1586;
13507         IFNOT           locked_1586,    5;
13508         STORE_F "Bad pName '",  parm0_x;
13509         STORE_F pName,  parm1_x;
13510         STORE_F "'!",   parm2_x;
13511         CALL3           error;
13512         CALL0           spawn;
13513         STORE_ENT       return_x,       lItem;
13514         STORE_F pTemplate,      parm0_x;
13515         STORE_F lItem,  parm1_x;
13516         CALL2           copyentity;
13517         INDIRECT_F      lItem,  flag,   locked_1586;
13518         BITAND  locked_1586,    FLAG_TEMPLATE,  locked_1586;
13519         IFNOT           locked_1586,    5;
13520         ADDRESS lItem,  flag,   locked_1586;
13521         INDIRECT_F      lItem,  flag,   temp_1;
13522         SUB_F           temp_1, FLAG_TEMPLATE,  temp_1;
13523         STOREP_F        temp_1, locked_1586;
13524         INDIRECT_F      lItem,  _runFlag,       locked_1586;
13525         BITAND  locked_1586,    RUNFLAG_SPAWNED,        locked_1586;
13526         IFNOT           locked_1586,    5;
13527         ADDRESS lItem,  _runFlag,       locked_1586;
13528         INDIRECT_F      lItem,  _runFlag,       temp_1;
13529         SUB_F           temp_1, RUNFLAG_SPAWNED,        temp_1;
13530         STOREP_F        temp_1, locked_1586;
13531         STORE_F pParent,        parm0_x;
13532         STORE_F "::",   parm1_x;
13533         STORE_F pName,  parm2_x;
13534         CALL3           strcat;
13535         STORE_F "{ name "",     parm0_x;
13536         STORE_F return_x,       parm1_x;
13537         STORE_F "" parent "",   parm2_x;
13538         STORE_F pParent,        parm3_x;
13539         STORE_F "" }",  parm4_x;
13540         CALL5           strcat;
13541         STORE_F lItem,  parm0_x;
13542         STORE_F return_x,       parm1_x;
13543         CALL2           parseentitydata;
13544         IFNOT           pTree,  24;
13545         INDIRECT_E      pTemplate,      _child, lChild;
13546         IFNOT           lChild, 22;
13547         INDIRECT_S      lChild, name,   locked_1586;
13548         INDIRECT_S      lChild, parent, parm0_x;
13549         CALL1           strlen;
13550         ADD_F           return_x,       KEY_MENU,       temp_1;
13551         STORE_F locked_1586,    parm0_x;
13552         STORE_F temp_1, parm1_x;
13553         STORE_F 100000.000000,  parm2_x;
13554         CALL3           substring;
13555         STORE_F return_x,       parm0_x;
13556         CALL1           String_Zone;
13557         STORE_S return_x,       lName;
13558         INDIRECT_S      lItem,  name,   locked_1586;
13559         STORE_F lChild, parm0_x;
13560         STORE_F lName,  parm1_x;
13561         STORE_F locked_1586,    parm2_x;
13562         STORE_F FILE_APPEND,    parm3_x;
13563         CALL4           Menu_DeriveItem;
13564         STORE_F lName,  parm0_x;
13565         CALL1           String_Free;
13566         INDIRECT_E      lChild, _next,  lChild;
13567         GOTO            -21;
13568         RETURN  lItem;
13569         DONE;
13570 }
13571
13572 void(entity pItem, string pData) Menu_AddEntityData = asm
13573 {
13574         STORE_F pItem,  parm0_x;
13575         STORE_F pData,  parm1_x;
13576         CALL2           parseentitydata;
13577         DONE;
13578 }
13579
13580 void(entity pWindow) Menu_LinkWindow = asm
13581 {
13582         STORE_F pWindow,        parm0_x;
13583         CALL1           Menu_LinkItem;
13584         DONE;
13585 }
13586
13587 void() Sys_Debug_Init = asm
13588 {
13589         STORE_F SYSTEM_CVAR_VERSION_BUILDDATE,  parm0_x;
13590         STORE_F "",     parm1_x;
13591         STORE_F CVAR_READONLY,  parm2_x;
13592         CALL3           registercvar;
13593         STORE_F SYSTEM_CVAR_VERSION_BUILDDATE,  parm0_x;
13594         STORE_F SYSTEM_CVAR_VERSION_BUILDDATE_VALUE,    parm1_x;
13595         CALL2           cvar_set;
13596         STORE_F SYSTEM_CVAR_VERSION_BUILDTIME,  parm0_x;
13597         STORE_F "",     parm1_x;
13598         STORE_F CVAR_READONLY,  parm2_x;
13599         CALL3           registercvar;
13600         STORE_F SYSTEM_CVAR_VERSION_BUILDTIME,  parm0_x;
13601         STORE_F SYSTEM_CVAR_VERSION_BUILDTIME_VALUE,    parm1_x;
13602         CALL2           cvar_set;
13603         STORE_F SYSTEM_CVAR_VERSION,    parm0_x;
13604         STORE_F "",     parm1_x;
13605         STORE_F CVAR_READONLY,  parm2_x;
13606         CALL3           registercvar;
13607         STORE_F SYSTEM_CVAR_VERSION,    parm0_x;
13608         STORE_F SYSTEM_CVAR_VERSION_VALUE,      parm1_x;
13609         CALL2           cvar_set;
13610         STORE_F KEY_GAME,       parm0_x;
13611         CALL1           ftos;
13612         STORE_F SYSTEM_CVAR_DEBUG,      parm0_x;
13613         STORE_F return_x,       parm1_x;
13614         STORE_F KEY_GAME,       parm2_x;
13615         CALL3           registercvar;
13616         STORE_F KEY_GAME,       parm0_x;
13617         CALL1           ftos;
13618         STORE_F SYSTEM_CVAR_DEBUG_REF,  parm0_x;
13619         STORE_F return_x,       parm1_x;
13620         STORE_F KEY_GAME,       parm2_x;
13621         CALL3           registercvar;
13622         STORE_F KEY_GAME,       parm0_x;
13623         CALL1           ftos;
13624         STORE_F SYSTEM_CVAR_DEBUG_RUNFLAG,      parm0_x;
13625         STORE_F return_x,       parm1_x;
13626         STORE_F KEY_GAME,       parm2_x;
13627         CALL3           registercvar;
13628         STORE_F KEY_GAME,       parm0_x;
13629         CALL1           ftos;
13630         STORE_F SYSTEM_CVAR_DEBUG_PROCESS,      parm0_x;
13631         STORE_F return_x,       parm1_x;
13632         STORE_F KEY_GAME,       parm2_x;
13633         CALL3           registercvar;
13634         STORE_F KEY_GAME,       parm0_x;
13635         CALL1           ftos;
13636         STORE_F SYSTEM_CVAR_DEBUG_MGFX, parm0_x;
13637         STORE_F return_x,       parm1_x;
13638         STORE_F KEY_GAME,       parm2_x;
13639         CALL3           registercvar;
13640         STORE_F KEY_GAME,       parm0_x;
13641         CALL1           ftos;
13642         STORE_F SYSTEM_CVAR_DEBUG_STRUCTURE,    parm0_x;
13643         STORE_F return_x,       parm1_x;
13644         STORE_F KEY_GAME,       parm2_x;
13645         CALL3           registercvar;
13646         STORE_F SYSTEM_CVAR_DEBUG_PARSER,       parm0_x;
13647         STORE_F SYSTEM_CVAR_DEBUG_PARSER_DEFAULT,       parm1_x;
13648         STORE_F KEY_GAME,       parm2_x;
13649         CALL3           registercvar;
13650         STORE_F SYSTEM_CVAR_DEBUG_PROCESS_FILTER,       parm0_x;
13651         STORE_F SYSTEM_CVAR_DEBUG_PROCESS_FILTER_DEFAULT,       parm1_x;
13652         STORE_F KEY_GAME,       parm2_x;
13653         CALL3           registercvar;
13654         STORE_F KEY_GAME,       parm0_x;
13655         CALL1           ftos;
13656         STORE_F SYSTEM_CVAR_DEBUG_SOUND,        parm0_x;
13657         STORE_F return_x,       parm1_x;
13658         STORE_F KEY_GAME,       parm2_x;
13659         CALL3           registercvar;
13660         STORE_F SYSTEM_CVAR_DEBUG_DUMP_NAMES,   parm0_x;
13661         STORE_F "0",    parm1_x;
13662         STORE_F KEY_GAME,       parm2_x;
13663         CALL3           registercvar;
13664         STORE_F KEY_GAME,       parm0_x;
13665         CALL1           ftos;
13666         STORE_F SYSTEM_CVAR_DEBUG_AREA, parm0_x;
13667         STORE_F return_x,       parm1_x;
13668         STORE_F KEY_GAME,       parm2_x;
13669         CALL3           registercvar;
13670         STORE_F KEY_GAME,       parm0_x;
13671         CALL1           ftos;
13672         STORE_F SYSTEM_CVAR_DEBUG_STEP, parm0_x;
13673         STORE_F return_x,       parm1_x;
13674         STORE_F KEY_GAME,       parm2_x;
13675         CALL3           registercvar;
13676         STORE_F KEY_GAME,       parm0_x;
13677         CALL1           ftos;
13678         STORE_F SYSTEM_CVAR_DEBUG_MOUSE,        parm0_x;
13679         STORE_F return_x,       parm1_x;
13680         STORE_F KEY_GAME,       parm2_x;
13681         CALL3           registercvar;
13682         DONE;
13683 }
13684
13685 void() Sys_Debug_Frame = asm
13686 {
13687 local float lStep;
13688 local float lTemp2;
13689 local float lTemp1;
13690 local float temp_0;
13691         STORE_F SYSTEM_CVAR_DEBUG,      parm0_x;
13692         CALL1           cvar;
13693         STORE_F return_x,       sys_debug;
13694         IFNOT           sys_debug,      155;
13695         STORE_F SYSTEM_CVAR_DEBUG_REF,  parm0_x;
13696         CALL1           cvar;
13697         STORE_F return_x,       sys_debug_ref;
13698         STORE_F SYSTEM_CVAR_DEBUG_AREA, parm0_x;
13699         CALL1           cvar;
13700         STORE_F return_x,       sys_debug_area;
13701         STORE_F SYSTEM_CVAR_DEBUG_SOUND,        parm0_x;
13702         CALL1           cvar;
13703         STORE_F return_x,       sys_debug_sound;
13704         STORE_F SYSTEM_CVAR_DEBUG_STRUCTURE,    parm0_x;
13705         CALL1           cvar;
13706         STORE_F return_x,       sys_debug_structure;
13707         STORE_F SYSTEM_CVAR_DEBUG_MOUSE,        parm0_x;
13708         CALL1           cvar;
13709         STORE_F return_x,       sys_debug_mouse;
13710         STORE_F SYSTEM_CVAR_DEBUG_STEP, parm0_x;
13711         CALL1           cvar;
13712         STORE_F return_x,       lStep;
13713         EQ_F            lStep,  FILE_APPEND,    temp_0;
13714         IFNOT           temp_0, 3;
13715         STORE_F FILE_APPEND,    sys_debug_halt;
13716         GOTO            16;
13717         EQ_F            lStep,  KEY_MENU,       temp_0;
13718         IFNOT           temp_0, 13;
13719         STORE_F KEY_GAME,       sys_debug_halt;
13720         STORE_F SYSTEM_CVAR_DEBUG_STEP, parm0_x;
13721         STORE_F "1",    parm1_x;
13722         CALL2           cvar_set;
13723         CALL0           gettime;
13724         STORE_F return_x,       parm0_x;
13725         CALL1           ftos;
13726         STORE_F "Menu: -- Step: Time:", parm0_x;
13727         STORE_F return_x,       parm1_x;
13728         STORE_F "
13729 ",      parm2_x;
13730         CALL3           print;
13731         GOTO            2;
13732         STORE_F KEY_GAME,       sys_debug_halt;
13733         STORE_F SYSTEM_CVAR_DEBUG_RUNFLAG,      parm0_x;
13734         CALL1           cvar;
13735         STORE_F return_x,       sys_debug_runflag;
13736         GOTO            8;
13737         STORE_F KEY_GAME,       sys_debug_runflag;
13738         GOTO            11;
13739         STORE_F SYSTEM_CVAR_DEBUG_RUNFLAG,      parm0_x;
13740         STORE_F "0",    parm1_x;
13741         CALL2           cvar_set;
13742         STORE_F FILE_APPEND,    sys_debug_runflag;
13743         GOTO            6;
13744         IFNOT           sys_debug_runflag,      -7;
13745         EQ_F            sys_debug_runflag,      FILE_APPEND,    temp_0;
13746         IF              temp_0, -7;
13747         EQ_F            sys_debug_runflag,      KEY_MENU,       temp_0;
13748         IF              temp_0, -6;
13749         STORE_F SYSTEM_CVAR_DEBUG_PROCESS,      parm0_x;
13750         CALL1           cvar;
13751         STORE_F return_x,       sys_debug_process;
13752         GOTO            8;
13753         STORE_F KEY_GAME,       sys_debug_process;
13754         GOTO            11;
13755         STORE_F SYSTEM_CVAR_DEBUG_PROCESS,      parm0_x;
13756         STORE_F "0",    parm1_x;
13757         CALL2           cvar_set;
13758         STORE_F FILE_APPEND,    sys_debug_process;
13759         GOTO            6;
13760         IFNOT           sys_debug_process,      -7;
13761         EQ_F            sys_debug_process,      FILE_APPEND,    temp_0;
13762         IF              temp_0, -7;
13763         EQ_F            sys_debug_process,      KEY_MENU,       temp_0;
13764         IF              temp_0, -6;
13765         STORE_F SYSTEM_CVAR_DEBUG_MGFX, parm0_x;
13766         CALL1           cvar;
13767         STORE_F return_x,       sys_debug_mgfx;
13768         GOTO            8;
13769         STORE_F KEY_GAME,       sys_debug_mgfx;
13770         GOTO            11;
13771         STORE_F SYSTEM_CVAR_DEBUG_MGFX, parm0_x;
13772         STORE_F "0",    parm1_x;
13773         CALL2           cvar_set;
13774         STORE_F FILE_APPEND,    sys_debug_mgfx;
13775         GOTO            6;
13776         IFNOT           sys_debug_mgfx, -7;
13777         EQ_F            sys_debug_mgfx, FILE_APPEND,    temp_0;
13778         IF              temp_0, -7;
13779         EQ_F            sys_debug_mgfx, KEY_MENU,       temp_0;
13780         IF              temp_0, -6;
13781         STORE_F SYSTEM_CVAR_DEBUG_PROCESS_FILTER,       parm0_x;
13782         CALL1           str_cvar;
13783         STORE_F return_x,       parm0_x;
13784         CALL1           tokenize;
13785         STORE_F return_x,       lTemp1;
13786         STORE_F KEY_GAME,       sys_debug_process_filter;
13787         STORE_F KEY_GAME,       lTemp2;
13788         LT              lTemp2, lTemp1, temp_0;
13789         IFNOT           temp_0, 32;
13790         STORE_F lTemp2, parm0_x;
13791         CALL1           argv;
13792         EQ_S            return_x,       "runflag",      temp_0;
13793         IFNOT           temp_0, 3;
13794         BITOR           sys_debug_process_filter,       MENU_PROCESS_RUNFLAG,   sys_debug_process_filter;
13795         GOTO            24;
13796         STORE_F lTemp2, parm0_x;
13797         CALL1           argv;
13798         EQ_S            return_x,       "draw", temp_0;
13799         IFNOT           temp_0, 3;
13800         BITOR           sys_debug_process_filter,       MENU_PROCESS_DRAW,      sys_debug_process_filter;
13801         GOTO            18;
13802         STORE_F lTemp2, parm0_x;
13803         CALL1           argv;
13804         EQ_S            return_x,       "update",       temp_0;
13805         IFNOT           temp_0, 3;
13806         BITOR           sys_debug_process_filter,       MENU_PROCESS_UPDATE,    sys_debug_process_filter;
13807         GOTO            12;
13808         STORE_F lTemp2, parm0_x;
13809         CALL1           argv;
13810         EQ_S            return_x,       "mouse",        temp_0;
13811         IFNOT           temp_0, 3;
13812         BITOR           sys_debug_process_filter,       MENU_PROCESS_MOUSE,     sys_debug_process_filter;
13813         GOTO            6;
13814         STORE_F lTemp2, parm0_x;
13815         CALL1           argv;
13816         EQ_S            return_x,       "key",  temp_0;
13817         IFNOT           temp_0, 2;
13818         BITOR           sys_debug_process_filter,       MENU_PROCESS_KEY,       sys_debug_process_filter;
13819         ADD_F           lTemp2, FILE_APPEND,    lTemp2;
13820         GOTO            -32;
13821         STORE_F SYSTEM_CVAR_DEBUG_PARSER,       parm0_x;
13822         CALL1           str_cvar;
13823         STORE_F return_x,       parm0_x;
13824         CALL1           tokenize;
13825         STORE_F return_x,       lTemp1;
13826         STORE_F KEY_GAME,       sys_debug_parser;
13827         STORE_F KEY_GAME,       lTemp2;
13828         LT              lTemp2, lTemp1, temp_0;
13829         IFNOT           temp_0, 20;
13830         STORE_F lTemp2, parm0_x;
13831         CALL1           argv;
13832         EQ_S            return_x,       "info", temp_0;
13833         IFNOT           temp_0, 3;
13834         BITOR           sys_debug_parser,       PARSER_INFO,    sys_debug_parser;
13835         GOTO            12;
13836         STORE_F lTemp2, parm0_x;
13837         CALL1           argv;
13838         EQ_S            return_x,       "high", temp_0;
13839         IFNOT           temp_0, 3;
13840         BITOR           sys_debug_parser,       PARSER_HIGH,    sys_debug_parser;
13841         GOTO            6;
13842         STORE_F lTemp2, parm0_x;
13843         CALL1           argv;
13844         EQ_S            return_x,       "low",  temp_0;
13845         IFNOT           temp_0, 2;
13846         BITOR           sys_debug_parser,       PARSER_LOW,     sys_debug_parser;
13847         ADD_F           lTemp2, FILE_APPEND,    lTemp2;
13848         GOTO            -20;
13849         GOTO            12;
13850         STORE_F KEY_GAME,       sys_debug_halt;
13851         STORE_F KEY_GAME,       sys_debug_ref;
13852         STORE_F KEY_GAME,       sys_debug_area;
13853         STORE_F KEY_GAME,       sys_debug_sound;
13854         STORE_F KEY_GAME,       sys_debug_runflag;
13855         STORE_F KEY_GAME,       sys_debug_process;
13856         STORE_F KEY_GAME,       sys_debug_mgfx;
13857         STORE_F KEY_GAME,       sys_debug_structure;
13858         STORE_F KEY_GAME,       sys_debug_parser;
13859         STORE_F KEY_GAME,       sys_debug_process_filter;
13860         STORE_F KEY_GAME,       sys_debug_mouse;
13861         STORE_F SYSTEM_CVAR_DEBUG_DUMP_NAMES,   parm0_x;
13862         CALL1           cvar;
13863         IFNOT           return_x,       5;
13864         CALL0           Sys_Debug_DumpNames;
13865         STORE_F SYSTEM_CVAR_DEBUG_DUMP_NAMES,   parm0_x;
13866         STORE_F "0",    parm1_x;
13867         CALL2           cvar_set;
13868         STORE_V '-1.000000 -1.000000 -1.000000',        sys_debug_cursor_localpos;
13869         DONE;
13870 }
13871
13872 void() Sys_Debug_Draw = asm
13873 {
13874 local float temp_0;
13875 local float temp_1;
13876         EQ_F            sys_debug_mouse,        FILE_APPEND,    temp_0;
13877         IFNOT           temp_0, 27;
13878         STORE_F sys_debug_cursor_localpos_x,    parm0_x;
13879         CALL1           floor;
13880         STORE_F return_x,       parm0_x;
13881         CALL1           ftos;
13882         STORE_F sys_debug_cursor_localpos_y,    parm0_x;
13883         STORE_F return_x,       temp_0;
13884         CALL1           floor;
13885         STORE_F return_x,       temp_1;
13886         STORE_F temp_0, return_x;
13887         STORE_F temp_1, parm0_x;
13888         STORE_F return_x,       temp_0;
13889         CALL1           ftos;
13890         STORE_F return_x,       temp_1;
13891         STORE_F temp_0, return_x;
13892         STORE_F return_x,       parm0_x;
13893         STORE_F " ",    parm1_x;
13894         STORE_F temp_1, parm2_x;
13895         CALL3           strcat;
13896         STORE_V '1.000000 0.000000 0.000000',   parm0;
13897         STORE_F return_x,       parm1_x;
13898         STORE_V '9.000000 9.000000 0.000000',   parm2;
13899         STORE_V '0.800000 0.800000 0.800000',   parm3;
13900         STORE_F FILE_APPEND,    parm4_x;
13901         STORE_F FILE_APPEND,    parm5_x;
13902         CALL6           Cursor_PrintInfo;
13903         GOTO            28;
13904         EQ_F            sys_debug_mouse,        KEY_MENU,       temp_0;
13905         IFNOT           temp_0, 26;
13906         STORE_F Cursor_Position_x,      parm0_x;
13907         CALL1           floor;
13908         STORE_F return_x,       parm0_x;
13909         CALL1           ftos;
13910         STORE_F Cursor_Position_y,      parm0_x;
13911         STORE_F return_x,       temp_0;
13912         CALL1           floor;
13913         STORE_F return_x,       temp_1;
13914         STORE_F temp_0, return_x;
13915         STORE_F temp_1, parm0_x;
13916         STORE_F return_x,       temp_0;
13917         CALL1           ftos;
13918         STORE_F return_x,       temp_1;
13919         STORE_F temp_0, return_x;
13920         STORE_F return_x,       parm0_x;
13921         STORE_F " ",    parm1_x;
13922         STORE_F temp_1, parm2_x;
13923         CALL3           strcat;
13924         STORE_V '1.000000 0.000000 0.000000',   parm0;
13925         STORE_F return_x,       parm1_x;
13926         STORE_V '9.000000 9.000000 0.000000',   parm2;
13927         STORE_V '0.800000 0.800000 0.800000',   parm3;
13928         STORE_F FILE_APPEND,    parm4_x;
13929         STORE_F FILE_APPEND,    parm5_x;
13930         CALL6           Cursor_PrintInfo;
13931         DONE;
13932 }
13933
13934 void() Sys_Debug_DumpNames = asm
13935 {
13936 local entity lNode;
13937 local float temp_0;
13938         STORE_F "Menu: Dumping names..
13939 ",      parm0_x;
13940         CALL1           print;
13941         STORE_ENT       null_entity,    lNode;
13942         STORE_F lNode,  parm0_x;
13943         CALL1           nextent;
13944         STORE_ENT       return_x,       lNode;
13945         NE_E            return_x,       null_entity,    temp_0;
13946         IFNOT           temp_0, 11;
13947         STORE_F lNode,  parm0_x;
13948         CALL1           etos;
13949         INDIRECT_S      lNode,  name,   temp_0;
13950         STORE_F "Menu: ",       parm0_x;
13951         STORE_F return_x,       parm1_x;
13952         STORE_F " <-> ",        parm2_x;
13953         STORE_F temp_0, parm3_x;
13954         STORE_F "
13955 ",      parm4_x;
13956         CALL5           print;
13957         GOTO            -14;
13958         STORE_F "
13959 ",      parm0_x;
13960         CALL1           print;
13961         DONE;
13962 }
13963
13964 void () Parser_Define_Spawn;
13965 void() Parser_Define_Spawn = asm
13966 {
13967         DONE;
13968 }
13969
13970 void () Parser_TokenizeLine;
13971 void() Parser_TokenizeLine = asm
13972 {
13973         STORE_F Parser_Line,    parm0_x;
13974         CALL1           tokenize;
13975         STORE_F return_x,       Parser_NumTokens;
13976         STORE_F KEY_GAME,       Parser_TokenNum;
13977         DONE;
13978 }
13979
13980 float() Parser_GetToken = asm
13981 {
13982 local string lLine;
13983 local float temp_0;
13984         GE              Parser_TokenNum,        Parser_NumTokens,       temp_0;
13985         IFNOT           temp_0, 22;
13986         STORE_F Parser_File,    parm0_x;
13987         CALL1           fgets;
13988         STORE_S return_x,       lLine;
13989         ADD_F           Parser_LineNumber,      FILE_APPEND,    Parser_LineNumber;
13990         NOT_S           lLine,  temp_0;
13991         IFNOT           temp_0, 8;
13992         STORE_F lLine,  parm0_x;
13993         CALL1           validstring;
13994         IF              return_x,       3;
13995         RETURN  KEY_GAME;
13996         GOTO            3;
13997         CALL0           Parser_GetToken;
13998         RETURN  return_x;
13999         STORE_F Parser_Line,    parm0_x;
14000         STORE_F lLine,  parm1_x;
14001         CALL2           String_Set;
14002         STORE_S return_x,       Parser_Line;
14003         CALL0           Parser_TokenizeLine;
14004         CALL0           Parser_GetToken;
14005         RETURN  return_x;
14006         GOTO            9;
14007         STORE_F Parser_TokenNum,        parm0_x;
14008         CALL1           argv;
14009         STORE_F Parser_Token,   parm0_x;
14010         STORE_F return_x,       parm1_x;
14011         CALL2           String_Set;
14012         STORE_S return_x,       Parser_Token;
14013         STORE_F Parser_TokenNum,        temp_0;
14014         ADD_F           Parser_TokenNum,        FILE_APPEND,    Parser_TokenNum;
14015         STORE_F "Read token '", parm0_x;
14016         STORE_F Parser_Token,   parm1_x;
14017         STORE_F "'",    parm2_x;
14018         CALL3           strcat;
14019         STORE_F PARSER_LOW,     parm0_x;
14020         STORE_F return_x,       parm1_x;
14021         CALL2           Parser_Print;
14022         CALL0           Parser_GetTokenType;
14023         STORE_F return_x,       Parser_TokenType;
14024         EQ_F            Parser_TokenType,       PARSER_TT_BRACKETOPEN,  temp_0;
14025         IFNOT           temp_0, 4;
14026         CALL0           Parser_ProcessDefine;
14027         CALL0           Parser_GetToken;
14028         RETURN  return_x;
14029         RETURN  FILE_APPEND;
14030         DONE;
14031 }
14032
14033 float() Parser_GetTokenType = asm
14034 {
14035 local float temp_0;
14036         EQ_S            Parser_Token,   "Item", temp_0;
14037         IFNOT           temp_0, 3;
14038         RETURN  PARSER_TT_ITEM;
14039         GOTO            48;
14040         EQ_S            Parser_Token,   "Template",     temp_0;
14041         IFNOT           temp_0, 3;
14042         RETURN  PARSER_TT_TEMPLATE;
14043         GOTO            44;
14044         EQ_S            Parser_Token,   "Derive",       temp_0;
14045         IFNOT           temp_0, 3;
14046         RETURN  PARSER_TT_DERIVE;
14047         GOTO            40;
14048         EQ_S            Parser_Token,   "DeriveTemplate",       temp_0;
14049         IFNOT           temp_0, 3;
14050         RETURN  PARSER_TT_DERIVETEMPLATE;
14051         GOTO            36;
14052         EQ_S            Parser_Token,   "#define",      temp_0;
14053         IFNOT           temp_0, 3;
14054         RETURN  PARSER_TT_DEFINE;
14055         GOTO            32;
14056         EQ_S            Parser_Token,   "Ignore",       temp_0;
14057         IFNOT           temp_0, 3;
14058         RETURN  PARSER_TT_IGNORE;
14059         GOTO            28;
14060         EQ_S            Parser_Token,   "#undef",       temp_0;
14061         IFNOT           temp_0, 3;
14062         RETURN  PARSER_TT_UNDEF;
14063         GOTO            24;
14064         EQ_S            Parser_Token,   "Namespace",    temp_0;
14065         IFNOT           temp_0, 3;
14066         RETURN  PARSER_TT_NAMESPACE;
14067         GOTO            20;
14068         EQ_S            Parser_Token,   "#include",     temp_0;
14069         IFNOT           temp_0, 3;
14070         RETURN  PARSER_TT_INCLUDE;
14071         GOTO            16;
14072         EQ_S            Parser_Token,   "}",    temp_0;
14073         IFNOT           temp_0, 3;
14074         RETURN  PARSER_TT_BRACECLOSE;
14075         GOTO            12;
14076         EQ_S            Parser_Token,   "{",    temp_0;
14077         IFNOT           temp_0, 3;
14078         RETURN  PARSER_TT_BRACEOPEN;
14079         GOTO            8;
14080         EQ_S            Parser_Token,   "[",    temp_0;
14081         IFNOT           temp_0, 3;
14082         RETURN  PARSER_TT_BRACKETOPEN;
14083         GOTO            4;
14084         EQ_S            Parser_Token,   "]",    temp_0;
14085         IFNOT           temp_0, 2;
14086         RETURN  PARSER_TT_BRACKETCLOSE;
14087         RETURN  PARSER_TT_TOKEN;
14088         DONE;
14089 }
14090
14091 void (float, string) _Parser_Print;
14092 void(float pLevel, string pText) _Parser_Print = asm
14093 {
14094 local float temp_0;
14095 local float temp_1;
14096         EQ_F            pLevel, KEY_GAME,       temp_0;
14097         IF              temp_0, 2;
14098         BITAND  sys_debug_parser,       pLevel, temp_1;
14099         OR              temp_0, temp_1, temp_0;
14100         IFNOT           temp_0, 5;
14101         STORE_F "Parser: ",     parm0_x;
14102         STORE_F pText,  parm1_x;
14103         STORE_F "
14104 ",      parm2_x;
14105         CALL3           print;
14106         DONE;
14107 }
14108
14109 void(float pLevel, string pInfo) Parser_Print = asm
14110 {
14111 local float temp_0;
14112 local float temp_1;
14113         EQ_F            pLevel, KEY_GAME,       temp_0;
14114         IF              temp_0, 2;
14115         BITAND  sys_debug_parser,       pLevel, temp_1;
14116         OR              temp_0, temp_1, temp_0;
14117         IFNOT           temp_0, 11;
14118         STORE_F Parser_LineNumber,      parm0_x;
14119         CALL1           ftos;
14120         STORE_F "Parser: ",     parm0_x;
14121         STORE_F Parser_Filename,        parm1_x;
14122         STORE_F ":",    parm2_x;
14123         STORE_F return_x,       parm3_x;
14124         STORE_F ": ",   parm4_x;
14125         STORE_F pInfo,  parm5_x;
14126         STORE_F "
14127 ",      parm6_x;
14128         CALL7           print;
14129         DONE;
14130 }
14131
14132 void(string pInfo) Parser_Error = asm
14133 {
14134         STORE_F Parser_LineNumber,      parm0_x;
14135         CALL1           ftos;
14136         STORE_F "Parser: ",     parm0_x;
14137         STORE_F Parser_Filename,        parm1_x;
14138         STORE_F ":",    parm2_x;
14139         STORE_F return_x,       parm3_x;
14140         STORE_F ": Error: '",   parm4_x;
14141         CALL5           print;
14142         STORE_F Parser_Token,   parm0_x;
14143         STORE_F "' not expected (",     parm1_x;
14144         STORE_F pInfo,  parm2_x;
14145         STORE_F ")!
14146 ",      parm3_x;
14147         CALL4           print;
14148         STORE_F Parser_File,    parm0_x;
14149         CALL1           fclose;
14150         STORE_F "Error in the menu parser!",    parm0_x;
14151         CALL1           error;
14152         DONE;
14153 }
14154
14155 void () ArrayGet*PARSER_TT_TEXT;
14156 void(float pType) Parser_Expect = asm
14157 {
14158 local float temp_0;
14159 local float temp_1;
14160 local float temp_5;
14161         CALL0           Parser_GetToken;
14162         NOT_F           return_x,       temp_0;
14163         IF              temp_0, 5;
14164         NE_F            Parser_TokenType,       pType,  temp_1;
14165         IFNOT           temp_1, 2;
14166         NE_F            Parser_TokenType,       PARSER_TT_BRACKETOPEN,  temp_5;
14167         AND             temp_1, temp_5, temp_1;
14168         OR              temp_0, temp_1, temp_0;
14169         IFNOT           temp_0, 8;
14170         SUB_F           pType,  PARSER_TT_ITEM, parm0_x;
14171         CALL1           ArrayGet*PARSER_TT_TEXT;
14172         STORE_F "expected ",    parm0_x;
14173         STORE_F return_x,       parm1_x;
14174         CALL2           strcat;
14175         STORE_F return_x,       parm0_x;
14176         CALL1           Parser_Error;
14177         DONE;
14178 }
14179
14180 void(string pNamespace) Parser_IncludeFile = asm
14181 {
14182 local float lTokenNum;
14183 local float lNumTokens;
14184 local float lLineNumber;
14185 local float lFile;
14186 local string lLine;
14187 local string lFilename;
14188 local float temp_0;
14189         STORE_F PARSER_TT_TOKEN,        parm0_x;
14190         CALL1           Parser_Expect;
14191         STORE_F "#include: Including file '",   parm0_x;
14192         STORE_F Parser_Token,   parm1_x;
14193         STORE_F "'",    parm2_x;
14194         CALL3           strcat;
14195         STORE_F PARSER_INFO,    parm0_x;
14196         STORE_F return_x,       parm1_x;
14197         CALL2           Parser_Print;
14198         STORE_F Parser_Token,   parm0_x;
14199         CALL1           Util_AltStringPrepare;
14200         STORE_F return_x,       parm0_x;
14201         CALL1           String_Normal;
14202         STORE_F " {'",  parm0_x;
14203         STORE_F return_x,       parm1_x;
14204         STORE_F "'",    parm2_x;
14205         CALL3           strcat;
14206         STORE_F Parser_FileList,        parm0_x;
14207         STORE_F return_x,       parm1_x;
14208         CALL2           String_Append;
14209         STORE_S return_x,       Parser_FileList;
14210         STORE_S Parser_Filename,        lFilename;
14211         STORE_S Parser_Line,    lLine;
14212         STORE_F Parser_File,    lFile;
14213         STORE_F Parser_LineNumber,      lLineNumber;
14214         STORE_F Parser_NumTokens,       lNumTokens;
14215         STORE_F Parser_TokenNum,        lTokenNum;
14216         SUB_F           Parser_IncludeDepth,    FILE_APPEND,    Parser_IncludeDepth;
14217         GT              Parser_IncludeDepth,    K_SPACE,        temp_0;
14218         IFNOT           temp_0, 5;
14219         STORE_F KEY_GAME,       parm0_x;
14220         STORE_F "#include: Maximum depth reached!",     parm1_x;
14221         CALL2           Parser_Print;
14222         GOTO            4;
14223         STORE_F Parser_Token,   parm0_x;
14224         STORE_F pNamespace,     parm1_x;
14225         CALL2           Parser_ParseFile;
14226         SUB_F           Parser_IncludeDepth,    FILE_APPEND,    Parser_IncludeDepth;
14227         STORE_S lFilename,      Parser_Filename;
14228         STORE_S lLine,  Parser_Line;
14229         STORE_F lFile,  Parser_File;
14230         STORE_F lLineNumber,    Parser_LineNumber;
14231         CALL0           Parser_TokenizeLine;
14232         STORE_F lNumTokens,     Parser_NumTokens;
14233         STORE_F lTokenNum,      Parser_TokenNum;
14234         STORE_F Parser_FileList,        parm0_x;
14235         STORE_F "}",    parm1_x;
14236         CALL2           String_Append;
14237         STORE_S return_x,       Parser_FileList;
14238         DONE;
14239 }
14240
14241 void() Parser_ParseDefine = asm
14242 {
14243 local float locked_1586;
14244 local float lOldLine;
14245 local entity lDefine;
14246 local float temp_1;
14247         STORE_F KEY_MENU,       parm0_x;
14248         STORE_F "Parsing #define...",   parm1_x;
14249         CALL2           Parser_Print;
14250         STORE_F PARSER_TT_TOKEN,        parm0_x;
14251         CALL1           Parser_Expect;
14252         STORE_ENT       Parser_DefineChain,     lDefine;
14253         IFNOT           lDefine,        16;
14254         INDIRECT_S      lDefine,        name,   locked_1586;
14255         EQ_S            Parser_Token,   locked_1586,    locked_1586;
14256         IFNOT           locked_1586,    11;
14257         STORE_F "#define: [",   parm0_x;
14258         STORE_F Parser_Token,   parm1_x;
14259         STORE_F "] already defined!",   parm2_x;
14260         CALL3           strcat;
14261         STORE_F PARSER_INFO,    parm0_x;
14262         STORE_F return_x,       parm1_x;
14263         CALL2           Parser_Print;
14264         STORE_F PARSER_TT_TOKEN,        parm0_x;
14265         CALL1           Parser_Expect;
14266         RETURN  offset_0;
14267         INDIRECT_E      lDefine,        chain,  lDefine;
14268         GOTO            -15;
14269         CALL0           spawn;
14270         STORE_ENT       return_x,       lDefine;
14271         ADDRESS lDefine,        type,   locked_1586;
14272         STOREP_S        "Parser_Define",        locked_1586;
14273         ADDRESS lDefine,        name,   locked_1586;
14274         STORE_F Parser_Token,   parm0_x;
14275         CALL1           String_Zone;
14276         STOREP_S        return_x,       locked_1586;
14277         STORE_F lDefine,        parm0_x;
14278         STORE_F value,  parm1_x;
14279         CALL2           String_EntityZone;
14280         STORE_F Parser_LineNumber,      lOldLine;
14281         CALL0           Parser_GetToken;
14282         IF              return_x,       3;
14283         GOTO            21;
14284         GOTO            19;
14285         NE_F            lOldLine,       Parser_LineNumber,      locked_1586;
14286         IFNOT           locked_1586,    4;
14287         SUB_F           Parser_TokenNum,        FILE_APPEND,    Parser_TokenNum;
14288         GOTO            16;
14289         GOTO            14;
14290         EQ_S            Parser_Token,   "\",    locked_1586;
14291         IFNOT           locked_1586,    3;
14292         ADD_F           lOldLine,       FILE_APPEND,    lOldLine;
14293         GOTO            10;
14294         INDIRECT_S      lDefine,        value,  parm0_x;
14295         STORE_F """,    parm1_x;
14296         STORE_F Parser_Token,   parm2_x;
14297         STORE_F "" ",   parm3_x;
14298         CALL4           strcat;
14299         STORE_F lDefine,        parm0_x;
14300         STORE_F value,  parm1_x;
14301         STORE_F return_x,       parm2_x;
14302         CALL3           String_EntitySet;
14303         GOTO            -22;
14304         INDIRECT_S      lDefine,        name,   locked_1586;
14305         INDIRECT_S      lDefine,        value,  temp_1;
14306         STORE_F " Name = '",    parm0_x;
14307         STORE_F locked_1586,    parm1_x;
14308         STORE_F "' Replacement = '",    parm2_x;
14309         STORE_F temp_1, parm3_x;
14310         STORE_F "'",    parm4_x;
14311         CALL5           strcat;
14312         STORE_F PARSER_HIGH,    parm0_x;
14313         STORE_F return_x,       parm1_x;
14314         CALL2           Parser_Print;
14315         ADDRESS lDefine,        chain,  locked_1586;
14316         STOREP_ENT      Parser_DefineChain,     locked_1586;
14317         STORE_ENT       lDefine,        Parser_DefineChain;
14318         STORE_F PARSER_HIGH,    parm0_x;
14319         STORE_F "Done parsing #define", parm1_x;
14320         CALL2           Parser_Print;
14321         DONE;
14322 }
14323
14324 void() Parser_ParseUndef = asm
14325 {
14326 local entity lPrevious;
14327 local entity lEntity;
14328 local float temp_0;
14329 local float temp_1;
14330         STORE_F PARSER_HIGH,    parm0_x;
14331         STORE_F "Parsing #undef...",    parm1_x;
14332         CALL2           Parser_Print;
14333         STORE_F PARSER_TT_TOKEN,        parm0_x;
14334         CALL1           Parser_Expect;
14335         STORE_ENT       null_entity,    lPrevious;
14336         STORE_ENT       Parser_DefineChain,     lEntity;
14337         IFNOT           lEntity,        27;
14338         INDIRECT_S      lEntity,        name,   temp_0;
14339         EQ_S            temp_0, Parser_Token,   temp_0;
14340         IFNOT           temp_0, 21;
14341         IFNOT           lPrevious,      5;
14342         ADDRESS lPrevious,      chain,  temp_0;
14343         INDIRECT_E      lEntity,        chain,  temp_1;
14344         STOREP_ENT      temp_1, temp_0;
14345         GOTO            2;
14346         INDIRECT_E      lEntity,        chain,  Parser_DefineChain;
14347         STORE_F "#undef: Removed [",    parm0_x;
14348         STORE_F Parser_Token,   parm1_x;
14349         STORE_F "]",    parm2_x;
14350         CALL3           strcat;
14351         STORE_F PARSER_INFO,    parm0_x;
14352         STORE_F return_x,       parm1_x;
14353         CALL2           Parser_Print;
14354         INDIRECT_S      lEntity,        name,   parm0_x;
14355         CALL1           String_Free;
14356         INDIRECT_S      lEntity,        value,  parm0_x;
14357         CALL1           String_Free;
14358         STORE_F lEntity,        parm0_x;
14359         CALL1           remove;
14360         RETURN  offset_0;
14361         STORE_ENT       lEntity,        lPrevious;
14362         INDIRECT_E      lEntity,        chain,  lEntity;
14363         GOTO            -26;
14364         STORE_F "#undef: [",    parm0_x;
14365         STORE_F Parser_Token,   parm1_x;
14366         STORE_F "] not found!", parm2_x;
14367         CALL3           strcat;
14368         STORE_F PARSER_INFO,    parm0_x;
14369         STORE_F return_x,       parm1_x;
14370         CALL2           Parser_Print;
14371         DONE;
14372 }
14373
14374 void() Parser_ProcessDefine = asm
14375 {
14376 local entity lDefine;
14377 local string lConstant;
14378 local float temp_0;
14379 local float temp_1;
14380         STORE_F PARSER_TT_TOKEN,        parm0_x;
14381         CALL1           Parser_Expect;
14382         STORE_F Parser_Token,   parm0_x;
14383         CALL1           String_Zone;
14384         STORE_S return_x,       lConstant;
14385         STORE_F PARSER_TT_BRACKETCLOSE, parm0_x;
14386         CALL1           Parser_Expect;
14387         STORE_F "Processing [", parm0_x;
14388         STORE_F lConstant,      parm1_x;
14389         STORE_F "]...", parm2_x;
14390         CALL3           strcat;
14391         STORE_F PARSER_HIGH,    parm0_x;
14392         STORE_F return_x,       parm1_x;
14393         CALL2           Parser_Print;
14394         STORE_ENT       Parser_DefineChain,     lDefine;
14395         IFNOT           lDefine,        41;
14396         INDIRECT_S      lDefine,        name,   temp_0;
14397         EQ_S            temp_0, lConstant,      temp_0;
14398         IFNOT           temp_0, 36;
14399         INDIRECT_S      lDefine,        value,  temp_0;
14400         STORE_F " ",    parm0_x;
14401         STORE_F temp_0, parm1_x;
14402         CALL2           strcat;
14403         STORE_F Parser_Line,    parm0_x;
14404         STORE_F return_x,       parm1_x;
14405         CALL2           String_Set;
14406         STORE_S return_x,       Parser_Line;
14407         STORE_F "Replacing with '",     parm0_x;
14408         STORE_F Parser_Line,    parm1_x;
14409         STORE_F "'",    parm2_x;
14410         CALL3           strcat;
14411         STORE_F PARSER_HIGH,    parm0_x;
14412         STORE_F return_x,       parm1_x;
14413         CALL2           Parser_Print;
14414         LT              Parser_TokenNum,        Parser_NumTokens,       temp_0;
14415         IFNOT           temp_0, 15;
14416         STORE_F Parser_TokenNum,        parm0_x;
14417         CALL1           argv;
14418         STORE_F Parser_Line,    parm0_x;
14419         STORE_F " "",   parm1_x;
14420         STORE_F return_x,       parm2_x;
14421         STORE_F """,    parm3_x;
14422         CALL4           strcat;
14423         STORE_F Parser_Line,    parm0_x;
14424         STORE_F return_x,       parm1_x;
14425         CALL2           String_Set;
14426         STORE_S return_x,       Parser_Line;
14427         STORE_F Parser_TokenNum,        temp_1;
14428         ADD_F           Parser_TokenNum,        FILE_APPEND,    Parser_TokenNum;
14429         GOTO            -15;
14430         CALL0           Parser_TokenizeLine;
14431         STORE_F lConstant,      parm0_x;
14432         CALL1           String_Free;
14433         RETURN  offset_0;
14434         INDIRECT_E      lDefine,        chain,  lDefine;
14435         GOTO            -40;
14436         STORE_F lConstant,      parm0_x;
14437         CALL1           String_Normal;
14438         STORE_F Parser_Token,   parm0_x;
14439         STORE_F return_x,       parm1_x;
14440         CALL2           String_Set;
14441         STORE_S return_x,       Parser_Token;
14442         STORE_F "#define: Couldn't find constant '",    parm0_x;
14443         STORE_F Parser_Token,   parm1_x;
14444         STORE_F "'!",   parm2_x;
14445         CALL3           strcat;
14446         STORE_F KEY_GAME,       parm0_x;
14447         STORE_F return_x,       parm1_x;
14448         CALL2           Parser_Print;
14449         STORE_F "constant not found",   parm0_x;
14450         CALL1           Parser_Error;
14451         DONE;
14452 }
14453
14454 void(string pNamespace) Parser_ParseDefinition = asm
14455 {
14456 local entity lEntity;
14457 local float temp_0;
14458 local float temp_1;
14459         EQ_F            Parser_TokenType,       PARSER_TT_ITEM, temp_0;
14460         IFNOT           temp_0, 4;
14461         STORE_F pNamespace,     parm0_x;
14462         CALL1           Parser_ParseItem;
14463         GOTO            50;
14464         EQ_F            Parser_TokenType,       PARSER_TT_TEMPLATE,     temp_0;
14465         IFNOT           temp_0, 9;
14466         STORE_F pNamespace,     parm0_x;
14467         CALL1           Parser_ParseItem;
14468         STORE_ENT       return_x,       lEntity;
14469         ADDRESS lEntity,        flag,   temp_0;
14470         INDIRECT_F      lEntity,        flag,   temp_1;
14471         BITOR           temp_1, FLAG_TEMPLATE,  temp_1;
14472         STOREP_F        temp_1, temp_0;
14473         GOTO            40;
14474         EQ_F            Parser_TokenType,       PARSER_TT_DEFINE,       temp_0;
14475         IFNOT           temp_0, 3;
14476         CALL0           Parser_ParseDefine;
14477         GOTO            36;
14478         EQ_F            Parser_TokenType,       PARSER_TT_DERIVE,       temp_0;
14479         IFNOT           temp_0, 4;
14480         STORE_F pNamespace,     parm0_x;
14481         CALL1           Parser_DeriveItem;
14482         GOTO            31;
14483         EQ_F            Parser_TokenType,       PARSER_TT_DERIVETEMPLATE,       temp_0;
14484         IFNOT           temp_0, 9;
14485         STORE_F pNamespace,     parm0_x;
14486         CALL1           Parser_DeriveItem;
14487         STORE_ENT       return_x,       lEntity;
14488         ADDRESS lEntity,        flag,   temp_0;
14489         INDIRECT_F      lEntity,        flag,   temp_1;
14490         BITOR           temp_1, FLAG_TEMPLATE,  temp_1;
14491         STOREP_F        temp_1, temp_0;
14492         GOTO            21;
14493         EQ_F            Parser_TokenType,       PARSER_TT_UNDEF,        temp_0;
14494         IFNOT           temp_0, 3;
14495         CALL0           Parser_ParseUndef;
14496         GOTO            17;
14497         EQ_F            Parser_TokenType,       PARSER_TT_NAMESPACE,    temp_0;
14498         IFNOT           temp_0, 4;
14499         STORE_F pNamespace,     parm0_x;
14500         CALL1           Parser_ParseNamespace;
14501         GOTO            12;
14502         EQ_F            Parser_TokenType,       PARSER_TT_INCLUDE,      temp_0;
14503         IFNOT           temp_0, 4;
14504         STORE_F pNamespace,     parm0_x;
14505         CALL1           Parser_IncludeFile;
14506         GOTO            7;
14507         EQ_F            Parser_TokenType,       PARSER_TT_IGNORE,       temp_0;
14508         IFNOT           temp_0, 3;
14509         CALL0           Parser_ParseIgnore;
14510         GOTO            3;
14511         STORE_F "couldn't find type in Parser_ParseDef",        parm0_x;
14512         CALL1           Parser_Error;
14513         DONE;
14514 }
14515
14516 void() Parser_ParseIgnore = asm
14517 {
14518 local float lBraceCount;
14519 local float temp_0;
14520         STORE_F PARSER_TT_BRACEOPEN,    parm0_x;
14521         CALL1           Parser_Expect;
14522         STORE_F FILE_APPEND,    lBraceCount;
14523         GT              lBraceCount,    KEY_GAME,       temp_0;
14524         IFNOT           temp_0, 13;
14525         CALL0           Parser_GetToken;
14526         IF              return_x,       3;
14527         GOTO            10;
14528         GOTO            8;
14529         EQ_F            Parser_TokenType,       PARSER_TT_BRACEOPEN,    temp_0;
14530         IFNOT           temp_0, 3;
14531         ADD_F           lBraceCount,    FILE_APPEND,    lBraceCount;
14532         GOTO            4;
14533         EQ_F            Parser_TokenType,       PARSER_TT_BRACECLOSE,   temp_0;
14534         IFNOT           temp_0, 2;
14535         SUB_F           lBraceCount,    FILE_APPEND,    lBraceCount;
14536         GOTO            -13;
14537         DONE;
14538 }
14539
14540 entity(string pNamespace) Parser_ParseItem = asm
14541 {
14542 local entity lEntity;
14543 local string lEntityText;
14544 local string lNamespace;
14545 local float temp_0;
14546         STORE_F PARSER_HIGH,    parm0_x;
14547         STORE_F "Parsing item..",       parm1_x;
14548         CALL2           Parser_Print;
14549         STORE_F PARSER_TT_TOKEN,        parm0_x;
14550         CALL1           Parser_Expect;
14551         STORE_F "{ "type" "Item_",      parm0_x;
14552         STORE_F Parser_Token,   parm1_x;
14553         STORE_F "" ",   parm2_x;
14554         CALL3           strcat;
14555         STORE_F return_x,       parm0_x;
14556         CALL1           String_Zone;
14557         STORE_S return_x,       lEntityText;
14558         STORE_F " Type = '",    parm0_x;
14559         STORE_F Parser_Token,   parm1_x;
14560         STORE_F "'",    parm2_x;
14561         CALL3           strcat;
14562         STORE_F PARSER_HIGH,    parm0_x;
14563         STORE_F return_x,       parm1_x;
14564         CALL2           Parser_Print;
14565         STORE_F PARSER_TT_TOKEN,        parm0_x;
14566         CALL1           Parser_Expect;
14567         NE_S            pNamespace,     "",     temp_0;
14568         IFNOT           temp_0, 9;
14569         STORE_F pNamespace,     parm0_x;
14570         STORE_F "::",   parm1_x;
14571         STORE_F Parser_Token,   parm2_x;
14572         CALL3           strcat;
14573         STORE_F return_x,       parm0_x;
14574         CALL1           String_Zone;
14575         STORE_S return_x,       lNamespace;
14576         GOTO            4;
14577         STORE_F Parser_Token,   parm0_x;
14578         CALL1           String_Zone;
14579         STORE_S return_x,       lNamespace;
14580         STORE_F lEntityText,    parm0_x;
14581         STORE_F ""name" "",     parm1_x;
14582         STORE_F lNamespace,     parm2_x;
14583         STORE_F "" ",   parm3_x;
14584         CALL4           strcat;
14585         STORE_F lEntityText,    parm0_x;
14586         STORE_F return_x,       parm1_x;
14587         CALL2           String_Set;
14588         STORE_S return_x,       lEntityText;
14589         STORE_F lEntityText,    parm0_x;
14590         STORE_F ""parent" "",   parm1_x;
14591         STORE_F pNamespace,     parm2_x;
14592         STORE_F "" ",   parm3_x;
14593         CALL4           strcat;
14594         STORE_F lEntityText,    parm0_x;
14595         STORE_F return_x,       parm1_x;
14596         CALL2           String_Set;
14597         STORE_S return_x,       lEntityText;
14598         STORE_F " Name = '",    parm0_x;
14599         STORE_F Parser_Token,   parm1_x;
14600         STORE_F "' Parent = '", parm2_x;
14601         STORE_F pNamespace,     parm3_x;
14602         STORE_F "' Namespace = '",      parm4_x;
14603         STORE_F lNamespace,     parm5_x;
14604         STORE_F "'",    parm6_x;
14605         CALL7           strcat;
14606         STORE_F PARSER_HIGH,    parm0_x;
14607         STORE_F return_x,       parm1_x;
14608         CALL2           Parser_Print;
14609         STORE_F PARSER_TT_BRACEOPEN,    parm0_x;
14610         CALL1           Parser_Expect;
14611         STORE_F lNamespace,     parm0_x;
14612         STORE_F lEntityText,    parm1_x;
14613         CALL2           Parser_ParseEntity;
14614         STORE_S return_x,       lEntityText;
14615         CALL0           spawn;
14616         STORE_ENT       return_x,       lEntity;
14617         STORE_F lEntity,        parm0_x;
14618         STORE_F lEntityText,    parm1_x;
14619         CALL2           parseentitydata;
14620         STORE_F lEntityText,    parm0_x;
14621         CALL1           String_Free;
14622         STORE_F lNamespace,     parm0_x;
14623         CALL1           String_Free;
14624         INDIRECT_S      lEntity,        name,   temp_0;
14625         STORE_F "Parsing '",    parm0_x;
14626         STORE_F temp_0, parm1_x;
14627         STORE_F "' finished",   parm2_x;
14628         CALL3           strcat;
14629         STORE_F PARSER_HIGH,    parm0_x;
14630         STORE_F return_x,       parm1_x;
14631         CALL2           Parser_Print;
14632         RETURN  lEntity;
14633         DONE;
14634 }
14635
14636 void(entity pSource, entity pTarget) Parser_CloneChildren = asm
14637 {
14638 local float locked_1585;
14639 local float locked_1586;
14640 local string lModifierString;
14641 local entity lClone;
14642 local entity lNode;
14643 local float temp_5;
14644         STORE_ENT       null_entity,    lNode;
14645         INDIRECT_S      pSource,        name,   locked_1586;
14646         STORE_F lNode,  parm0_x;
14647         STORE_F parent, parm1_x;
14648         STORE_F locked_1586,    parm2_x;
14649         CALL3           findstring;
14650         STORE_ENT       return_x,       lNode;
14651         NE_E            return_x,       null_entity,    locked_1586;
14652         IFNOT           locked_1586,    37;
14653         CALL0           spawn;
14654         STORE_ENT       return_x,       lClone;
14655         STORE_F lNode,  parm0_x;
14656         STORE_F lClone, parm1_x;
14657         CALL2           copyentity;
14658         INDIRECT_F      lClone, flag,   locked_1586;
14659         BITAND  locked_1586,    FLAG_TEMPLATE,  locked_1586;
14660         IFNOT           locked_1586,    5;
14661         ADDRESS lClone, flag,   locked_1586;
14662         INDIRECT_F      lClone, flag,   locked_1585;
14663         SUB_F           locked_1585,    FLAG_TEMPLATE,  locked_1585;
14664         STOREP_F        locked_1585,    locked_1586;
14665         INDIRECT_S      pTarget,        name,   locked_1586;
14666         INDIRECT_S      lNode,  name,   locked_1585;
14667         INDIRECT_S      pSource,        name,   parm0_x;
14668         CALL1           strlen;
14669         STORE_F locked_1585,    parm0_x;
14670         STORE_F return_x,       parm1_x;
14671         STORE_F 100000.000000,  parm2_x;
14672         CALL3           substring;
14673         INDIRECT_S      pTarget,        name,   locked_1585;
14674         STORE_F "{ name "",     parm0_x;
14675         STORE_F locked_1586,    parm1_x;
14676         STORE_F return_x,       parm2_x;
14677         STORE_F "" parent "",   parm3_x;
14678         STORE_F locked_1585,    parm4_x;
14679         STORE_F "" }",  parm5_x;
14680         CALL6           strcat;
14681         STORE_S return_x,       lModifierString;
14682         STORE_F lClone, parm0_x;
14683         STORE_F lModifierString,        parm1_x;
14684         CALL2           parseentitydata;
14685         STORE_F lNode,  parm0_x;
14686         STORE_F lClone, parm1_x;
14687         CALL2           Parser_CloneChildren;
14688         GOTO            -43;
14689         DONE;
14690 }
14691
14692 entity(string pNamespace) Parser_DeriveItem = asm
14693 {
14694 local entity lEntity;
14695 local string lBaseName;
14696 local entity lBase;
14697 local string lEntityText;
14698 local string lNamespace;
14699 local float temp_0;
14700 local float temp_1;
14701         STORE_F PARSER_HIGH,    parm0_x;
14702         STORE_F "Parsing derived item..",       parm1_x;
14703         CALL2           Parser_Print;
14704         STORE_F PARSER_TT_TOKEN,        parm0_x;
14705         CALL1           Parser_Expect;
14706         STORE_F Parser_Token,   parm0_x;
14707         STORE_F KEY_GAME,       parm1_x;
14708         STORE_F KEY_MENU,       parm2_x;
14709         CALL3           substring;
14710         EQ_S            return_x,       "::",   temp_0;
14711         IFNOT           temp_0, 12;
14712         STORE_F Parser_Token,   parm0_x;
14713         CALL1           strlen;
14714         SUB_F           return_x,       KEY_MENU,       temp_0;
14715         STORE_F Parser_Token,   parm0_x;
14716         STORE_F KEY_MENU,       parm1_x;
14717         STORE_F temp_0, parm2_x;
14718         CALL3           substring;
14719         STORE_F return_x,       parm0_x;
14720         CALL1           String_Zone;
14721         STORE_S return_x,       lBaseName;
14722         GOTO            24;
14723         EQ_S            pNamespace,     "",     temp_0;
14724         IFNOT           temp_0, 5;
14725         STORE_F Parser_Token,   parm0_x;
14726         CALL1           String_Zone;
14727         STORE_S return_x,       lBaseName;
14728         GOTO            18;
14729         STORE_F pNamespace,     parm0_x;
14730         STORE_F "::",   parm1_x;
14731         STORE_F Parser_Token,   parm2_x;
14732         CALL3           strcat;
14733         STORE_F return_x,       parm0_x;
14734         CALL1           String_Zone;
14735         STORE_S return_x,       lBaseName;
14736         STORE_F null_entity,    parm0_x;
14737         STORE_F name,   parm1_x;
14738         STORE_F lBaseName,      parm2_x;
14739         CALL3           findstring;
14740         EQ_E            return_x,       null_entity,    temp_0;
14741         IFNOT           temp_0, 5;
14742         STORE_F lBaseName,      parm0_x;
14743         STORE_F Parser_Token,   parm1_x;
14744         CALL2           String_Set;
14745         STORE_S return_x,       lBaseName;
14746         STORE_F " Base = '",    parm0_x;
14747         STORE_F lBaseName,      parm1_x;
14748         STORE_F "'",    parm2_x;
14749         CALL3           strcat;
14750         STORE_F PARSER_HIGH,    parm0_x;
14751         STORE_F return_x,       parm1_x;
14752         CALL2           Parser_Print;
14753         STORE_F null_entity,    parm0_x;
14754         STORE_F name,   parm1_x;
14755         STORE_F lBaseName,      parm2_x;
14756         CALL3           findstring;
14757         STORE_ENT       return_x,       lBase;
14758         EQ_E            lBase,  null_entity,    temp_0;
14759         IFNOT           temp_0, 3;
14760         STORE_F "couldnt find item",    parm0_x;
14761         CALL1           Parser_Error;
14762         STORE_F PARSER_TT_TOKEN,        parm0_x;
14763         CALL1           Parser_Expect;
14764         NE_S            pNamespace,     "",     temp_0;
14765         IFNOT           temp_0, 9;
14766         STORE_F pNamespace,     parm0_x;
14767         STORE_F "::",   parm1_x;
14768         STORE_F Parser_Token,   parm2_x;
14769         CALL3           strcat;
14770         STORE_F return_x,       parm0_x;
14771         CALL1           String_Zone;
14772         STORE_S return_x,       lNamespace;
14773         GOTO            4;
14774         STORE_F Parser_Token,   parm0_x;
14775         CALL1           String_Zone;
14776         STORE_S return_x,       lNamespace;
14777         STORE_F "{ "name" "",   parm0_x;
14778         STORE_F lNamespace,     parm1_x;
14779         STORE_F "" ",   parm2_x;
14780         CALL3           strcat;
14781         STORE_F return_x,       parm0_x;
14782         CALL1           String_Zone;
14783         STORE_S return_x,       lEntityText;
14784         STORE_F lEntityText,    parm0_x;
14785         STORE_F ""parent" "",   parm1_x;
14786         STORE_F pNamespace,     parm2_x;
14787         STORE_F "" ",   parm3_x;
14788         CALL4           strcat;
14789         STORE_F lEntityText,    parm0_x;
14790         STORE_F return_x,       parm1_x;
14791         CALL2           String_Set;
14792         STORE_S return_x,       lEntityText;
14793         STORE_F " Name = '",    parm0_x;
14794         STORE_F Parser_Token,   parm1_x;
14795         STORE_F "' Parent = '", parm2_x;
14796         STORE_F pNamespace,     parm3_x;
14797         STORE_F "' Namespace = '",      parm4_x;
14798         STORE_F lNamespace,     parm5_x;
14799         STORE_F "'",    parm6_x;
14800         CALL7           strcat;
14801         STORE_F PARSER_HIGH,    parm0_x;
14802         STORE_F return_x,       parm1_x;
14803         CALL2           Parser_Print;
14804         STORE_F PARSER_TT_BRACEOPEN,    parm0_x;
14805         CALL1           Parser_Expect;
14806         STORE_F lNamespace,     parm0_x;
14807         STORE_F lEntityText,    parm1_x;
14808         CALL2           Parser_ParseEntity;
14809         STORE_S return_x,       lEntityText;
14810         CALL0           spawn;
14811         STORE_ENT       return_x,       lEntity;
14812         STORE_F lBase,  parm0_x;
14813         STORE_F lEntity,        parm1_x;
14814         CALL2           copyentity;
14815         INDIRECT_F      lEntity,        flag,   temp_0;
14816         BITAND  temp_0, FLAG_TEMPLATE,  temp_0;
14817         IFNOT           temp_0, 5;
14818         ADDRESS lEntity,        flag,   temp_0;
14819         INDIRECT_F      lEntity,        flag,   temp_1;
14820         SUB_F           temp_1, FLAG_TEMPLATE,  temp_1;
14821         STOREP_F        temp_1, temp_0;
14822         STORE_F lEntity,        parm0_x;
14823         STORE_F lEntityText,    parm1_x;
14824         CALL2           parseentitydata;
14825         STORE_F lEntityText,    parm0_x;
14826         CALL1           String_Free;
14827         STORE_F lNamespace,     parm0_x;
14828         CALL1           String_Free;
14829         STORE_F lBaseName,      parm0_x;
14830         CALL1           String_Free;
14831         STORE_F lBase,  parm0_x;
14832         STORE_F lEntity,        parm1_x;
14833         CALL2           Parser_CloneChildren;
14834         INDIRECT_S      lEntity,        name,   temp_0;
14835         STORE_F "Parsing '",    parm0_x;
14836         STORE_F temp_0, parm1_x;
14837         STORE_F "' finished",   parm2_x;
14838         CALL3           strcat;
14839         STORE_F PARSER_HIGH,    parm0_x;
14840         STORE_F return_x,       parm1_x;
14841         CALL2           Parser_Print;
14842         RETURN  lEntity;
14843         DONE;
14844 }
14845
14846 string(string pNamespace, string pEntityText) Parser_ParseEntity = asm
14847 {
14848 local float temp_0;
14849         CALL0           Parser_GetToken;
14850         IFNOT           return_x,       31;
14851         EQ_F            Parser_TokenType,       PARSER_TT_TOKEN,        temp_0;
14852         IFNOT           temp_0, 22;
14853         STORE_F pEntityText,    parm0_x;
14854         STORE_F """,    parm1_x;
14855         STORE_F Parser_Token,   parm2_x;
14856         STORE_F "" ",   parm3_x;
14857         CALL4           strcat;
14858         STORE_F pEntityText,    parm0_x;
14859         STORE_F return_x,       parm1_x;
14860         CALL2           String_Set;
14861         STORE_S return_x,       pEntityText;
14862         STORE_F PARSER_TT_TOKEN,        parm0_x;
14863         CALL1           Parser_Expect;
14864         STORE_F pEntityText,    parm0_x;
14865         STORE_F """,    parm1_x;
14866         STORE_F Parser_Token,   parm2_x;
14867         STORE_F "" ",   parm3_x;
14868         CALL4           strcat;
14869         STORE_F pEntityText,    parm0_x;
14870         STORE_F return_x,       parm1_x;
14871         CALL2           String_Set;
14872         STORE_S return_x,       pEntityText;
14873         GOTO            7;
14874         EQ_F            Parser_TokenType,       PARSER_TT_BRACECLOSE,   temp_0;
14875         IFNOT           temp_0, 3;
14876         GOTO            5;
14877         GOTO            3;
14878         STORE_F pNamespace,     parm0_x;
14879         CALL1           Parser_ParseDefinition;
14880         GOTO            -31;
14881         STORE_F pEntityText,    parm0_x;
14882         STORE_F " }",   parm1_x;
14883         CALL2           String_Append;
14884         RETURN  return_x;
14885         DONE;
14886 }
14887
14888 void(string pNamespace) Parser_ParseNamespace = asm
14889 {
14890 local string lNamespace;
14891 local float temp_0;
14892         STORE_F PARSER_HIGH,    parm0_x;
14893         STORE_F "Parsing Namespace...", parm1_x;
14894         CALL2           Parser_Print;
14895         STORE_F PARSER_TT_TOKEN,        parm0_x;
14896         CALL1           Parser_Expect;
14897         NE_S            pNamespace,     "",     temp_0;
14898         IFNOT           temp_0, 9;
14899         STORE_F pNamespace,     parm0_x;
14900         STORE_F "::",   parm1_x;
14901         STORE_F Parser_Token,   parm2_x;
14902         CALL3           strcat;
14903         STORE_F return_x,       parm0_x;
14904         CALL1           String_Zone;
14905         STORE_S return_x,       lNamespace;
14906         GOTO            4;
14907         STORE_F Parser_Token,   parm0_x;
14908         CALL1           String_Zone;
14909         STORE_S return_x,       lNamespace;
14910         STORE_F " Subnamespace = '",    parm0_x;
14911         STORE_F Parser_Token,   parm1_x;
14912         STORE_F "' New namespace = '",  parm2_x;
14913         STORE_F lNamespace,     parm3_x;
14914         STORE_F "'",    parm4_x;
14915         CALL5           strcat;
14916         STORE_F PARSER_HIGH,    parm0_x;
14917         STORE_F return_x,       parm1_x;
14918         CALL2           Parser_Print;
14919         STORE_F PARSER_TT_BRACEOPEN,    parm0_x;
14920         CALL1           Parser_Expect;
14921         CALL0           Parser_GetToken;
14922         IFNOT           return_x,       7;
14923         EQ_F            Parser_TokenType,       PARSER_TT_BRACECLOSE,   temp_0;
14924         IFNOT           temp_0, 2;
14925         GOTO            4;
14926         STORE_F lNamespace,     parm0_x;
14927         CALL1           Parser_ParseDefinition;
14928         GOTO            -7;
14929         STORE_F "Finished parsing Namespace. Namespace = '",    parm0_x;
14930         STORE_F pNamespace,     parm1_x;
14931         STORE_F "'",    parm2_x;
14932         CALL3           strcat;
14933         STORE_F PARSER_HIGH,    parm0_x;
14934         STORE_F return_x,       parm1_x;
14935         CALL2           Parser_Print;
14936         STORE_F lNamespace,     parm0_x;
14937         CALL1           String_Free;
14938         DONE;
14939 }
14940
14941 void(string pFilename, string pNamespace) Parser_ParseFile = asm
14942 {
14943 local float temp_0;
14944         STORE_F pFilename,      parm0_x;
14945         CALL1           String_Zone;
14946         STORE_S return_x,       Parser_Filename;
14947         STORE_F Parser_Filename,        parm0_x;
14948         STORE_F KEY_GAME,       parm1_x;
14949         CALL2           fopen;
14950         STORE_F return_x,       Parser_File;
14951         EQ_F            Parser_File,    ERR_CANNOTOPEN, temp_0;
14952         IFNOT           temp_0, 6;
14953         STORE_F "Parser: Couldn't open ",       parm0_x;
14954         STORE_F Parser_Filename,        parm1_x;
14955         STORE_F "
14956 ",      parm2_x;
14957         CALL3           print;
14958         RETURN  offset_0;
14959         CALL0           String_Create;
14960         STORE_S return_x,       Parser_Line;
14961         STORE_F KEY_GAME,       Parser_LineNumber;
14962         STORE_F KEY_GAME,       Parser_TokenNum;
14963         STORE_F KEY_GAME,       Parser_NumTokens;
14964         CALL0           Parser_GetToken;
14965         IFNOT           return_x,       4;
14966         STORE_F pNamespace,     parm0_x;
14967         CALL1           Parser_ParseDefinition;
14968         GOTO            -4;
14969         STORE_F Parser_File,    parm0_x;
14970         CALL1           fclose;
14971         STORE_F Parser_Filename,        parm0_x;
14972         CALL1           String_Free;
14973         STORE_F Parser_Line,    parm0_x;
14974         CALL1           String_Free;
14975         DONE;
14976 }
14977
14978 void() Parser_Init = asm
14979 {
14980         CALL0           String_Create;
14981         STORE_S return_x,       Parser_Token;
14982         STORE_ENT       null_entity,    Parser_DefineChain;
14983         STORE_F KEY_GAME,       Parser_IncludeDepth;
14984         CALL0           String_Create;
14985         STORE_S return_x,       Parser_FileList;
14986         DONE;
14987 }
14988
14989 void() Parser_Quit = asm
14990 {
14991 local entity lNext;
14992 local float temp_0;
14993         STORE_F PARSER_HIGH,    parm0_x;
14994         STORE_F "Deleting #defines:",   parm1_x;
14995         CALL2           _Parser_Print;
14996         IFNOT           Parser_DefineChain,     18;
14997         INDIRECT_E      Parser_DefineChain,     chain,  lNext;
14998         INDIRECT_S      Parser_DefineChain,     name,   temp_0;
14999         STORE_F "  [",  parm0_x;
15000         STORE_F temp_0, parm1_x;
15001         STORE_F "]",    parm2_x;
15002         CALL3           strcat;
15003         STORE_F PARSER_HIGH,    parm0_x;
15004         STORE_F return_x,       parm1_x;
15005         CALL2           _Parser_Print;
15006         INDIRECT_S      Parser_DefineChain,     name,   parm0_x;
15007         CALL1           String_Free;
15008         INDIRECT_S      Parser_DefineChain,     value,  parm0_x;
15009         CALL1           String_Free;
15010         STORE_F Parser_DefineChain,     parm0_x;
15011         CALL1           remove;
15012         STORE_ENT       lNext,  Parser_DefineChain;
15013         GOTO            -17;
15014         STORE_F Parser_Token,   parm0_x;
15015         CALL1           String_Free;
15016         STORE_F Parser_FileList,        parm0_x;
15017         CALL1           String_Free;
15018         DONE;
15019 }
15020
15021 void(string pMain) Parser_ParseMenu = asm
15022 {
15023         CALL0           Parser_Init;
15024         STORE_F pMain,  parm0_x;
15025         CALL1           String_Zone;
15026         STORE_S return_x,       pMain;
15027         STORE_F Parser_FileList,        parm0_x;
15028         STORE_F pMain,  parm1_x;
15029         CALL2           Util_AltStringPush;
15030         STORE_S return_x,       Parser_FileList;
15031         STORE_F pMain,  parm0_x;
15032         STORE_F "",     parm1_x;
15033         CALL2           Parser_ParseFile;
15034         STORE_F "Files parsed: ",       parm0_x;
15035         STORE_F Parser_FileList,        parm1_x;
15036         CALL2           strcat;
15037         STORE_F PARSER_INFO,    parm0_x;
15038         STORE_F return_x,       parm1_x;
15039         CALL2           _Parser_Print;
15040         STORE_F pMain,  parm0_x;
15041         CALL1           String_Free;
15042         CALL0           Parser_Quit;
15043         DONE;
15044 }
15045
15046 void() Menu_InitGarbageStats = asm
15047 {
15048         STORE_F KEY_GAME,       Menu_GarbageFrameCount;
15049         STORE_F KEY_GAME,       Menu_GarbageToggleCount;
15050         DONE;
15051 }
15052
15053 void() Menu_ResetGarbageStats = asm
15054 {
15055         IFNOT           Menu_GarbageFrameCount, 7;
15056         STORE_F Menu_GarbageFrameCount, parm0_x;
15057         CALL1           ftos;
15058         STORE_F "Menu: GC: ",   parm0_x;
15059         STORE_F return_x,       parm1_x;
15060         STORE_F " items marked for frame deletion but couldnt be reached!
15061 ",      parm2_x;
15062         CALL3           print;
15063         IFNOT           Menu_GarbageToggleCount,        7;
15064         STORE_F Menu_GarbageToggleCount,        parm0_x;
15065         CALL1           ftos;
15066         STORE_F "Menu: GC: ",   parm0_x;
15067         STORE_F return_x,       parm1_x;
15068         STORE_F " items marked for toggle delition but couldnt be reached!
15069 ",      parm2_x;
15070         CALL3           print;
15071         STORE_F KEY_GAME,       Menu_GarbageFrameCount;
15072         STORE_F KEY_GAME,       Menu_GarbageToggleCount;
15073         DONE;
15074 }
15075
15076 float(entity pItem) Menu_CheckForGarbage = asm
15077 {
15078 local float temp_0;
15079         INDIRECT_F      pItem,  _runFlag,       temp_0;
15080         BITAND  temp_0, RUNFLAG_DELETEFRAME,    temp_0;
15081         IFNOT           temp_0, 5;
15082         STORE_F pItem,  parm0_x;
15083         CALL1           Menu_RemoveItem;
15084         SUB_F           Menu_GarbageFrameCount, FILE_APPEND,    Menu_GarbageFrameCount;
15085         RETURN  FILE_APPEND;
15086         RETURN  KEY_GAME;
15087         DONE;
15088 }
15089
15090 void(float pToggle) Menu_CollectGarbage = asm
15091 {
15092 local float locked_1586;
15093 local entity lNode;
15094 local float temp_1;
15095         STORE_ENT       null_entity,    lNode;
15096         IFNOT           pToggle,        25;
15097         IF              Menu_GarbageFrameCount, 1;
15098         OR              Menu_GarbageFrameCount, Menu_GarbageToggleCount,        locked_1586;
15099         IFNOT           locked_1586,    5;
15100         STORE_F lNode,  parm0_x;
15101         CALL1           nextent;
15102         STORE_ENT       return_x,       lNode;
15103         NE_E            return_x,       null_entity,    temp_1;
15104         AND             locked_1586,    temp_1, locked_1586;
15105         IFNOT           locked_1586,    15;
15106         INDIRECT_F      lNode,  _runFlag,       locked_1586;
15107         BITAND  locked_1586,    RUNFLAG_DELETEFRAME,    locked_1586;
15108         IFNOT           locked_1586,    5;
15109         STORE_F lNode,  parm0_x;
15110         CALL1           Menu_RemoveItem;
15111         SUB_F           Menu_GarbageFrameCount, FILE_APPEND,    Menu_GarbageFrameCount;
15112         GOTO            7;
15113         INDIRECT_F      lNode,  _runFlag,       locked_1586;
15114         BITAND  locked_1586,    RUNFLAG_DELETETOGGLE,   locked_1586;
15115         IFNOT           locked_1586,    4;
15116         STORE_F lNode,  parm0_x;
15117         CALL1           Menu_RemoveItem;
15118         SUB_F           Menu_GarbageToggleCount,        FILE_APPEND,    Menu_GarbageToggleCount;
15119         GOTO            -22;
15120         GOTO            15;
15121         IFNOT           Menu_GarbageFrameCount, 5;
15122         STORE_F lNode,  parm0_x;
15123         CALL1           nextent;
15124         STORE_ENT       return_x,       lNode;
15125         NE_E            return_x,       null_entity,    locked_1586;
15126         AND             Menu_GarbageFrameCount, locked_1586,    locked_1586;
15127         IFNOT           locked_1586,    8;
15128         INDIRECT_F      lNode,  _runFlag,       locked_1586;
15129         BITAND  locked_1586,    RUNFLAG_DELETEFRAME,    locked_1586;
15130         IFNOT           locked_1586,    4;
15131         STORE_F lNode,  parm0_x;
15132         CALL1           Menu_RemoveItem;
15133         SUB_F           Menu_GarbageFrameCount, FILE_APPEND,    Menu_GarbageFrameCount;
15134         GOTO            -13;
15135         DONE;
15136 }
15137
15138 void(entity pItem) Menu_DeleteAfterFrame = asm
15139 {
15140 local float temp_0;
15141 local float temp_1;
15142         INDIRECT_F      pItem,  _runFlag,       temp_0;
15143         BITAND  temp_0, RUNFLAG_DELETEFRAME,    temp_0;
15144         IF              temp_0, 16;
15145         INDIRECT_F      pItem,  _runFlag,       temp_0;
15146         BITAND  temp_0, RUNFLAG_DELETETOGGLE,   temp_0;
15147         IFNOT           temp_0, 8;
15148         ADDRESS pItem,  _runFlag,       temp_0;
15149         INDIRECT_F      pItem,  _runFlag,       temp_1;
15150         ADD_F           temp_1, RUNFLAG_DELETEFRAME,    temp_1;
15151         SUB_F           temp_1, RUNFLAG_DELETETOGGLE,   temp_1;
15152         STOREP_F        temp_1, temp_0;
15153         SUB_F           Menu_GarbageToggleCount,        FILE_APPEND,    Menu_GarbageToggleCount;
15154         GOTO            5;
15155         ADDRESS pItem,  _runFlag,       temp_0;
15156         INDIRECT_F      pItem,  _runFlag,       temp_1;
15157         ADD_F           temp_1, RUNFLAG_DELETEFRAME,    temp_1;
15158         STOREP_F        temp_1, temp_0;
15159         ADD_F           Menu_GarbageFrameCount, FILE_APPEND,    Menu_GarbageFrameCount;
15160         DONE;
15161 }
15162
15163 void(entity pItem) Menu_DeleteAfterToggle = asm
15164 {
15165 local float temp_0;
15166 local float temp_1;
15167         INDIRECT_F      pItem,  _runFlag,       temp_0;
15168         BITAND  temp_0, RUNFLAG_DELETEFRAME,    temp_0;
15169         IF              temp_0, 3;
15170         INDIRECT_F      pItem,  _runFlag,       temp_1;
15171         BITAND  temp_1, RUNFLAG_DELETETOGGLE,   temp_1;
15172         OR              temp_0, temp_1, temp_0;
15173         IFNOT           temp_0, 2;
15174         RETURN  offset_0;
15175         ADDRESS pItem,  _runFlag,       temp_0;
15176         INDIRECT_F      self,   _runFlag,       temp_1;
15177         ADD_F           temp_1, RUNFLAG_DELETETOGGLE,   temp_1;
15178         STOREP_F        temp_1, temp_0;
15179         ADD_F           Menu_GarbageToggleCount,        FILE_APPEND,    Menu_GarbageToggleCount;
15180         DONE;
15181 }
15182
15183 void() Key_Init = asm
15184 {
15185         DONE;
15186 }
15187
15188 void() Key_Quit = asm
15189 {
15190         DONE;
15191 }
15192
15193 void() Key_Display = asm
15194 {
15195         STORE_F KEY_MENU,       parm0_x;
15196         CALL1           setkeydest;
15197         DONE;
15198 }
15199
15200 void() Key_Update = asm
15201 {
15202 local float temp_0;
15203         CALL0           getkeydest;
15204         NE_F            return_x,       KEY_MENU,       temp_0;
15205         IFNOT           temp_0, 2;
15206         CALL0           m_hide;
15207         DONE;
15208 }
15209
15210 void() Key_Hide = asm
15211 {
15212         STORE_F KEY_GAME,       parm0_x;
15213         CALL1           setkeydest;
15214         DONE;
15215 }
15216
15217 void(string pKey) Key_Unbind = asm
15218 {
15219         STORE_F "unbind ",      parm0_x;
15220         STORE_F pKey,   parm1_x;
15221         STORE_F "
15222 ",      parm2_x;
15223         CALL3           strcat;
15224         STORE_F return_x,       parm0_x;
15225         CALL1           cmd;
15226         DONE;
15227 }
15228
15229 string(float pKey) Key_GetName = asm
15230 {
15231         STORE_F pKey,   parm0_x;
15232         CALL1           keynumtostring;
15233         RETURN  return_x;
15234         DONE;
15235 }
15236
15237 float(string pKey) Key_GetNum = asm
15238 {
15239         STORE_F pKey,   parm0_x;
15240         CALL1           stringtokeynum;
15241         RETURN  return_x;
15242         DONE;
15243 }
15244
15245 string(string pCommand) Key_GetBindList = asm
15246 {
15247         STORE_F pCommand,       parm0_x;
15248         CALL1           findkeysforcommand;
15249         STORE_F return_x,       parm0_x;
15250         CALL1           String_Zone;
15251         RETURN  return_x;
15252         DONE;
15253 }
15254
15255 void(string pKey, string pCommand) Key_Bind = asm
15256 {
15257         STORE_F "bind "",       parm0_x;
15258         STORE_F pKey,   parm1_x;
15259         STORE_F "" "",  parm2_x;
15260         STORE_F pCommand,       parm3_x;
15261         STORE_F ""
15262 ",      parm4_x;
15263         CALL5           strcat;
15264         STORE_F return_x,       parm0_x;
15265         CALL1           cmd;
15266         DONE;
15267 }
15268
15269 void(float pNum, string pCommand) Key_LimitBinds = asm
15270 {
15271 local float lValue;
15272 local float lMaxnum;
15273 local float lCounter;
15274 local string lAltlist;
15275 local float temp_0;
15276 local float temp_1;
15277         STORE_F pCommand,       parm0_x;
15278         CALL1           Key_GetBindList;
15279         STORE_S return_x,       lAltlist;
15280         STORE_F lAltlist,       parm0_x;
15281         CALL1           Util_GetAltStringCount;
15282         STORE_F return_x,       lMaxnum;
15283         STORE_F KEY_GAME,       lCounter;
15284         LT              lCounter,       lMaxnum,        temp_0;
15285         IFNOT           temp_0, 20;
15286         STORE_F lAltlist,       parm0_x;
15287         STORE_F lCounter,       parm1_x;
15288         CALL2           Util_GetAltStringItem;
15289         STORE_F return_x,       parm0_x;
15290         CALL1           String_Normal;
15291         STORE_F return_x,       parm0_x;
15292         CALL1           stof;
15293         STORE_F return_x,       lValue;
15294         EQ_F            lValue, ERR_CANNOTOPEN, temp_0;
15295         IFNOT           temp_0, 2;
15296         GOTO            9;
15297         GE              lCounter,       pNum,   temp_0;
15298         IFNOT           temp_0, 5;
15299         STORE_F lValue, parm0_x;
15300         CALL1           Key_GetName;
15301         STORE_F return_x,       parm0_x;
15302         CALL1           Key_Unbind;
15303         ADD_F           lCounter,       FILE_APPEND,    lCounter;
15304         GOTO            -20;
15305         STORE_F lAltlist,       parm0_x;
15306         CALL1           String_Free;
15307         DONE;
15308 }
15309
15310 void() Cursor_Init = asm
15311 {
15312         STORE_F CURSOR_PATH,    parm0_x;
15313         CALL1           Gfx_Precache;
15314         IFNOT           return_x,       3;
15315         STORE_S CURSOR_PATH,    Cursor_Current;
15316         GOTO            4;
15317         STORE_S "ui/mousepointer.tga",  Cursor_Current;
15318         STORE_F Cursor_Current, parm0_x;
15319         CALL1           Gfx_Precache;
15320         STORE_V '0.000000 0.000000 0.000000',   Cursor_Relative;
15321         STORE_V '0.000000 0.000000 0.000000',   Cursor_Position;
15322         STORE_FNC       Cursor_DefaultAnimation,        Cursor_Animation;
15323         DONE;
15324 }
15325
15326 void() Cursor_Quit = asm
15327 {
15328         DONE;
15329 }
15330
15331 void() Cursor_Display = asm
15332 {
15333         STORE_F FILE_APPEND,    parm0_x;
15334         CALL1           setmousetarget;
15335         DONE;
15336 }
15337
15338 void() Cursor_Hide = asm
15339 {
15340         STORE_F KEY_MENU,       parm0_x;
15341         CALL1           setmousetarget;
15342         DONE;
15343 }
15344
15345 void() Cursor_Draw = asm
15346 {
15347 local vector lSize;
15348 local vector lPos;
15349 local float temp_0;
15350 local vector temp_2;
15351         STORE_F Cursor_Current, parm0_x;
15352         CALL1           Gfx_GetImageSize;
15353         MUL_VF  return, FILE_APPEND,    lSize;
15354         MUL_F           lSize_x,        Cursor_Offset_x,        temp_0;
15355         ADD_F           Cursor_Position_x,      temp_0, lPos_x;
15356         MUL_F           lSize_y,        Cursor_Offset_y,        temp_0;
15357         ADD_F           Cursor_Position_y,      temp_0, lPos_y;
15358         STORE_F KEY_GAME,       lPos_z;
15359         STORE_V lPos,   parm0;
15360         STORE_F Cursor_Current, parm1_x;
15361         STORE_V lSize,  parm2;
15362         STORE_V Cursor_Color,   parm3;
15363         STORE_F FILE_APPEND,    parm4_x;
15364         STORE_F KEY_GAME,       parm5_x;
15365         CALL6           Gfx_DrawPic;
15366         DONE;
15367 }
15368
15369 void() Cursor_Update = asm
15370 {
15371 local vector lRelPos;
15372 local float temp_0;
15373         CALL0           getmousepos;
15374         STORE_V return, lRelPos;
15375         STORE_V lRelPos,        parm0;
15376         CALL1           Gfx_ConToMen;
15377         STORE_V return, lRelPos;
15378         MUL_F           lRelPos_x,      Cursor_Speed_x, Cursor_Relative_x;
15379         MUL_F           lRelPos_y,      Cursor_Speed_y, Cursor_Relative_y;
15380         ADD_F           Cursor_Position_x,      Cursor_Relative_x,      temp_0;
15381         STORE_F KEY_GAME,       parm0_x;
15382         STORE_F temp_0, parm1_x;
15383         STORE_F Gfx_Menu_Width, parm2_x;
15384         CALL3           bound;
15385         SUB_F           return_x,       Cursor_Position_x,      Cursor_Relative_x;
15386         ADD_F           Cursor_Position_y,      Cursor_Relative_y,      temp_0;
15387         STORE_F KEY_GAME,       parm0_x;
15388         STORE_F temp_0, parm1_x;
15389         STORE_F Gfx_Menu_Height,        parm2_x;
15390         CALL3           bound;
15391         SUB_F           return_x,       Cursor_Position_y,      Cursor_Relative_y;
15392         ADD_F           Cursor_Position_x,      Cursor_Relative_x,      Cursor_Position_x;
15393         ADD_F           Cursor_Position_y,      Cursor_Relative_y,      Cursor_Position_y;
15394         STORE_F KEY_GAME,       Cursor_Position_z;
15395         CALL0           Cursor_Animation;
15396         DONE;
15397 }
15398
15399 void() Cursor_DefaultAnimation = asm
15400 {
15401         DONE;
15402 }
15403
15404 void(vector pRelPos, string pText, vector pScale, vector pColor, float pAlpha, float pDrawFlag) Cursor_PrintInfo = asm
15405 {
15406 local float locked_1586;
15407 local vector lSize;
15408 local vector lPosition;
15409 local float temp_1;
15410 local vector temp_2;
15411         STORE_F Cursor_Current, parm0_x;
15412         CALL1           Gfx_GetImageSize;
15413         MUL_VF  return, FILE_APPEND,    lSize;
15414         NE_F            pRelPos_x,      KEY_GAME,       locked_1586;
15415         IFNOT           locked_1586,    28;
15416         GT              pRelPos_x,      KEY_GAME,       locked_1586;
15417         IFNOT           locked_1586,    7;
15418         ADD_F           Cursor_Offset_x,        0.500000,       locked_1586;
15419         DIV_F           pRelPos_x,      KEY_MENU,       temp_1;
15420         ADD_F           locked_1586,    temp_1, locked_1586;
15421         MUL_F           lSize_x,        locked_1586,    locked_1586;
15422         ADD_F           Cursor_Position_x,      locked_1586,    lPosition_x;
15423         GOTO            12;
15424         LT              pRelPos_x,      KEY_GAME,       locked_1586;
15425         IFNOT           locked_1586,    10;
15426         ADD_F           Cursor_Offset_x,        0.500000,       locked_1586;
15427         DIV_F           pRelPos_x,      KEY_MENU,       temp_1;
15428         ADD_F           locked_1586,    temp_1, locked_1586;
15429         MUL_F           lSize_x,        locked_1586,    locked_1586;
15430         ADD_F           Cursor_Position_x,      locked_1586,    locked_1586;
15431         STORE_F pText,  parm0_x;
15432         CALL1           strlen;
15433         MUL_F           pScale_x,       return_x,       temp_1;
15434         SUB_F           locked_1586,    temp_1, lPosition_x;
15435         ADD_F           Cursor_Offset_y,        0.500000,       locked_1586;
15436         DIV_F           pRelPos_y,      KEY_MENU,       temp_1;
15437         ADD_F           locked_1586,    temp_1, locked_1586;
15438         MUL_F           lSize_y,        locked_1586,    locked_1586;
15439         ADD_F           Cursor_Position_y,      locked_1586,    locked_1586;
15440         DIV_F           pScale_y,       KEY_MENU,       temp_1;
15441         SUB_F           locked_1586,    temp_1, lPosition_y;
15442         GOTO            9;
15443         ADD_F           Cursor_Offset_x,        0.500000,       locked_1586;
15444         MUL_F           lSize_x,        locked_1586,    locked_1586;
15445         ADD_F           Cursor_Position_x,      locked_1586,    locked_1586;
15446         STORE_F pText,  parm0_x;
15447         CALL1           strlen;
15448         MUL_F           pScale_x,       return_x,       temp_1;
15449         DIV_F           temp_1, KEY_MENU,       temp_1;
15450         SUB_F           locked_1586,    temp_1, lPosition_x;
15451         NE_F            pRelPos_y,      KEY_GAME,       locked_1586;
15452         IFNOT           locked_1586,    17;
15453         GT              pRelPos_y,      KEY_GAME,       locked_1586;
15454         IFNOT           locked_1586,    8;
15455         ADD_F           Cursor_Offset_y,        0.500000,       locked_1586;
15456         DIV_F           pRelPos_y,      KEY_MENU,       temp_1;
15457         SUB_F           locked_1586,    temp_1, locked_1586;
15458         MUL_F           lSize_y,        locked_1586,    locked_1586;
15459         ADD_F           Cursor_Position_y,      locked_1586,    locked_1586;
15460         SUB_F           locked_1586,    pScale_y,       lPosition_y;
15461         GOTO            8;
15462         LT              pRelPos_y,      KEY_GAME,       locked_1586;
15463         IFNOT           locked_1586,    6;
15464         ADD_F           Cursor_Offset_y,        0.500000,       locked_1586;
15465         DIV_F           pRelPos_y,      KEY_MENU,       temp_1;
15466         SUB_F           locked_1586,    temp_1, locked_1586;
15467         MUL_F           lSize_y,        locked_1586,    locked_1586;
15468         ADD_F           Cursor_Position_y,      locked_1586,    lPosition_y;
15469         STORE_V lPosition,      parm0;
15470         STORE_F pText,  parm1_x;
15471         STORE_V pScale, parm2;
15472         STORE_V pColor, parm3;
15473         STORE_F pAlpha, parm4_x;
15474         STORE_F pDrawFlag,      parm5_x;
15475         CALL6           Gfx_DrawString;
15476         DONE;
15477 }
15478
15479 void (string) _Sound_DPrint;
15480 void(string pText) _Sound_DPrint = asm
15481 {
15482         IFNOT           sys_debug_sound,        3;
15483         STORE_F pText,  parm0_x;
15484         CALL1           print;
15485         DONE;
15486 }
15487
15488 float(string pSnd) Sound_Precache = asm
15489 {
15490 local float temp_0;
15491         STORE_F "Precaching sound '",   parm0_x;
15492         STORE_F pSnd,   parm1_x;
15493         STORE_F "'
15494 ",      parm2_x;
15495         CALL3           strcat;
15496         STORE_F return_x,       parm0_x;
15497         CALL1           _Sound_DPrint;
15498         EQ_S            pSnd,   "",     temp_0;
15499         IFNOT           temp_0, 2;
15500         RETURN  KEY_GAME;
15501         STORE_F pSnd,   parm0_x;
15502         CALL1           precache_sound;
15503         NE_S            pSnd,   return_x,       temp_0;
15504         IFNOT           temp_0, 3;
15505         RETURN  KEY_GAME;
15506         GOTO            2;
15507         RETURN  FILE_APPEND;
15508         DONE;
15509 }
15510
15511 void(string pSnd) Sound_Free = asm
15512 {
15513         DONE;
15514 }
15515
15516 void(string pSnd) Sound_Play = asm
15517 {
15518         STORE_F "Playing sound '",      parm0_x;
15519         STORE_F pSnd,   parm1_x;
15520         STORE_F "'
15521 ",      parm2_x;
15522         CALL3           strcat;
15523         STORE_F return_x,       parm0_x;
15524         CALL1           _Sound_DPrint;
15525         STORE_F pSnd,   parm0_x;
15526         CALL1           localsound;
15527         DONE;
15528 }
15529
15530 float _Gfx_FPS;
15531 float _Gfx_LastTime;
15532 float _Gfx_FrameCount;
15533 void () _Gfx_UpdateFPS;
15534 void() _Gfx_UpdateFPS = asm
15535 {
15536 local float lDeltaTime;
15537 local float temp_0;
15538         ADD_F           _Gfx_FrameCount,        FILE_APPEND,    _Gfx_FrameCount;
15539         SUB_F           Timer_Time,     _Gfx_LastTime,  lDeltaTime;
15540         LT              FILE_APPEND,    lDeltaTime,     temp_0;
15541         IFNOT           temp_0, 4;
15542         DIV_F           _Gfx_FrameCount,        lDeltaTime,     _Gfx_FPS;
15543         STORE_F Timer_Time,     _Gfx_LastTime;
15544         STORE_F KEY_GAME,       _Gfx_FrameCount;
15545         DONE;
15546 }
15547
15548 void () _Gfx_UpdateRes;
15549 void() _Gfx_UpdateRes = asm
15550 {
15551 local float temp_0;
15552         STORE_F "vid_conwidth", parm0_x;
15553         CALL1           cvar;
15554         STORE_F return_x,       Gfx_Real_Width;
15555         STORE_F "vid_conheight",        parm0_x;
15556         CALL1           cvar;
15557         STORE_F return_x,       Gfx_Real_Height;
15558         STORE_F CVAR_SCMENU_MENU_WIDTH, parm0_x;
15559         CALL1           cvar;
15560         STORE_F return_x,       Gfx_Menu_Width;
15561         STORE_F CVAR_SCMENU_MENU_HEIGHT,        parm0_x;
15562         CALL1           cvar;
15563         STORE_F return_x,       Gfx_Menu_Height;
15564         EQ_F            Gfx_Menu_Width, KEY_GAME,       temp_0;
15565         IFNOT           temp_0, 2;
15566         STORE_F SLIST_LEGACY_LINE1,     Gfx_Menu_Width;
15567         EQ_F            Gfx_Menu_Height,        KEY_GAME,       temp_0;
15568         IFNOT           temp_0, 2;
15569         STORE_F K_JOY1, Gfx_Menu_Height;
15570         DONE;
15571 }
15572
15573 void() Gfx_Init = asm
15574 {
15575 local string lHeight;
15576 local string lWidth;
15577         STORE_F SLIST_LEGACY_LINE1,     parm0_x;
15578         CALL1           ftos;
15579         STORE_S return_x,       lWidth;
15580         STORE_F K_JOY1, parm0_x;
15581         CALL1           ftos;
15582         STORE_S return_x,       lHeight;
15583         STORE_F CVAR_SCMENU_MENU_WIDTH, parm0_x;
15584         STORE_F lWidth, parm1_x;
15585         STORE_F FILE_APPEND,    parm2_x;
15586         CALL3           registercvar;
15587         STORE_F CVAR_SCMENU_MENU_HEIGHT,        parm0_x;
15588         STORE_F lHeight,        parm1_x;
15589         STORE_F FILE_APPEND,    parm2_x;
15590         CALL3           registercvar;
15591         STORE_F KEY_GAME,       parm0_x;
15592         CALL1           ftos;
15593         STORE_F CVAR_SCMENU_SHOWFPS,    parm0_x;
15594         STORE_F return_x,       parm1_x;
15595         STORE_F KEY_GAME,       parm2_x;
15596         CALL3           registercvar;
15597         CALL0           _Gfx_UpdateRes;
15598         DONE;
15599 }
15600
15601 void() Gfx_Quit = asm
15602 {
15603         DONE;
15604 }
15605
15606 void() Gfx_Display = asm
15607 {
15608         CALL0           Gfx_ResetClipArea;
15609         DONE;
15610 }
15611
15612 void() Gfx_Hide = asm
15613 {
15614         DONE;
15615 }
15616
15617 void() Gfx_Update = asm
15618 {
15619         CALL0           _Gfx_UpdateRes;
15620         CALL0           _Gfx_UpdateFPS;
15621         DONE;
15622 }
15623
15624 void() Gfx_Draw = asm
15625 {
15626 local vector lPosition;
15627 local vector lScale;
15628 local string lText;
15629 local float temp_0;
15630         STORE_F CVAR_SCMENU_SHOWFPS,    parm0_x;
15631         CALL1           cvar;
15632         IFNOT           return_x,       21;
15633         STORE_F _Gfx_FPS,       parm0_x;
15634         CALL1           floor;
15635         STORE_F return_x,       parm0_x;
15636         CALL1           ftos;
15637         STORE_F "FPS: ",        parm0_x;
15638         STORE_F return_x,       parm1_x;
15639         CALL2           strcat;
15640         STORE_S return_x,       lText;
15641         STORE_V '15.000000 15.000000 0.000000', lScale;
15642         STORE_F KEY_GAME,       lPosition_x;
15643         SUB_F           Gfx_Menu_Height,        lScale_y,       temp_0;
15644         SUB_F           temp_0, SLIST_SERVERREPLYCOUNT, lPosition_y;
15645         STORE_F KEY_GAME,       lPosition_z;
15646         STORE_V lPosition,      parm0;
15647         STORE_F lText,  parm1_x;
15648         STORE_V lScale, parm2;
15649         STORE_V Cursor_Color,   parm3;
15650         STORE_F FILE_APPEND,    parm4_x;
15651         STORE_F KEY_GAME,       parm5_x;
15652         CALL6           Gfx_DrawString;
15653         DONE;
15654 }
15655
15656 float(string pPic) Gfx_IsCached = asm
15657 {
15658         STORE_F pPic,   parm0_x;
15659         CALL1           iscachedpic;
15660         RETURN  return_x;
15661         DONE;
15662 }
15663
15664 float(string pPic) Gfx_Precache = asm
15665 {
15666 local float temp_0;
15667         EQ_S            pPic,   "",     temp_0;
15668         IFNOT           temp_0, 2;
15669         RETURN  KEY_GAME;
15670         STORE_F pPic,   parm0_x;
15671         CALL1           iscachedpic;
15672         IFNOT           return_x,       2;
15673         RETURN  FILE_APPEND;
15674         STORE_F pPic,   parm0_x;
15675         CALL1           precache_pic;
15676         EQ_S            return_x,       pPic,   temp_0;
15677         IFNOT           temp_0, 2;
15678         RETURN  FILE_APPEND;
15679         RETURN  KEY_GAME;
15680         DONE;
15681 }
15682
15683 void(string pPic) Gfx_Free = asm
15684 {
15685         DONE;
15686 }
15687
15688 vector(string pPic) Gfx_GetImageSize = asm
15689 {
15690         STORE_F pPic,   parm0_x;
15691         CALL1           drawgetimagesize;
15692         RETURN  return_x;
15693         DONE;
15694 }
15695
15696 vector(vector pPos) Gfx_ConToMen = asm
15697 {
15698 local float temp_0;
15699         MUL_F           pPos_x, Gfx_Menu_Width, temp_0;
15700         DIV_F           temp_0, Gfx_Real_Width, pPos_x;
15701         MUL_F           pPos_y, Gfx_Menu_Height,        temp_0;
15702         DIV_F           temp_0, Gfx_Real_Height,        pPos_y;
15703         STORE_F KEY_GAME,       pPos_z;
15704         RETURN  pPos_x;
15705         DONE;
15706 }
15707
15708 vector(vector pPos) Gfx_MenToCon = asm
15709 {
15710 local float temp_0;
15711         MUL_F           pPos_x, Gfx_Real_Width, temp_0;
15712         DIV_F           temp_0, Gfx_Menu_Width, pPos_x;
15713         MUL_F           pPos_y, Gfx_Real_Height,        temp_0;
15714         DIV_F           temp_0, Gfx_Menu_Height,        pPos_y;
15715         STORE_F KEY_GAME,       pPos_z;
15716         RETURN  pPos_x;
15717         DONE;
15718 }
15719
15720 void() Gfx_ResetClipArea = asm
15721 {
15722         CALL0           drawresetcliparea;
15723         DONE;
15724 }
15725
15726 vector (vector) _Gfx_FitCenter;
15727 vector(vector pPosition) _Gfx_FitCenter = asm
15728 {
15729 local vector temp_2;
15730         ADD_V           pPosition,      '0.375000 0.375000 0.000000',   temp_2;
15731         RETURN  temp_2_x;
15732         DONE;
15733 }
15734
15735 float(vector pPosition, float pCharacter, vector pScale, vector pRGB, float pAlpha, float pFlag) Gfx_DrawCharacter = asm
15736 {
15737         STORE_V pPosition,      parm0;
15738         CALL1           Gfx_MenToCon;
15739         STORE_V return, parm0;
15740         CALL1           _Gfx_FitCenter;
15741         STORE_V return, pPosition;
15742         STORE_V pScale, parm0;
15743         CALL1           Gfx_MenToCon;
15744         STORE_V return, pScale;
15745         STORE_V pPosition,      parm0;
15746         STORE_F pCharacter,     parm1_x;
15747         STORE_V pScale, parm2;
15748         STORE_V pRGB,   parm3;
15749         STORE_F pAlpha, parm4_x;
15750         STORE_F pFlag,  parm5_x;
15751         CALL6           drawcharacter;
15752         RETURN  return_x;
15753         DONE;
15754 }
15755
15756 float(vector pPosition, string pText, vector pScale, vector pRGB, float pAlpha, float pFlag) Gfx_DrawString = asm
15757 {
15758         STORE_V pPosition,      parm0;
15759         CALL1           Gfx_MenToCon;
15760         STORE_V return, parm0;
15761         CALL1           _Gfx_FitCenter;
15762         STORE_V return, pPosition;
15763         STORE_V pScale, parm0;
15764         CALL1           Gfx_MenToCon;
15765         STORE_V return, pScale;
15766         STORE_V pPosition,      parm0;
15767         STORE_F pText,  parm1_x;
15768         STORE_V pScale, parm2;
15769         STORE_V pRGB,   parm3;
15770         STORE_F pAlpha, parm4_x;
15771         STORE_F pFlag,  parm5_x;
15772         CALL6           drawstring;
15773         RETURN  return_x;
15774         DONE;
15775 }
15776
15777 float(vector pPosition, string pPicture, vector pSize, vector pRGB, float pAlpha, float pFlag) Gfx_DrawPic = asm
15778 {
15779         STORE_V pPosition,      parm0;
15780         CALL1           Gfx_MenToCon;
15781         STORE_V return, parm0;
15782         CALL1           _Gfx_FitCenter;
15783         STORE_V return, pPosition;
15784         STORE_V pSize,  parm0;
15785         CALL1           Gfx_MenToCon;
15786         STORE_V return, pSize;
15787         STORE_V pPosition,      parm0;
15788         STORE_F pPicture,       parm1_x;
15789         STORE_V pSize,  parm2;
15790         STORE_V pRGB,   parm3;
15791         STORE_F pAlpha, parm4_x;
15792         STORE_F pFlag,  parm5_x;
15793         CALL6           drawpic;
15794         RETURN  return_x;
15795         DONE;
15796 }
15797
15798 float(vector pPosition, vector pSize, vector pRGB, float pAlpha, float pFlag) Gfx_Fill = asm
15799 {
15800         STORE_V pPosition,      parm0;
15801         CALL1           Gfx_MenToCon;
15802         STORE_V return, parm0;
15803         CALL1           _Gfx_FitCenter;
15804         STORE_V return, pPosition;
15805         STORE_V pSize,  parm0;
15806         CALL1           Gfx_MenToCon;
15807         STORE_V return, pSize;
15808         STORE_V pPosition,      parm0;
15809         STORE_V pSize,  parm1;
15810         STORE_V pRGB,   parm2;
15811         STORE_F pAlpha, parm3_x;
15812         STORE_F pFlag,  parm4_x;
15813         CALL5           drawfill;
15814         RETURN  return_x;
15815         DONE;
15816 }
15817
15818 void(float pX, float pY, float pWidth, float pHeight) Gfx_SetClipArea = asm
15819 {
15820 local vector lSize;
15821 local vector lPosition;
15822 local vector temp_2;
15823         STORE_F pX,     lPosition_x;
15824         STORE_F pY,     lPosition_y;
15825         STORE_F pWidth, lSize_x;
15826         STORE_F pHeight,        lSize_y;
15827         STORE_V lPosition,      parm0;
15828         CALL1           Gfx_MenToCon;
15829         STORE_V return, parm0;
15830         CALL1           _Gfx_FitCenter;
15831         STORE_V return, lPosition;
15832         STORE_V lSize,  parm0;
15833         CALL1           Gfx_MenToCon;
15834         ADD_V           return, Cursor_Speed,   lSize;
15835         STORE_F lPosition_x,    parm0_x;
15836         STORE_F lPosition_y,    parm1_x;
15837         STORE_F lSize_x,        parm2_x;
15838         STORE_F lSize_y,        parm3_x;
15839         CALL4           drawsetcliparea;
15840         DONE;
15841 }
15842
15843 float _Timer_LastTime;
15844 void() Timer_Init = asm
15845 {
15846         CALL0           gettime;
15847         STORE_F return_x,       Timer_Time;
15848         STORE_F KEY_GAME,       Timer_Delta;
15849         DONE;
15850 }
15851
15852 void() Timer_Update = asm
15853 {
15854 local float temp_0;
15855         STORE_F Timer_Time,     _Timer_LastTime;
15856         CALL0           gettime;
15857         STORE_F return_x,       Timer_Time;
15858         SUB_F           Timer_Time,     _Timer_LastTime,        Timer_Delta;
15859         DONE;
15860 }
15861
15862 void() Timer_Quit = asm
15863 {
15864         DONE;
15865 }
15866
15867 void() HostCache_Init = asm
15868 {
15869         STORE_F "cname",        parm0_x;
15870         CALL1           gethostcacheindexforkey;
15871         STORE_F return_x,       SLIST_FIELD_CNAME;
15872         STORE_F "ping", parm0_x;
15873         CALL1           gethostcacheindexforkey;
15874         STORE_F return_x,       SLIST_FIELD_PING;
15875         STORE_F "game", parm0_x;
15876         CALL1           gethostcacheindexforkey;
15877         STORE_F return_x,       SLIST_FIELD_GAME;
15878         STORE_F "mod",  parm0_x;
15879         CALL1           gethostcacheindexforkey;
15880         STORE_F return_x,       SLIST_FIELD_MOD;
15881         STORE_F "map",  parm0_x;
15882         CALL1           gethostcacheindexforkey;
15883         STORE_F return_x,       SLIST_FIELD_MAP;
15884         STORE_F "name", parm0_x;
15885         CALL1           gethostcacheindexforkey;
15886         STORE_F return_x,       SLIST_FIELD_NAME;
15887         STORE_F "maxplayers",   parm0_x;
15888         CALL1           gethostcacheindexforkey;
15889         STORE_F return_x,       SLIST_FIELD_MAXPLAYERS;
15890         STORE_F "numplayers",   parm0_x;
15891         CALL1           gethostcacheindexforkey;
15892         STORE_F return_x,       SLIST_FIELD_NUMPLAYERS;
15893         STORE_F "protocol",     parm0_x;
15894         CALL1           gethostcacheindexforkey;
15895         STORE_F return_x,       SLIST_FIELD_PROTOCOL;
15896         DONE;
15897 }
15898
15899 void() HostCache_Update = asm
15900 {
15901         STORE_F KEY_GAME,       parm0_x;
15902         CALL1           gethostcachevalue;
15903         STORE_F return_x,       HostCache_ViewCount;
15904         STORE_F FILE_APPEND,    parm0_x;
15905         CALL1           gethostcachevalue;
15906         STORE_F return_x,       HostCache_TotalCount;
15907         STORE_F KEY_MENU,       parm0_x;
15908         CALL1           gethostcachevalue;
15909         STORE_F return_x,       HostCache_MasterQueryCount;
15910         STORE_F KEY_UNKNOWN,    parm0_x;
15911         CALL1           gethostcachevalue;
15912         STORE_F return_x,       HostCache_MasterReplyCount;
15913         STORE_F CVAR_READONLY,  parm0_x;
15914         CALL1           gethostcachevalue;
15915         STORE_F return_x,       HostCache_ServerQueryCount;
15916         STORE_F SLIST_SERVERREPLYCOUNT, parm0_x;
15917         CALL1           gethostcachevalue;
15918         STORE_F return_x,       HostCache_ServerReplyCount;
15919         STORE_F SLIST_SORTFIELD,        parm0_x;
15920         CALL1           gethostcachevalue;
15921         STORE_F return_x,       HostCache_SortField;
15922         STORE_F SLIST_SORTDESCENDING,   parm0_x;
15923         CALL1           gethostcachevalue;
15924         STORE_F return_x,       HostCache_SortDescending;
15925         DONE;
15926 }
15927
15928 void() HostCache_ResortViewSet = asm
15929 {
15930         CALL0           resorthostcache;
15931         CALL0           HostCache_Update;
15932         DONE;
15933 }
15934
15935 void() HostCache_RefreshHostCache = asm
15936 {
15937         CALL0           refreshhostcache;
15938         CALL0           HostCache_Update;
15939         DONE;
15940 }
15941
15942 string() Property_Create = asm
15943 {
15944         CALL0           String_Create;
15945         RETURN  return_x;
15946         DONE;
15947 }
15948
15949 string(string pString) Property_Zone = asm
15950 {
15951         STORE_F pString,        parm0_x;
15952         CALL1           String_Zone;
15953         RETURN  return_x;
15954         DONE;
15955 }
15956
15957 string(string pString) Propery_Free = asm
15958 {
15959         STORE_F pString,        parm0_x;
15960         CALL1           String_Free;
15961         RETURN  return_x;
15962         DONE;
15963 }
15964
15965 float(string pString) Property_Validate = asm
15966 {
15967 local float lCount;
15968 local float temp_0;
15969         STORE_F pString,        parm0_x;
15970         CALL1           Util_GetAltStringCount;
15971         STORE_F return_x,       lCount;
15972         DIV_F           lCount, KEY_MENU,       parm0_x;
15973         CALL1           rint;
15974         DIV_F           lCount, KEY_MENU,       temp_0;
15975         NE_F            return_x,       temp_0, temp_0;
15976         IFNOT           temp_0, 7;
15977         STORE_F "Property_Validate",    parm0_x;
15978         STORE_F "Invalid property string "",    parm1_x;
15979         STORE_F pString,        parm2_x;
15980         STORE_F ""!
15981 ",      parm3_x;
15982         CALL4           dprint;
15983         RETURN  KEY_GAME;
15984         RETURN  FILE_APPEND;
15985         DONE;
15986 }
15987
15988 float(string pString, string pName) Property_Exists = asm
15989 {
15990 local float lCounter;
15991 local float lCount;
15992 local float temp_0;
15993         IF              FILE_APPEND,    2;
15994         RETURN  KEY_GAME;
15995         STORE_F pString,        parm0_x;
15996         CALL1           Util_GetAltStringCount;
15997         STORE_F return_x,       lCount;
15998         STORE_F KEY_GAME,       lCounter;
15999         LT              lCounter,       lCount, temp_0;
16000         IFNOT           temp_0, 11;
16001         STORE_F pString,        parm0_x;
16002         STORE_F lCounter,       parm1_x;
16003         CALL2           Util_GetAltStringItem;
16004         STORE_F return_x,       parm0_x;
16005         CALL1           String_Normal;
16006         EQ_S            return_x,       pName,  temp_0;
16007         IFNOT           temp_0, 2;
16008         RETURN  FILE_APPEND;
16009         ADD_F           lCounter,       KEY_MENU,       lCounter;
16010         GOTO            -11;
16011         RETURN  KEY_GAME;
16012         DONE;
16013 }
16014
16015 string(string pString, string pName, string pInitValue) Property_Register = asm
16016 {
16017 local float lCounter;
16018 local float lCount;
16019 local float temp_0;
16020         IF              FILE_APPEND,    2;
16021         RETURN  pString;
16022         STORE_F pString,        parm0_x;
16023         CALL1           Util_GetAltStringCount;
16024         STORE_F return_x,       lCount;
16025         STORE_F KEY_GAME,       lCounter;
16026         LT              lCounter,       lCount, temp_0;
16027         IFNOT           temp_0, 11;
16028         STORE_F pString,        parm0_x;
16029         STORE_F lCounter,       parm1_x;
16030         CALL2           Util_GetAltStringItem;
16031         STORE_F return_x,       parm0_x;
16032         CALL1           String_Normal;
16033         EQ_S            return_x,       pName,  temp_0;
16034         IFNOT           temp_0, 2;
16035         RETURN  pString;
16036         ADD_F           lCounter,       KEY_MENU,       lCounter;
16037         GOTO            -11;
16038         STORE_F pString,        parm0_x;
16039         STORE_F pInitValue,     parm1_x;
16040         CALL2           Util_AltStringPush;
16041         STORE_S return_x,       pString;
16042         STORE_F pString,        parm0_x;
16043         STORE_F pName,  parm1_x;
16044         CALL2           Util_AltStringPush;
16045         STORE_S return_x,       pString;
16046         RETURN  pString;
16047         DONE;
16048 }
16049
16050 string(string pString, string pName, string pValue) Property_Set = asm
16051 {
16052 local float lCounter;
16053 local float lCount;
16054 local float temp_0;
16055         IF              FILE_APPEND,    2;
16056         RETURN  pString;
16057         STORE_F pString,        parm0_x;
16058         CALL1           Util_GetAltStringCount;
16059         STORE_F return_x,       lCount;
16060         STORE_F KEY_GAME,       lCounter;
16061         LT              lCounter,       lCount, temp_0;
16062         IFNOT           temp_0, 16;
16063         STORE_F pString,        parm0_x;
16064         STORE_F lCounter,       parm1_x;
16065         CALL2           Util_GetAltStringItem;
16066         STORE_F return_x,       parm0_x;
16067         CALL1           String_Normal;
16068         EQ_S            return_x,       pName,  temp_0;
16069         IFNOT           temp_0, 7;
16070         ADD_F           lCounter,       FILE_APPEND,    temp_0;
16071         STORE_F pString,        parm0_x;
16072         STORE_F temp_0, parm1_x;
16073         STORE_F pValue, parm2_x;
16074         CALL3           Util_SetAltStringItem;
16075         RETURN  return_x;
16076         ADD_F           lCounter,       KEY_MENU,       lCounter;
16077         GOTO            -16;
16078         STORE_F "Property_Set", parm0_x;
16079         STORE_F "The property "",       parm1_x;
16080         STORE_F pName,  parm2_x;
16081         STORE_F "" hasn't been declared!
16082 pString = "",   parm3_x;
16083         STORE_F pString,        parm4_x;
16084         STORE_F """,    parm5_x;
16085         CALL6           dprint;
16086         RETURN  pString;
16087         DONE;
16088 }
16089
16090 string(string pString, string pOldName, string pNewName) Property_Rename = asm
16091 {
16092 local float lCounter;
16093 local float lCount;
16094 local float temp_0;
16095         IF              FILE_APPEND,    2;
16096         RETURN  pString;
16097         STORE_F pString,        parm0_x;
16098         CALL1           Util_GetAltStringCount;
16099         STORE_F return_x,       lCount;
16100         STORE_F KEY_GAME,       lCounter;
16101         LT              lCounter,       lCount, temp_0;
16102         IFNOT           temp_0, 15;
16103         STORE_F pString,        parm0_x;
16104         STORE_F lCounter,       parm1_x;
16105         CALL2           Util_GetAltStringItem;
16106         STORE_F return_x,       parm0_x;
16107         CALL1           String_Normal;
16108         EQ_S            return_x,       pOldName,       temp_0;
16109         IFNOT           temp_0, 6;
16110         STORE_F pString,        parm0_x;
16111         STORE_F lCounter,       parm1_x;
16112         STORE_F pNewName,       parm2_x;
16113         CALL3           Util_SetAltStringItem;
16114         RETURN  return_x;
16115         ADD_F           lCounter,       KEY_MENU,       lCounter;
16116         GOTO            -15;
16117         STORE_F "Property_Rename",      parm0_x;
16118         STORE_F "The property "",       parm1_x;
16119         STORE_F pOldName,       parm2_x;
16120         STORE_F "" hasn't been declared!
16121 pString = "",   parm3_x;
16122         STORE_F pString,        parm4_x;
16123         STORE_F """,    parm5_x;
16124         CALL6           dprint;
16125         RETURN  pString;
16126         DONE;
16127 }
16128
16129 string(string pString, string pName) Property_Delete = asm
16130 {
16131 local float lCounter;
16132 local float lCount;
16133 local float temp_0;
16134         IF              FILE_APPEND,    2;
16135         RETURN  pString;
16136         STORE_F pString,        parm0_x;
16137         CALL1           Util_GetAltStringCount;
16138         STORE_F return_x,       lCount;
16139         STORE_F KEY_GAME,       lCounter;
16140         LT              lCounter,       lCount, temp_0;
16141         IFNOT           temp_0, 19;
16142         STORE_F pString,        parm0_x;
16143         STORE_F lCounter,       parm1_x;
16144         CALL2           Util_GetAltStringItem;
16145         STORE_F return_x,       parm0_x;
16146         CALL1           String_Normal;
16147         EQ_S            return_x,       pName,  temp_0;
16148         IFNOT           temp_0, 10;
16149         STORE_F pString,        parm0_x;
16150         STORE_F lCounter,       parm1_x;
16151         CALL2           Util_DelAltStringItem;
16152         STORE_S return_x,       pString;
16153         STORE_F pString,        parm0_x;
16154         STORE_F lCounter,       parm1_x;
16155         CALL2           Util_DelAltStringItem;
16156         STORE_S return_x,       pString;
16157         RETURN  pString;
16158         ADD_F           lCounter,       KEY_MENU,       lCounter;
16159         GOTO            -19;
16160         STORE_F "Property_Delete",      parm0_x;
16161         STORE_F "The property "",       parm1_x;
16162         STORE_F pName,  parm2_x;
16163         STORE_F "" hasn't been declared!
16164 pString = "",   parm3_x;
16165         STORE_F pString,        parm4_x;
16166         STORE_F """,    parm5_x;
16167         CALL6           dprint;
16168         RETURN  pString;
16169         DONE;
16170 }
16171
16172 string(string pString, string pName) Property_Get = asm
16173 {
16174 local float lCounter;
16175 local float lCount;
16176 local float temp_0;
16177         IF              FILE_APPEND,    2;
16178         RETURN  pString;
16179         STORE_F pString,        parm0_x;
16180         CALL1           Util_GetAltStringCount;
16181         STORE_F return_x,       lCount;
16182         STORE_F KEY_GAME,       lCounter;
16183         LT              lCounter,       lCount, temp_0;
16184         IFNOT           temp_0, 15;
16185         STORE_F pString,        parm0_x;
16186         STORE_F lCounter,       parm1_x;
16187         CALL2           Util_GetAltStringItem;
16188         STORE_F return_x,       parm0_x;
16189         CALL1           String_Normal;
16190         EQ_S            return_x,       pName,  temp_0;
16191         IFNOT           temp_0, 6;
16192         ADD_F           lCounter,       FILE_APPEND,    temp_0;
16193         STORE_F pString,        parm0_x;
16194         STORE_F temp_0, parm1_x;
16195         CALL2           Util_GetAltStringItem;
16196         RETURN  return_x;
16197         ADD_F           lCounter,       KEY_MENU,       lCounter;
16198         GOTO            -15;
16199         STORE_F "The property "",       parm0_x;
16200         STORE_F pName,  parm1_x;
16201         STORE_F "" hasn't been declared!
16202 pString = "",   parm2_x;
16203         STORE_F pString,        parm3_x;
16204         STORE_F """,    parm4_x;
16205         CALL5           dprint;
16206         STORE_F "",     parm0_x;
16207         CALL1           String_Zone;
16208         RETURN  return_x;
16209         DONE;
16210 }
16211
16212 string(string pString, string pName) Property_GetString = asm
16213 {
16214         STORE_F pString,        parm0_x;
16215         STORE_F pName,  parm1_x;
16216         CALL2           Property_Get;
16217         RETURN  return_x;
16218         DONE;
16219 }
16220
16221 float(string pString, string pName) Property_GetFloat = asm
16222 {
16223         STORE_F pString,        parm0_x;
16224         STORE_F pName,  parm1_x;
16225         CALL2           Property_Get;
16226         STORE_F return_x,       parm0_x;
16227         CALL1           String_Normal;
16228         STORE_F return_x,       parm0_x;
16229         CALL1           stof;
16230         RETURN  return_x;
16231         DONE;
16232 }
16233
16234 vector(string pString, string pName) Property_GetVector = asm
16235 {
16236         STORE_F pString,        parm0_x;
16237         STORE_F pName,  parm1_x;
16238         CALL2           Property_Get;
16239         STORE_F return_x,       parm0_x;
16240         CALL1           String_Normal;
16241         STORE_F return_x,       parm0_x;
16242         CALL1           stov;
16243         RETURN  return_x;
16244         DONE;
16245 }
16246
16247 entity(string pString, string pName) Property_GetEntity = asm
16248 {
16249         STORE_F pString,        parm0_x;
16250         STORE_F pName,  parm1_x;
16251         CALL2           Property_GetFloat;
16252         STORE_F return_x,       parm0_x;
16253         CALL1           ftoe;
16254         RETURN  return_x;
16255         DONE;
16256 }
16257
16258 vector(string pText, vector pLast) Util_GetEndOfLine = asm
16259 {
16260 local string lChar;
16261 local float temp_0;
16262         STORE_F pLast_y,        pLast_x;
16263         STORE_F KEY_GAME,       pLast_z;
16264         STORE_F pText,  parm0_x;
16265         STORE_F pLast_x,        parm1_x;
16266         STORE_F FILE_APPEND,    parm2_x;
16267         CALL3           substring;
16268         STORE_S return_x,       lChar;
16269         EQ_S            lChar,  "
16270 ",      temp_0;
16271         IFNOT           temp_0, 5;
16272         ADD_F           pLast_x,        FILE_APPEND,    pLast_y;
16273         SUB_F           pLast_x,        FILE_APPEND,    pLast_x;
16274         RETURN  pLast_x;
16275         GOTO            9;
16276         EQ_S            lChar,  "",     temp_0;
16277         IFNOT           temp_0, 5;
16278         SUB_F           pLast_x,        FILE_APPEND,    pLast_x;
16279         STORE_F pLast_x,        pLast_y;
16280         RETURN  pLast_x;
16281         GOTO            3;
16282         ADD_F           pLast_x,        FILE_APPEND,    pLast_x;
16283         ADD_F           pLast_z,        FILE_APPEND,    pLast_z;
16284         GOTO            -19;
16285         DONE;
16286 }
16287
16288 vector(string pText, vector pLast, float pWrapLength) Util_GetEndOfWrappedLine = asm
16289 {
16290 local string lChar;
16291 local float temp_0;
16292         STORE_F pLast_y,        pLast_x;
16293         STORE_F KEY_GAME,       pLast_z;
16294         STORE_F pText,  parm0_x;
16295         STORE_F pLast_x,        parm1_x;
16296         STORE_F FILE_APPEND,    parm2_x;
16297         CALL3           substring;
16298         STORE_S return_x,       lChar;
16299         EQ_S            lChar,  "
16300 ",      temp_0;
16301         IFNOT           temp_0, 5;
16302         SUB_F           pLast_x,        FILE_APPEND,    pLast_x;
16303         ADD_F           pLast_x,        KEY_MENU,       pLast_y;
16304         RETURN  pLast_x;
16305         GOTO            14;
16306         EQ_S            lChar,  "",     temp_0;
16307         IFNOT           temp_0, 5;
16308         SUB_F           pLast_x,        FILE_APPEND,    pLast_x;
16309         STORE_F pLast_x,        pLast_y;
16310         RETURN  pLast_x;
16311         GOTO            8;
16312         ADD_F           pLast_x,        FILE_APPEND,    pLast_x;
16313         ADD_F           pLast_z,        FILE_APPEND,    pLast_z;
16314         SUB_F           pWrapLength,    FILE_APPEND,    pWrapLength;
16315         IF              pWrapLength,    4;
16316         STORE_F pLast_x,        pLast_y;
16317         SUB_F           pLast_x,        FILE_APPEND,    pLast_x;
16318         RETURN  pLast_x;
16319         GOTO            -24;
16320         DONE;
16321 }
16322
16323 float _m_uid_counter;
16324 string() Util_CreateUID = asm
16325 {
16326 local string lName;
16327 local float temp_0;
16328         STORE_F _m_uid_counter, parm0_x;
16329         CALL1           ftos;
16330         STORE_F "M_UID_",       parm0_x;
16331         STORE_F return_x,       parm1_x;
16332         CALL2           strcat;
16333         STORE_F return_x,       parm0_x;
16334         CALL1           strzone;
16335         STORE_S return_x,       lName;
16336         ADD_F           _m_uid_counter, FILE_APPEND,    _m_uid_counter;
16337         RETURN  lName;
16338         DONE;
16339 }
16340
16341 string(float pNum) Util_GetUIDName = asm
16342 {
16343 local string lName;
16344         STORE_F pNum,   parm0_x;
16345         CALL1           ftos;
16346         STORE_F "M_UID_",       parm0_x;
16347         STORE_F return_x,       parm1_x;
16348         CALL2           strcat;
16349         STORE_F return_x,       parm0_x;
16350         CALL1           strzone;
16351         STORE_S return_x,       lName;
16352         RETURN  lName;
16353         DONE;
16354 }
16355
16356 float(string pUid) Util_GetUIDNum = asm
16357 {
16358 local string lNum;
16359         STORE_F pUid,   parm0_x;
16360         STORE_F SLIST_SORTFIELD,        parm1_x;
16361         STORE_F 100000.000000,  parm2_x;
16362         CALL3           substring;
16363         STORE_S return_x,       lNum;
16364         STORE_F lNum,   parm0_x;
16365         CALL1           stof;
16366         RETURN  return_x;
16367         DONE;
16368 }
16369
16370 string() String_Create = asm
16371 {
16372         STORE_F "",     parm0_x;
16373         CALL1           strzone;
16374         RETURN  return_x;
16375         DONE;
16376 }
16377
16378 string(string pStr) String_Zone = asm
16379 {
16380         STORE_F pStr,   parm0_x;
16381         CALL1           strzone;
16382         RETURN  return_x;
16383         DONE;
16384 }
16385
16386 string(string pStr) String_Normal = asm
16387 {
16388 local string lResult;
16389         STORE_F pStr,   parm0_x;
16390         CALL1           strcat;
16391         STORE_S return_x,       lResult;
16392         STORE_F pStr,   parm0_x;
16393         CALL1           strunzone;
16394         RETURN  lResult;
16395         DONE;
16396 }
16397
16398 string(string pStr) String_Free = asm
16399 {
16400         STORE_F pStr,   parm0_x;
16401         CALL1           strunzone;
16402         RETURN  "";
16403         DONE;
16404 }
16405
16406 void(entity pEntity, .string pField) String_EntityCreate = asm
16407 {
16408 local float locked_1586;
16409         ADDRESS pEntity,        pField, locked_1586;
16410         STORE_F "",     parm0_x;
16411         CALL1           strzone;
16412         STOREP_S        return_x,       locked_1586;
16413         DONE;
16414 }
16415
16416 void(entity pEntity, .string pField) String_EntityZone = asm
16417 {
16418 local float locked_1586;
16419 local float temp_1;
16420         ADDRESS pEntity,        pField, locked_1586;
16421         INDIRECT_S      pEntity,        pField, parm0_x;
16422         CALL1           strzone;
16423         STOREP_S        return_x,       locked_1586;
16424         DONE;
16425 }
16426
16427 void(entity pEntity, .string pField, string pSet) String_EntitySet = asm
16428 {
16429 local float locked_1586;
16430         INDIRECT_S      pEntity,        pField, parm0_x;
16431         CALL1           strunzone;
16432         ADDRESS pEntity,        pField, locked_1586;
16433         STORE_F pSet,   parm0_x;
16434         CALL1           strzone;
16435         STOREP_S        return_x,       locked_1586;
16436         DONE;
16437 }
16438
16439 void(entity pEntity, .string pField) String_EntityFree = asm
16440 {
16441 local float temp_0;
16442         INDIRECT_S      pEntity,        pField, parm0_x;
16443         CALL1           strunzone;
16444         ADDRESS pEntity,        pField, temp_0;
16445         STOREP_S        "",     temp_0;
16446         DONE;
16447 }
16448
16449 string(string pStr, string pApp) String_Append = asm
16450 {
16451         STORE_F pStr,   parm0_x;
16452         STORE_F pApp,   parm1_x;
16453         CALL2           strcat;
16454         STORE_F pStr,   parm0_x;
16455         STORE_F return_x,       parm1_x;
16456         CALL2           String_Set;
16457         RETURN  return_x;
16458         DONE;
16459 }
16460
16461 string(string pStr, float pStart, float pLength) String_Substring = asm
16462 {
16463         STORE_F pStr,   parm0_x;
16464         STORE_F pStart, parm1_x;
16465         STORE_F pLength,        parm2_x;
16466         CALL3           substring;
16467         STORE_F return_x,       parm0_x;
16468         CALL1           strzone;
16469         RETURN  return_x;
16470         DONE;
16471 }
16472
16473 string(string pStr, string pSet) String_Set = asm
16474 {
16475         STORE_F pStr,   parm0_x;
16476         CALL1           strunzone;
16477         STORE_F pSet,   parm0_x;
16478         CALL1           strzone;
16479         RETURN  return_x;
16480         DONE;
16481 }
16482
16483 bool(vector pPoint, vector pPos, vector pSize) Util_InRect = asm
16484 {
16485 local float temp_0;
16486 local float temp_1;
16487         LT              pPoint_x,       pPos_x, temp_0;
16488         IF              temp_0, 2;
16489         LT              pPoint_y,       pPos_y, temp_1;
16490         OR              temp_0, temp_1, temp_0;
16491         IF              temp_0, 3;
16492         ADD_F           pPos_x, pSize_x,        temp_1;
16493         GT              pPoint_x,       temp_1, temp_1;
16494         OR              temp_0, temp_1, temp_0;
16495         IF              temp_0, 3;
16496         ADD_F           pPos_y, pSize_y,        temp_1;
16497         GT              pPoint_y,       temp_1, temp_1;
16498         OR              temp_0, temp_1, temp_0;
16499         IFNOT           temp_0, 2;
16500         RETURN  KEY_GAME;
16501         RETURN  FILE_APPEND;
16502         DONE;
16503 }
16504
16505 bool(vector pPos1, vector pSize1, vector pPos2, vector pSize2) Util_RectInRect = asm
16506 {
16507 local vector lFPos2;
16508 local vector lFPos1;
16509 local float temp_0;
16510 local float temp_1;
16511 local vector temp_2;
16512         ADD_V           pPos1,  pSize1, lFPos1;
16513         ADD_V           pPos2,  pSize2, lFPos2;
16514         LE              pPos1_x,        lFPos2_x,       temp_0;
16515         IFNOT           temp_0, 2;
16516         LE              pPos2_x,        lFPos1_x,       temp_1;
16517         AND             temp_0, temp_1, temp_0;
16518         IFNOT           temp_0, 2;
16519         LE              pPos1_y,        lFPos2_y,       temp_1;
16520         AND             temp_0, temp_1, temp_0;
16521         IFNOT           temp_0, 2;
16522         LE              pPos2_y,        lFPos1_y,       temp_1;
16523         AND             temp_0, temp_1, temp_0;
16524         IFNOT           temp_0, 2;
16525         RETURN  KEY_GAME;
16526         RETURN  FILE_APPEND;
16527         DONE;
16528 }
16529
16530 vector(vector pPoint, vector pClipPos, vector pClipSize) Util_GetClipDelta = asm
16531 {
16532 local vector lPoint;
16533 local float temp_0;
16534         ADD_F           pClipPos_x,     pClipSize_x,    temp_0;
16535         STORE_F pClipPos_x,     parm0_x;
16536         STORE_F pPoint_x,       parm1_x;
16537         STORE_F temp_0, parm2_x;
16538         CALL3           bound;
16539         SUB_F           return_x,       pPoint_x,       lPoint_x;
16540         ADD_F           pClipPos_y,     pClipSize_y,    temp_0;
16541         STORE_F pClipPos_y,     parm0_x;
16542         STORE_F pPoint_y,       parm1_x;
16543         STORE_F temp_0, parm2_x;
16544         CALL3           bound;
16545         SUB_F           return_x,       pPoint_y,       lPoint_y;
16546         STORE_F KEY_GAME,       lPoint_z;
16547         RETURN  lPoint_x;
16548         DONE;
16549 }
16550
16551 vector(vector pPos, vector pSize, vector pClipPos, vector pClipSize) Util_ClipRect = asm
16552 {
16553 local vector lSize;
16554 local float temp_0;
16555 local float temp_1;
16556         ADD_F           pPos_x, pSize_x,        temp_0;
16557         ADD_F           pClipPos_x,     pClipSize_x,    temp_1;
16558         STORE_F temp_0, parm0_x;
16559         STORE_F temp_1, parm1_x;
16560         CALL2           min;
16561         SUB_F           return_x,       pPos_x, lSize_x;
16562         ADD_F           pPos_y, pSize_y,        temp_0;
16563         ADD_F           pClipPos_y,     pClipSize_y,    temp_1;
16564         STORE_F temp_0, parm0_x;
16565         STORE_F temp_1, parm1_x;
16566         CALL2           min;
16567         SUB_F           return_x,       pPos_y, lSize_y;
16568         STORE_F KEY_GAME,       lSize_z;
16569         LE              lSize_x,        KEY_GAME,       temp_0;
16570         IF              temp_0, 2;
16571         LE              lSize_y,        KEY_GAME,       temp_1;
16572         OR              temp_0, temp_1, temp_0;
16573         IFNOT           temp_0, 2;
16574         RETURN  '0.000000 0.000000 0.000000';
16575         RETURN  lSize_x;
16576         DONE;
16577 }
16578
16579 string(string pStack) Util_ClipStack_Reset = asm
16580 {
16581         STORE_F pStack, parm0_x;
16582         CALL1           String_Free;
16583         CALL0           String_Create;
16584         RETURN  return_x;
16585         DONE;
16586 }
16587
16588 string(string pStack, vector pPos, vector pSize) Util_ClipStack_Push = asm
16589 {
16590 local vector lDelta;
16591 local vector lOldSize;
16592 local vector lOldPos;
16593 local float temp_0;
16594 local float temp_1;
16595 local vector temp_2;
16596         STORE_F pStack, parm0_x;
16597         CALL1           Util_ClipStack_GetPosition;
16598         STORE_V return, lOldPos;
16599         STORE_F pStack, parm0_x;
16600         CALL1           Util_ClipStack_GetSize;
16601         STORE_V return, lOldSize;
16602         EQ_V            pPos,   '0.000000 0.000000 0.000000',   temp_0;
16603         IFNOT           temp_0, 2;
16604         EQ_V            pSize,  '0.000000 0.000000 0.000000',   temp_1;
16605         AND             temp_0, temp_1, temp_0;
16606         IFNOT           temp_0, 4;
16607         STORE_V lOldPos,        pPos;
16608         STORE_V lOldSize,       pSize;
16609         GOTO            19;
16610         NE_V            lOldPos,        '0.000000 0.000000 0.000000',   temp_0;
16611         IF              temp_0, 2;
16612         NE_V            lOldSize,       '0.000000 0.000000 0.000000',   temp_1;
16613         OR              temp_0, temp_1, temp_0;
16614         IFNOT           temp_0, 14;
16615         STORE_V pPos,   parm0;
16616         STORE_V lOldPos,        parm1;
16617         STORE_V lOldSize,       parm2;
16618         CALL3           Util_GetClipDelta;
16619         STORE_V return, lDelta;
16620         ADD_V           pPos,   lDelta, pPos;
16621         SUB_V           pSize,  lDelta, temp_2;
16622         STORE_V pPos,   parm0;
16623         STORE_V temp_2, parm1;
16624         STORE_V lOldPos,        parm2;
16625         STORE_V lOldSize,       parm3;
16626         CALL4           Util_ClipRect;
16627         STORE_V return, pSize;
16628         STORE_V pSize,  parm0;
16629         CALL1           vtos;
16630         STORE_F pStack, parm0_x;
16631         STORE_F return_x,       parm1_x;
16632         CALL2           Util_AltStringPush;
16633         STORE_S return_x,       pStack;
16634         STORE_V pPos,   parm0;
16635         CALL1           vtos;
16636         STORE_F pStack, parm0_x;
16637         STORE_F return_x,       parm1_x;
16638         CALL2           Util_AltStringPush;
16639         STORE_S return_x,       pStack;
16640         RETURN  pStack;
16641         DONE;
16642 }
16643
16644 string(string pStack) Util_ClipStack_Pop = asm
16645 {
16646         STORE_F pStack, parm0_x;
16647         CALL1           Util_AltStringPop;
16648         STORE_S return_x,       pStack;
16649         STORE_F pStack, parm0_x;
16650         CALL1           Util_AltStringPop;
16651         STORE_S return_x,       pStack;
16652         RETURN  pStack;
16653         DONE;
16654 }
16655
16656 vector(string pStack) Util_ClipStack_GetPosition = asm
16657 {
16658         STORE_F pStack, parm0_x;
16659         STORE_F KEY_GAME,       parm1_x;
16660         CALL2           Util_GetAltStringItem;
16661         STORE_F return_x,       parm0_x;
16662         CALL1           String_Normal;
16663         STORE_F return_x,       parm0_x;
16664         CALL1           stov;
16665         RETURN  return_x;
16666         DONE;
16667 }
16668
16669 vector(string pStack) Util_ClipStack_GetSize = asm
16670 {
16671         STORE_F pStack, parm0_x;
16672         STORE_F FILE_APPEND,    parm1_x;
16673         CALL2           Util_GetAltStringItem;
16674         STORE_F return_x,       parm0_x;
16675         CALL1           String_Normal;
16676         STORE_F return_x,       parm0_x;
16677         CALL1           stov;
16678         RETURN  return_x;
16679         DONE;
16680 }
16681
16682 string(string pStack) Util_OriginStack_Reset = asm
16683 {
16684         STORE_F pStack, parm0_x;
16685         CALL1           String_Free;
16686         CALL0           String_Create;
16687         RETURN  return_x;
16688         DONE;
16689 }
16690
16691 string(string pStack, vector pOrigin) Util_OriginStack_Push = asm
16692 {
16693         STORE_V pOrigin,        parm0;
16694         CALL1           vtos;
16695         STORE_F pStack, parm0_x;
16696         STORE_F return_x,       parm1_x;
16697         CALL2           Util_AltStringPush;
16698         RETURN  return_x;
16699         DONE;
16700 }
16701
16702 string(string pStack) Util_OriginStack_Pop = asm
16703 {
16704         STORE_F pStack, parm0_x;
16705         CALL1           Util_AltStringPop;
16706         RETURN  return_x;
16707         DONE;
16708 }
16709
16710 vector(string pStack) Util_OriginStack_Get = asm
16711 {
16712         STORE_F pStack, parm0_x;
16713         CALL1           Util_GetAltStringTop;
16714         STORE_F return_x,       parm0_x;
16715         CALL1           String_Normal;
16716         STORE_F return_x,       parm0_x;
16717         CALL1           stov;
16718         RETURN  return_x;
16719         DONE;
16720 }
16721
16722 float(string pStr) Util_GetAltStringCount = asm
16723 {
16724         STORE_F pStr,   parm0_x;
16725         CALL1           altstr_count;
16726         RETURN  return_x;
16727         DONE;
16728 }
16729
16730 string(string pStr, float pCount) Util_GetAltStringItem = asm
16731 {
16732         STORE_F pStr,   parm0_x;
16733         STORE_F pCount, parm1_x;
16734         CALL2           altstr_get;
16735         STORE_F return_x,       parm0_x;
16736         CALL1           String_Zone;
16737         RETURN  return_x;
16738         DONE;
16739 }
16740
16741 string(string pAlt, float pIndex, string pSet) Util_SetAltStringItem = asm
16742 {
16743         STORE_F pAlt,   parm0_x;
16744         STORE_F pIndex, parm1_x;
16745         STORE_F pSet,   parm2_x;
16746         CALL3           altstr_set;
16747         STORE_F pAlt,   parm0_x;
16748         STORE_F return_x,       parm1_x;
16749         CALL2           String_Set;
16750         RETURN  return_x;
16751         DONE;
16752 }
16753
16754 string(string pAlt, float pIndex) Util_DelAltStringItem = asm
16755 {
16756 local string lOut;
16757 local string lLetter;
16758 local float lLength;
16759 local float lStart;
16760 local float lPosition;
16761 local float lCount;
16762 local float temp_0;
16763 local float temp_1;
16764         MUL_F           pIndex, KEY_MENU,       temp_0;
16765         ADD_F           temp_0, FILE_APPEND,    pIndex;
16766         STORE_F KEY_GAME,       lPosition;
16767         STORE_F KEY_GAME,       lCount;
16768         STORE_F pAlt,   parm0_x;
16769         CALL1           strlen;
16770         STORE_F return_x,       lLength;
16771         LT              lPosition,      lLength,        temp_0;
16772         IFNOT           temp_0, 2;
16773         LT              lCount, pIndex, temp_1;
16774         AND             temp_0, temp_1, temp_0;
16775         IFNOT           temp_0, 15;
16776         STORE_F pAlt,   parm0_x;
16777         STORE_F lPosition,      parm1_x;
16778         STORE_F FILE_APPEND,    parm2_x;
16779         CALL3           substring;
16780         STORE_S return_x,       lLetter;
16781         EQ_S            lLetter,        "'",    temp_0;
16782         IFNOT           temp_0, 3;
16783         ADD_F           lCount, FILE_APPEND,    lCount;
16784         GOTO            4;
16785         EQ_S            lLetter,        "\",    temp_0;
16786         IFNOT           temp_0, 2;
16787         ADD_F           lPosition,      FILE_APPEND,    lPosition;
16788         ADD_F           lPosition,      FILE_APPEND,    lPosition;
16789         GOTO            -18;
16790         NE_F            lCount, pIndex, temp_0;
16791         IFNOT           temp_0, 2;
16792         RETURN  pAlt;
16793         STORE_F lPosition,      lStart;
16794         LT              lPosition,      lLength,        temp_0;
16795         IFNOT           temp_0, 16;
16796         STORE_F pAlt,   parm0_x;
16797         STORE_F lPosition,      parm1_x;
16798         STORE_F FILE_APPEND,    parm2_x;
16799         CALL3           substring;
16800         STORE_S return_x,       lLetter;
16801         EQ_S            lLetter,        "'",    temp_0;
16802         IFNOT           temp_0, 3;
16803         GOTO            8;
16804         GOTO            4;
16805         EQ_S            lLetter,        "\",    temp_0;
16806         IFNOT           temp_0, 2;
16807         ADD_F           lPosition,      FILE_APPEND,    lPosition;
16808         STORE_F lPosition,      temp_1;
16809         ADD_F           lPosition,      FILE_APPEND,    lPosition;
16810         GOTO            -16;
16811         GT              lStart, KEY_GAME,       temp_0;
16812         IFNOT           temp_0, 7;
16813         SUB_F           lStart, FILE_APPEND,    temp_0;
16814         STORE_F pAlt,   parm0_x;
16815         STORE_F KEY_GAME,       parm1_x;
16816         STORE_F temp_0, parm2_x;
16817         CALL3           substring;
16818         STORE_S return_x,       lOut;
16819         SUB_F           lLength,        FILE_APPEND,    temp_0;
16820         LT              lPosition,      temp_0, temp_0;
16821         IFNOT           temp_0, 12;
16822         ADD_F           lPosition,      FILE_APPEND,    temp_0;
16823         SUB_F           lLength,        lPosition,      temp_1;
16824         SUB_F           temp_1, FILE_APPEND,    temp_1;
16825         STORE_F pAlt,   parm0_x;
16826         STORE_F temp_0, parm1_x;
16827         STORE_F temp_1, parm2_x;
16828         CALL3           substring;
16829         STORE_F lOut,   parm0_x;
16830         STORE_F return_x,       parm1_x;
16831         CALL2           strcat;
16832         STORE_S return_x,       lOut;
16833         STORE_F pAlt,   parm0_x;
16834         STORE_F lOut,   parm1_x;
16835         CALL2           String_Set;
16836         RETURN  return_x;
16837         DONE;
16838 }
16839
16840 string(string pAlt, float pIndex, string pSet) Util_InsAltStringItem = asm
16841 {
16842         STORE_F pAlt,   parm0_x;
16843         STORE_F pIndex, parm1_x;
16844         STORE_F pSet,   parm2_x;
16845         CALL3           altstr_ins;
16846         STORE_F pAlt,   parm0_x;
16847         STORE_F return_x,       parm1_x;
16848         CALL2           String_Set;
16849         RETURN  return_x;
16850         DONE;
16851 }
16852
16853 string(string pString) Util_AltStringPrepare = asm
16854 {
16855         STORE_F pString,        parm0_x;
16856         CALL1           altstr_prepare;
16857         STORE_F return_x,       parm0_x;
16858         CALL1           String_Zone;
16859         RETURN  return_x;
16860         DONE;
16861 }
16862
16863 string(string pAlt, string pPush) Util_AltStringPush = asm
16864 {
16865         STORE_F pPush,  parm0_x;
16866         CALL1           altstr_prepare;
16867         STORE_F "'",    parm0_x;
16868         STORE_F return_x,       parm1_x;
16869         STORE_F "'",    parm2_x;
16870         STORE_F pAlt,   parm3_x;
16871         CALL4           strcat;
16872         STORE_F pAlt,   parm0_x;
16873         STORE_F return_x,       parm1_x;
16874         CALL2           String_Set;
16875         RETURN  return_x;
16876         DONE;
16877 }
16878
16879 string(string pAlt, string pPush) Util_AltStringPushBack = asm
16880 {
16881         STORE_F pPush,  parm0_x;
16882         CALL1           altstr_prepare;
16883         STORE_F pAlt,   parm0_x;
16884         STORE_F "'",    parm1_x;
16885         STORE_F return_x,       parm2_x;
16886         STORE_F "'",    parm3_x;
16887         CALL4           strcat;
16888         STORE_F pAlt,   parm0_x;
16889         STORE_F return_x,       parm1_x;
16890         CALL2           String_Set;
16891         RETURN  return_x;
16892         DONE;
16893 }
16894
16895 string(string pAlt) Util_GetAltStringTop = asm
16896 {
16897         STORE_F pAlt,   parm0_x;
16898         STORE_F KEY_GAME,       parm1_x;
16899         CALL2           Util_GetAltStringItem;
16900         RETURN  return_x;
16901         DONE;
16902 }
16903
16904 string(string pAlt) Util_AltStringPop = asm
16905 {
16906 local string lChar;
16907 local float lLength;
16908 local float lCount;
16909 local float lPos;
16910 local float temp_0;
16911 local float temp_1;
16912         STORE_F KEY_GAME,       lCount;
16913         STORE_F pAlt,   parm0_x;
16914         CALL1           strlen;
16915         STORE_F return_x,       lLength;
16916         STORE_F KEY_GAME,       lPos;
16917         LT              lPos,   lLength,        temp_0;
16918         IFNOT           temp_0, 2;
16919         LT              lCount, KEY_MENU,       temp_1;
16920         AND             temp_0, temp_1, temp_0;
16921         IFNOT           temp_0, 18;
16922         STORE_F pAlt,   parm0_x;
16923         STORE_F lPos,   parm1_x;
16924         STORE_F FILE_APPEND,    parm2_x;
16925         CALL3           substring;
16926         STORE_S return_x,       lChar;
16927         EQ_S            lChar,  "\",    temp_0;
16928         IFNOT           temp_0, 4;
16929         STORE_F lPos,   temp_0;
16930         ADD_F           lPos,   FILE_APPEND,    lPos;
16931         GOTO            5;
16932         EQ_S            lChar,  "'",    temp_0;
16933         IFNOT           temp_0, 3;
16934         STORE_F lCount, temp_0;
16935         ADD_F           lCount, FILE_APPEND,    lCount;
16936         STORE_F lPos,   temp_1;
16937         ADD_F           lPos,   FILE_APPEND,    lPos;
16938         GOTO            -21;
16939         SUB_F           lLength,        lPos,   temp_0;
16940         STORE_F pAlt,   parm0_x;
16941         STORE_F lPos,   parm1_x;
16942         STORE_F temp_0, parm2_x;
16943         CALL3           substring;
16944         STORE_F pAlt,   parm0_x;
16945         STORE_F return_x,       parm1_x;
16946         CALL2           String_Set;
16947         RETURN  return_x;
16948         DONE;
16949 }
16950
16951 void() Util_NullFunction = asm
16952 {
16953         DONE;
16954 }
16955
16956 float() Util_TrueFunction = asm
16957 {
16958         RETURN  FILE_APPEND;
16959         DONE;
16960 }
16961
16962 float() Util_FalseFunction = asm
16963 {
16964         RETURN  KEY_GAME;
16965         DONE;
16966 }
16967
16968 string() Util_StringFuntion = asm
16969 {
16970         RETURN  "";
16971         DONE;
16972 }
16973
16974 vector() Util_VectorFunction = asm
16975 {
16976         RETURN  '0.000000 0.000000 0.000000';
16977         DONE;
16978 }
16979
16980 entity() Util_EntityFunction = asm
16981 {
16982         RETURN  null_entity;
16983         DONE;
16984 }
16985
16986 void () m_updategamestate;
16987 void() m_updategamestate = asm
16988 {
16989 local float temp_0;
16990         STORE_F KEY_GAME,       gamestatus;
16991         CALL0           isserver;
16992         IFNOT           return_x,       2;
16993         BITOR           gamestatus,     FILE_APPEND,    gamestatus;
16994         CALL0           clientstate;
16995         EQ_F            return_x,       KEY_MENU,       temp_0;
16996         IFNOT           temp_0, 2;
16997         BITOR           gamestatus,     KEY_MENU,       gamestatus;
16998         STORE_F "developer",    parm0_x;
16999         CALL1           cvar;
17000         IFNOT           return_x,       2;
17001         BITOR           gamestatus,     CVAR_READONLY,  gamestatus;
17002         DONE;
17003 }
17004
17005 void() m_init = asm
17006 {
17007         CALL0           Gfx_Init;
17008         CALL0           Cursor_Init;
17009         CALL0           Key_Init;
17010         CALL0           HostCache_Init;
17011         CALL0           Menu_Init;
17012         DONE;
17013 }
17014
17015 void(float pKey, float pAscii) m_keydown = asm
17016 {
17017 local float temp_0;
17018         IF              Menu_Active,    2;
17019         RETURN  offset_0;
17020         STORE_F pKey,   parm0_x;
17021         STORE_F pAscii, parm1_x;
17022         CALL2           Menu_Key;
17023         DONE;
17024 }
17025
17026 void () m_frame;
17027 void() m_frame = asm
17028 {
17029         CALL0           Timer_Update;
17030         CALL0           HostCache_Update;
17031         CALL0           Key_Update;
17032         CALL0           Gfx_Update;
17033         CALL0           Cursor_Update;
17034         CALL0           Menu_Frame;
17035         DONE;
17036 }
17037
17038 void() m_draw = asm
17039 {
17040 local float temp_0;
17041 local float temp_1;
17042         CALL0           m_updategamestate;
17043         IF              Menu_Active,    11;
17044         BITAND  gamestatus,     KEY_MENU,       temp_0;
17045         NOT_F           temp_0, temp_0;
17046         IFNOT           temp_0, 3;
17047         BITAND  gamestatus,     CVAR_READONLY,  temp_1;
17048         NOT_F           temp_1, temp_1;
17049         AND             temp_0, temp_1, temp_0;
17050         IFNOT           temp_0, 3;
17051         CALL0           m_display;
17052         GOTO            2;
17053         RETURN  offset_0;
17054         CALL0           m_frame;
17055         CALL0           Menu_Draw;
17056         CALL0           Cursor_Draw;
17057         CALL0           Gfx_Draw;
17058         DONE;
17059 }
17060
17061 void() m_display = asm
17062 {
17063         STORE_F FILE_APPEND,    Menu_Active;
17064         CALL0           m_updategamestate;
17065         CALL0           Gfx_Display;
17066         CALL0           Cursor_Display;
17067         CALL0           Key_Display;
17068         CALL0           Menu_PerformReinit;
17069         DONE;
17070 }
17071
17072 void() m_hide = asm
17073 {
17074         CALL0           Gfx_Hide;
17075         CALL0           Cursor_Hide;
17076         CALL0           Key_Hide;
17077         CALL0           Menu_Hide;
17078         STORE_F KEY_GAME,       Menu_Active;
17079         DONE;
17080 }
17081
17082 void() m_toggle = asm
17083 {
17084         CALL0           Timer_Update;
17085         IFNOT           Menu_Active,    3;
17086         CALL0           m_hide;
17087         GOTO            2;
17088         CALL0           m_display;
17089         DONE;
17090 }
17091
17092 void() m_shutdown = asm
17093 {
17094         CALL0           Timer_Update;
17095         CALL0           Menu_Shutdown;
17096         CALL0           Timer_Quit;
17097         CALL0           Key_Quit;
17098         CALL0           Cursor_Quit;
17099         CALL0           Gfx_Quit;
17100         STORE_F KEY_GAME,       parm0_x;
17101         CALL1           setkeydest;
17102         STORE_F KEY_MENU,       parm0_x;
17103         CALL1           setmousetarget;
17104         DONE;
17105 }
17106
17107 void() ArrayGet*PARSER_TT_TEXT = asm
17108 {
17109 local float indexg___;
17110 local float temp_0;
17111         BITAND  offset_2806,    offset_2806,    offset_2806;
17112         LT              offset_2806,    7.500000,       temp_0;
17113         IFNOT           temp_0, 24;
17114         LT              offset_2806,    3.500000,       temp_0;
17115         IFNOT           temp_0, 10;
17116         LT              offset_2806,    0.500000,       temp_0;
17117         IFNOT           temp_0, 2;
17118         RETURN  PARSER_TT_TEXT;
17119         LT              offset_2806,    ITEM_EDITBOX_SCROLLDISTANCE,    temp_0;
17120         IFNOT           temp_0, 2;
17121         RETURN  PARSER_TT_TEXT[1];
17122         LT              offset_2806,    2.500000,       temp_0;
17123         IFNOT           temp_0, 2;
17124         RETURN  PARSER_TT_TEXT[2];
17125         LT              offset_2806,    3.500000,       temp_0;
17126         IFNOT           temp_0, 2;
17127         RETURN  PARSER_TT_TEXT[3];
17128         LT              offset_2806,    4.500000,       temp_0;
17129         IFNOT           temp_0, 2;
17130         RETURN  PARSER_TT_TEXT[4];
17131         LT              offset_2806,    5.500000,       temp_0;
17132         IFNOT           temp_0, 2;
17133         RETURN  PARSER_TT_TEXT[5];
17134         LT              offset_2806,    6.500000,       temp_0;
17135         IFNOT           temp_0, 2;
17136         RETURN  PARSER_TT_TEXT[6];
17137         LT              offset_2806,    10.500000,      temp_0;
17138         IFNOT           temp_0, 10;
17139         LT              offset_2806,    7.500000,       temp_0;
17140         IFNOT           temp_0, 2;
17141         RETURN  PARSER_TT_TEXT[7];
17142         LT              offset_2806,    8.500000,       temp_0;
17143         IFNOT           temp_0, 2;
17144         RETURN  PARSER_TT_TEXT[8];
17145         LT              offset_2806,    9.500000,       temp_0;
17146         IFNOT           temp_0, 2;
17147         RETURN  PARSER_TT_TEXT[9];
17148         LT              offset_2806,    10.500000,      temp_0;
17149         IFNOT           temp_0, 2;
17150         RETURN  PARSER_TT_TEXT[10];
17151         LT              offset_2806,    11.500000,      temp_0;
17152         IFNOT           temp_0, 2;
17153         RETURN  PARSER_TT_TEXT[11];
17154         LT              offset_2806,    12.500000,      temp_0;
17155         IFNOT           temp_0, 2;
17156         RETURN  PARSER_TT_TEXT[12];
17157         LT              offset_2806,    13.500000,      temp_0;
17158         IFNOT           temp_0, 2;
17159         RETURN  PARSER_TT_TEXT[13];
17160         RETURN  KEY_GAME;
17161         DONE;
17162 }
17163