g_main.asm
themuffinator_dm-game/build/win32-qvm/vm/game/g_main.asm
data
align 4
LABELV gameCvarTable
address g_cheats
address $56
address $57
byte 4 0
byte 4 0
byte 4 0
skip 4
byte 4 0
address $58
address $59
byte 4 68
byte 4 0
byte 4 0
skip 4
byte 4 0
address $60
address $61
byte 4 64
byte 4 0
byte 4 0
skip 4
address g_restarted
address $62
address $63
byte 4 64
byte 4 0
byte 4 0
skip 4
address g_mapname
address $64
address $57
byte 4 68
byte 4 0
byte 4 0
skip 4
address sv_fps
address $65
address $66
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_gametype
address $67
address $63
byte 4 38
byte 4 0
byte 4 0
skip 4
address g_maxclients
address $68
address $69
byte 4 37
byte 4 0
byte 4 0
skip 4
address g_maxGameClients
address $70
address $63
byte 4 37
byte 4 0
byte 4 0
skip 4
address g_dmflags
address $71
address $63
byte 4 5
byte 4 0
byte 4 1
skip 4
address g_fraglimit
address $72
address $73
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_timelimit
address $74
address $63
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_capturelimit
address $75
address $69
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_synchronousClients
address $76
address $63
byte 4 8
byte 4 0
byte 4 0
skip 4
address g_friendlyFire
address $77
address $63
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_autoJoin
address $78
address $79
byte 4 1
skip 12
address g_teamForceBalance
address $80
address $63
byte 4 1
skip 12
address g_warmup
address $81
address $73
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_log
address $82
address $83
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_logSync
address $84
address $63
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_password
address $85
address $57
byte 4 2
byte 4 0
byte 4 0
skip 4
address g_banIPs
address $86
address $57
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_filterBan
address $87
address $79
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_needpass
address $88
address $63
byte 4 68
byte 4 0
byte 4 0
skip 4
address g_dedicated
address $89
address $63
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_speed
address $90
address $91
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_gravity
address $92
address $93
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_knockback
address $94
address $95
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_quadfactor
address $96
address $97
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_weaponRespawn
address $98
address $99
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_weaponTeamRespawn
address $100
address $66
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_forcerespawn
address $101
address $73
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_inactivity
address $102
address $63
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_debugMove
address $103
address $63
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_debugDamage
address $104
address $63
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_debugAlloc
address $105
address $63
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_motd
address $106
address $57
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_blood
address $107
address $79
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_podiumDist
address $108
address $109
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_podiumDrop
address $110
address $111
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_allowVote
address $112
address $79
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_listEntity
address $113
address $63
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_unlagged
address $114
address $79
byte 4 5
byte 4 0
byte 4 0
skip 4
address g_predictPVS
address $115
address $63
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_obeliskHealth
address $116
address $117
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_obeliskRegenPeriod
address $118
address $79
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_obeliskRegenAmount
address $119
address $120
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_obeliskRespawnDelay
address $121
address $122
byte 4 4
byte 4 0
byte 4 0
skip 4
address g_cubeTimeout
address $123
address $66
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_redteam
address $124
address $125
byte 4 7
byte 4 0
byte 4 1
byte 4 1
address g_blueteam
address $126
address $127
byte 4 7
byte 4 0
byte 4 1
byte 4 1
address g_singlePlayer
address $128
address $57
byte 4 0
byte 4 0
byte 4 0
byte 4 0
address g_enableDust
address $129
address $63
byte 4 4
byte 4 0
byte 4 1
byte 4 0
address g_enableBreath
address $130
address $63
byte 4 4
byte 4 0
byte 4 1
byte 4 0
address g_proxMineTimeout
address $131
address $132
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_smoothClients
address $133
address $79
byte 4 0
byte 4 0
byte 4 0
skip 4
address pmove_fixed
address $134
address $63
byte 4 8
byte 4 0
byte 4 0
skip 4
address pmove_msec
address $135
address $69
byte 4 8
byte 4 0
byte 4 0
skip 4
address g_rotation
address $136
address $57
byte 4 1
byte 4 0
byte 4 0
skip 4
export vmMain
code
proc vmMain 16 12
file "..\..\..\..\code\game\g_main.c"
line 192
;1:// Copyright (C) 1999-2000 Id Software, Inc.
;2://
;3:
;4:#include "g_local.h"
;5:
;6:level_locals_t	level;
;7:
;8:typedef struct {
;9:	vmCvar_t	*vmCvar;
;10:	const char	*cvarName;
;11:	const char	*defaultString;
;12:	int			cvarFlags;
;13:	int			modificationCount;	// for tracking changes
;14:	qboolean	trackChange;		// track this variable, and announce if changed
;15:	qboolean	teamShader;			// track and if changed, update shader state
;16:} cvarTable_t;
;17:
;18:gentity_t		g_entities[MAX_GENTITIES];
;19:gclient_t		g_clients[MAX_CLIENTS];
;20:
;21:vmCvar_t	g_gametype;
;22:vmCvar_t	g_dmflags;
;23:vmCvar_t	g_fraglimit;
;24:vmCvar_t	g_timelimit;
;25:vmCvar_t	g_capturelimit;
;26:vmCvar_t	g_friendlyFire;
;27:vmCvar_t	g_password;
;28:vmCvar_t	g_needpass;
;29:vmCvar_t	g_mapname;
;30:vmCvar_t	sv_fps;
;31:vmCvar_t	g_maxclients;
;32:vmCvar_t	g_maxGameClients;
;33:vmCvar_t	g_dedicated;
;34:vmCvar_t	g_speed;
;35:vmCvar_t	g_gravity;
;36:vmCvar_t	g_cheats;
;37:vmCvar_t	g_knockback;
;38:vmCvar_t	g_quadfactor;
;39:vmCvar_t	g_forcerespawn;
;40:vmCvar_t	g_inactivity;
;41:vmCvar_t	g_debugMove;
;42:vmCvar_t	g_debugDamage;
;43:vmCvar_t	g_debugAlloc;
;44:vmCvar_t	g_weaponRespawn;
;45:vmCvar_t	g_weaponTeamRespawn;
;46:vmCvar_t	g_motd;
;47:vmCvar_t	g_synchronousClients;
;48:vmCvar_t	g_warmup;
;49:vmCvar_t	g_predictPVS;
;50:vmCvar_t	g_restarted;
;51:vmCvar_t	g_log;
;52:vmCvar_t	g_logSync;
;53:vmCvar_t	g_blood;
;54:vmCvar_t	g_podiumDist;
;55:vmCvar_t	g_podiumDrop;
;56:vmCvar_t	g_allowVote;
;57:vmCvar_t	g_autoJoin;
;58:vmCvar_t	g_teamForceBalance;
;59:vmCvar_t	g_banIPs;
;60:vmCvar_t	g_filterBan;
;61:vmCvar_t	g_smoothClients;
;62:vmCvar_t	g_rotation;
;63:vmCvar_t	g_unlagged;
;64:vmCvar_t	pmove_fixed;
;65:vmCvar_t	pmove_msec;
;66:vmCvar_t	g_listEntity;
;67:vmCvar_t	g_obeliskHealth;
;68:vmCvar_t	g_obeliskRegenPeriod;
;69:vmCvar_t	g_obeliskRegenAmount;
;70:vmCvar_t	g_obeliskRespawnDelay;
;71:vmCvar_t	g_cubeTimeout;
;72:vmCvar_t	g_redteam;
;73:vmCvar_t	g_blueteam;
;74:vmCvar_t	g_singlePlayer;
;75:vmCvar_t	g_enableDust;
;76:vmCvar_t	g_enableBreath;
;77:vmCvar_t	g_proxMineTimeout;
;78:
;79:
;80:static cvarTable_t gameCvarTable[] = {
;81:	// don't override the cheat state set by the system
;82:	{ &g_cheats, "sv_cheats", "", 0, 0, qfalse },
;83:
;84:	// noset vars
;85:	{ NULL, "gamename", GAMEVERSION , CVAR_SERVERINFO | CVAR_ROM, 0, qfalse  },
;86:	{ NULL, "gamedate", __DATE__ , CVAR_ROM, 0, qfalse  },
;87:	{ &g_restarted, "g_restarted", "0", CVAR_ROM, 0, qfalse  },
;88:	{ &g_mapname, "mapname", "", CVAR_SERVERINFO | CVAR_ROM, 0, qfalse  },
;89:	{ &sv_fps, "sv_fps", "30", CVAR_ARCHIVE, 0, qfalse  },
;90:
;91:	// latched vars
;92:	{ &g_gametype, "g_gametype", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse  },
;93:
;94:	{ &g_maxclients, "sv_maxclients", "8", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse  },
;95:	{ &g_maxGameClients, "g_maxGameClients", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse  },
;96:
;97:	// change anytime vars
;98:	{ &g_dmflags, "dmflags", "0", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue  },
;99:	{ &g_fraglimit, "fraglimit", "20", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;100:	{ &g_timelimit, "timelimit", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;101:	{ &g_capturelimit, "capturelimit", "8", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;102:
;103:	{ &g_synchronousClients, "g_synchronousClients", "0", CVAR_SYSTEMINFO, 0, qfalse  },
;104:
;105:	{ &g_friendlyFire, "g_friendlyFire", "0", CVAR_ARCHIVE, 0, qtrue  },
;106:
;107:	{ &g_autoJoin, "g_autoJoin", "1", CVAR_ARCHIVE  },
;108:	{ &g_teamForceBalance, "g_teamForceBalance", "0", CVAR_ARCHIVE  },
;109:
;110:	{ &g_warmup, "g_warmup", "20", CVAR_ARCHIVE, 0, qtrue  },
;111:	{ &g_log, "g_log", "games.log", CVAR_ARCHIVE, 0, qfalse  },
;112:	{ &g_logSync, "g_logSync", "0", CVAR_ARCHIVE, 0, qfalse  },
;113:
;114:	{ &g_password, "g_password", "", CVAR_USERINFO, 0, qfalse  },
;115:
;116:	{ &g_banIPs, "g_banIPs", "", CVAR_ARCHIVE, 0, qfalse  },
;117:	{ &g_filterBan, "g_filterBan", "1", CVAR_ARCHIVE, 0, qfalse  },
;118:
;119:	{ &g_needpass, "g_needpass", "0", CVAR_SERVERINFO | CVAR_ROM, 0, qfalse },
;120:
;121:	{ &g_dedicated, "dedicated", "0", 0, 0, qfalse  },
;122:
;123:	{ &g_speed, "g_speed", "320", 0, 0, qtrue  },
;124:	{ &g_gravity, "g_gravity", "800", 0, 0, qtrue  },
;125:	{ &g_knockback, "g_knockback", "1000", 0, 0, qtrue  },
;126:	{ &g_quadfactor, "g_quadfactor", "3", 0, 0, qtrue  },
;127:	{ &g_weaponRespawn, "g_weaponrespawn", "5", 0, 0, qtrue  },
;128:	{ &g_weaponTeamRespawn, "g_weaponTeamRespawn", "30", 0, 0, qtrue },
;129:	{ &g_forcerespawn, "g_forcerespawn", "20", 0, 0, qtrue },
;130:	{ &g_inactivity, "g_inactivity", "0", 0, 0, qtrue },
;131:	{ &g_debugMove, "g_debugMove", "0", 0, 0, qfalse },
;132:	{ &g_debugDamage, "g_debugDamage", "0", 0, 0, qfalse },
;133:	{ &g_debugAlloc, "g_debugAlloc", "0", 0, 0, qfalse },
;134:	{ &g_motd, "g_motd", "", 0, 0, qfalse },
;135:	{ &g_blood, "com_blood", "1", 0, 0, qfalse },
;136:
;137:	{ &g_podiumDist, "g_podiumDist", "80", 0, 0, qfalse },
;138:	{ &g_podiumDrop, "g_podiumDrop", "70", 0, 0, qfalse },
;139:
;140:	{ &g_allowVote, "g_allowVote", "1", CVAR_ARCHIVE, 0, qfalse },
;141:	{ &g_listEntity, "g_listEntity", "0", 0, 0, qfalse },
;142:
;143:	{ &g_unlagged, "g_unlagged", "1", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qfalse },
;144:	{ &g_predictPVS, "g_predictPVS", "0", CVAR_ARCHIVE, 0, qfalse },
;145:
;146:	{ &g_obeliskHealth, "g_obeliskHealth", "2500", 0, 0, qfalse },
;147:	{ &g_obeliskRegenPeriod, "g_obeliskRegenPeriod", "1", 0, 0, qfalse },
;148:	{ &g_obeliskRegenAmount, "g_obeliskRegenAmount", "15", 0, 0, qfalse },
;149:	{ &g_obeliskRespawnDelay, "g_obeliskRespawnDelay", "10", CVAR_SERVERINFO, 0, qfalse },
;150:
;151:	{ &g_cubeTimeout, "g_cubeTimeout", "30", 0, 0, qfalse },
;152:	{ &g_redteam, "g_redteam", "Stroggs", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO , 0, qtrue, qtrue },
;153:	{ &g_blueteam, "g_blueteam", "Pagans", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO , 0, qtrue, qtrue  },
;154:	{ &g_singlePlayer, "ui_singlePlayerActive", "", 0, 0, qfalse, qfalse  },
;155:
;156:	{ &g_enableDust, "g_enableDust", "0", CVAR_SERVERINFO, 0, qtrue, qfalse },
;157:	{ &g_enableBreath, "g_enableBreath", "0", CVAR_SERVERINFO, 0, qtrue, qfalse },
;158:	{ &g_proxMineTimeout, "g_proxMineTimeout", "20000", 0, 0, qfalse },
;159:
;160:	{ &g_smoothClients, "g_smoothClients", "1", 0, 0, qfalse},
;161:	{ &pmove_fixed, "pmove_fixed", "0", CVAR_SYSTEMINFO, 0, qfalse},
;162:	{ &pmove_msec, "pmove_msec", "8", CVAR_SYSTEMINFO, 0, qfalse},
;163:
;164:	{ &g_rotation, "g_rotation", "", CVAR_ARCHIVE, 0, qfalse }
;165:
;166:};
;167:
;168:
;169:static void G_InitGame( int levelTime, int randomSeed, int restart );
;170:static void G_RunFrame( int levelTime );
;171:static void G_ShutdownGame( int restart );
;172:static void CheckExitRules( void );
;173:static void SendScoreboardMessageToAllClients( void );
;174:
;175:// extension interface
;176:#ifdef Q3_VM
;177:qboolean (*trap_GetValue)( char *value, int valueSize, const char *key );
;178:#else
;179:int dll_com_trapGetValue;
;180:#endif
;181:
;182:int	svf_self_portal2;
;183:
;184:/*
;185:================
;186:vmMain
;187:
;188:This is the only way control passes into the module.
;189:This must be the very first function compiled into the .q3vm file
;190:================
;191:*/
;192:DLLEXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2 ) {
line 193
;193:	switch ( command ) {
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
LTI4 $138
ADDRLP4 0
INDIRI4
CNSTI4 10
GTI4 $138
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $151
ADDP4
INDIRP4
JUMPV
data
align 4
LABELV $151
address $140
address $141
address $142
address $146
address $144
address $145
address $147
address $143
address $148
address $149
address $150
code
LABELV $140
line 195
;194:	case GAME_INIT:
;195:		G_InitGame( arg0, arg1, arg2 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRFP4 8
INDIRI4
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRGP4 G_InitGame
CALLV
pop
line 196
;196:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $141
line 198
;197:	case GAME_SHUTDOWN:
;198:		G_ShutdownGame( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_ShutdownGame
CALLV
pop
line 199
;199:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $142
line 201
;200:	case GAME_CLIENT_CONNECT:
;201:		return (intptr_t)ClientConnect( arg0, arg1, arg2 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRFP4 8
INDIRI4
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 4
ADDRGP4 ClientConnect
CALLP4
ASGNP4
ADDRLP4 4
INDIRP4
CVPU4 4
CVUI4 4
RETI4
ADDRGP4 $137
JUMPV
LABELV $143
line 203
;202:	case GAME_CLIENT_THINK:
;203:		ClientThink( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientThink
CALLV
pop
line 204
;204:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $144
line 206
;205:	case GAME_CLIENT_USERINFO_CHANGED:
;206:		ClientUserinfoChanged( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLI4
pop
line 207
;207:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $145
line 209
;208:	case GAME_CLIENT_DISCONNECT:
;209:		ClientDisconnect( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientDisconnect
CALLV
pop
line 210
;210:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $146
line 212
;211:	case GAME_CLIENT_BEGIN:
;212:		ClientBegin( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientBegin
CALLV
pop
line 213
;213:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $147
line 215
;214:	case GAME_CLIENT_COMMAND:
;215:		ClientCommand( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientCommand
CALLV
pop
line 216
;216:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $148
line 218
;217:	case GAME_RUN_FRAME:
;218:		G_RunFrame( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_RunFrame
CALLV
pop
line 219
;219:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $137
JUMPV
LABELV $149
line 221
;220:	case GAME_CONSOLE_COMMAND:
;221:		return ConsoleCommand();
ADDRLP4 8
ADDRGP4 ConsoleCommand
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
RETI4
ADDRGP4 $137
JUMPV
LABELV $150
line 223
;222:	case BOTAI_START_FRAME:
;223:		return BotAIStartFrame( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 12
ADDRGP4 BotAIStartFrame
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
RETI4
ADDRGP4 $137
JUMPV
LABELV $138
line 226
;224:	}
;225:
;226:	return -1;
CNSTI4 -1
RETI4
LABELV $137
endproc vmMain 16 12
export G_Printf
proc G_Printf 8204 12
line 230
;227:}
;228:
;229:
;230:void QDECL G_Printf( const char *fmt, ... ) {
line 235
;231:	va_list		argptr;
;232:	char		text[BIG_INFO_STRING];
;233:	int			len;
;234:
;235:	va_start( argptr, fmt );
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 236
;236:	len = ED_vsprintf( text, fmt, argptr );
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 8200
ADDRGP4 ED_vsprintf
CALLI4
ASGNI4
ADDRLP4 8196
ADDRLP4 8200
INDIRI4
ASGNI4
line 237
;237:	va_end( argptr );
ADDRLP4 0
CNSTP4 0
ASGNP4
line 239
;238:
;239:	text[4095] = '\0'; // truncate to 1.32b/c max print buffer size
ADDRLP4 4+4095
CNSTI1 0
ASGNI1
line 241
;240:
;241:	trap_Print( text );
ADDRLP4 4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 242
;242:}
LABELV $152
endproc G_Printf 8204 12
export G_BroadcastServerCommand
proc G_BroadcastServerCommand 4 8
line 245
;243:
;244:
;245:void G_BroadcastServerCommand( int ignoreClient, const char *command ) {
line 247
;246:	int i;
;247:	for ( i = 0; i < level.maxclients; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $159
JUMPV
LABELV $156
line 248
;248:		if ( i == ignoreClient )
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRI4
NEI4 $161
line 249
;249:			continue;
ADDRGP4 $157
JUMPV
LABELV $161
line 250
;250:		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $163
line 251
;251:			trap_SendServerCommand( i, command );
ADDRLP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 252
;252:		}
LABELV $163
line 253
;253:	}
LABELV $157
line 247
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $159
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $156
line 254
;254:}
LABELV $155
endproc G_BroadcastServerCommand 4 8
export G_Error
proc G_Error 1028 12
line 257
;255:
;256:
;257:void QDECL G_Error( const char *fmt, ... ) {
line 261
;258:	va_list		argptr;
;259:	char		text[1024];
;260:
;261:	va_start( argptr, fmt );
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 262
;262:	ED_vsprintf( text, fmt, argptr );
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 ED_vsprintf
CALLI4
pop
line 263
;263:	va_end( argptr );
ADDRLP4 0
CNSTP4 0
ASGNP4
line 265
;264:
;265:	trap_Error( text );
ADDRLP4 4
ARGP4
ADDRGP4 trap_Error
CALLV
pop
line 266
;266:}
LABELV $165
endproc G_Error 1028 12
export G_FindTeams
proc G_FindTeams 36 12
line 280
;267:
;268:
;269:/*
;270:================
;271:G_FindTeams
;272:
;273:Chain together all entities with a matching team field.
;274:Entity teams are used for item groups and multi-entity mover groups.
;275:
;276:All but the first will have the FL_TEAMSLAVE flag set and teammaster field set
;277:All but the last will have the teamchain field set to the next one
;278:================
;279:*/
;280:void G_FindTeams( void ) {
line 285
;281:	gentity_t	*e, *e2;
;282:	int		i, j;
;283:	int		c, c2;
;284:
;285:	c = 0;
ADDRLP4 20
CNSTI4 0
ASGNI4
line 286
;286:	c2 = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 287
;287:	for ( i=MAX_CLIENTS, e=g_entities+i ; i < level.num_entities ; i++,e++ ){
ADDRLP4 16
CNSTI4 64
ASGNI4
ADDRLP4 4
ADDRLP4 16
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
ADDRGP4 $171
JUMPV
LABELV $168
line 288
;288:		if (!e->inuse)
ADDRLP4 4
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
NEI4 $173
line 289
;289:			continue;
ADDRGP4 $169
JUMPV
LABELV $173
line 290
;290:		if (!e->team)
ADDRLP4 4
INDIRP4
CNSTI4 656
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $175
line 291
;291:			continue;
ADDRGP4 $169
JUMPV
LABELV $175
line 292
;292:		if (e->flags & FL_TEAMSLAVE)
ADDRLP4 4
INDIRP4
CNSTI4 536
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $177
line 293
;293:			continue;
ADDRGP4 $169
JUMPV
LABELV $177
line 294
;294:		e->teammaster = e;
ADDRLP4 4
INDIRP4
CNSTI4 780
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 295
;295:		c++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 296
;296:		c2++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 297
;297:		for (j=i+1, e2=e+1 ; j < level.num_entities ; j++,e2++)
ADDRLP4 8
ADDRLP4 16
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
ADDRGP4 $182
JUMPV
LABELV $179
line 298
;298:		{
line 299
;299:			if (!e2->inuse)
ADDRLP4 0
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
NEI4 $184
line 300
;300:				continue;
ADDRGP4 $180
JUMPV
LABELV $184
line 301
;301:			if (!e2->team)
ADDRLP4 0
INDIRP4
CNSTI4 656
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $186
line 302
;302:				continue;
ADDRGP4 $180
JUMPV
LABELV $186
line 303
;303:			if (e2->flags & FL_TEAMSLAVE)
ADDRLP4 0
INDIRP4
CNSTI4 536
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $188
line 304
;304:				continue;
ADDRGP4 $180
JUMPV
LABELV $188
line 305
;305:			if (!strcmp(e->team, e2->team))
ADDRLP4 4
INDIRP4
CNSTI4 656
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 656
ADDP4
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
NEI4 $190
line 306
;306:			{
line 307
;307:				c2++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 308
;308:				e2->teamchain = e->teamchain;
ADDRLP4 0
INDIRP4
CNSTI4 776
ADDP4
ADDRLP4 4
INDIRP4
CNSTI4 776
ADDP4
INDIRP4
ASGNP4
line 309
;309:				e->teamchain = e2;
ADDRLP4 4
INDIRP4
CNSTI4 776
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
line 310
;310:				e2->teammaster = e;
ADDRLP4 0
INDIRP4
CNSTI4 780
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 311
;311:				e2->flags |= FL_TEAMSLAVE;
ADDRLP4 32
ADDRLP4 0
INDIRP4
CNSTI4 536
ADDP4
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 32
INDIRP4
INDIRI4
CNSTI4 1024
BORI4
ASGNI4
line 314
;312:
;313:				// make sure that targets only point at the master
;314:				if ( e2->targetname ) {
ADDRLP4 0
INDIRP4
CNSTI4 652
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $192
line 315
;315:					e->targetname = e2->targetname;
ADDRLP4 4
INDIRP4
CNSTI4 652
ADDP4
ADDRLP4 0
INDIRP4
CNSTI4 652
ADDP4
INDIRP4
ASGNP4
line 316
;316:					e2->targetname = NULL;
ADDRLP4 0
INDIRP4
CNSTI4 652
ADDP4
CNSTP4 0
ASGNP4
line 317
;317:				}
LABELV $192
line 318
;318:			}
LABELV $190
line 319
;319:		}
LABELV $180
line 297
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
LABELV $182
ADDRLP4 8
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $179
line 320
;320:	}
LABELV $169
line 287
ADDRLP4 16
ADDRLP4 16
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
ADDRLP4 4
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
LABELV $171
ADDRLP4 16
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $168
line 322
;321:
;322:	G_Printf ("%i teams with %i entities\n", c, c2);
ADDRGP4 $194
ARGP4
ADDRLP4 20
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 323
;323:}
LABELV $167
endproc G_FindTeams 36 12
export G_RemapTeamShaders
proc G_RemapTeamShaders 1032 16
line 326
;324:
;325:
;326:void G_RemapTeamShaders( void ) {
line 328
;327:	char string[1024];
;328:	float f = level.time * 0.001;
ADDRLP4 1024
ADDRGP4 level+32
INDIRI4
CVIF4 4
CNSTF4 981668463
MULF4
ASGNF4
line 329
;329:	Com_sprintf( string, sizeof(string), "team_icon/%s_red", g_redteam.string );
ADDRLP4 0
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $197
ARGP4
ADDRGP4 g_redteam+16
ARGP4
ADDRGP4 Com_sprintf
CALLI4
pop
line 330
;330:	AddRemap("textures/ctf2/redteam01", string, f); 
ADDRGP4 $199
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 1024
INDIRF4
ARGF4
ADDRGP4 AddRemap
CALLV
pop
line 331
;331:	AddRemap("textures/ctf2/redteam02", string, f); 
ADDRGP4 $200
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 1024
INDIRF4
ARGF4
ADDRGP4 AddRemap
CALLV
pop
line 332
;332:	Com_sprintf( string, sizeof(string), "team_icon/%s_blue", g_blueteam.string );
ADDRLP4 0
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $201
ARGP4
ADDRGP4 g_blueteam+16
ARGP4
ADDRGP4 Com_sprintf
CALLI4
pop
line 333
;333:	AddRemap("textures/ctf2/blueteam01", string, f); 
ADDRGP4 $203
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 1024
INDIRF4
ARGF4
ADDRGP4 AddRemap
CALLV
pop
line 334
;334:	AddRemap("textures/ctf2/blueteam02", string, f); 
ADDRGP4 $204
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 1024
INDIRF4
ARGF4
ADDRGP4 AddRemap
CALLV
pop
line 335
;335:	trap_SetConfigstring(CS_SHADERSTATE, BuildShaderStateConfig());
ADDRLP4 1028
ADDRGP4 BuildShaderStateConfig
CALLP4
ASGNP4
CNSTI4 24
ARGI4
ADDRLP4 1028
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 336
;336:}
LABELV $195
endproc G_RemapTeamShaders 1032 16
export G_RegisterCvars
proc G_RegisterCvars 20 16
line 344
;337:
;338:
;339:/*
;340:=================
;341:G_RegisterCvars
;342:=================
;343:*/
;344:void G_RegisterCvars( void ) {
line 345
;345:	qboolean remapped = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 349
;346:	cvarTable_t *cv;
;347:	int i;
;348:
;349:	for ( i = 0, cv = gameCvarTable ; i < ARRAY_LEN( gameCvarTable ) ; i++, cv++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRLP4 0
ADDRGP4 gameCvarTable
ASGNP4
ADDRGP4 $209
JUMPV
LABELV $206
line 350
;350:		trap_Cvar_Register( cv->vmCvar, cv->cvarName,
ADDRLP4 0
INDIRP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ARGI4
ADDRGP4 trap_Cvar_Register
CALLV
pop
line 352
;351:			cv->defaultString, cv->cvarFlags );
;352:		if ( cv->vmCvar )
ADDRLP4 0
INDIRP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $210
line 353
;353:			cv->modificationCount = cv->vmCvar->modificationCount;
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ASGNI4
LABELV $210
line 355
;354:
;355:		if (cv->teamShader) {
ADDRLP4 0
INDIRP4
CNSTI4 24
ADDP4
INDIRI4
CNSTI4 0
EQI4 $212
line 356
;356:			remapped = qtrue;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 357
;357:		}
LABELV $212
line 358
;358:	}
LABELV $207
line 349
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
LABELV $209
ADDRLP4 4
INDIRI4
CVIU4 4
CNSTU4 59
LTU4 $206
line 360
;359:
;360:	if (remapped) {
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $214
line 361
;361:		G_RemapTeamShaders();
ADDRGP4 G_RemapTeamShaders
CALLV
pop
line 362
;362:	}
LABELV $214
line 365
;363:
;364:	// check some things
;365:	if ( g_gametype.integer < 0 || g_gametype.integer >= GT_MAX_GAME_TYPE ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
LTI4 $220
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 8
LTI4 $216
LABELV $220
line 366
;366:		G_Printf( "g_gametype %i is out of range, defaulting to 0\n", g_gametype.integer );
ADDRGP4 $221
ARGP4
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 367
;367:		trap_Cvar_Set( "g_gametype", "0" );
ADDRGP4 $67
ARGP4
ADDRGP4 $63
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 368
;368:		trap_Cvar_Update( &g_gametype );
ADDRGP4 g_gametype
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 369
;369:	}
LABELV $216
line 371
;370:
;371:	level.warmupModificationCount = g_warmup.modificationCount;
ADDRGP4 level+356
ADDRGP4 g_warmup+4
INDIRI4
ASGNI4
line 374
;372:
;373:	// force g_doWarmup to 1
;374:	trap_Cvar_Register( NULL, "g_doWarmup", "1", CVAR_ROM );
CNSTP4 0
ARGP4
ADDRGP4 $225
ARGP4
ADDRGP4 $79
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 trap_Cvar_Register
CALLV
pop
line 375
;375:	trap_Cvar_Set( "g_doWarmup", "1" );
ADDRGP4 $225
ARGP4
ADDRGP4 $79
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 376
;376:}
LABELV $205
endproc G_RegisterCvars 20 16
proc G_UpdateCvars 28 12
line 384
;377:
;378:
;379:/*
;380:=================
;381:G_UpdateCvars
;382:=================
;383:*/
;384:static void G_UpdateCvars( void ) {
line 387
;385:	int			i;
;386:	cvarTable_t	*cv;
;387:	qboolean remapped = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 389
;388:
;389:	for ( i = 0, cv = gameCvarTable ; i < ARRAY_LEN( gameCvarTable ) ; i++, cv++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRLP4 0
ADDRGP4 gameCvarTable
ASGNP4
ADDRGP4 $230
JUMPV
LABELV $227
line 390
;390:		if ( cv->vmCvar ) {
ADDRLP4 0
INDIRP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $231
line 391
;391:			trap_Cvar_Update( cv->vmCvar );
ADDRLP4 0
INDIRP4
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 393
;392:
;393:			if ( cv->modificationCount != cv->vmCvar->modificationCount ) {
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
EQI4 $233
line 394
;394:				cv->modificationCount = cv->vmCvar->modificationCount;
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ASGNI4
line 396
;395:
;396:				if ( cv->trackChange ) {
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
INDIRI4
CNSTI4 0
EQI4 $235
line 397
;397:					G_BroadcastServerCommand( -1, va("print \"Server: %s changed to %s\n\"", 
ADDRGP4 $237
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 16
ADDP4
ARGP4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 399
;398:						cv->cvarName, cv->vmCvar->string ) );
;399:				}
LABELV $235
line 401
;400:
;401:				if (cv->teamShader) {
ADDRLP4 0
INDIRP4
CNSTI4 24
ADDP4
INDIRI4
CNSTI4 0
EQI4 $238
line 402
;402:					remapped = qtrue;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 403
;403:				}
LABELV $238
line 404
;404:			}
LABELV $233
line 405
;405:		}
LABELV $231
line 406
;406:	}
LABELV $228
line 389
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
LABELV $230
ADDRLP4 4
INDIRI4
CVIU4 4
CNSTU4 59
LTU4 $227
line 408
;407:
;408:	if (remapped) {
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $240
line 409
;409:		G_RemapTeamShaders();
ADDRGP4 G_RemapTeamShaders
CALLV
pop
line 410
;410:	}
LABELV $240
line 411
;411:}
LABELV $226
endproc G_UpdateCvars 28 12
proc G_LocateSpawnSpots 44 12
line 415
;412:
;413:
;414:static void G_LocateSpawnSpots( void ) 
;415:{
line 419
;416:	gentity_t			*ent;
;417:	int i, n;
;418:
;419:	level.spawnSpots[ SPAWN_SPOT_INTERMISSION ] = NULL;
ADDRGP4 level+7692+4092
CNSTP4 0
ASGNP4
line 422
;420:
;421:	// locate all spawn spots
;422:	n = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 423
;423:	ent = g_entities + MAX_CLIENTS;
ADDRLP4 0
ADDRGP4 g_entities+52736
ASGNP4
line 424
;424:	for ( i = MAX_CLIENTS; i < MAX_GENTITIES; i++, ent++ ) {
ADDRLP4 8
CNSTI4 64
ASGNI4
LABELV $246
line 426
;425:		
;426:		if ( !ent->inuse || !ent->classname )
ADDRLP4 0
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
EQI4 $252
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $250
LABELV $252
line 427
;427:			continue;
ADDRGP4 $247
JUMPV
LABELV $250
line 430
;428:
;429:		// intermission/ffa spots
;430:		if ( !Q_stricmpn( ent->classname, "info_player_", 12 ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
ARGP4
ADDRGP4 $255
ARGP4
CNSTI4 12
ARGI4
ADDRLP4 16
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $253
line 431
;431:			if ( !Q_stricmp( ent->classname+12, "intermission" ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CNSTI4 12
ADDP4
ARGP4
ADDRGP4 $258
ARGP4
ADDRLP4 20
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $256
line 432
;432:				if ( level.spawnSpots[ SPAWN_SPOT_INTERMISSION ] == NULL ) {
ADDRGP4 level+7692+4092
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $247
line 433
;433:					level.spawnSpots[ SPAWN_SPOT_INTERMISSION ] = ent; // put in the last slot
ADDRGP4 level+7692+4092
ADDRLP4 0
INDIRP4
ASGNP4
line 434
;434:					ent->fteam = TEAM_FREE;
ADDRLP4 0
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 0
ASGNI4
line 435
;435:				}
line 436
;436:				continue;
ADDRGP4 $247
JUMPV
LABELV $256
line 438
;437:			}
;438:			if ( !Q_stricmp( ent->classname+12, "deathmatch" ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CNSTI4 12
ADDP4
ARGP4
ADDRGP4 $267
ARGP4
ADDRLP4 24
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 0
NEI4 $247
line 439
;439:				level.spawnSpots[n] = ent; n++;
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+7692
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 440
;440:				level.numSpawnSpotsFFA++;
ADDRLP4 28
ADDRGP4 level+11796
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 441
;441:				ent->fteam = TEAM_FREE;
ADDRLP4 0
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 0
ASGNI4
line 442
;442:				ent->count = 1;
ADDRLP4 0
INDIRP4
CNSTI4 760
ADDP4
CNSTI4 1
ASGNI4
line 443
;443:				continue;
ADDRGP4 $247
JUMPV
line 445
;444:			}
;445:			continue;
LABELV $253
line 449
;446:		}
;447:
;448:		// team spawn spots
;449:		if ( !Q_stricmpn( ent->classname, "team_CTF_", 9 ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
ARGP4
ADDRGP4 $272
ARGP4
CNSTI4 9
ARGI4
ADDRLP4 20
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $270
line 450
;450:			if ( !Q_stricmp( ent->classname+9, "redspawn" ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CNSTI4 9
ADDP4
ARGP4
ADDRGP4 $275
ARGP4
ADDRLP4 24
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 0
NEI4 $273
line 451
;451:				level.spawnSpots[n] = ent; n++;
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+7692
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 452
;452:				level.numSpawnSpotsTeam++;
ADDRLP4 28
ADDRGP4 level+11792
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 453
;453:				ent->fteam = TEAM_RED;
ADDRLP4 0
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 1
ASGNI4
line 454
;454:				ent->count = 1; // means its not initial spawn point
ADDRLP4 0
INDIRP4
CNSTI4 760
ADDP4
CNSTI4 1
ASGNI4
line 455
;455:				continue;
ADDRGP4 $247
JUMPV
LABELV $273
line 457
;456:			}
;457:			if ( !Q_stricmp( ent->classname+9, "bluespawn" ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CNSTI4 9
ADDP4
ARGP4
ADDRGP4 $280
ARGP4
ADDRLP4 28
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
NEI4 $278
line 458
;458:				level.spawnSpots[n] = ent; n++;
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+7692
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 459
;459:				level.numSpawnSpotsTeam++;
ADDRLP4 32
ADDRGP4 level+11792
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 32
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 460
;460:				ent->fteam = TEAM_BLUE;
ADDRLP4 0
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 2
ASGNI4
line 461
;461:				ent->count = 1;
ADDRLP4 0
INDIRP4
CNSTI4 760
ADDP4
CNSTI4 1
ASGNI4
line 462
;462:				continue;
ADDRGP4 $247
JUMPV
LABELV $278
line 465
;463:			}
;464:			// base spawn spots
;465:			if ( !Q_stricmp( ent->classname+9, "redplayer" ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CNSTI4 9
ADDP4
ARGP4
ADDRGP4 $285
ARGP4
ADDRLP4 32
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
NEI4 $283
line 466
;466:				level.spawnSpots[n] = ent; n++;
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+7692
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 467
;467:				level.numSpawnSpotsTeam++;
ADDRLP4 36
ADDRGP4 level+11792
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 468
;468:				ent->fteam = TEAM_RED;
ADDRLP4 0
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 1
ASGNI4
line 469
;469:				ent->count = 0;
ADDRLP4 0
INDIRP4
CNSTI4 760
ADDP4
CNSTI4 0
ASGNI4
line 470
;470:				continue;
ADDRGP4 $247
JUMPV
LABELV $283
line 472
;471:			}
;472:			if ( !Q_stricmp( ent->classname+9, "blueplayer" ) ) {
ADDRLP4 0
INDIRP4
CNSTI4 524
ADDP4
INDIRP4
CNSTI4 9
ADDP4
ARGP4
ADDRGP4 $290
ARGP4
ADDRLP4 36
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 36
INDIRI4
CNSTI4 0
NEI4 $288
line 473
;473:				level.spawnSpots[n] = ent; n++;
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+7692
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 474
;474:				level.numSpawnSpotsTeam++;
ADDRLP4 40
ADDRGP4 level+11792
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 475
;475:				ent->fteam = TEAM_BLUE;
ADDRLP4 0
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 2
ASGNI4
line 476
;476:				ent->count = 0;
ADDRLP4 0
INDIRP4
CNSTI4 760
ADDP4
CNSTI4 0
ASGNI4
line 477
;477:				continue;
LABELV $288
line 479
;478:			}
;479:		}
LABELV $270
line 480
;480:	}
LABELV $247
line 424
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
ADDRLP4 8
INDIRI4
CNSTI4 1024
LTI4 $246
line 481
;481:	level.numSpawnSpots = n;
ADDRGP4 level+11788
ADDRLP4 4
INDIRI4
ASGNI4
line 482
;482:}
LABELV $242
endproc G_LocateSpawnSpots 44 12
proc G_InitGame 1288 20
line 491
;483:
;484:
;485:/*
;486:============
;487:G_InitGame
;488:
;489:============
;490:*/
;491:static void G_InitGame( int levelTime, int randomSeed, int restart ) {
line 495
;492:	char value[ MAX_CVAR_VALUE_STRING ];
;493:	int	i;
;494:
;495:	G_Printf ("------- Game Initialization -------\n");
ADDRGP4 $295
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 496
;496:	G_Printf ("gamename: %s\n", GAMEVERSION);
ADDRGP4 $296
ARGP4
ADDRGP4 $59
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 497
;497:	G_Printf ("gamedate: %s\n", __DATE__);
ADDRGP4 $297
ARGP4
ADDRGP4 $61
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 500
;498:
;499:	// extension interface
;500:	trap_Cvar_VariableStringBuffer( "//trap_GetValue", value, sizeof( value ) );
ADDRGP4 $298
ARGP4
ADDRLP4 4
ARGP4
CNSTI4 256
ARGI4
ADDRGP4 trap_Cvar_VariableStringBuffer
CALLV
pop
line 501
;501:	if ( value[0] ) {
ADDRLP4 4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $299
line 503
;502:#ifdef Q3_VM
;503:		trap_GetValue = (void*)~atoi( value );
ADDRLP4 4
ARGP4
ADDRLP4 260
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 trap_GetValue
ADDRLP4 260
INDIRI4
BCOMI4
CVIU4 4
CVUP4 4
ASGNP4
line 507
;504:#else
;505:		dll_com_trapGetValue = atoi( value );
;506:#endif
;507:		if ( trap_GetValue( value, sizeof( value ), "SVF_SELF_PORTAL2_Q3E" ) ) {
ADDRLP4 4
ARGP4
CNSTI4 256
ARGI4
ADDRGP4 $303
ARGP4
ADDRLP4 264
ADDRGP4 trap_GetValue
INDIRP4
CALLI4
ASGNI4
ADDRLP4 264
INDIRI4
CNSTI4 0
EQI4 $301
line 508
;508:			svf_self_portal2 = atoi( value );
ADDRLP4 4
ARGP4
ADDRLP4 268
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 svf_self_portal2
ADDRLP4 268
INDIRI4
ASGNI4
line 509
;509:		} else {
ADDRGP4 $302
JUMPV
LABELV $301
line 510
;510:			svf_self_portal2 = 0;
ADDRGP4 svf_self_portal2
CNSTI4 0
ASGNI4
line 511
;511:		}
LABELV $302
line 512
;512:	}
LABELV $299
line 514
;513:
;514:	srand( randomSeed );
ADDRFP4 4
INDIRI4
CVIU4 4
ARGU4
ADDRGP4 srand
CALLV
pop
line 516
;515:
;516:	G_RegisterCvars();
ADDRGP4 G_RegisterCvars
CALLV
pop
line 518
;517:
;518:	G_ProcessIPBans();
ADDRGP4 G_ProcessIPBans
CALLV
pop
line 520
;519:
;520:	G_InitMemory();
ADDRGP4 G_InitMemory
CALLV
pop
line 523
;521:
;522:	// set some level globals
;523:	memset( &level, 0, sizeof( level ) );
ADDRGP4 level
ARGP4
CNSTI4 0
ARGI4
CNSTI4 11808
ARGI4
ADDRGP4 memset
CALLP4
pop
line 524
;524:	level.time = levelTime;
ADDRGP4 level+32
ADDRFP4 0
INDIRI4
ASGNI4
line 526
;525:
;526:	level.startTime = levelTime;
ADDRGP4 level+40
ADDRFP4 0
INDIRI4
ASGNI4
line 528
;527:
;528:	level.previousTime = levelTime;
ADDRGP4 level+36
ADDRFP4 0
INDIRI4
ASGNI4
line 529
;529:	level.msec = FRAMETIME;
ADDRGP4 level+44
CNSTI4 100
ASGNI4
line 531
;530:
;531:	level.snd_fry = G_SoundIndex("sound/player/fry.wav");	// FIXME standing in lava / slime
ADDRGP4 $309
ARGP4
ADDRLP4 260
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 level+352
ADDRLP4 260
INDIRI4
ASGNI4
line 533
;532:
;533:	if ( g_gametype.integer != GT_CAMPAIGN && g_log.string[0] ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
EQI4 $310
ADDRGP4 g_log+16
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $310
line 534
;534:		if ( g_logSync.integer ) {
ADDRGP4 g_logSync+12
INDIRI4
CNSTI4 0
EQI4 $314
line 535
;535:			trap_FS_FOpenFile( g_log.string, &level.logFile, FS_APPEND_SYNC );
ADDRGP4 g_log+16
ARGP4
ADDRGP4 level+20
ARGP4
CNSTI4 3
ARGI4
ADDRGP4 trap_FS_FOpenFile
CALLI4
pop
line 536
;536:		} else {
ADDRGP4 $315
JUMPV
LABELV $314
line 537
;537:			trap_FS_FOpenFile( g_log.string, &level.logFile, FS_APPEND );
ADDRGP4 g_log+16
ARGP4
ADDRGP4 level+20
ARGP4
CNSTI4 2
ARGI4
ADDRGP4 trap_FS_FOpenFile
CALLI4
pop
line 538
;538:		}
LABELV $315
line 539
;539:		if ( level.logFile == FS_INVALID_HANDLE ) {
ADDRGP4 level+20
INDIRI4
CNSTI4 0
NEI4 $321
line 540
;540:			G_Printf( "WARNING: Couldn't open logfile: %s\n", g_log.string );
ADDRGP4 $324
ARGP4
ADDRGP4 g_log+16
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 541
;541:		} else {
ADDRGP4 $311
JUMPV
LABELV $321
line 544
;542:			char	serverinfo[MAX_INFO_STRING];
;543:
;544:			trap_GetServerinfo( serverinfo, sizeof( serverinfo ) );
ADDRLP4 264
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_GetServerinfo
CALLV
pop
line 546
;545:
;546:			G_LogPrintf("------------------------------------------------------------\n" );
ADDRGP4 $326
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 547
;547:			G_LogPrintf("InitGame: %s\n", serverinfo );
ADDRGP4 $327
ARGP4
ADDRLP4 264
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 548
;548:		}
line 549
;549:	} else {
ADDRGP4 $311
JUMPV
LABELV $310
line 550
;550:		G_Printf( "Not logging to disk.\n" );
ADDRGP4 $328
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 551
;551:	}
LABELV $311
line 553
;552:
;553:	G_InitWorldSession();
ADDRGP4 G_InitWorldSession
CALLV
pop
line 556
;554:
;555:	// initialize all entities for this game
;556:	memset( g_entities, 0, MAX_GENTITIES * sizeof(g_entities[0]) );
ADDRGP4 g_entities
ARGP4
CNSTI4 0
ARGI4
CNSTI4 843776
ARGI4
ADDRGP4 memset
CALLP4
pop
line 557
;557:	level.gentities = g_entities;
ADDRGP4 level+4
ADDRGP4 g_entities
ASGNP4
line 560
;558:
;559:	// initialize all clients for this game
;560:	level.maxclients = g_maxclients.integer;
ADDRGP4 level+24
ADDRGP4 g_maxclients+12
INDIRI4
ASGNI4
line 561
;561:	memset( g_clients, 0, MAX_CLIENTS * sizeof(g_clients[0]) );
ADDRGP4 g_clients
ARGP4
CNSTI4 0
ARGI4
CNSTI4 104704
ARGI4
ADDRGP4 memset
CALLP4
pop
line 562
;562:	level.clients = g_clients;
ADDRGP4 level
ADDRGP4 g_clients
ASGNP4
line 565
;563:
;564:	// set client fields on player ents
;565:	for ( i=0 ; i<level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $335
JUMPV
LABELV $332
line 566
;566:		g_entities[i].client = level.clients + i;
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities+516
ADDP4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 567
;567:	}
LABELV $333
line 565
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $335
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $332
line 572
;568:
;569:	// always leave room for the max number of clients,
;570:	// even if they aren't all used, so numbers inside that
;571:	// range are NEVER anything but clients
;572:	level.num_entities = MAX_CLIENTS;
ADDRGP4 level+12
CNSTI4 64
ASGNI4
line 574
;573:
;574:	for ( i = 0 ; i < MAX_CLIENTS ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $339
line 575
;575:		g_entities[ i ].classname = "clientslot";
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities+524
ADDP4
ADDRGP4 $344
ASGNP4
line 576
;576:	}
LABELV $340
line 574
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 64
LTI4 $339
line 579
;577:
;578:	// let the server system know where the entites are
;579:	trap_LocateGameData( level.gentities, level.num_entities, sizeof( gentity_t ), 
ADDRGP4 level+4
INDIRP4
ARGP4
ADDRGP4 level+12
INDIRI4
ARGI4
CNSTI4 824
ARGI4
ADDRGP4 level
INDIRP4
ARGP4
CNSTI4 1636
ARGI4
ADDRGP4 trap_LocateGameData
CALLV
pop
line 583
;580:		&level.clients[0].ps, sizeof( level.clients[0] ) );
;581:
;582:	// reserve some spots for dead player bodies
;583:	InitBodyQue();
ADDRGP4 InitBodyQue
CALLV
pop
line 585
;584:
;585:	ClearRegisteredItems();
ADDRGP4 ClearRegisteredItems
CALLV
pop
line 588
;586:
;587:	// parse the key/value pairs and spawn gentities
;588:	G_SpawnEntitiesFromString();
ADDRGP4 G_SpawnEntitiesFromString
CALLV
pop
line 591
;589:
;590:	// general initialization
;591:	G_FindTeams();
ADDRGP4 G_FindTeams
CALLV
pop
line 594
;592:
;593:	// make sure we have flags for CTF, etc
;594:	if( GTx( g_gametype.integer, GTF_TEAMS ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $347
line 595
;595:		G_CheckTeamItems();
ADDRGP4 G_CheckTeamItems
CALLV
pop
line 596
;596:	}
LABELV $347
line 598
;597:
;598:	SaveRegisteredItems();
ADDRGP4 SaveRegisteredItems
CALLV
pop
line 600
;599:
;600:	G_LocateSpawnSpots();
ADDRGP4 G_LocateSpawnSpots
CALLV
pop
line 602
;601:
;602:	G_Printf ("-----------------------------------\n");
ADDRGP4 $351
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 604
;603:
;604:	if( g_gametype.integer == GT_CAMPAIGN || trap_Cvar_VariableIntegerValue( "com_buildScript" ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
EQI4 $356
ADDRGP4 $355
ARGP4
ADDRLP4 264
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 264
INDIRI4
CNSTI4 0
EQI4 $352
LABELV $356
line 605
;605:		G_ModelIndex( SP_PODIUM_MODEL );
ADDRGP4 $357
ARGP4
ADDRGP4 G_ModelIndex
CALLI4
pop
line 606
;606:	}
LABELV $352
line 608
;607:
;608:	if ( trap_Cvar_VariableIntegerValue( "bot_enable" ) ) {
ADDRGP4 $360
ARGP4
ADDRLP4 268
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 268
INDIRI4
CNSTI4 0
EQI4 $358
line 609
;609:		BotAISetup( restart );
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 BotAISetup
CALLI4
pop
line 610
;610:		BotAILoadMap( restart );
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 BotAILoadMap
CALLI4
pop
line 611
;611:		G_InitBots( restart );
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 G_InitBots
CALLV
pop
line 612
;612:	}
LABELV $358
line 614
;613:
;614:	G_RemapTeamShaders();
ADDRGP4 G_RemapTeamShaders
CALLV
pop
line 617
;615:
;616:	// don't forget to reset times
;617:	trap_SetConfigstring( CS_INTERMISSION, "" );
CNSTI4 22
ARGI4
ADDRGP4 $57
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 619
;618:
;619:	if ( g_gametype.integer != GT_CAMPAIGN ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
EQI4 $361
line 621
;620:		// launch rotation system on first map load
;621:		if ( trap_Cvar_VariableIntegerValue( SV_ROTATION ) == 0 ) {
ADDRGP4 $366
ARGP4
ADDRLP4 272
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 272
INDIRI4
CNSTI4 0
NEI4 $364
line 622
;622:			trap_Cvar_Set( SV_ROTATION, "1" );
ADDRGP4 $366
ARGP4
ADDRGP4 $79
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 623
;623:			level.denyMapRestart = qtrue;
ADDRGP4 level+11800
CNSTI4 1
ASGNI4
line 624
;624:			ParseMapRotation();
ADDRGP4 ParseMapRotation
CALLI4
pop
line 625
;625:		}
LABELV $364
line 626
;626:	}
LABELV $361
line 627
;627:}
LABELV $294
endproc G_InitGame 1288 20
proc G_ShutdownGame 4 4
line 636
;628:
;629:
;630:/*
;631:=================
;632:G_ShutdownGame
;633:=================
;634:*/
;635:static void G_ShutdownGame( int restart ) 
;636:{
line 637
;637:	G_Printf ("==== ShutdownGame ====\n");
ADDRGP4 $369
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 639
;638:
;639:	if ( level.logFile != FS_INVALID_HANDLE ) {
ADDRGP4 level+20
INDIRI4
CNSTI4 0
EQI4 $370
line 640
;640:		G_LogPrintf("ShutdownGame:\n" );
ADDRGP4 $373
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 641
;641:		G_LogPrintf("------------------------------------------------------------\n" );
ADDRGP4 $326
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 642
;642:		trap_FS_FCloseFile( level.logFile );
ADDRGP4 level+20
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 643
;643:		level.logFile = FS_INVALID_HANDLE;
ADDRGP4 level+20
CNSTI4 0
ASGNI4
line 644
;644:	}
LABELV $370
line 647
;645:
;646:	// write all the client session data so we can get it back
;647:	G_WriteSessionData();
ADDRGP4 G_WriteSessionData
CALLV
pop
line 649
;648:
;649:	if ( trap_Cvar_VariableIntegerValue( "bot_enable" ) ) {
ADDRGP4 $360
ARGP4
ADDRLP4 0
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $376
line 650
;650:		BotAIShutdown( restart );
ADDRFP4 0
INDIRI4
ARGI4
ADDRGP4 BotAIShutdown
CALLI4
pop
line 651
;651:	}
LABELV $376
line 652
;652:}
LABELV $368
endproc G_ShutdownGame 4 4
export Com_Error
proc Com_Error 4100 12
line 661
;653:
;654:
;655:
;656://===================================================================
;657:
;658:#ifndef GAME_HARD_LINKED
;659:// this is only here so the functions in q_shared.c and bg_*.c can link
;660:
;661:void QDECL Com_Error( int level, const char *fmt, ... ) {
line 665
;662:	va_list		argptr;
;663:	char		text[4096];
;664:
;665:	va_start( argptr, fmt );
ADDRLP4 0
ADDRFP4 4+4
ASGNP4
line 666
;666:	ED_vsprintf( text, fmt, argptr );
ADDRLP4 4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 ED_vsprintf
CALLI4
pop
line 667
;667:	va_end( argptr );
ADDRLP4 0
CNSTP4 0
ASGNP4
line 669
;668:
;669:	trap_Error( text );
ADDRLP4 4
ARGP4
ADDRGP4 trap_Error
CALLV
pop
line 670
;670:}
LABELV $378
endproc Com_Error 4100 12
export Com_Printf
proc Com_Printf 4100 12
line 673
;671:
;672:
;673:void QDECL Com_Printf( const char *fmt, ... ) {
line 677
;674:	va_list		argptr;
;675:	char		text[4096];
;676:
;677:	va_start( argptr, fmt );
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 678
;678:	ED_vsprintf( text, fmt, argptr );
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 ED_vsprintf
CALLI4
pop
line 679
;679:	va_end( argptr );
ADDRLP4 0
CNSTP4 0
ASGNP4
line 681
;680:
;681:	trap_Print( text );
ADDRLP4 4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 682
;682:}
LABELV $380
endproc Com_Printf 4100 12
export AddTournamentPlayer
proc AddTournamentPlayer 20 8
line 702
;683:
;684:#endif
;685:
;686:/*
;687:========================================================================
;688:
;689:PLAYER COUNTING / SCORE SORTING
;690:
;691:========================================================================
;692:*/
;693:
;694:/*
;695:=============
;696:AddTournamentPlayer
;697:
;698:If there are less than two tournament players, put a
;699:spectator in the game and restart
;700:=============
;701:*/
;702:void AddTournamentPlayer( void ) {
line 707
;703:	int			i;
;704:	gclient_t	*client;
;705:	gclient_t	*nextInLine;
;706:
;707:	if ( level.numPlayingClients >= 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
LTI4 $383
line 708
;708:		return;
ADDRGP4 $382
JUMPV
LABELV $383
line 712
;709:	}
;710:
;711:	// never change during intermission
;712:	if ( level.intermissiontime ) {
ADDRGP4 level+7604
INDIRI4
CNSTI4 0
EQI4 $386
line 713
;713:		return;
ADDRGP4 $382
JUMPV
LABELV $386
line 716
;714:	}
;715:
;716:	nextInLine = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 718
;717:
;718:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $392
JUMPV
LABELV $389
line 719
;719:		client = &level.clients[i];
ADDRLP4 0
ADDRLP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 720
;720:		if ( client->pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $394
line 721
;721:			continue;
ADDRGP4 $390
JUMPV
LABELV $394
line 723
;722:		}
;723:		if ( client->sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
EQI4 $396
line 724
;724:			continue;
ADDRGP4 $390
JUMPV
LABELV $396
line 727
;725:		}
;726:		// never select the dedicated follow or scoreboard clients
;727:		if ( client->sess.spectatorState == SPECTATOR_SCOREBOARD || 
ADDRLP4 0
INDIRP4
CNSTI4 632
ADDP4
INDIRI4
CNSTI4 3
EQI4 $400
ADDRLP4 0
INDIRP4
CNSTI4 636
ADDP4
INDIRI4
CNSTI4 0
GEI4 $398
LABELV $400
line 728
;728:			client->sess.spectatorClient < 0  ) {
line 729
;729:			continue;
ADDRGP4 $390
JUMPV
LABELV $398
line 732
;730:		}
;731:
;732:		if ( !nextInLine || client->sess.spectatorTime > nextInLine->sess.spectatorTime ) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $403
ADDRLP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRLP4 8
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
LEI4 $401
LABELV $403
line 733
;733:			nextInLine = client;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 734
;734:		}
LABELV $401
line 735
;735:	}
LABELV $390
line 718
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $392
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $389
line 737
;736:
;737:	if ( !nextInLine ) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $404
line 738
;738:		return;
ADDRGP4 $382
JUMPV
LABELV $404
line 741
;739:	}
;740:
;741:	level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 744
;742:
;743:	// set them to free-for-all team
;744:	SetTeam( &g_entities[ nextInLine - level.clients ], "f" );
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRGP4 level
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
CNSTI4 1636
DIVI4
CNSTI4 824
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $407
ARGP4
ADDRGP4 SetTeam
CALLI4
pop
line 745
;745:}
LABELV $382
endproc AddTournamentPlayer 20 8
export RemoveTournamentLoser
proc RemoveTournamentLoser 4 8
line 755
;746:
;747:
;748:/*
;749:=======================
;750:RemoveTournamentLoser
;751:
;752:Make the loser a spectator at the back of the line
;753:=======================
;754:*/
;755:void RemoveTournamentLoser( void ) {
line 758
;756:	int			clientNum;
;757:
;758:	if ( level.numPlayingClients != 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
EQI4 $409
line 759
;759:		return;
ADDRGP4 $408
JUMPV
LABELV $409
line 762
;760:	}
;761:
;762:	clientNum = level.sortedClients[1];
ADDRLP4 0
ADDRGP4 level+88+4
INDIRI4
ASGNI4
line 764
;763:
;764:	if ( level.clients[ clientNum ].pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $414
line 765
;765:		return;
ADDRGP4 $408
JUMPV
LABELV $414
line 769
;766:	}
;767:
;768:	// make them a spectator
;769:	SetTeam( &g_entities[ clientNum ], "s" );
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $416
ARGP4
ADDRGP4 SetTeam
CALLI4
pop
line 770
;770:}
LABELV $408
endproc RemoveTournamentLoser 4 8
export RemoveTournamentWinner
proc RemoveTournamentWinner 4 8
line 778
;771:
;772:
;773:/*
;774:=======================
;775:RemoveTournamentWinner
;776:=======================
;777:*/
;778:void RemoveTournamentWinner( void ) {
line 781
;779:	int			clientNum;
;780:
;781:	if ( level.numPlayingClients != 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
EQI4 $418
line 782
;782:		return;
ADDRGP4 $417
JUMPV
LABELV $418
line 785
;783:	}
;784:
;785:	clientNum = level.sortedClients[0];
ADDRLP4 0
ADDRGP4 level+88
INDIRI4
ASGNI4
line 787
;786:
;787:	if ( level.clients[ clientNum ].pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $422
line 788
;788:		return;
ADDRGP4 $417
JUMPV
LABELV $422
line 792
;789:	}
;790:
;791:	// make them a spectator
;792:	SetTeam( &g_entities[ clientNum ], "s" );
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $416
ARGP4
ADDRGP4 SetTeam
CALLI4
pop
line 793
;793:}
LABELV $417
endproc RemoveTournamentWinner 4 8
export AdjustTournamentScores
proc AdjustTournamentScores 8 4
line 801
;794:
;795:
;796:/*
;797:=======================
;798:AdjustTournamentScores
;799:=======================
;800:*/
;801:void AdjustTournamentScores( void ) {
line 804
;802:	int			clientNum;
;803:
;804:	clientNum = level.sortedClients[0];
ADDRLP4 0
ADDRGP4 level+88
INDIRI4
ASGNI4
line 805
;805:	if ( level.clients[ clientNum ].pers.connected == CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $426
line 806
;806:		level.clients[ clientNum ].sess.wins++;
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 640
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 807
;807:		ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLI4
pop
line 808
;808:	}
LABELV $426
line 810
;809:
;810:	clientNum = level.sortedClients[1];
ADDRLP4 0
ADDRGP4 level+88+4
INDIRI4
ASGNI4
line 811
;811:	if ( level.clients[ clientNum ].pers.connected == CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $430
line 812
;812:		level.clients[ clientNum ].sess.losses++;
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 644
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 813
;813:		ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLI4
pop
line 814
;814:	}
LABELV $430
line 816
;815:
;816:}
LABELV $424
endproc AdjustTournamentScores 8 4
proc SortRanks 16 0
line 824
;817:
;818:
;819:/*
;820:=============
;821:SortRanks
;822:=============
;823:*/
;824:static int QDECL SortRanks( const void *a, const void *b ) {
line 827
;825:	gclient_t	*ca, *cb;
;826:
;827:	ca = &level.clients[*(int *)a];
ADDRLP4 0
ADDRFP4 0
INDIRP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 828
;828:	cb = &level.clients[*(int *)b];
ADDRLP4 4
ADDRFP4 4
INDIRP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 831
;829:
;830:	// sort special clients last
;831:	if ( ca->sess.spectatorState == SPECTATOR_SCOREBOARD || ca->sess.spectatorClient < 0 ) {
ADDRLP4 0
INDIRP4
CNSTI4 632
ADDP4
INDIRI4
CNSTI4 3
EQI4 $435
ADDRLP4 0
INDIRP4
CNSTI4 636
ADDP4
INDIRI4
CNSTI4 0
GEI4 $433
LABELV $435
line 832
;832:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $432
JUMPV
LABELV $433
line 834
;833:	}
;834:	if ( cb->sess.spectatorState == SPECTATOR_SCOREBOARD || cb->sess.spectatorClient < 0  ) {
ADDRLP4 4
INDIRP4
CNSTI4 632
ADDP4
INDIRI4
CNSTI4 3
EQI4 $438
ADDRLP4 4
INDIRP4
CNSTI4 636
ADDP4
INDIRI4
CNSTI4 0
GEI4 $436
LABELV $438
line 835
;835:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $432
JUMPV
LABELV $436
line 839
;836:	}
;837:
;838:	// then connecting clients
;839:	if ( ca->pers.connected == CON_CONNECTING ) {
ADDRLP4 0
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 1
NEI4 $439
line 840
;840:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $432
JUMPV
LABELV $439
line 842
;841:	}
;842:	if ( cb->pers.connected == CON_CONNECTING ) {
ADDRLP4 4
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 1
NEI4 $441
line 843
;843:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $432
JUMPV
LABELV $441
line 847
;844:	}
;845:
;846:	// then spectators
;847:	if ( ca->sess.sessionTeam == TEAM_SPECTATOR && cb->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
NEI4 $443
ADDRLP4 4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
NEI4 $443
line 848
;848:		if ( ca->sess.spectatorTime > cb->sess.spectatorTime ) {
ADDRLP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
LEI4 $445
line 849
;849:			return -1;
CNSTI4 -1
RETI4
ADDRGP4 $432
JUMPV
LABELV $445
line 851
;850:		}
;851:		if ( ca->sess.spectatorTime < cb->sess.spectatorTime ) {
ADDRLP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
GEI4 $447
line 852
;852:			return 1;
CNSTI4 1
RETI4
ADDRGP4 $432
JUMPV
LABELV $447
line 854
;853:		}
;854:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $432
JUMPV
LABELV $443
line 856
;855:	}
;856:	if ( ca->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
NEI4 $449
line 857
;857:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $432
JUMPV
LABELV $449
line 859
;858:	}
;859:	if ( cb->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 4
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
NEI4 $451
line 860
;860:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $432
JUMPV
LABELV $451
line 864
;861:	}
;862:
;863:	// then sort by score
;864:	if ( ca->ps.persistant[PERS_SCORE]
ADDRLP4 0
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
LEI4 $453
line 865
;865:		> cb->ps.persistant[PERS_SCORE] ) {
line 866
;866:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $432
JUMPV
LABELV $453
line 868
;867:	}
;868:	if ( ca->ps.persistant[PERS_SCORE]
ADDRLP4 0
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
GEI4 $455
line 869
;869:		< cb->ps.persistant[PERS_SCORE] ) {
line 870
;870:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $432
JUMPV
LABELV $455
line 872
;871:	}
;872:	return 0;
CNSTI4 0
RETI4
LABELV $432
endproc SortRanks 16 0
export CalculateRanks
proc CalculateRanks 44 16
line 885
;873:}
;874:
;875:
;876:/*
;877:============
;878:CalculateRanks
;879:
;880:Recalculates the score ranks of all players
;881:This will be called on every client connect, begin, disconnect, death,
;882:and team change.
;883:============
;884:*/
;885:void CalculateRanks( void ) {
line 892
;886:	int		i;
;887:	int		rank;
;888:	int		score;
;889:	int		newScore;
;890:	gclient_t	*cl;
;891:
;892:	if ( level.restarted )
ADDRGP4 level+72
INDIRI4
CNSTI4 0
EQI4 $458
line 893
;893:		return;
ADDRGP4 $457
JUMPV
LABELV $458
line 895
;894:
;895:	level.follow1 = -1;
ADDRGP4 level+344
CNSTI4 -1
ASGNI4
line 896
;896:	level.follow2 = -1;
ADDRGP4 level+348
CNSTI4 -1
ASGNI4
line 897
;897:	level.numConnectedClients = 0;
ADDRGP4 level+76
CNSTI4 0
ASGNI4
line 898
;898:	level.numNonSpectatorClients = 0;
ADDRGP4 level+80
CNSTI4 0
ASGNI4
line 899
;899:	level.numPlayingClients = 0;
ADDRGP4 level+84
CNSTI4 0
ASGNI4
line 900
;900:	level.numVotingClients = 0;		// don't count bots
ADDRGP4 level+888
CNSTI4 0
ASGNI4
line 901
;901:	for (i = 0; i < ARRAY_LEN(level.numteamVotingClients); i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $470
JUMPV
LABELV $467
line 902
;902:		level.numteamVotingClients[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2964
ADDP4
CNSTI4 0
ASGNI4
line 903
;903:	}
LABELV $468
line 901
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $470
ADDRLP4 0
INDIRI4
CVIU4 4
CNSTU4 4
LTU4 $467
line 904
;904:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $477
JUMPV
LABELV $474
line 905
;905:		if ( level.clients[i].pers.connected != CON_DISCONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 0
EQI4 $479
line 906
;906:			level.sortedClients[level.numConnectedClients] = i;
ADDRGP4 level+76
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 907
;907:			level.numConnectedClients++;
ADDRLP4 20
ADDRGP4 level+76
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 909
;908:
;909:			if ( level.clients[i].sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
EQI4 $484
line 910
;910:				level.numNonSpectatorClients++;
ADDRLP4 24
ADDRGP4 level+80
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 913
;911:			
;912:				// decide if this should be auto-followed
;913:				if ( level.clients[i].pers.connected == CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $487
line 914
;914:					level.numPlayingClients++;
ADDRLP4 28
ADDRGP4 level+84
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 915
;915:					if ( !(g_entities[i].r.svFlags & SVF_BOT) ) {
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities+208+216
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
NEI4 $490
line 916
;916:						level.numVotingClients++;
ADDRLP4 32
ADDRGP4 level+888
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 32
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 917
;917:						if ( level.clients[i].sess.sessionTeam == TEAM_RED )
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 1
NEI4 $495
line 918
;918:							level.numteamVotingClients[0]++;
ADDRLP4 36
ADDRGP4 level+2964
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $496
JUMPV
LABELV $495
line 919
;919:						else if ( level.clients[i].sess.sessionTeam == TEAM_BLUE )
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 2
NEI4 $498
line 920
;920:							level.numteamVotingClients[1]++;
ADDRLP4 40
ADDRGP4 level+2964+4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $498
LABELV $496
line 921
;921:					}
LABELV $490
line 922
;922:					if ( level.follow1 == -1 ) {
ADDRGP4 level+344
INDIRI4
CNSTI4 -1
NEI4 $502
line 923
;923:						level.follow1 = i;
ADDRGP4 level+344
ADDRLP4 0
INDIRI4
ASGNI4
line 924
;924:					} else if ( level.follow2 == -1 ) {
ADDRGP4 $503
JUMPV
LABELV $502
ADDRGP4 level+348
INDIRI4
CNSTI4 -1
NEI4 $506
line 925
;925:						level.follow2 = i;
ADDRGP4 level+348
ADDRLP4 0
INDIRI4
ASGNI4
line 926
;926:					}
LABELV $506
LABELV $503
line 927
;927:				}
LABELV $487
line 928
;928:			}
LABELV $484
line 929
;929:		}
LABELV $479
line 930
;930:	}
LABELV $475
line 904
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $477
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $474
line 932
;931:
;932:	qsort( level.sortedClients, level.numConnectedClients, 
ADDRGP4 level+88
ARGP4
ADDRGP4 level+76
INDIRI4
ARGI4
CNSTI4 4
ARGI4
ADDRGP4 SortRanks
ARGP4
ADDRGP4 qsort
CALLV
pop
line 936
;933:		sizeof(level.sortedClients[0]), SortRanks );
;934:
;935:	// set the rank value for all clients that are connected and not spectators
;936:	if ( GTx( g_gametype.integer, GTF_TEAMS ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $513
line 938
;937:		// in team games, rank is just the order of the teams, 0=red, 1=blue, 2=tied
;938:		for ( i = 0;  i < level.numConnectedClients; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $520
JUMPV
LABELV $517
line 939
;939:			cl = &level.clients[ level.sortedClients[i] ];
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 940
;940:			if ( level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE] ) {
ADDRGP4 level+48+4
INDIRI4
ADDRGP4 level+48+8
INDIRI4
NEI4 $523
line 941
;941:				cl->ps.persistant[PERS_RANK] = 2;
ADDRLP4 4
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 2
ASGNI4
line 942
;942:			} else if ( level.teamScores[TEAM_RED] > level.teamScores[TEAM_BLUE] ) {
ADDRGP4 $524
JUMPV
LABELV $523
ADDRGP4 level+48+4
INDIRI4
ADDRGP4 level+48+8
INDIRI4
LEI4 $529
line 943
;943:				cl->ps.persistant[PERS_RANK] = 0;
ADDRLP4 4
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 0
ASGNI4
line 944
;944:			} else {
ADDRGP4 $530
JUMPV
LABELV $529
line 945
;945:				cl->ps.persistant[PERS_RANK] = 1;
ADDRLP4 4
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 1
ASGNI4
line 946
;946:			}
LABELV $530
LABELV $524
line 947
;947:		}
LABELV $518
line 938
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $520
ADDRLP4 0
INDIRI4
ADDRGP4 level+76
INDIRI4
LTI4 $517
line 948
;948:	} else {	
ADDRGP4 $514
JUMPV
LABELV $513
line 949
;949:		rank = -1;
ADDRLP4 12
CNSTI4 -1
ASGNI4
line 950
;950:		score = MAX_QINT;
ADDRLP4 16
CNSTI4 2147483647
ASGNI4
line 951
;951:		for ( i = 0;  i < level.numPlayingClients; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $538
JUMPV
LABELV $535
line 952
;952:			cl = &level.clients[ level.sortedClients[i] ];
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 953
;953:			newScore = cl->ps.persistant[PERS_SCORE];
ADDRLP4 8
ADDRLP4 4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 954
;954:			if ( i == 0 || newScore != score ) {
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $543
ADDRLP4 8
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $541
LABELV $543
line 955
;955:				rank = i;
ADDRLP4 12
ADDRLP4 0
INDIRI4
ASGNI4
line 957
;956:				// assume we aren't tied until the next client is checked
;957:				level.clients[ level.sortedClients[i] ].ps.persistant[PERS_RANK] = rank;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 256
ADDP4
ADDRLP4 12
INDIRI4
ASGNI4
line 958
;958:			} else {
ADDRGP4 $542
JUMPV
LABELV $541
line 960
;959:				// we are tied with the previous client
;960:				level.clients[ level.sortedClients[i-1] ].ps.persistant[PERS_RANK] = rank | RANK_TIED_FLAG;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88-4
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 256
ADDP4
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 961
;961:				level.clients[ level.sortedClients[i] ].ps.persistant[PERS_RANK] = rank | RANK_TIED_FLAG;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 256
ADDP4
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 962
;962:			}
LABELV $542
line 963
;963:			score = newScore;
ADDRLP4 16
ADDRLP4 8
INDIRI4
ASGNI4
line 964
;964:			if ( g_gametype.integer == GT_CAMPAIGN && level.numPlayingClients == 1 ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
NEI4 $548
ADDRGP4 level+84
INDIRI4
CNSTI4 1
NEI4 $548
line 965
;965:				level.clients[ level.sortedClients[i] ].ps.persistant[PERS_RANK] = rank | RANK_TIED_FLAG;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 256
ADDP4
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 966
;966:			}
LABELV $548
line 967
;967:		}
LABELV $536
line 951
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $538
ADDRLP4 0
INDIRI4
ADDRGP4 level+84
INDIRI4
LTI4 $535
line 968
;968:	}
LABELV $514
line 971
;969:
;970:	// set the CS_SCORES1/2 configstrings, which will be visible to everyone
;971:	if ( GTx( g_gametype.integer, GTF_TEAMS ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $553
line 972
;972:		trap_SetConfigstring( CS_SCORES1, va("%i", level.teamScores[TEAM_RED] ) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+48+4
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 973
;973:		trap_SetConfigstring( CS_SCORES2, va("%i", level.teamScores[TEAM_BLUE] ) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+48+8
INDIRI4
ARGI4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 974
;974:	} else {
ADDRGP4 $554
JUMPV
LABELV $553
line 975
;975:		if ( level.numConnectedClients == 0 ) {
ADDRGP4 level+76
INDIRI4
CNSTI4 0
NEI4 $562
line 976
;976:			trap_SetConfigstring( CS_SCORES1, va("%i", SCORE_NOT_PRESENT) );
ADDRGP4 $557
ARGP4
CNSTI4 -9999
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 977
;977:			trap_SetConfigstring( CS_SCORES2, va("%i", SCORE_NOT_PRESENT) );
ADDRGP4 $557
ARGP4
CNSTI4 -9999
ARGI4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 978
;978:		} else if ( level.numConnectedClients == 1 ) {
ADDRGP4 $563
JUMPV
LABELV $562
ADDRGP4 level+76
INDIRI4
CNSTI4 1
NEI4 $565
line 979
;979:			trap_SetConfigstring( CS_SCORES1, va("%i", level.clients[ level.sortedClients[0] ].ps.persistant[PERS_SCORE] ) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+88
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 980
;980:			trap_SetConfigstring( CS_SCORES2, va("%i", SCORE_NOT_PRESENT) );
ADDRGP4 $557
ARGP4
CNSTI4 -9999
ARGI4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 981
;981:		} else {
ADDRGP4 $566
JUMPV
LABELV $565
line 982
;982:			trap_SetConfigstring( CS_SCORES1, va("%i", level.clients[ level.sortedClients[0] ].ps.persistant[PERS_SCORE] ) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+88
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 983
;983:			trap_SetConfigstring( CS_SCORES2, va("%i", level.clients[ level.sortedClients[1] ].ps.persistant[PERS_SCORE] ) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+88+4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ARGI4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 984
;984:		}
LABELV $566
LABELV $563
line 985
;985:	}
LABELV $554
line 988
;986:
;987:	// see if it is time to end the level
;988:	CheckExitRules();
ADDRGP4 CheckExitRules
CALLV
pop
line 991
;989:
;990:	// if we are at the intermission, send the new info to everyone
;991:	if ( level.intermissiontime ) {
ADDRGP4 level+7604
INDIRI4
CNSTI4 0
EQI4 $572
line 992
;992:		SendScoreboardMessageToAllClients();
ADDRGP4 SendScoreboardMessageToAllClients
CALLV
pop
line 993
;993:	}
LABELV $572
line 994
;994:}
LABELV $457
endproc CalculateRanks 44 16
proc SendScoreboardMessageToAllClients 4 4
line 1013
;995:
;996:
;997:/*
;998:========================================================================
;999:
;1000:MAP CHANGING
;1001:
;1002:========================================================================
;1003:*/
;1004:
;1005:/*
;1006:========================
;1007:SendScoreboardMessageToAllClients
;1008:
;1009:Do this at BeginIntermission time and whenever ranks are recalculated
;1010:due to enters/exits/forced team changes
;1011:========================
;1012:*/
;1013:static void SendScoreboardMessageToAllClients( void ) {
line 1016
;1014:	int		i;
;1015:
;1016:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $579
JUMPV
LABELV $576
line 1017
;1017:		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $581
line 1018
;1018:			DeathmatchScoreboardMessage( g_entities + i );
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 DeathmatchScoreboardMessage
CALLV
pop
line 1019
;1019:		}
LABELV $581
line 1020
;1020:	}
LABELV $577
line 1016
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $579
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $576
line 1021
;1021:}
LABELV $575
endproc SendScoreboardMessageToAllClients 4 4
export MoveClientToIntermission
proc MoveClientToIntermission 8 12
line 1032
;1022:
;1023:
;1024:/*
;1025:========================
;1026:MoveClientToIntermission
;1027:
;1028:When the intermission starts, this will be called for all players.
;1029:If a new client connects, this will be called after the spawn function.
;1030:========================
;1031:*/
;1032:void MoveClientToIntermission( gentity_t *ent ) {
line 1036
;1033:	
;1034:	gclient_t * client;
;1035:	
;1036:	client = ent->client;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 516
ADDP4
INDIRP4
ASGNP4
line 1039
;1037:	
;1038:	// take out of follow mode if needed
;1039:	if ( client->sess.spectatorState == SPECTATOR_FOLLOW ) {
ADDRLP4 0
INDIRP4
CNSTI4 632
ADDP4
INDIRI4
CNSTI4 2
NEI4 $584
line 1040
;1040:		StopFollowing( ent, qtrue );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRGP4 StopFollowing
CALLV
pop
line 1041
;1041:	}
LABELV $584
line 1044
;1042:
;1043:	// move to the spot
;1044:	VectorCopy( level.intermission_origin, ent->s.origin );
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ADDRGP4 level+7616
INDIRB
ASGNB 12
line 1045
;1045:	VectorCopy( level.intermission_origin, client->ps.origin );
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
ADDRGP4 level+7616
INDIRB
ASGNB 12
line 1046
;1046:	SetClientViewAngle( ent, level.intermission_angle );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 level+7628
ARGP4
ADDRGP4 SetClientViewAngle
CALLV
pop
line 1047
;1047:	client->ps.pm_type = PM_INTERMISSION;
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 5
ASGNI4
line 1050
;1048:
;1049:	// clean up powerup info
;1050:	memset( client->ps.powerups, 0, sizeof( client->ps.powerups ) );
ADDRLP4 0
INDIRP4
CNSTI4 312
ADDP4
ARGP4
CNSTI4 0
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 memset
CALLP4
pop
line 1052
;1051:
;1052:	client->ps.eFlags = ( client->ps.eFlags & ~EF_PERSISTANT ) | ( client->ps.eFlags & EF_PERSISTANT );
ADDRLP4 0
INDIRP4
CNSTI4 104
ADDP4
ADDRLP4 0
INDIRP4
CNSTI4 104
ADDP4
INDIRI4
CNSTI4 -548865
BANDI4
ADDRLP4 0
INDIRP4
CNSTI4 104
ADDP4
INDIRI4
CNSTI4 548864
BANDI4
BORI4
ASGNI4
line 1054
;1053:
;1054:	ent->s.eFlags = client->ps.eFlags;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
ADDRLP4 0
INDIRP4
CNSTI4 104
ADDP4
INDIRI4
ASGNI4
line 1055
;1055:	ent->s.eType = ET_GENERAL;
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 0
ASGNI4
line 1056
;1056:	ent->s.modelindex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 160
ADDP4
CNSTI4 0
ASGNI4
line 1057
;1057:	ent->s.loopSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 156
ADDP4
CNSTI4 0
ASGNI4
line 1058
;1058:	ent->s.event = 0;
ADDRFP4 0
INDIRP4
CNSTI4 180
ADDP4
CNSTI4 0
ASGNI4
line 1059
;1059:	ent->r.contents = 0;
ADDRFP4 0
INDIRP4
CNSTI4 460
ADDP4
CNSTI4 0
ASGNI4
line 1061
;1060:
;1061:	ent->s.legsAnim = LEGS_IDLE;
ADDRFP4 0
INDIRP4
CNSTI4 196
ADDP4
CNSTI4 22
ASGNI4
line 1062
;1062:	ent->s.torsoAnim = TORSO_STAND;
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
CNSTI4 11
ASGNI4
line 1063
;1063:}
LABELV $583
endproc MoveClientToIntermission 8 12
export FindIntermissionPoint
proc FindIntermissionPoint 28 16
line 1073
;1064:
;1065:
;1066:/*
;1067:==================
;1068:FindIntermissionPoint
;1069:
;1070:This is also used for spectator spawns
;1071:==================
;1072:*/
;1073:void FindIntermissionPoint( void ) {
line 1077
;1074:	gentity_t	*ent, *target;
;1075:	vec3_t		dir;
;1076:
;1077:	if ( level.intermission_spot ) // search only once
ADDRGP4 level+7640
INDIRI4
CNSTI4 0
EQI4 $590
line 1078
;1078:		return;
ADDRGP4 $589
JUMPV
LABELV $590
line 1081
;1079:
;1080:	// find the intermission spot
;1081:	ent = level.spawnSpots[ SPAWN_SPOT_INTERMISSION ];
ADDRLP4 0
ADDRGP4 level+7692+4092
INDIRP4
ASGNP4
line 1083
;1082:
;1083:	if ( !ent ) { // the map creator forgot to put in an intermission point...
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $595
line 1084
;1084:		SelectSpawnPoint( NULL, vec3_origin, level.intermission_origin, level.intermission_angle );
CNSTP4 0
ARGP4
ADDRGP4 vec3_origin
ARGP4
ADDRGP4 level+7616
ARGP4
ADDRGP4 level+7628
ARGP4
ADDRGP4 SelectSpawnPoint
CALLP4
pop
line 1085
;1085:	} else {
ADDRGP4 $596
JUMPV
LABELV $595
line 1086
;1086:		VectorCopy (ent->s.origin, level.intermission_origin);
ADDRGP4 level+7616
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
INDIRB
ASGNB 12
line 1087
;1087:		VectorCopy (ent->s.angles, level.intermission_angle);
ADDRGP4 level+7628
ADDRLP4 0
INDIRP4
CNSTI4 116
ADDP4
INDIRB
ASGNB 12
line 1089
;1088:		// if it has a target, look towards it
;1089:		if ( ent->target ) {
ADDRLP4 0
INDIRP4
CNSTI4 648
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $601
line 1090
;1090:			target = G_PickTarget( ent->target );
ADDRLP4 0
INDIRP4
CNSTI4 648
ADDP4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 G_PickTarget
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 20
INDIRP4
ASGNP4
line 1091
;1091:			if ( target ) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $603
line 1092
;1092:				VectorSubtract( target->s.origin, level.intermission_origin, dir );
ADDRLP4 24
ADDRLP4 4
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 24
INDIRP4
CNSTI4 92
ADDP4
INDIRF4
ADDRGP4 level+7616
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 24
INDIRP4
CNSTI4 96
ADDP4
INDIRF4
ADDRGP4 level+7616+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+8
ADDRLP4 4
INDIRP4
CNSTI4 100
ADDP4
INDIRF4
ADDRGP4 level+7616+8
INDIRF4
SUBF4
ASGNF4
line 1093
;1093:				vectoangles( dir, level.intermission_angle );
ADDRLP4 8
ARGP4
ADDRGP4 level+7628
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 1094
;1094:			}
LABELV $603
line 1095
;1095:		}
LABELV $601
line 1096
;1096:	}
LABELV $596
line 1098
;1097:
;1098:	level.intermission_spot = qtrue;
ADDRGP4 level+7640
CNSTI4 1
ASGNI4
line 1099
;1099:}
LABELV $589
endproc FindIntermissionPoint 28 16
export BeginIntermission
proc BeginIntermission 8 4
line 1107
;1100:
;1101:
;1102:/*
;1103:==================
;1104:BeginIntermission
;1105:==================
;1106:*/
;1107:void BeginIntermission( void ) {
line 1111
;1108:	int			i;
;1109:	gentity_t	*client;
;1110:
;1111:	if ( level.intermissiontime ) {
ADDRGP4 level+7604
INDIRI4
CNSTI4 0
EQI4 $615
line 1112
;1112:		return;	// already active
ADDRGP4 $614
JUMPV
LABELV $615
line 1116
;1113:	}
;1114:
;1115:	// if in tournement mode, change the wins / losses
;1116:	if ( g_gametype.integer == GT_DUEL ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
NEI4 $618
line 1117
;1117:		AdjustTournamentScores();
ADDRGP4 AdjustTournamentScores
CALLV
pop
line 1118
;1118:	}
LABELV $618
line 1120
;1119:
;1120:	level.intermissiontime = level.time;
ADDRGP4 level+7604
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1121
;1121:	FindIntermissionPoint();
ADDRGP4 FindIntermissionPoint
CALLV
pop
line 1124
;1122:
;1123:	// move all clients to the intermission point
;1124:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $626
JUMPV
LABELV $623
line 1125
;1125:		client = g_entities + i;
ADDRLP4 0
ADDRLP4 4
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1126
;1126:		if ( !client->inuse )
ADDRLP4 0
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
NEI4 $628
line 1127
;1127:			continue;
ADDRGP4 $624
JUMPV
LABELV $628
line 1130
;1128:
;1129:		// respawn if dead
;1130:		if ( client->health <= 0 ) {
ADDRLP4 0
INDIRP4
CNSTI4 732
ADDP4
INDIRI4
CNSTI4 0
GTI4 $630
line 1131
;1131:			respawn( client );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 respawn
CALLV
pop
line 1132
;1132:		}
LABELV $630
line 1134
;1133:
;1134:		MoveClientToIntermission( client );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 MoveClientToIntermission
CALLV
pop
line 1135
;1135:	}
LABELV $624
line 1124
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $626
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $623
line 1138
;1136:
;1137:	// if single player game
;1138:	if ( g_singlePlayer.integer ) {
ADDRGP4 g_singlePlayer+12
INDIRI4
CNSTI4 0
EQI4 $632
line 1139
;1139:		UpdateTournamentInfo();
ADDRGP4 UpdateTournamentInfo
CALLV
pop
line 1140
;1140:		SpawnModelsOnVictoryPads();
ADDRGP4 SpawnModelsOnVictoryPads
CALLV
pop
line 1141
;1141:	}
LABELV $632
line 1144
;1142:
;1143:	// send the current scoring to all clients
;1144:	SendScoreboardMessageToAllClients();
ADDRGP4 SendScoreboardMessageToAllClients
CALLV
pop
line 1145
;1145:}
LABELV $614
endproc BeginIntermission 8 4
export ExitLevel
proc ExitLevel 272 12
line 1156
;1146:
;1147:
;1148:/*
;1149:=============
;1150:ExitLevel
;1151:
;1152:When the intermission has been exited, the server is either killed
;1153:or moved to a new level based on the "nextmap" cvar 
;1154:=============
;1155:*/
;1156:void ExitLevel( void ) {
line 1161
;1157:	int		i;
;1158:	gclient_t *cl;
;1159:
;1160:	//bot interbreeding
;1161:	BotInterbreedEndMatch();
ADDRGP4 BotInterbreedEndMatch
CALLV
pop
line 1165
;1162:
;1163:	// if we are running a tournement map, kick the loser to spectator status,
;1164:	// which will automatically grab the next spectator and restart
;1165:	if ( g_gametype.integer == GT_DUEL  ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
NEI4 $636
line 1166
;1166:		if ( !level.restarted ) {
ADDRGP4 level+72
INDIRI4
CNSTI4 0
NEI4 $635
line 1167
;1167:			RemoveTournamentLoser();
ADDRGP4 RemoveTournamentLoser
CALLV
pop
line 1168
;1168:			trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0\n" );
CNSTI4 2
ARGI4
ADDRGP4 $642
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 1169
;1169:			level.restarted = qtrue;
ADDRGP4 level+72
CNSTI4 1
ASGNI4
line 1170
;1170:			level.intermissiontime = 0;
ADDRGP4 level+7604
CNSTI4 0
ASGNI4
line 1171
;1171:		}
line 1172
;1172:		return;	
ADDRGP4 $635
JUMPV
LABELV $636
line 1175
;1173:	}
;1174:
;1175:	level.intermissiontime = 0;
ADDRGP4 level+7604
CNSTI4 0
ASGNI4
line 1178
;1176:
;1177:	// reset all the scores so we don't enter the intermission again
;1178:	level.teamScores[TEAM_RED] = 0;
ADDRGP4 level+48+4
CNSTI4 0
ASGNI4
line 1179
;1179:	level.teamScores[TEAM_BLUE] = 0;
ADDRGP4 level+48+8
CNSTI4 0
ASGNI4
line 1180
;1180:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $653
JUMPV
LABELV $650
line 1181
;1181:		cl = level.clients + i;
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1182
;1182:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $655
line 1183
;1183:			continue;
ADDRGP4 $651
JUMPV
LABELV $655
line 1185
;1184:		}
;1185:		cl->ps.persistant[PERS_SCORE] = 0;
ADDRLP4 4
INDIRP4
CNSTI4 248
ADDP4
CNSTI4 0
ASGNI4
line 1186
;1186:	}
LABELV $651
line 1180
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $653
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $650
line 1189
;1187:
;1188:	// we need to do this here before changing to CON_CONNECTING
;1189:	G_WriteSessionData();
ADDRGP4 G_WriteSessionData
CALLV
pop
line 1193
;1190:
;1191:	// change all client states to connecting, so the early players into the
;1192:	// next level will know the others aren't done reconnecting
;1193:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $660
JUMPV
LABELV $657
line 1194
;1194:		if ( level.clients[i].pers.connected == CON_CONNECTED ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $662
line 1195
;1195:			level.clients[i].pers.connected = CON_CONNECTING;
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
CNSTI4 1
ASGNI4
line 1196
;1196:		}
LABELV $662
line 1197
;1197:	}
LABELV $658
line 1193
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $660
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $657
line 1199
;1198:
;1199:	if ( !ParseMapRotation() ) {
ADDRLP4 8
ADDRGP4 ParseMapRotation
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $664
line 1202
;1200:		char val[ MAX_CVAR_VALUE_STRING ];
;1201:
;1202:		trap_Cvar_VariableStringBuffer( "nextmap", val, sizeof( val ) );
ADDRGP4 $666
ARGP4
ADDRLP4 12
ARGP4
CNSTI4 256
ARGI4
ADDRGP4 trap_Cvar_VariableStringBuffer
CALLV
pop
line 1204
;1203:
;1204:		if ( !val[0] || !Q_stricmpn( val, "map_restart ", 12 ) )
ADDRLP4 12
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $670
ADDRLP4 12
ARGP4
ADDRGP4 $669
ARGP4
CNSTI4 12
ARGI4
ADDRLP4 268
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 268
INDIRI4
CNSTI4 0
NEI4 $667
LABELV $670
line 1205
;1205:			G_LoadMap( NULL );
CNSTP4 0
ARGP4
ADDRGP4 G_LoadMap
CALLV
pop
ADDRGP4 $668
JUMPV
LABELV $667
line 1207
;1206:		else
;1207:			trap_SendConsoleCommand( EXEC_APPEND, "vstr nextmap\n" );
CNSTI4 2
ARGI4
ADDRGP4 $671
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
LABELV $668
line 1208
;1208:	} 
LABELV $664
line 1209
;1209:}
LABELV $635
endproc ExitLevel 272 12
export G_LogPrintf
proc G_LogPrintf 8224 24
line 1219
;1210:
;1211:
;1212:/*
;1213:=================
;1214:G_LogPrintf
;1215:
;1216:Print to the logfile with a time stamp if it is open
;1217:=================
;1218:*/
;1219:void QDECL G_LogPrintf( const char *fmt, ... ) {
line 1224
;1220:	va_list		argptr;
;1221:	char		string[BIG_INFO_STRING];
;1222:	int			min, tsec, sec, len, n;
;1223:
;1224:	tsec = level.time / 100;
ADDRLP4 8192
ADDRGP4 level+32
INDIRI4
CNSTI4 100
DIVI4
ASGNI4
line 1225
;1225:	sec = tsec / 10;
ADDRLP4 8196
ADDRLP4 8192
INDIRI4
CNSTI4 10
DIVI4
ASGNI4
line 1226
;1226:	tsec %= 10;
ADDRLP4 8192
ADDRLP4 8192
INDIRI4
CNSTI4 10
MODI4
ASGNI4
line 1227
;1227:	min = sec / 60;
ADDRLP4 8204
ADDRLP4 8196
INDIRI4
CNSTI4 60
DIVI4
ASGNI4
line 1228
;1228:	sec -= min * 60;
ADDRLP4 8196
ADDRLP4 8196
INDIRI4
ADDRLP4 8204
INDIRI4
CNSTI4 60
MULI4
SUBI4
ASGNI4
line 1230
;1229:
;1230:	len = Com_sprintf( string, sizeof( string ), "%3i:%02i.%i ", min, sec, tsec );
ADDRLP4 0
ARGP4
CNSTI4 8192
ARGI4
ADDRGP4 $674
ARGP4
ADDRLP4 8204
INDIRI4
ARGI4
ADDRLP4 8196
INDIRI4
ARGI4
ADDRLP4 8192
INDIRI4
ARGI4
ADDRLP4 8216
ADDRGP4 Com_sprintf
CALLI4
ASGNI4
ADDRLP4 8208
ADDRLP4 8216
INDIRI4
ASGNI4
line 1232
;1231:
;1232:	va_start( argptr, fmt );
ADDRLP4 8200
ADDRFP4 0+4
ASGNP4
line 1233
;1233:	ED_vsprintf( string + len, fmt,argptr );
ADDRLP4 8208
INDIRI4
ADDRLP4 0
ADDP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8200
INDIRP4
ARGP4
ADDRGP4 ED_vsprintf
CALLI4
pop
line 1234
;1234:	va_end( argptr );
ADDRLP4 8200
CNSTP4 0
ASGNP4
line 1236
;1235:
;1236:	n = (int)strlen( string );
ADDRLP4 0
ARGP4
ADDRLP4 8220
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 8212
ADDRLP4 8220
INDIRI4
ASGNI4
line 1238
;1237:
;1238:	if ( g_dedicated.integer ) {
ADDRGP4 g_dedicated+12
INDIRI4
CNSTI4 0
EQI4 $676
line 1239
;1239:		G_Printf( "%s", string + len );
ADDRGP4 $679
ARGP4
ADDRLP4 8208
INDIRI4
ADDRLP4 0
ADDP4
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 1240
;1240:	}
LABELV $676
line 1242
;1241:
;1242:	if ( level.logFile == FS_INVALID_HANDLE ) {
ADDRGP4 level+20
INDIRI4
CNSTI4 0
NEI4 $680
line 1243
;1243:		return;
ADDRGP4 $672
JUMPV
LABELV $680
line 1246
;1244:	}
;1245:
;1246:	trap_FS_Write( string, n, level.logFile );
ADDRLP4 0
ARGP4
ADDRLP4 8212
INDIRI4
ARGI4
ADDRGP4 level+20
INDIRI4
ARGI4
ADDRGP4 trap_FS_Write
CALLV
pop
line 1247
;1247:}
LABELV $672
endproc G_LogPrintf 8224 24
export LogExit
proc LogExit 24 20
line 1257
;1248:
;1249:
;1250:/*
;1251:================
;1252:LogExit
;1253:
;1254:Append information about this game to the log file
;1255:================
;1256:*/
;1257:void LogExit( const char *string ) {
line 1261
;1258:	int				i, numSorted;
;1259:	gclient_t		*cl;
;1260:
;1261:	G_LogPrintf( "Exit: %s\n", string );
ADDRGP4 $685
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1263
;1262:
;1263:	level.intermissionQueued = level.time;
ADDRGP4 level+7600
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1267
;1264:
;1265:	// this will keep the clients from playing any voice sounds
;1266:	// that will get cut off when the queued intermission starts
;1267:	trap_SetConfigstring( CS_INTERMISSION, "1" );
CNSTI4 22
ARGI4
ADDRGP4 $79
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1270
;1268:
;1269:	// don't send more than 32 scores (FIXME?)
;1270:	numSorted = level.numConnectedClients;
ADDRLP4 8
ADDRGP4 level+76
INDIRI4
ASGNI4
line 1271
;1271:	if ( numSorted > 32 ) {
ADDRLP4 8
INDIRI4
CNSTI4 32
LEI4 $689
line 1272
;1272:		numSorted = 32;
ADDRLP4 8
CNSTI4 32
ASGNI4
line 1273
;1273:	}
LABELV $689
line 1275
;1274:
;1275:	if ( GTx( g_gametype.integer, GTF_TEAMS ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $691
line 1276
;1276:		G_LogPrintf( "red:%i  blue:%i\n",
ADDRGP4 $695
ARGP4
ADDRGP4 level+48+4
INDIRI4
ARGI4
ADDRGP4 level+48+8
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1278
;1277:			level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE] );
;1278:	}
LABELV $691
line 1280
;1279:
;1280:	for (i=0 ; i < numSorted ; i++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $703
JUMPV
LABELV $700
line 1283
;1281:		int		ping;
;1282:
;1283:		cl = &level.clients[level.sortedClients[i]];
ADDRLP4 0
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1285
;1284:
;1285:		if ( cl->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
NEI4 $705
line 1286
;1286:			continue;
ADDRGP4 $701
JUMPV
LABELV $705
line 1288
;1287:		}
;1288:		if ( cl->pers.connected == CON_CONNECTING ) {
ADDRLP4 0
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 1
NEI4 $707
line 1289
;1289:			continue;
ADDRGP4 $701
JUMPV
LABELV $707
line 1292
;1290:		}
;1291:
;1292:		ping = cl->ps.ping < 999 ? cl->ps.ping : 999;
ADDRLP4 0
INDIRP4
CNSTI4 452
ADDP4
INDIRI4
CNSTI4 999
GEI4 $710
ADDRLP4 16
ADDRLP4 0
INDIRP4
CNSTI4 452
ADDP4
INDIRI4
ASGNI4
ADDRGP4 $711
JUMPV
LABELV $710
ADDRLP4 16
CNSTI4 999
ASGNI4
LABELV $711
ADDRLP4 12
ADDRLP4 16
INDIRI4
ASGNI4
line 1294
;1293:
;1294:		G_LogPrintf( "score: %i  ping: %i  client: %i %s\n", cl->ps.persistant[PERS_SCORE], ping, level.sortedClients[i],	cl->pers.netname );
ADDRGP4 $712
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+88
ADDP4
INDIRI4
ARGI4
ADDRLP4 0
INDIRP4
CNSTI4 508
ADDP4
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1295
;1295:	}
LABELV $701
line 1280
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $703
ADDRLP4 4
INDIRI4
ADDRLP4 8
INDIRI4
LTI4 $700
line 1296
;1296:}
LABELV $684
endproc LogExit 24 20
export CheckIntermissionExit
proc CheckIntermissionExit 20 0
line 1309
;1297:
;1298:
;1299:/*
;1300:=================
;1301:CheckIntermissionExit
;1302:
;1303:The level will stay at the intermission for a minimum of 5 seconds
;1304:If all players wish to continue, the level will then exit.
;1305:If one or more players have not acknowledged the continue, the game will
;1306:wait 10 seconds before going on.
;1307:=================
;1308:*/
;1309:void CheckIntermissionExit( void ) {
line 1315
;1310:	int			ready, notReady;
;1311:	int			i;
;1312:	gclient_t	*cl;
;1313:	int			readyMask;
;1314:
;1315:	if ( g_gametype.integer == GT_CAMPAIGN )
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
NEI4 $715
line 1316
;1316:		return;
ADDRGP4 $714
JUMPV
LABELV $715
line 1319
;1317:
;1318:	// see which players are ready
;1319:	ready = 0;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 1320
;1320:	notReady = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 1321
;1321:	readyMask = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1322
;1322:	for ( i = 0 ; i < level.maxclients ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $721
JUMPV
LABELV $718
line 1323
;1323:		cl = level.clients + i;
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1324
;1324:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $723
line 1325
;1325:			continue;
ADDRGP4 $719
JUMPV
LABELV $723
line 1328
;1326:		}
;1327:
;1328:		if ( g_entities[i].r.svFlags & SVF_BOT ) {
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities+208+216
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
EQI4 $725
line 1329
;1329:			cl->readyToExit = qtrue;
ADDRLP4 4
INDIRP4
CNSTI4 652
ADDP4
CNSTI4 1
ASGNI4
line 1330
;1330:		} 
LABELV $725
line 1332
;1331:
;1332:		if ( cl->readyToExit ) {
ADDRLP4 4
INDIRP4
CNSTI4 652
ADDP4
INDIRI4
CNSTI4 0
EQI4 $729
line 1333
;1333:			ready++;
ADDRLP4 16
ADDRLP4 16
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1334
;1334:			if ( i < 16 ) {
ADDRLP4 0
INDIRI4
CNSTI4 16
GEI4 $730
line 1335
;1335:				readyMask |= 1 << i;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BORI4
ASGNI4
line 1336
;1336:			}
line 1337
;1337:		} else {
ADDRGP4 $730
JUMPV
LABELV $729
line 1338
;1338:			notReady++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1339
;1339:		}
LABELV $730
line 1340
;1340:	}
LABELV $719
line 1322
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $721
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $718
line 1343
;1341:
;1342:	// vote in progress
;1343:	if ( level.voteTime || level.voteExecuteTime ) {
ADDRGP4 level+872
INDIRI4
CNSTI4 0
NEI4 $737
ADDRGP4 level+876
INDIRI4
CNSTI4 0
EQI4 $733
LABELV $737
line 1344
;1344:		ready  = 0;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 1345
;1345:		notReady = 1;
ADDRLP4 12
CNSTI4 1
ASGNI4
line 1346
;1346:	}
LABELV $733
line 1350
;1347:
;1348:	// copy the readyMask to each player's stats so
;1349:	// it can be displayed on the scoreboard
;1350:	for ( i = 0 ; i < level.maxclients ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $741
JUMPV
LABELV $738
line 1351
;1351:		cl = level.clients + i;
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1352
;1352:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $743
line 1353
;1353:			continue;
ADDRGP4 $739
JUMPV
LABELV $743
line 1355
;1354:		}
;1355:		cl->ps.stats[STAT_CLIENTS_READY] = readyMask;
ADDRLP4 4
INDIRP4
CNSTI4 208
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
line 1356
;1356:	}
LABELV $739
line 1350
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $741
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $738
line 1359
;1357:
;1358:	// never exit in less than five seconds
;1359:	if ( level.time < level.intermissiontime + 5000 ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+7604
INDIRI4
CNSTI4 5000
ADDI4
GEI4 $745
line 1360
;1360:		return;
ADDRGP4 $714
JUMPV
LABELV $745
line 1364
;1361:	}
;1362:
;1363:	// if nobody wants to go, clear timer
;1364:	if ( !ready && notReady ) {
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $749
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $749
line 1365
;1365:		level.readyToExit = qfalse;
ADDRGP4 level+7608
CNSTI4 0
ASGNI4
line 1366
;1366:		return;
ADDRGP4 $714
JUMPV
LABELV $749
line 1370
;1367:	}
;1368:
;1369:	// if everyone wants to go, go now
;1370:	if ( !notReady ) {
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $752
line 1371
;1371:		ExitLevel();
ADDRGP4 ExitLevel
CALLV
pop
line 1372
;1372:		return;
ADDRGP4 $714
JUMPV
LABELV $752
line 1376
;1373:	}
;1374:
;1375:	// the first person to ready starts the ten second timeout
;1376:	if ( !level.readyToExit ) {
ADDRGP4 level+7608
INDIRI4
CNSTI4 0
NEI4 $754
line 1377
;1377:		level.readyToExit = qtrue;
ADDRGP4 level+7608
CNSTI4 1
ASGNI4
line 1378
;1378:		level.exitTime = level.time + 10000;
ADDRGP4 level+7612
ADDRGP4 level+32
INDIRI4
CNSTI4 10000
ADDI4
ASGNI4
line 1379
;1379:	}
LABELV $754
line 1383
;1380:
;1381:	// if we have waited ten seconds since at least one player
;1382:	// wanted to exit, go ahead
;1383:	if ( level.time < level.exitTime ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+7612
INDIRI4
GEI4 $760
line 1384
;1384:		return;
ADDRGP4 $714
JUMPV
LABELV $760
line 1387
;1385:	}
;1386:
;1387:	ExitLevel();
ADDRGP4 ExitLevel
CALLV
pop
line 1388
;1388:}
LABELV $714
endproc CheckIntermissionExit 20 0
proc ScoreIsTied 12 0
line 1396
;1389:
;1390:
;1391:/*
;1392:=============
;1393:ScoreIsTied
;1394:=============
;1395:*/
;1396:static qboolean ScoreIsTied( void ) {
line 1399
;1397:	int		a, b;
;1398:
;1399:	if ( level.numPlayingClients < 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
GEI4 $765
line 1400
;1400:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $764
JUMPV
LABELV $765
line 1403
;1401:	}
;1402:	
;1403:	if ( GTx( g_gametype.integer, GTF_TEAMS ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $768
line 1404
;1404:		return level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE];
ADDRGP4 level+48+4
INDIRI4
ADDRGP4 level+48+8
INDIRI4
NEI4 $777
ADDRLP4 8
CNSTI4 1
ASGNI4
ADDRGP4 $778
JUMPV
LABELV $777
ADDRLP4 8
CNSTI4 0
ASGNI4
LABELV $778
ADDRLP4 8
INDIRI4
RETI4
ADDRGP4 $764
JUMPV
LABELV $768
line 1407
;1405:	}
;1406:
;1407:	a = level.clients[level.sortedClients[0]].ps.persistant[PERS_SCORE];
ADDRLP4 0
ADDRGP4 level+88
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 1408
;1408:	b = level.clients[level.sortedClients[1]].ps.persistant[PERS_SCORE];
ADDRLP4 4
ADDRGP4 level+88+4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 1410
;1409:
;1410:	return a == b;
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
NEI4 $783
ADDRLP4 8
CNSTI4 1
ASGNI4
ADDRGP4 $784
JUMPV
LABELV $783
ADDRLP4 8
CNSTI4 0
ASGNI4
LABELV $784
ADDRLP4 8
INDIRI4
RETI4
LABELV $764
endproc ScoreIsTied 12 0
proc CheckExitRules 16 8
line 1423
;1411:}
;1412:
;1413:
;1414:/*
;1415:=================
;1416:CheckExitRules
;1417:
;1418:There will be a delay between the time the exit is qualified for
;1419:and the time everyone is moved to the intermission spot, so you
;1420:can see the last frag.
;1421:=================
;1422:*/
;1423:static void CheckExitRules( void ) {
line 1429
;1424: 	int			i;
;1425:	gclient_t	*cl;
;1426:
;1427:	// if at the intermission, wait for all non-bots to
;1428:	// signal ready, then go to next level
;1429:	if ( level.intermissiontime ) {
ADDRGP4 level+7604
INDIRI4
CNSTI4 0
EQI4 $786
line 1430
;1430:		CheckIntermissionExit();
ADDRGP4 CheckIntermissionExit
CALLV
pop
line 1431
;1431:		return;
ADDRGP4 $785
JUMPV
LABELV $786
line 1434
;1432:	}
;1433:
;1434:	if ( level.intermissionQueued ) {
ADDRGP4 level+7600
INDIRI4
CNSTI4 0
EQI4 $789
line 1435
;1435:		if ( level.time - level.intermissionQueued >= INTERMISSION_DELAY_TIME ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+7600
INDIRI4
SUBI4
CNSTI4 1000
LTI4 $785
line 1436
;1436:			level.intermissionQueued = 0;
ADDRGP4 level+7600
CNSTI4 0
ASGNI4
line 1437
;1437:			BeginIntermission();
ADDRGP4 BeginIntermission
CALLV
pop
line 1438
;1438:		}
line 1439
;1439:		return;
ADDRGP4 $785
JUMPV
LABELV $789
line 1443
;1440:	}
;1441:
;1442:	// check for sudden death
;1443:	if ( ScoreIsTied() ) {
ADDRLP4 8
ADDRGP4 ScoreIsTied
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $797
line 1445
;1444:		// always wait for sudden death
;1445:		return;
ADDRGP4 $785
JUMPV
LABELV $797
line 1448
;1446:	}
;1447:
;1448:	if ( g_timelimit.integer && !level.warmupTime ) {
ADDRGP4 g_timelimit+12
INDIRI4
CNSTI4 0
EQI4 $799
ADDRGP4 level+16
INDIRI4
CNSTI4 0
NEI4 $799
line 1449
;1449:		if ( level.time - level.startTime >= g_timelimit.integer*60000 ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+40
INDIRI4
SUBI4
ADDRGP4 g_timelimit+12
INDIRI4
CNSTI4 60000
MULI4
LTI4 $803
line 1450
;1450:			G_BroadcastServerCommand( -1, "print \"Timelimit hit.\n\"");
CNSTI4 -1
ARGI4
ADDRGP4 $808
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1451
;1451:			LogExit( "Timelimit hit." );
ADDRGP4 $809
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1452
;1452:			return;
ADDRGP4 $785
JUMPV
LABELV $803
line 1454
;1453:		}
;1454:	}
LABELV $799
line 1456
;1455:
;1456:	if ( level.numPlayingClients < 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
GEI4 $810
line 1457
;1457:		return;
ADDRGP4 $785
JUMPV
LABELV $810
line 1460
;1458:	}
;1459:
;1460:	if ( g_gametype.integer < GT_CTF && g_fraglimit.integer ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 4
GEI4 $813
ADDRGP4 g_fraglimit+12
INDIRI4
CNSTI4 0
EQI4 $813
line 1461
;1461:		if ( level.teamScores[TEAM_RED] >= g_fraglimit.integer ) {
ADDRGP4 level+48+4
INDIRI4
ADDRGP4 g_fraglimit+12
INDIRI4
LTI4 $817
line 1462
;1462:			G_BroadcastServerCommand( -1, "print \"Red hit the fraglimit.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $822
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1463
;1463:			LogExit( "Fraglimit hit." );
ADDRGP4 $823
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1464
;1464:			return;
ADDRGP4 $785
JUMPV
LABELV $817
line 1467
;1465:		}
;1466:
;1467:		if ( level.teamScores[TEAM_BLUE] >= g_fraglimit.integer ) {
ADDRGP4 level+48+8
INDIRI4
ADDRGP4 g_fraglimit+12
INDIRI4
LTI4 $824
line 1468
;1468:			G_BroadcastServerCommand( -1, "print \"Blue hit the fraglimit.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $829
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1469
;1469:			LogExit( "Fraglimit hit." );
ADDRGP4 $823
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1470
;1470:			return;
ADDRGP4 $785
JUMPV
LABELV $824
line 1473
;1471:		}
;1472:
;1473:		for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $833
JUMPV
LABELV $830
line 1474
;1474:			cl = level.clients + i;
ADDRLP4 0
ADDRLP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1475
;1475:			if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $835
line 1476
;1476:				continue;
ADDRGP4 $831
JUMPV
LABELV $835
line 1478
;1477:			}
;1478:			if ( cl->sess.sessionTeam != TEAM_FREE ) {
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 0
EQI4 $837
line 1479
;1479:				continue;
ADDRGP4 $831
JUMPV
LABELV $837
line 1482
;1480:			}
;1481:
;1482:			if ( cl->ps.persistant[PERS_SCORE] >= g_fraglimit.integer ) {
ADDRLP4 0
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ADDRGP4 g_fraglimit+12
INDIRI4
LTI4 $839
line 1483
;1483:				LogExit( "Fraglimit hit." );
ADDRGP4 $823
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1484
;1484:				G_BroadcastServerCommand( -1, va("print \"%s" S_COLOR_WHITE " hit the fraglimit.\n\"",
ADDRGP4 $842
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 508
ADDP4
ARGP4
ADDRLP4 12
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 12
INDIRP4
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1486
;1485:					cl->pers.netname ) );
;1486:				return;
ADDRGP4 $785
JUMPV
LABELV $839
line 1488
;1487:			}
;1488:		}
LABELV $831
line 1473
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $833
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $830
line 1489
;1489:	}
LABELV $813
line 1491
;1490:
;1491:	if ( GTx( g_gametype.integer, GTF_TEAMS | GTF_TEAMBASES ) && g_capturelimit.integer ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 132
BANDI4
CNSTI4 0
EQI4 $843
ADDRGP4 g_capturelimit+12
INDIRI4
CNSTI4 0
EQI4 $843
line 1493
;1492:
;1493:		if ( level.teamScores[TEAM_RED] >= g_capturelimit.integer ) {
ADDRGP4 level+48+4
INDIRI4
ADDRGP4 g_capturelimit+12
INDIRI4
LTI4 $848
line 1494
;1494:			G_BroadcastServerCommand( -1, "print \"Red hit the capturelimit.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $853
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1495
;1495:			LogExit( "Capturelimit hit." );
ADDRGP4 $854
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1496
;1496:			return;
ADDRGP4 $785
JUMPV
LABELV $848
line 1499
;1497:		}
;1498:
;1499:		if ( level.teamScores[TEAM_BLUE] >= g_capturelimit.integer ) {
ADDRGP4 level+48+8
INDIRI4
ADDRGP4 g_capturelimit+12
INDIRI4
LTI4 $855
line 1500
;1500:			G_BroadcastServerCommand( -1, "print \"Blue hit the capturelimit.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $860
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1501
;1501:			LogExit( "Capturelimit hit." );
ADDRGP4 $854
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1502
;1502:			return;
LABELV $855
line 1504
;1503:		}
;1504:	}
LABELV $843
line 1505
;1505:}
LABELV $785
endproc CheckExitRules 16 8
proc ClearBodyQue 12 4
line 1508
;1506:
;1507:
;1508:static void ClearBodyQue( void ) {
line 1512
;1509:	int	i;
;1510:	gentity_t	*ent;
;1511:
;1512:	for ( i = 0 ; i < BODY_QUEUE_SIZE ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
LABELV $862
line 1513
;1513:		ent = level.bodyQue[ i ];
ADDRLP4 0
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+7656
ADDP4
INDIRP4
ASGNP4
line 1514
;1514:		if ( ent->r.linked || ent->physicsObject ) {
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRI4
CNSTI4 0
NEI4 $869
ADDRLP4 0
INDIRP4
CNSTI4 564
ADDP4
INDIRI4
CNSTI4 0
EQI4 $867
LABELV $869
line 1515
;1515:			trap_UnlinkEntity( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_UnlinkEntity
CALLV
pop
line 1516
;1516:			ent->physicsObject = qfalse;
ADDRLP4 0
INDIRP4
CNSTI4 564
ADDP4
CNSTI4 0
ASGNI4
line 1517
;1517:		}
LABELV $867
line 1518
;1518:	}
LABELV $863
line 1512
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 8
LTI4 $862
line 1519
;1519:}
LABELV $861
endproc ClearBodyQue 12 4
proc G_WarmupEnd 44 12
line 1523
;1520:
;1521:
;1522:static void G_WarmupEnd( void ) 
;1523:{
line 1529
;1524:	gclient_t *client;
;1525:	gentity_t *ent;
;1526:	int i, t;
;1527:
;1528:	// remove corpses
;1529:	ClearBodyQue();
ADDRGP4 ClearBodyQue
CALLV
pop
line 1532
;1530:
;1531:	// return flags
;1532:	Team_ResetFlags();
ADDRGP4 Team_ResetFlags
CALLV
pop
line 1534
;1533:
;1534:	memset( level.teamScores, 0, sizeof( level.teamScores ) );
ADDRGP4 level+48
ARGP4
CNSTI4 0
ARGI4
CNSTI4 16
ARGI4
ADDRGP4 memset
CALLP4
pop
line 1536
;1535:
;1536:	level.warmupTime = 0;
ADDRGP4 level+16
CNSTI4 0
ASGNI4
line 1537
;1537:	level.startTime = level.time;
ADDRGP4 level+40
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1539
;1538:
;1539:	trap_SetConfigstring( CS_SCORES1, "0" );
CNSTI4 6
ARGI4
ADDRGP4 $63
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1540
;1540:	trap_SetConfigstring( CS_SCORES2, "0" );
CNSTI4 7
ARGI4
ADDRGP4 $63
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1541
;1541:	trap_SetConfigstring( CS_WARMUP, "" );
CNSTI4 5
ARGI4
ADDRGP4 $57
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1542
;1542:	trap_SetConfigstring( CS_LEVEL_START_TIME, va( "%i", level.startTime ) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+40
INDIRI4
ARGI4
ADDRLP4 16
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 21
ARGI4
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1544
;1543:	
;1544:	client = level.clients;
ADDRLP4 0
ADDRGP4 level
INDIRP4
ASGNP4
line 1545
;1545:	for ( i = 0; i < level.maxclients; i++, client++ ) {
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $880
JUMPV
LABELV $877
line 1547
;1546:		
;1547:		if ( client->pers.connected != CON_CONNECTED )
ADDRLP4 0
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $882
line 1548
;1548:			continue;
ADDRGP4 $878
JUMPV
LABELV $882
line 1551
;1549:
;1550:		// reset player awards
;1551:		client->ps.persistant[PERS_IMPRESSIVE_COUNT] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 0
ASGNI4
line 1552
;1552:		client->ps.persistant[PERS_EXCELLENT_COUNT] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 288
ADDP4
CNSTI4 0
ASGNI4
line 1553
;1553:		client->ps.persistant[PERS_DEFEND_COUNT] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 292
ADDP4
CNSTI4 0
ASGNI4
line 1554
;1554:		client->ps.persistant[PERS_ASSIST_COUNT] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 296
ADDP4
CNSTI4 0
ASGNI4
line 1555
;1555:		client->ps.persistant[PERS_GAUNTLET_FRAG_COUNT] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 300
ADDP4
CNSTI4 0
ASGNI4
line 1557
;1556:
;1557:		client->ps.persistant[PERS_SCORE] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 248
ADDP4
CNSTI4 0
ASGNI4
line 1558
;1558:		client->ps.persistant[PERS_CAPTURES] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 304
ADDP4
CNSTI4 0
ASGNI4
line 1560
;1559:
;1560:		client->ps.persistant[PERS_ATTACKER] = ENTITYNUM_NONE;
ADDRLP4 0
INDIRP4
CNSTI4 272
ADDP4
CNSTI4 1023
ASGNI4
line 1561
;1561:		client->ps.persistant[PERS_ATTACKEE_ARMOR] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
CNSTI4 0
ASGNI4
line 1562
;1562:		client->damage.enemy = client->damage.team = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 1624
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 1628
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
line 1564
;1563:
;1564:		client->ps.stats[STAT_CLIENTS_READY] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 208
ADDP4
CNSTI4 0
ASGNI4
line 1565
;1565:		client->ps.stats[STAT_HOLDABLE_ITEM] = 0;
ADDRLP4 0
INDIRP4
CNSTI4 188
ADDP4
CNSTI4 0
ASGNI4
line 1567
;1566:
;1567:		memset( &client->ps.powerups, 0, sizeof( client->ps.powerups ) );
ADDRLP4 0
INDIRP4
CNSTI4 312
ADDP4
ARGP4
CNSTI4 0
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 memset
CALLP4
pop
line 1569
;1568:
;1569:		ClientUserinfoChanged( i ); // set max.health etc.
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLI4
pop
line 1571
;1570:
;1571:		if ( client->sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
INDIRI4
CNSTI4 3
EQI4 $884
line 1572
;1572:			ClientSpawn( level.gentities + i );
ADDRLP4 8
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 level+4
INDIRP4
ADDP4
ARGP4
ADDRGP4 ClientSpawn
CALLV
pop
line 1573
;1573:		}
LABELV $884
line 1575
;1574:
;1575:		trap_SendServerCommand( i, "map_restart" );
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 $887
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1576
;1576:	}
LABELV $878
line 1545
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1636
ADDP4
ASGNP4
LABELV $880
ADDRLP4 8
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $877
line 1579
;1577:
;1578:	// respawn items, remove projectiles, etc.
;1579:	ent = level.gentities + MAX_CLIENTS;
ADDRLP4 4
ADDRGP4 level+4
INDIRP4
CNSTI4 52736
ADDP4
ASGNP4
line 1580
;1580:	for ( i = MAX_CLIENTS; i < level.num_entities ; i++, ent++ ) {
ADDRLP4 8
CNSTI4 64
ASGNI4
ADDRGP4 $892
JUMPV
LABELV $889
line 1582
;1581:
;1582:		if ( !ent->inuse || ent->freeAfterEvent )
ADDRLP4 4
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
EQI4 $896
ADDRLP4 4
INDIRP4
CNSTI4 556
ADDP4
INDIRI4
CNSTI4 0
EQI4 $894
LABELV $896
line 1583
;1583:			continue;
ADDRGP4 $890
JUMPV
LABELV $894
line 1585
;1584:
;1585:		if ( ent->tag == TAG_DONTSPAWN ) {
ADDRLP4 4
INDIRP4
CNSTI4 820
ADDP4
INDIRI4
CNSTI4 1
NEI4 $897
line 1586
;1586:			ent->nextthink = 0;
ADDRLP4 4
INDIRP4
CNSTI4 688
ADDP4
CNSTI4 0
ASGNI4
line 1587
;1587:			continue;
ADDRGP4 $890
JUMPV
LABELV $897
line 1590
;1588:		}
;1589:
;1590:		if ( ent->s.eType == ET_ITEM && ent->item ) {
ADDRLP4 4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 2
NEI4 $899
ADDRLP4 4
INDIRP4
CNSTI4 812
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $899
line 1593
;1591:
;1592:			// already processed in Team_ResetFlags()
;1593:			if ( ent->item->giTag == PW_NEUTRALFLAG || ent->item->giTag == PW_REDFLAG || ent->item->giTag == PW_BLUEFLAG )
ADDRLP4 4
INDIRP4
CNSTI4 812
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 9
EQI4 $904
ADDRLP4 4
INDIRP4
CNSTI4 812
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 7
EQI4 $904
ADDRLP4 4
INDIRP4
CNSTI4 812
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 8
NEI4 $901
LABELV $904
line 1594
;1594:				continue;
ADDRGP4 $890
JUMPV
LABELV $901
line 1597
;1595:
;1596:			// remove dropped items
;1597:			if ( ent->flags & FL_DROPPED_ITEM ) {
ADDRLP4 4
INDIRP4
CNSTI4 536
ADDP4
INDIRI4
CNSTI4 4096
BANDI4
CNSTI4 0
EQI4 $905
line 1598
;1598:				ent->nextthink = level.time;
ADDRLP4 4
INDIRP4
CNSTI4 688
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1599
;1599:				continue;
ADDRGP4 $890
JUMPV
LABELV $905
line 1603
;1600:			}
;1601:
;1602:			// respawn picked up items
;1603:			t = SpawnTime( ent, qtrue );
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 32
ADDRGP4 SpawnTime
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 32
INDIRI4
ASGNI4
line 1604
;1604:			if ( t != 0 ) {
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $908
line 1606
;1605:				// hide items with defined spawn time
;1606:				ent->s.eFlags |= EF_NODRAW;
ADDRLP4 36
ADDRLP4 4
INDIRP4
CNSTI4 8
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
CNSTI4 128
BORI4
ASGNI4
line 1607
;1607:				ent->r.svFlags |= SVF_NOCLIENT;
ADDRLP4 40
ADDRLP4 4
INDIRP4
CNSTI4 424
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 1
BORI4
ASGNI4
line 1608
;1608:				ent->r.contents = 0;
ADDRLP4 4
INDIRP4
CNSTI4 460
ADDP4
CNSTI4 0
ASGNI4
line 1609
;1609:				ent->activator = NULL;
ADDRLP4 4
INDIRP4
CNSTI4 772
ADDP4
CNSTP4 0
ASGNP4
line 1610
;1610:				ent->think = RespawnItem;
ADDRLP4 4
INDIRP4
CNSTI4 692
ADDP4
ADDRGP4 RespawnItem
ASGNP4
line 1611
;1611:			} else {
ADDRGP4 $909
JUMPV
LABELV $908
line 1612
;1612:				t = FRAMETIME;
ADDRLP4 12
CNSTI4 100
ASGNI4
line 1613
;1613:				if ( ent->activator ) {
ADDRLP4 4
INDIRP4
CNSTI4 772
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $910
line 1614
;1614:					ent->activator = NULL;
ADDRLP4 4
INDIRP4
CNSTI4 772
ADDP4
CNSTP4 0
ASGNP4
line 1615
;1615:					ent->think = RespawnItem;
ADDRLP4 4
INDIRP4
CNSTI4 692
ADDP4
ADDRGP4 RespawnItem
ASGNP4
line 1616
;1616:				}
LABELV $910
line 1617
;1617:			}
LABELV $909
line 1618
;1618:			if ( ent->random ) {
ADDRLP4 4
INDIRP4
CNSTI4 808
ADDP4
INDIRF4
CNSTF4 0
EQF4 $912
line 1619
;1619:				t += (crandom() * ent->random) * 1000;
ADDRLP4 36
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 12
INDIRI4
CVIF4 4
ADDRLP4 36
INDIRI4
CNSTI4 32767
BANDI4
CVIF4 4
CNSTF4 939524352
MULF4
CNSTF4 1056964608
SUBF4
CNSTF4 1073741824
MULF4
ADDRLP4 4
INDIRP4
CNSTI4 808
ADDP4
INDIRF4
MULF4
CNSTF4 1148846080
MULF4
ADDF4
CVFI4 4
ASGNI4
line 1620
;1620:				if ( t < FRAMETIME ) {
ADDRLP4 12
INDIRI4
CNSTI4 100
GEI4 $914
line 1621
;1621:					t = FRAMETIME;
ADDRLP4 12
CNSTI4 100
ASGNI4
line 1622
;1622:				}
LABELV $914
line 1623
;1623:			}
LABELV $912
line 1624
;1624:			ent->nextthink = level.time + t;
ADDRLP4 4
INDIRP4
CNSTI4 688
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 12
INDIRI4
ADDI4
ASGNI4
line 1626
;1625:
;1626:		} else if ( ent->s.eType == ET_MISSILE ) {
ADDRGP4 $900
JUMPV
LABELV $899
ADDRLP4 4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 3
NEI4 $917
line 1628
;1627:			// remove all launched missiles
;1628:			G_FreeEntity( ent );
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 1629
;1629:		}
LABELV $917
LABELV $900
line 1630
;1630:	}
LABELV $890
line 1580
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
ADDRLP4 4
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
LABELV $892
ADDRLP4 8
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $889
line 1631
;1631:}
LABELV $870
endproc G_WarmupEnd 44 12
proc CheckTournament 28 8
line 1650
;1632:
;1633:
;1634:/*
;1635:========================================================================
;1636:
;1637:FUNCTIONS CALLED EVERY FRAME
;1638:
;1639:========================================================================
;1640:*/
;1641:
;1642:
;1643:/*
;1644:=============
;1645:CheckTournament
;1646:
;1647:Once a frame, check for changes in tournement player state
;1648:=============
;1649:*/
;1650:static void CheckTournament( void ) {
line 1654
;1651:
;1652:	// check because we run 3 game frames before calling Connect and/or ClientBegin
;1653:	// for clients on a map_restart
;1654:	if ( level.numPlayingClients == 0 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 0
NEI4 $920
line 1655
;1655:		return;
ADDRGP4 $919
JUMPV
LABELV $920
line 1658
;1656:	}
;1657:
;1658:	if ( g_gametype.integer == GT_DUEL ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
NEI4 $923
line 1661
;1659:
;1660:		// pull in a spectator if needed
;1661:		if ( level.numPlayingClients < 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
GEI4 $926
line 1662
;1662:			AddTournamentPlayer();
ADDRGP4 AddTournamentPlayer
CALLV
pop
line 1663
;1663:		}
LABELV $926
line 1666
;1664:
;1665:		// if we don't have two players, go back to "waiting for players"
;1666:		if ( level.numPlayingClients != 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
EQI4 $929
line 1667
;1667:			if ( level.warmupTime != -1 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 -1
EQI4 $919
line 1668
;1668:				level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 1669
;1669:				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+16
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 5
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1670
;1670:				G_LogPrintf( "Warmup:\n" );
ADDRGP4 $937
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1671
;1671:			}
line 1672
;1672:			return;
ADDRGP4 $919
JUMPV
LABELV $929
line 1675
;1673:		}
;1674:
;1675:		if ( level.warmupTime == 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
NEI4 $938
line 1676
;1676:			return;
ADDRGP4 $919
JUMPV
LABELV $938
line 1680
;1677:		}
;1678:
;1679:		// if the warmup is changed at the console, restart it
;1680:		if ( g_warmup.modificationCount != level.warmupModificationCount ) {
ADDRGP4 g_warmup+4
INDIRI4
ADDRGP4 level+356
INDIRI4
EQI4 $941
line 1681
;1681:			level.warmupModificationCount = g_warmup.modificationCount;
ADDRGP4 level+356
ADDRGP4 g_warmup+4
INDIRI4
ASGNI4
line 1682
;1682:			level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 1683
;1683:		}
LABELV $941
line 1686
;1684:
;1685:		// if all players have arrived, start the countdown
;1686:		if ( level.warmupTime < 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
GEI4 $948
line 1687
;1687:			if ( level.numPlayingClients == 2 ) {
ADDRGP4 level+84
INDIRI4
CNSTI4 2
NEI4 $919
line 1688
;1688:				if ( g_warmup.integer > 0 ) {
ADDRGP4 g_warmup+12
INDIRI4
CNSTI4 0
LEI4 $954
line 1689
;1689:					level.warmupTime = level.time + g_warmup.integer * 1000;
ADDRGP4 level+16
ADDRGP4 level+32
INDIRI4
ADDRGP4 g_warmup+12
INDIRI4
CNSTI4 1000
MULI4
ADDI4
ASGNI4
line 1690
;1690:				} else {
ADDRGP4 $955
JUMPV
LABELV $954
line 1691
;1691:					level.warmupTime = 0;
ADDRGP4 level+16
CNSTI4 0
ASGNI4
line 1692
;1692:				}
LABELV $955
line 1694
;1693:
;1694:				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+16
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 5
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1695
;1695:			}
line 1696
;1696:			return;
ADDRGP4 $919
JUMPV
LABELV $948
line 1700
;1697:		}
;1698:
;1699:		// if the warmup time has counted down, restart
;1700:		if ( level.time > level.warmupTime ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+16
INDIRI4
LEI4 $924
line 1701
;1701:			G_WarmupEnd();
ADDRGP4 G_WarmupEnd
CALLV
pop
line 1702
;1702:			return;
ADDRGP4 $919
JUMPV
line 1704
;1703:		}
;1704:	} else if ( g_gametype.integer != GT_CAMPAIGN && level.warmupTime != 0 ) {
LABELV $923
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
EQI4 $966
ADDRGP4 level+16
INDIRI4
CNSTI4 0
EQI4 $966
line 1706
;1705:		int		counts[TEAM_NUM_TEAMS];
;1706:		qboolean	notEnough = qfalse;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1708
;1707:
;1708:		if ( GTx( g_gametype.integer, GTF_TEAMS ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 36
MULI4
ADDRGP4 gt+20
ADDP4
INDIRI4
CNSTI4 128
BANDI4
CNSTI4 0
EQI4 $970
line 1709
;1709:			counts[TEAM_BLUE] = TeamConnectedCount( -1, TEAM_BLUE );
CNSTI4 -1
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 TeamConnectedCount
CALLI4
ASGNI4
ADDRLP4 4+8
ADDRLP4 20
INDIRI4
ASGNI4
line 1710
;1710:			counts[TEAM_RED] = TeamConnectedCount( -1, TEAM_RED );
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRLP4 24
ADDRGP4 TeamConnectedCount
CALLI4
ASGNI4
ADDRLP4 4+4
ADDRLP4 24
INDIRI4
ASGNI4
line 1712
;1711:
;1712:			if (counts[TEAM_RED] < 1 || counts[TEAM_BLUE] < 1) {
ADDRLP4 4+4
INDIRI4
CNSTI4 1
LTI4 $980
ADDRLP4 4+8
INDIRI4
CNSTI4 1
GEI4 $971
LABELV $980
line 1713
;1713:				notEnough = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 1714
;1714:			}
line 1715
;1715:		} else if ( level.numPlayingClients < 2 ) {
ADDRGP4 $971
JUMPV
LABELV $970
ADDRGP4 level+84
INDIRI4
CNSTI4 2
GEI4 $981
line 1716
;1716:			notEnough = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 1717
;1717:		}
LABELV $981
LABELV $971
line 1719
;1718:
;1719:		if ( notEnough ) {
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $984
line 1720
;1720:			if ( level.warmupTime != -1 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 -1
EQI4 $919
line 1721
;1721:				level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 1722
;1722:				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+16
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 5
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1723
;1723:				G_LogPrintf( "Warmup:\n" );
ADDRGP4 $937
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1724
;1724:			}
line 1725
;1725:			return; // still waiting for team members
ADDRGP4 $919
JUMPV
LABELV $984
line 1728
;1726:		}
;1727:
;1728:		if ( level.warmupTime == 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
NEI4 $991
line 1729
;1729:			return;
ADDRGP4 $919
JUMPV
LABELV $991
line 1733
;1730:		}
;1731:
;1732:		// if the warmup is changed at the console, restart it
;1733:		if ( g_warmup.modificationCount != level.warmupModificationCount ) {
ADDRGP4 g_warmup+4
INDIRI4
ADDRGP4 level+356
INDIRI4
EQI4 $994
line 1734
;1734:			level.warmupModificationCount = g_warmup.modificationCount;
ADDRGP4 level+356
ADDRGP4 g_warmup+4
INDIRI4
ASGNI4
line 1735
;1735:			level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 1736
;1736:		}
LABELV $994
line 1739
;1737:
;1738:		// if all players have arrived, start the countdown
;1739:		if ( level.warmupTime < 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
GEI4 $1001
line 1740
;1740:			if ( g_warmup.integer > 0 ) {
ADDRGP4 g_warmup+12
INDIRI4
CNSTI4 0
LEI4 $1004
line 1741
;1741:				level.warmupTime = level.time + g_warmup.integer * 1000;
ADDRGP4 level+16
ADDRGP4 level+32
INDIRI4
ADDRGP4 g_warmup+12
INDIRI4
CNSTI4 1000
MULI4
ADDI4
ASGNI4
line 1742
;1742:			} else {
ADDRGP4 $1005
JUMPV
LABELV $1004
line 1743
;1743:				level.warmupTime = 0;
ADDRGP4 level+16
CNSTI4 0
ASGNI4
line 1744
;1744:			}
LABELV $1005
line 1746
;1745:
;1746:			trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
ADDRGP4 $557
ARGP4
ADDRGP4 level+16
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 5
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1747
;1747:			return;
ADDRGP4 $919
JUMPV
LABELV $1001
line 1751
;1748:		}
;1749:
;1750:		// if the warmup time has counted down, restart
;1751:		if ( level.time > level.warmupTime ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+16
INDIRI4
LEI4 $1012
line 1752
;1752:			G_WarmupEnd();
ADDRGP4 G_WarmupEnd
CALLV
pop
line 1753
;1753:			return;
LABELV $1012
line 1755
;1754:		}
;1755:	}
LABELV $966
LABELV $924
line 1756
;1756:}
LABELV $919
endproc CheckTournament 28 8
proc CheckVote 4 8
line 1764
;1757:
;1758:
;1759:/*
;1760:==================
;1761:CheckVote
;1762:==================
;1763:*/
;1764:static void CheckVote( void ) {
line 1766
;1765:	
;1766:	if ( level.voteExecuteTime ) {
ADDRGP4 level+876
INDIRI4
CNSTI4 0
EQI4 $1017
line 1767
;1767:		 if ( level.voteExecuteTime < level.time ) {
ADDRGP4 level+876
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1016
line 1768
;1768:			level.voteExecuteTime = 0;
ADDRGP4 level+876
CNSTI4 0
ASGNI4
line 1769
;1769:			trap_SendConsoleCommand( EXEC_APPEND, va( "%s\n", level.voteString ) );
ADDRGP4 $1025
ARGP4
ADDRGP4 level+360
ARGP4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 1770
;1770:		 }
line 1771
;1771:		 return;
ADDRGP4 $1016
JUMPV
LABELV $1017
line 1774
;1772:	}
;1773:
;1774:	if ( !level.voteTime ) {
ADDRGP4 level+872
INDIRI4
CNSTI4 0
NEI4 $1027
line 1775
;1775:		return;
ADDRGP4 $1016
JUMPV
LABELV $1027
line 1778
;1776:	}
;1777:
;1778:	if ( level.time - level.voteTime >= VOTE_TIME ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+872
INDIRI4
SUBI4
CNSTI4 30000
LTI4 $1030
line 1779
;1779:		G_BroadcastServerCommand( -1, "print \"Vote failed.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1034
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1780
;1780:	} else {
ADDRGP4 $1031
JUMPV
LABELV $1030
line 1782
;1781:		// ATVI Q3 1.32 Patch #9, WNF
;1782:		if ( level.voteYes > level.numVotingClients/2 ) {
ADDRGP4 level+880
INDIRI4
ADDRGP4 level+888
INDIRI4
CNSTI4 2
DIVI4
LEI4 $1035
line 1784
;1783:			// execute the command, then remove the vote
;1784:			G_BroadcastServerCommand( -1, "print \"Vote passed.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1039
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1785
;1785:			level.voteExecuteTime = level.time + 3000;
ADDRGP4 level+876
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 1786
;1786:		} else if ( level.voteNo >= level.numVotingClients/2 ) {
ADDRGP4 $1036
JUMPV
LABELV $1035
ADDRGP4 level+884
INDIRI4
ADDRGP4 level+888
INDIRI4
CNSTI4 2
DIVI4
LTI4 $1016
line 1788
;1787:			// same behavior as a timeout
;1788:			G_BroadcastServerCommand( -1, "print \"Vote failed.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1034
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1789
;1789:		} else {
line 1791
;1790:			// still waiting for a majority
;1791:			return;
LABELV $1043
LABELV $1036
line 1793
;1792:		}
;1793:	}
LABELV $1031
line 1795
;1794:
;1795:	level.voteTime = 0;
ADDRGP4 level+872
CNSTI4 0
ASGNI4
line 1796
;1796:	trap_SetConfigstring( CS_VOTE_TIME, "" );
CNSTI4 8
ARGI4
ADDRGP4 $57
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1797
;1797:}
LABELV $1016
endproc CheckVote 4 8
proc PrintTeam 4 8
line 1805
;1798:
;1799:
;1800:/*
;1801:==================
;1802:PrintTeam
;1803:==================
;1804:*/
;1805:static void PrintTeam( team_t team, const char *message ) {
line 1808
;1806:	int i;
;1807:
;1808:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1051
JUMPV
LABELV $1048
line 1809
;1809:		if ( level.clients[i].sess.sessionTeam != team )
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1053
line 1810
;1810:			continue;
ADDRGP4 $1049
JUMPV
LABELV $1053
line 1811
;1811:		if ( level.clients[i].pers.connected != CON_CONNECTED )
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
EQI4 $1055
line 1812
;1812:			continue;
ADDRGP4 $1049
JUMPV
LABELV $1055
line 1813
;1813:		trap_SendServerCommand( i, message );
ADDRLP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1814
;1814:	}
LABELV $1049
line 1808
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1051
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1048
line 1815
;1815:}
LABELV $1047
endproc PrintTeam 4 8
export SetLeader
proc SetLeader 8 8
line 1823
;1816:
;1817:
;1818:/*
;1819:==================
;1820:SetLeader
;1821:==================
;1822:*/
;1823:void SetLeader( team_t team, int client ) {
line 1826
;1824:	int i;
;1825:
;1826:	if ( level.clients[client].pers.connected == CON_DISCONNECTED ) {
ADDRFP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1058
line 1827
;1827:		PrintTeam( team, va("print \"%s "S_COLOR_STRIP"is not connected\n\"", level.clients[client].pers.netname) );
ADDRGP4 $1060
ARGP4
ADDRFP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 508
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 PrintTeam
CALLV
pop
line 1828
;1828:		return;
ADDRGP4 $1057
JUMPV
LABELV $1058
line 1830
;1829:	}
;1830:	if (level.clients[client].sess.sessionTeam != team) {
ADDRFP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1061
line 1831
;1831:		PrintTeam( team, va("print \"%s "S_COLOR_STRIP"is not on the team anymore\n\"", level.clients[client].pers.netname) );
ADDRGP4 $1063
ARGP4
ADDRFP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 508
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 PrintTeam
CALLV
pop
line 1832
;1832:		return;
ADDRGP4 $1057
JUMPV
LABELV $1061
line 1834
;1833:	}
;1834:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1067
JUMPV
LABELV $1064
line 1835
;1835:		if (level.clients[i].sess.sessionTeam != team)
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1069
line 1836
;1836:			continue;
ADDRGP4 $1065
JUMPV
LABELV $1069
line 1837
;1837:		if (level.clients[i].sess.teamLeader) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 648
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1071
line 1838
;1838:			level.clients[i].sess.teamLeader = qfalse;
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 648
ADDP4
CNSTI4 0
ASGNI4
line 1839
;1839:			ClientUserinfoChanged( i );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLI4
pop
line 1840
;1840:		}
LABELV $1071
line 1841
;1841:	}
LABELV $1065
line 1834
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1067
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1064
line 1842
;1842:	level.clients[client].sess.teamLeader = qtrue;
ADDRFP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 648
ADDP4
CNSTI4 1
ASGNI4
line 1843
;1843:	ClientUserinfoChanged( client );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLI4
pop
line 1844
;1844:	PrintTeam( team, va("print \"%s is the new team leader\n\"", level.clients[client].pers.netname) );
ADDRGP4 $1073
ARGP4
ADDRFP4 4
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 508
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 PrintTeam
CALLV
pop
line 1845
;1845:}
LABELV $1057
endproc SetLeader 8 8
export CheckTeamLeader
proc CheckTeamLeader 28 8
line 1853
;1846:
;1847:
;1848:/*
;1849:==================
;1850:CheckTeamLeader
;1851:==================
;1852:*/
;1853:void CheckTeamLeader( team_t team ) {
line 1858
;1854:	int i;
;1855:	int	max_score, max_id;
;1856:	int	max_bot_score, max_bot_id;
;1857:
;1858:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1078
JUMPV
LABELV $1075
line 1860
;1859:
;1860:		if ( level.clients[i].sess.sessionTeam != team || level.clients[i].pers.connected == CON_DISCONNECTED )
ADDRLP4 24
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
NEI4 $1082
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1080
LABELV $1082
line 1861
;1861:			continue;
ADDRGP4 $1076
JUMPV
LABELV $1080
line 1863
;1862:
;1863:		if ( level.clients[i].sess.teamLeader )
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 648
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1083
line 1864
;1864:			return;
ADDRGP4 $1074
JUMPV
LABELV $1083
line 1865
;1865:	}
LABELV $1076
line 1858
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1078
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1075
line 1868
;1866:
;1867:	// no leaders? find player with highest score
;1868:	max_score = SHRT_MIN;
ADDRLP4 4
CNSTI4 -32768
ASGNI4
line 1869
;1869:	max_id = -1;
ADDRLP4 12
CNSTI4 -1
ASGNI4
line 1870
;1870:	max_bot_score = SHRT_MIN;
ADDRLP4 8
CNSTI4 -32768
ASGNI4
line 1871
;1871:	max_bot_id = -1;
ADDRLP4 16
CNSTI4 -1
ASGNI4
line 1873
;1872:
;1873:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1088
JUMPV
LABELV $1085
line 1875
;1874:
;1875:		if ( level.clients[i].sess.sessionTeam != team )
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 624
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1090
line 1876
;1876:			continue;
ADDRGP4 $1086
JUMPV
LABELV $1090
line 1878
;1877:
;1878:		if ( g_entities[i].r.svFlags & SVF_BOT ) {
ADDRLP4 0
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities+208+216
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
EQI4 $1092
line 1879
;1879:			if ( level.clients[i].ps.persistant[PERS_SCORE] > max_bot_score ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
LEI4 $1093
line 1880
;1880:				max_bot_score = level.clients[i].ps.persistant[PERS_SCORE];
ADDRLP4 8
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 1881
;1881:				max_bot_id = i;
ADDRLP4 16
ADDRLP4 0
INDIRI4
ASGNI4
line 1882
;1882:			}
line 1883
;1883:		} else {
ADDRGP4 $1093
JUMPV
LABELV $1092
line 1884
;1884:			if ( level.clients[i].ps.persistant[PERS_SCORE] > max_score ) {
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
LEI4 $1098
line 1885
;1885:				max_score = level.clients[i].ps.persistant[PERS_SCORE];
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 1636
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 248
ADDP4
INDIRI4
ASGNI4
line 1886
;1886:				max_id = i;
ADDRLP4 12
ADDRLP4 0
INDIRI4
ASGNI4
line 1887
;1887:			}
LABELV $1098
line 1888
;1888:		}
LABELV $1093
line 1889
;1889:	}
LABELV $1086
line 1873
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1088
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1085
line 1891
;1890:
;1891:	if ( max_id != -1 ) {
ADDRLP4 12
INDIRI4
CNSTI4 -1
EQI4 $1100
line 1892
;1892:		SetLeader( team, max_id ); 
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 SetLeader
CALLV
pop
line 1893
;1893:		return;
ADDRGP4 $1074
JUMPV
LABELV $1100
line 1896
;1894:	}
;1895:
;1896:	if ( max_bot_id != -1 ) {
ADDRLP4 16
INDIRI4
CNSTI4 -1
EQI4 $1102
line 1897
;1897:		SetLeader( team, max_bot_id );
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 SetLeader
CALLV
pop
line 1898
;1898:		return;
LABELV $1102
line 1900
;1899:	}
;1900:}
LABELV $1074
endproc CheckTeamLeader 28 8
proc CheckTeamVote 16 12
line 1908
;1901:
;1902:
;1903:/*
;1904:==================
;1905:CheckTeamVote
;1906:==================
;1907:*/
;1908:static void CheckTeamVote( team_t team ) {
line 1911
;1909:	int cs_offset;
;1910:
;1911:	if ( team == TEAM_RED )
ADDRFP4 0
INDIRI4
CNSTI4 1
NEI4 $1105
line 1912
;1912:		cs_offset = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1106
JUMPV
LABELV $1105
line 1913
;1913:	else if ( team == TEAM_BLUE )
ADDRFP4 0
INDIRI4
CNSTI4 2
NEI4 $1104
line 1914
;1914:		cs_offset = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 1916
;1915:	else
;1916:		return;
LABELV $1108
LABELV $1106
line 1918
;1917:
;1918:	if ( !level.teamVoteTime[cs_offset] ) {
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2940
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1109
line 1919
;1919:		return;
ADDRGP4 $1104
JUMPV
LABELV $1109
line 1921
;1920:	}
;1921:	if ( level.time - level.teamVoteTime[cs_offset] >= VOTE_TIME ) {
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2940
ADDP4
INDIRI4
SUBI4
CNSTI4 30000
LTI4 $1112
line 1922
;1922:		G_BroadcastServerCommand( -1, "print \"Team vote failed.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1116
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1923
;1923:	} else {
ADDRGP4 $1113
JUMPV
LABELV $1112
line 1924
;1924:		if ( level.teamVoteYes[cs_offset] > level.numteamVotingClients[cs_offset]/2 ) {
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2948
ADDP4
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2964
ADDP4
INDIRI4
CNSTI4 2
DIVI4
LEI4 $1117
line 1926
;1925:			// execute the command, then remove the vote
;1926:			G_BroadcastServerCommand( -1, "print \"Team vote passed.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1121
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1928
;1927:			//
;1928:			if ( !Q_strncmp( "leader", level.teamVoteString[cs_offset], 6) ) {
ADDRGP4 $1124
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 level+892
ADDP4
ARGP4
CNSTI4 6
ARGI4
ADDRLP4 8
ADDRGP4 Q_strncmp
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $1122
line 1930
;1929:				//set the team leader
;1930:				SetLeader(team, atoi(level.teamVoteString[cs_offset] + 7));
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 level+892+7
ADDP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 SetLeader
CALLV
pop
line 1931
;1931:			}
ADDRGP4 $1118
JUMPV
LABELV $1122
line 1932
;1932:			else {
line 1933
;1933:				trap_SendConsoleCommand( EXEC_APPEND, va("%s\n", level.teamVoteString[cs_offset] ) );
ADDRGP4 $1025
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 level+892
ADDP4
ARGP4
ADDRLP4 12
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 12
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 1934
;1934:			}
line 1935
;1935:		} else if ( level.teamVoteNo[cs_offset] >= level.numteamVotingClients[cs_offset]/2 ) {
ADDRGP4 $1118
JUMPV
LABELV $1117
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2956
ADDP4
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2964
ADDP4
INDIRI4
CNSTI4 2
DIVI4
LTI4 $1104
line 1937
;1936:			// same behavior as a timeout
;1937:			G_BroadcastServerCommand( -1, "print \"Team vote failed.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1116
ARGP4
ADDRGP4 G_BroadcastServerCommand
CALLV
pop
line 1938
;1938:		} else {
line 1940
;1939:			// still waiting for a majority
;1940:			return;
LABELV $1130
LABELV $1118
line 1942
;1941:		}
;1942:	}
LABELV $1113
line 1943
;1943:	level.teamVoteTime[cs_offset] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+2940
ADDP4
CNSTI4 0
ASGNI4
line 1944
;1944:	trap_SetConfigstring( CS_TEAMVOTE_TIME + cs_offset, "" );
ADDRLP4 0
INDIRI4
CNSTI4 12
ADDI4
ARGI4
ADDRGP4 $57
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1946
;1945:
;1946:}
LABELV $1104
endproc CheckTeamVote 16 12
data
align 4
LABELV $1135
byte 4 -1
export CheckCvars
code
proc CheckCvars 4 8
line 1954
;1947:
;1948:
;1949:/*
;1950:==================
;1951:CheckCvars
;1952:==================
;1953:*/
;1954:void CheckCvars( void ) {
line 1957
;1955:	static int lastMod = -1;
;1956:
;1957:	if ( lastMod != g_password.modificationCount ) {
ADDRGP4 $1135
INDIRI4
ADDRGP4 g_password+4
INDIRI4
EQI4 $1136
line 1958
;1958:		lastMod = g_password.modificationCount;
ADDRGP4 $1135
ADDRGP4 g_password+4
INDIRI4
ASGNI4
line 1959
;1959:		if ( g_password.string[0] && Q_stricmp( g_password.string, "none" ) != 0 ) {
ADDRGP4 g_password+16
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $1140
ADDRGP4 g_password+16
ARGP4
ADDRGP4 $1144
ARGP4
ADDRLP4 0
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $1140
line 1960
;1960:			trap_Cvar_Set( "g_needpass", "1" );
ADDRGP4 $88
ARGP4
ADDRGP4 $79
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1961
;1961:		} else {
ADDRGP4 $1141
JUMPV
LABELV $1140
line 1962
;1962:			trap_Cvar_Set( "g_needpass", "0" );
ADDRGP4 $88
ARGP4
ADDRGP4 $63
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1963
;1963:		}
LABELV $1141
line 1964
;1964:	}
LABELV $1136
line 1965
;1965:}
LABELV $1134
endproc CheckCvars 4 8
export G_RunThink
proc G_RunThink 8 4
line 1975
;1966:
;1967:
;1968:/*
;1969:=============
;1970:G_RunThink
;1971:
;1972:Runs thinking code for this frame if necessary
;1973:=============
;1974:*/
;1975:void G_RunThink( gentity_t *ent ) {
line 1978
;1976:	int	thinktime;
;1977:
;1978:	thinktime = ent->nextthink;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 688
ADDP4
INDIRI4
ASGNI4
line 1979
;1979:	if (thinktime <= 0) {
ADDRLP4 0
INDIRI4
CNSTI4 0
GTI4 $1146
line 1980
;1980:		return;
ADDRGP4 $1145
JUMPV
LABELV $1146
line 1982
;1981:	}
;1982:	if (thinktime > level.time) {
ADDRLP4 0
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $1148
line 1983
;1983:		return;
ADDRGP4 $1145
JUMPV
LABELV $1148
line 1986
;1984:	}
;1985:	
;1986:	ent->nextthink = 0;
ADDRFP4 0
INDIRP4
CNSTI4 688
ADDP4
CNSTI4 0
ASGNI4
line 1987
;1987:	if ( !ent->think ) {
ADDRFP4 0
INDIRP4
CNSTI4 692
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1151
line 1988
;1988:		G_Error ( "NULL ent->think");
ADDRGP4 $1153
ARGP4
ADDRGP4 G_Error
CALLV
pop
line 1989
;1989:	} else {
ADDRGP4 $1152
JUMPV
LABELV $1151
line 1990
;1990:		ent->think (ent);
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 692
ADDP4
INDIRP4
CALLV
pop
line 1991
;1991:	}
LABELV $1152
line 1992
;1992:}
LABELV $1145
endproc G_RunThink 8 4
bss
align 4
LABELV $1155
skip 3840
code
proc G_RunFrame 32 12
line 2002
;1993:
;1994:
;1995:/*
;1996:================
;1997:G_RunFrame
;1998:
;1999:Advances the non-player objects in the world
;2000:================
;2001:*/
;2002:static void G_RunFrame( int levelTime ) {
line 2010
;2003:	int			i;
;2004:	gentity_t	*ent;
;2005:	gclient_t	*client;
;2006:	static	gentity_t *missiles[ MAX_GENTITIES - MAX_CLIENTS ];
;2007:	int		numMissiles;
;2008:	
;2009:	// if we are waiting for the level to restart, do nothing
;2010:	if ( level.restarted ) {
ADDRGP4 level+72
INDIRI4
CNSTI4 0
EQI4 $1156
line 2011
;2011:		return;
ADDRGP4 $1154
JUMPV
LABELV $1156
line 2014
;2012:	}
;2013:
;2014:	level.framenum++;
ADDRLP4 16
ADDRGP4 level+28
ASGNP4
ADDRLP4 16
INDIRP4
ADDRLP4 16
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2015
;2015:	level.previousTime = level.time;
ADDRGP4 level+36
ADDRGP4 level+32
INDIRI4
ASGNI4
line 2016
;2016:	level.time = levelTime;
ADDRGP4 level+32
ADDRFP4 0
INDIRI4
ASGNI4
line 2017
;2017:	level.msec = level.time - level.previousTime;
ADDRGP4 level+44
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+36
INDIRI4
SUBI4
ASGNI4
line 2020
;2018:
;2019:	// get any cvar changes
;2020:	G_UpdateCvars();
ADDRGP4 G_UpdateCvars
CALLV
pop
line 2022
;2021:
;2022:	numMissiles = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 2027
;2023:
;2024:	//
;2025:	// go through all allocated objects
;2026:	//
;2027:	ent = &g_entities[0];
ADDRLP4 0
ADDRGP4 g_entities
ASGNP4
line 2028
;2028:	for (i=0 ; i<level.num_entities ; i++, ent++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1169
JUMPV
LABELV $1166
line 2029
;2029:		if ( !ent->inuse ) {
ADDRLP4 0
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1171
line 2030
;2030:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1171
line 2034
;2031:		}
;2032:
;2033:		// clear events that are too old
;2034:		if ( level.time - ent->eventTime > EVENT_VALID_MSEC ) {
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 552
ADDP4
INDIRI4
SUBI4
CNSTI4 300
LEI4 $1173
line 2035
;2035:			if ( ent->s.event ) {
ADDRLP4 0
INDIRP4
CNSTI4 180
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1176
line 2036
;2036:				ent->s.event = 0;	// &= EV_EVENT_BITS;
ADDRLP4 0
INDIRP4
CNSTI4 180
ADDP4
CNSTI4 0
ASGNI4
line 2037
;2037:				if ( ent->client ) {
ADDRLP4 0
INDIRP4
CNSTI4 516
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1178
line 2038
;2038:					ent->client->ps.externalEvent = 0;
ADDRLP4 0
INDIRP4
CNSTI4 516
ADDP4
INDIRP4
CNSTI4 128
ADDP4
CNSTI4 0
ASGNI4
line 2042
;2039:					// predicted events should never be set to zero
;2040:					//ent->client->ps.events[0] = 0;
;2041:					//ent->client->ps.events[1] = 0;
;2042:				}
LABELV $1178
line 2043
;2043:			}
LABELV $1176
line 2044
;2044:			if ( ent->freeAfterEvent ) {
ADDRLP4 0
INDIRP4
CNSTI4 556
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1180
line 2046
;2045:				// tempEntities or dropped items completely go away after their event
;2046:				G_FreeEntity( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 2047
;2047:				continue;
ADDRGP4 $1167
JUMPV
LABELV $1180
line 2048
;2048:			} else if ( ent->unlinkAfterEvent ) {
ADDRLP4 0
INDIRP4
CNSTI4 560
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1182
line 2050
;2049:				// items that will respawn will hide themselves after their pickup event
;2050:				ent->unlinkAfterEvent = qfalse;
ADDRLP4 0
INDIRP4
CNSTI4 560
ADDP4
CNSTI4 0
ASGNI4
line 2051
;2051:				trap_UnlinkEntity( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_UnlinkEntity
CALLV
pop
line 2052
;2052:			}
LABELV $1182
line 2053
;2053:		}
LABELV $1173
line 2056
;2054:
;2055:		// temporary entities don't think
;2056:		if ( ent->freeAfterEvent ) {
ADDRLP4 0
INDIRP4
CNSTI4 556
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1184
line 2057
;2057:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1184
line 2060
;2058:		}
;2059:
;2060:		if ( !ent->r.linked && ent->neverFree ) {
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1186
ADDRLP4 0
INDIRP4
CNSTI4 532
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1186
line 2061
;2061:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1186
line 2064
;2062:		}
;2063:
;2064:		if ( ent->s.eType == ET_MISSILE ) {
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1188
line 2066
;2065:			// queue for unlagged pass
;2066:			missiles[ numMissiles ] = ent;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1155
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
line 2067
;2067:			numMissiles++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2068
;2068:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1188
line 2071
;2069:		}
;2070:
;2071:		if ( ent->s.eType == ET_ITEM || ent->physicsObject ) {
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 2
EQI4 $1192
ADDRLP4 0
INDIRP4
CNSTI4 564
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1190
LABELV $1192
line 2072
;2072:			G_RunItem( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunItem
CALLV
pop
line 2073
;2073:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1190
line 2076
;2074:		}
;2075:
;2076:		if ( ent->s.eType == ET_MOVER ) {
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 4
NEI4 $1193
line 2077
;2077:			G_RunMover( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunMover
CALLV
pop
line 2078
;2078:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1193
line 2081
;2079:		}
;2080:
;2081:		if ( i < MAX_CLIENTS ) {
ADDRLP4 4
INDIRI4
CNSTI4 64
GEI4 $1195
line 2082
;2082:			client = ent->client;
ADDRLP4 12
ADDRLP4 0
INDIRP4
CNSTI4 516
ADDP4
INDIRP4
ASGNP4
line 2083
;2083:			client->sess.spectatorTime += level.msec; 
ADDRLP4 28
ADDRLP4 12
INDIRP4
CNSTI4 628
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
ADDRGP4 level+44
INDIRI4
ADDI4
ASGNI4
line 2084
;2084:			if ( client->pers.connected == CON_CONNECTED )
ADDRLP4 12
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
CNSTI4 2
NEI4 $1167
line 2085
;2085:				G_RunClient( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunClient
CALLV
pop
line 2086
;2086:			continue;
ADDRGP4 $1167
JUMPV
LABELV $1195
line 2089
;2087:		}
;2088:
;2089:		G_RunThink( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunThink
CALLV
pop
line 2090
;2090:	}
LABELV $1167
line 2028
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
LABELV $1169
ADDRLP4 4
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $1166
line 2092
;2091:
;2092:	if ( numMissiles ) {
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $1200
line 2094
;2093:		// unlagged
;2094:		G_TimeShiftAllClients( level.previousTime, NULL );
ADDRGP4 level+36
INDIRI4
ARGI4
CNSTP4 0
ARGP4
ADDRGP4 G_TimeShiftAllClients
CALLV
pop
line 2096
;2095:		// run missiles
;2096:		for ( i = 0; i < numMissiles; i++ )
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1206
JUMPV
LABELV $1203
line 2097
;2097:			G_RunMissile( missiles[ i ] );
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $1155
ADDP4
INDIRP4
ARGP4
ADDRGP4 G_RunMissile
CALLV
pop
LABELV $1204
line 2096
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1206
ADDRLP4 4
INDIRI4
ADDRLP4 8
INDIRI4
LTI4 $1203
line 2099
;2098:		// unlagged
;2099:		G_UnTimeShiftAllClients( NULL );
CNSTP4 0
ARGP4
ADDRGP4 G_UnTimeShiftAllClients
CALLV
pop
line 2100
;2100:	}
LABELV $1200
line 2103
;2101:
;2102:	// perform final fixups on the players
;2103:	ent = &g_entities[0];
ADDRLP4 0
ADDRGP4 g_entities
ASGNP4
line 2104
;2104:	for (i = 0 ; i < level.maxclients ; i++, ent++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1210
JUMPV
LABELV $1207
line 2105
;2105:		if ( ent->inuse ) {
ADDRLP4 0
INDIRP4
CNSTI4 520
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1212
line 2106
;2106:			ClientEndFrame( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 ClientEndFrame
CALLV
pop
line 2107
;2107:		}
LABELV $1212
line 2108
;2108:	}
LABELV $1208
line 2104
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
ASGNP4
LABELV $1210
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1207
line 2111
;2109:
;2110:	// see if it is time to do a tournement restart
;2111:	CheckTournament();
ADDRGP4 CheckTournament
CALLV
pop
line 2114
;2112:
;2113:	// see if it is time to end the level
;2114:	CheckExitRules();
ADDRGP4 CheckExitRules
CALLV
pop
line 2117
;2115:
;2116:	// update to team status?
;2117:	CheckTeamStatus();
ADDRGP4 CheckTeamStatus
CALLV
pop
line 2120
;2118:
;2119:	// cancel vote if timed out
;2120:	CheckVote();
ADDRGP4 CheckVote
CALLV
pop
line 2123
;2121:
;2122:	// check team votes
;2123:	CheckTeamVote( TEAM_RED );
CNSTI4 1
ARGI4
ADDRGP4 CheckTeamVote
CALLV
pop
line 2124
;2124:	CheckTeamVote( TEAM_BLUE );
CNSTI4 2
ARGI4
ADDRGP4 CheckTeamVote
CALLV
pop
line 2127
;2125:
;2126:	// for tracking changes
;2127:	CheckCvars();
ADDRGP4 CheckCvars
CALLV
pop
line 2129
;2128:
;2129:	if (g_listEntity.integer) {
ADDRGP4 g_listEntity+12
INDIRI4
CNSTI4 0
EQI4 $1214
line 2130
;2130:		for (i = 0; i < MAX_GENTITIES; i++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
LABELV $1217
line 2131
;2131:			G_Printf("%4i: %s\n", i, g_entities[i].classname);
ADDRGP4 $1221
ARGP4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
CNSTI4 824
MULI4
ADDRGP4 g_entities+524
ADDP4
INDIRP4
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2132
;2132:		}
LABELV $1218
line 2130
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $1217
line 2133
;2133:		trap_Cvar_Set("g_listEntity", "0");
ADDRGP4 $113
ARGP4
ADDRGP4 $63
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2134
;2134:	}
LABELV $1214
line 2137
;2135:
;2136:	// unlagged
;2137:	level.frameStartTime = trap_Milliseconds();
ADDRLP4 20
ADDRGP4 trap_Milliseconds
CALLI4
ASGNI4
ADDRGP4 level+11804
ADDRLP4 20
INDIRI4
ASGNI4
line 2138
;2138:}
LABELV $1154
endproc G_RunFrame 32 12
bss
export trap_GetValue
align 4
LABELV trap_GetValue
skip 4
export g_listEntity
align 4
LABELV g_listEntity
skip 272
export g_podiumDrop
align 4
LABELV g_podiumDrop
skip 272
export g_podiumDist
align 4
LABELV g_podiumDist
skip 272
export g_logSync
align 4
LABELV g_logSync
skip 272
export g_log
align 4
LABELV g_log
skip 272
export g_maxclients
align 4
LABELV g_maxclients
skip 272
export g_clients
align 4
LABELV g_clients
skip 104704
export svf_self_portal2
align 4
LABELV svf_self_portal2
skip 4
import trap_SnapVector
import trap_GeneticParentsAndChildSelection
import trap_BotResetWeaponState
import trap_BotFreeWeaponState
import trap_BotAllocWeaponState
import trap_BotLoadWeaponWeights
import trap_BotGetWeaponInfo
import trap_BotChooseBestFightWeapon
import trap_BotAddAvoidSpot
import trap_BotInitMoveState
import trap_BotFreeMoveState
import trap_BotAllocMoveState
import trap_BotPredictVisiblePosition
import trap_BotMovementViewTarget
import trap_BotReachabilityArea
import trap_BotResetLastAvoidReach
import trap_BotResetAvoidReach
import trap_BotMoveInDirection
import trap_BotMoveToGoal
import trap_BotResetMoveState
import trap_BotFreeGoalState
import trap_BotAllocGoalState
import trap_BotMutateGoalFuzzyLogic
import trap_BotSaveGoalFuzzyLogic
import trap_BotInterbreedGoalFuzzyLogic
import trap_BotFreeItemWeights
import trap_BotLoadItemWeights
import trap_BotUpdateEntityItems
import trap_BotInitLevelItems
import trap_BotSetAvoidGoalTime
import trap_BotAvoidGoalTime
import trap_BotGetLevelItemGoal
import trap_BotGetMapLocationGoal
import trap_BotGetNextCampSpotGoal
import trap_BotItemGoalInVisButNotVisible
import trap_BotTouchingGoal
import trap_BotChooseNBGItem
import trap_BotChooseLTGItem
import trap_BotGetSecondGoal
import trap_BotGetTopGoal
import trap_BotGoalName
import trap_BotDumpGoalStack
import trap_BotDumpAvoidGoals
import trap_BotEmptyGoalStack
import trap_BotPopGoal
import trap_BotPushGoal
import trap_BotResetAvoidGoals
import trap_BotRemoveFromAvoidGoals
import trap_BotResetGoalState
import trap_BotSetChatName
import trap_BotSetChatGender
import trap_BotLoadChatFile
import trap_BotReplaceSynonyms
import trap_UnifyWhiteSpaces
import trap_BotMatchVariable
import trap_BotFindMatch
import trap_StringContains
import trap_BotGetChatMessage
import trap_BotEnterChat
import trap_BotChatLength
import trap_BotReplyChat
import trap_BotNumInitialChats
import trap_BotInitialChat
import trap_BotNumConsoleMessages
import trap_BotNextConsoleMessage
import trap_BotRemoveConsoleMessage
import trap_BotQueueConsoleMessage
import trap_BotFreeChatState
import trap_BotAllocChatState
import trap_Characteristic_String
import trap_Characteristic_BInteger
import trap_Characteristic_Integer
import trap_Characteristic_BFloat
import trap_Characteristic_Float
import trap_BotFreeCharacter
import trap_BotLoadCharacter
import trap_EA_ResetInput
import trap_EA_GetInput
import trap_EA_EndRegular
import trap_EA_View
import trap_EA_Move
import trap_EA_DelayedJump
import trap_EA_Jump
import trap_EA_SelectWeapon
import trap_EA_MoveRight
import trap_EA_MoveLeft
import trap_EA_MoveBack
import trap_EA_MoveForward
import trap_EA_MoveDown
import trap_EA_MoveUp
import trap_EA_Crouch
import trap_EA_Respawn
import trap_EA_Use
import trap_EA_Attack
import trap_EA_Talk
import trap_EA_Gesture
import trap_EA_Action
import trap_EA_Command
import trap_EA_SayTeam
import trap_EA_Say
import trap_AAS_PredictClientMovement
import trap_AAS_Swimming
import trap_AAS_AlternativeRouteGoals
import trap_AAS_PredictRoute
import trap_AAS_EnableRoutingArea
import trap_AAS_AreaTravelTimeToGoalArea
import trap_AAS_AreaReachability
import trap_AAS_IntForBSPEpairKey
import trap_AAS_FloatForBSPEpairKey
import trap_AAS_VectorForBSPEpairKey
import trap_AAS_ValueForBSPEpairKey
import trap_AAS_NextBSPEntity
import trap_AAS_PointContents
import trap_AAS_TraceAreas
import trap_AAS_PointReachabilityAreaIndex
import trap_AAS_PointAreaNum
import trap_AAS_Time
import trap_AAS_PresenceTypeBoundingBox
import trap_AAS_Initialized
import trap_AAS_EntityInfo
import trap_AAS_AreaInfo
import trap_AAS_BBoxAreas
import trap_BotUserCommand
import trap_BotGetServerCommand
import trap_BotGetSnapshotEntity
import trap_BotLibTest
import trap_BotLibUpdateEntity
import trap_BotLibLoadMap
import trap_BotLibStartFrame
import trap_BotLibDefine
import trap_BotLibVarGet
import trap_BotLibVarSet
import trap_BotLibShutdown
import trap_BotLibSetup
import trap_DebugPolygonDelete
import trap_DebugPolygonCreate
import trap_GetEntityToken
import trap_GetUsercmd
import trap_BotFreeClient
import trap_BotAllocateClient
import trap_EntityContact
import trap_EntitiesInBox
import trap_UnlinkEntity
import trap_LinkEntity
import trap_AreasConnected
import trap_AdjustAreaPortalState
import trap_InPVSIgnorePortals
import trap_InPVS
import trap_PointContents
import trap_TraceCapsule
import trap_Trace
import trap_SetBrushModel
import trap_GetServerinfo
import trap_SetUserinfo
import trap_GetUserinfo
import trap_GetConfigstring
import trap_SetConfigstring
import trap_SendServerCommand
import trap_DropClient
import trap_LocateGameData
import trap_Cvar_VariableStringBuffer
import trap_Cvar_VariableValue
import trap_Cvar_VariableIntegerValue
import trap_Cvar_Set
import trap_Cvar_Update
import trap_Cvar_Register
import trap_SendConsoleCommand
import trap_FS_Seek
import trap_FS_GetFileList
import trap_FS_FCloseFile
import trap_FS_Write
import trap_FS_Read
import trap_FS_FOpenFile
import trap_Args
import trap_Argv
import trap_Argc
import trap_RealTime
import trap_Milliseconds
import trap_Error
import trap_Print
export g_proxMineTimeout
align 4
LABELV g_proxMineTimeout
skip 272
export g_singlePlayer
align 4
LABELV g_singlePlayer
skip 272
export g_enableBreath
align 4
LABELV g_enableBreath
skip 272
export g_enableDust
align 4
LABELV g_enableDust
skip 272
export g_predictPVS
align 4
LABELV g_predictPVS
skip 272
export g_unlagged
align 4
LABELV g_unlagged
skip 272
export g_rotation
align 4
LABELV g_rotation
skip 272
export pmove_msec
align 4
LABELV pmove_msec
skip 272
export pmove_fixed
align 4
LABELV pmove_fixed
skip 272
export g_smoothClients
align 4
LABELV g_smoothClients
skip 272
export g_blueteam
align 4
LABELV g_blueteam
skip 272
export g_redteam
align 4
LABELV g_redteam
skip 272
export g_cubeTimeout
align 4
LABELV g_cubeTimeout
skip 272
export g_obeliskRespawnDelay
align 4
LABELV g_obeliskRespawnDelay
skip 272
export g_obeliskRegenAmount
align 4
LABELV g_obeliskRegenAmount
skip 272
export g_obeliskRegenPeriod
align 4
LABELV g_obeliskRegenPeriod
skip 272
export g_obeliskHealth
align 4
LABELV g_obeliskHealth
skip 272
export g_filterBan
align 4
LABELV g_filterBan
skip 272
export g_banIPs
align 4
LABELV g_banIPs
skip 272
export g_teamForceBalance
align 4
LABELV g_teamForceBalance
skip 272
export g_autoJoin
align 4
LABELV g_autoJoin
skip 272
export g_allowVote
align 4
LABELV g_allowVote
skip 272
export g_blood
align 4
LABELV g_blood
skip 272
export g_warmup
align 4
LABELV g_warmup
skip 272
export g_motd
align 4
LABELV g_motd
skip 272
export g_synchronousClients
align 4
LABELV g_synchronousClients
skip 272
export g_weaponTeamRespawn
align 4
LABELV g_weaponTeamRespawn
skip 272
export g_weaponRespawn
align 4
LABELV g_weaponRespawn
skip 272
export g_debugDamage
align 4
LABELV g_debugDamage
skip 272
export g_debugAlloc
align 4
LABELV g_debugAlloc
skip 272
export g_debugMove
align 4
LABELV g_debugMove
skip 272
export g_inactivity
align 4
LABELV g_inactivity
skip 272
export g_forcerespawn
align 4
LABELV g_forcerespawn
skip 272
export g_quadfactor
align 4
LABELV g_quadfactor
skip 272
export g_knockback
align 4
LABELV g_knockback
skip 272
export g_speed
align 4
LABELV g_speed
skip 272
export g_gravity
align 4
LABELV g_gravity
skip 272
export g_needpass
align 4
LABELV g_needpass
skip 272
export g_password
align 4
LABELV g_password
skip 272
export g_friendlyFire
align 4
LABELV g_friendlyFire
skip 272
export g_capturelimit
align 4
LABELV g_capturelimit
skip 272
export g_timelimit
align 4
LABELV g_timelimit
skip 272
export g_fraglimit
align 4
LABELV g_fraglimit
skip 272
export g_dmflags
align 4
LABELV g_dmflags
skip 272
export g_restarted
align 4
LABELV g_restarted
skip 272
export g_maxGameClients
align 4
LABELV g_maxGameClients
skip 272
export g_cheats
align 4
LABELV g_cheats
skip 272
export g_dedicated
align 4
LABELV g_dedicated
skip 272
export sv_fps
align 4
LABELV sv_fps
skip 272
export g_mapname
align 4
LABELV g_mapname
skip 272
export g_gametype
align 4
LABELV g_gametype
skip 272
export g_entities
align 4
LABELV g_entities
skip 843776
export level
align 4
LABELV level
skip 11808
import AddTeamScore
import Pickup_Team
import CheckTeamStatus
import TeamplayInfoMessage
import Team_GetLocationMsg
import Team_GetLocation
import SelectCTFSpawnPoint
import Team_FreeEntity
import Team_ReturnFlag
import Team_InitGame
import Team_CheckHurtCarrier
import Team_FragBonuses
import Team_DroppedFlagThink
import TeamColorString
import OtherTeamName
import TeamName
import OtherTeam
import G_MapExist
import G_LoadMap
import ParseMapRotation
import BotTestAAS
import BotAIStartFrame
import BotAIShutdownClient
import BotAISetupClient
import BotAILoadMap
import BotAIShutdown
import BotAISetup
import BotInterbreedEndMatch
import Svcmd_BotList_f
import Svcmd_AddBot_f
import G_BotConnect
import G_RemoveQueuedBotBegin
import G_CheckBotSpawn
import G_GetBotInfoByName
import G_GetBotInfoByNumber
import G_InitBots
import G_PredictPlayerMove
import G_UnTimeShiftClient
import G_UndoTimeShiftFor
import G_DoTimeShiftFor
import G_UnTimeShiftAllClients
import G_TimeShiftAllClients
import G_StoreHistory
import G_ResetHistory
import Svcmd_AbortPodium_f
import SpawnModelsOnVictoryPads
import UpdateTournamentInfo
import G_ClearClientSessionData
import G_WriteClientSessionData
import G_ReadClientSessionData
import G_InitSessionData
import G_WriteSessionData
import G_InitWorldSession
import Svcmd_GameMem_f
import G_InitMemory
import G_Alloc
import Team_ResetFlags
import CheckObeliskAttack
import Team_CheckDroppedItem
import OnSameTeam
import G_RunClient
import ClientEndFrame
import ClientThink
import ClientCommand
import ClientBegin
import ClientDisconnect
import ClientUserinfoChanged
import ClientConnect
import DeathmatchScoreboardMessage
import G_StartKamikaze
import FireWeapon
import G_FilterPacket
import G_ProcessIPBans
import ConsoleCommand
import SpotWouldTelefrag
import AddScore
import player_die
import ClientSpawn
import InitBodyQue
import respawn
import CopyToBodyQue
import SelectSpawnPoint
import SetClientViewAngle
import PickTeam
import TeamLeader
import TeamConnectedCount
import TeamCount
import Weapon_HookThink
import Weapon_HookFree
import CheckGauntletAttack
import SnapVectorTowards
import CalcMuzzlePoint
import LogAccuracyHit
import DropPortalDestination
import DropPortalSource
import TeleportPlayer
import trigger_teleporter_touch
import Touch_DoorTrigger
import G_RunMover
import fire_prox
import fire_nail
import fire_grapple
import fire_bfg
import fire_rocket
import fire_grenade
import fire_plasma
import fire_blaster
import G_RunMissile
import TossClientCubes
import TossClientPersistantPowerups
import TossClientItems
import body_die
import G_InvulnerabilityEffect
import G_RadiusDamage
import G_Damage
import CanDamage
import BuildShaderStateConfig
import AddRemap
import G_SetOrigin
import G_AddEvent
import G_AddPredictableEvent
import vectoyaw
import vtos
import tv
import G_TouchSolids
import G_TouchTriggers
import G_EntitiesFree
import G_FreeEntity
import G_Sound
import G_TempEntity
import G_Spawn
import G_InitGentity
import G_SetMovedir
import G_UseTargets
import G_PickTarget
import G_Find
import G_KillBox
import G_TeamCommand
import G_SoundIndex
import G_ModelIndex
import SaveRegisteredItems
import RegisterItem
import ClearRegisteredItems
import Touch_Item
import ArmorIndex
import Think_Weapon
import FinishSpawningItem
import G_SpawnItem
import SetRespawn
import LaunchItem
import Drop_Item
import PrecacheItem
import UseHoldableItem
import SpawnTime
import RespawnItem
import G_RunItem
import G_CheckTeamItems
import G_RevertVote
import Cmd_FollowCycle_f
import SetTeam
import BroadcastTeamChange
import StopFollowing
import Cmd_Score_f
import G_NewString
import G_SpawnEntitiesFromString
import G_SpawnVector
import G_SpawnInt
import G_SpawnFloat
import G_SpawnString
import BigEndian
import replace1
import Q_stradd
import Q_strcpy
import BG_StripColor
import BG_CleanName
import DecodedString
import EncodedString
import strtok
import Q_stristr
import BG_sprintf
import BG_PlayerTouchesItem
import BG_PlayerStateToEntityStateExtraPolate
import BG_PlayerStateToEntityState
import BG_TouchJumpPad
import BG_AddPredictableEventToPlayerstate
import BG_EvaluateTrajectoryDelta
import BG_EvaluateTrajectory
import BG_CanItemBeGrabbed
import BG_FindItemForHoldable
import BG_FindItemForPowerup
import BG_FindItemForWeapon
import BG_FindItem
import bg_numItems
import bg_itemlist
import Pmove
import PM_UpdateViewAngles
import gt
import Info_NextPair
import Info_ValidateKeyValue
import Info_Validate
import Info_SetValueForKey_Big
import Info_SetValueForKey
import Info_ValueForKey
import va
import Q_CleanStr
import Q_PrintStrlen
import Q_strcat
import Q_strncpyz
import Q_strrchr
import Q_strupr
import Q_strlwr
import Q_stricmpn
import Q_strncmp
import Q_stricmp
import Q_isalpha
import Q_isupper
import Q_islower
import Q_isprint
import locase
import Com_sprintf
import Parse3DMatrix
import Parse2DMatrix
import Parse1DMatrix
import SkipRestOfLine
import SkipBracedSection
import COM_MatchToken
import Com_Split
import COM_ParseSep
import Com_InitSeparators
import SkipTillSeparators
import COM_ParseWarning
import COM_ParseError
import COM_Compress
import COM_ParseExt
import COM_Parse
import COM_GetCurrentParseLine
import COM_BeginParseSession
import COM_DefaultExtension
import COM_StripExtension
import COM_SkipPath
import Com_Clamp
import PerpendicularVector
import AngleVectors
import MatrixMultiply
import MakeNormalVectors
import RotateAroundDirection
import RotatePointAroundVector
import ProjectPointOnPlane
import PlaneFromPoints
import AngleDelta
import AngleNormalize180
import AngleNormalize360
import AnglesSubtract
import AngleSubtract
import LerpAngle
import AngleMod
import BoxOnPlaneSide
import SetPlaneSignbits
import AxisCopy
import AxisClear
import AnglesToAxis
import vectoangles
import Q_crandom
import Q_random
import Q_rand
import Q_acos
import Q_log2
import VectorRotate
import Vector4Scale
import VectorNormalize2
import VectorNormalize
import CrossProduct
import VectorInverse
import VectorNormalizeFast
import DistanceSquared
import Distance
import VectorLengthSquared
import VectorLength
import VectorCompare
import AddPointToBounds
import ClearBounds
import RadiusFromBounds
import NormalizeColor
import ColorBytes4
import ColorBytes3
import _VectorMA
import _VectorScale
import _VectorCopy
import _VectorAdd
import _VectorSubtract
import _DotProduct
import ByteToDir
import DirToByte
import ClampShort
import ClampChar
import Q_rsqrt
import Q_fabs
import axisDefault
import vec3_origin
import g_color_table
import colorDkGrey
import colorMdGrey
import colorLtGrey
import colorWhite
import colorCyan
import colorMagenta
import colorYellow
import colorBlue
import colorGreen
import colorRed
import colorBlack
import bytedirs
import Hunk_Alloc
import acos
import fabs
import abs
import tan
import atan2
import cos
import sin
import sqrt
import floor
import ceil
import memcpy
import memset
import memmove
import Q_sscanf
import ED_vsprintf
import atoi
import atof
import toupper
import tolower
import strncpy
import strstr
import strchr
import strcmp
import strcpy
import strcat
import strlen
import rand
import srand
import qsort
lit
align 1
LABELV $1221
byte 1 37
byte 1 52
byte 1 105
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $1153
byte 1 78
byte 1 85
byte 1 76
byte 1 76
byte 1 32
byte 1 101
byte 1 110
byte 1 116
byte 1 45
byte 1 62
byte 1 116
byte 1 104
byte 1 105
byte 1 110
byte 1 107
byte 1 0
align 1
LABELV $1144
byte 1 110
byte 1 111
byte 1 110
byte 1 101
byte 1 0
align 1
LABELV $1124
byte 1 108
byte 1 101
byte 1 97
byte 1 100
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $1121
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 84
byte 1 101
byte 1 97
byte 1 109
byte 1 32
byte 1 118
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 112
byte 1 97
byte 1 115
byte 1 115
byte 1 101
byte 1 100
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1116
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 84
byte 1 101
byte 1 97
byte 1 109
byte 1 32
byte 1 118
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 102
byte 1 97
byte 1 105
byte 1 108
byte 1 101
byte 1 100
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1073
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 37
byte 1 115
byte 1 32
byte 1 105
byte 1 115
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 110
byte 1 101
byte 1 119
byte 1 32
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 32
byte 1 108
byte 1 101
byte 1 97
byte 1 100
byte 1 101
byte 1 114
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1063
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 37
byte 1 115
byte 1 32
byte 1 94
byte 1 55
byte 1 105
byte 1 115
byte 1 32
byte 1 110
byte 1 111
byte 1 116
byte 1 32
byte 1 111
byte 1 110
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 32
byte 1 97
byte 1 110
byte 1 121
byte 1 109
byte 1 111
byte 1 114
byte 1 101
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1060
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 37
byte 1 115
byte 1 32
byte 1 94
byte 1 55
byte 1 105
byte 1 115
byte 1 32
byte 1 110
byte 1 111
byte 1 116
byte 1 32
byte 1 99
byte 1 111
byte 1 110
byte 1 110
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1039
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 86
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 112
byte 1 97
byte 1 115
byte 1 115
byte 1 101
byte 1 100
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1034
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 86
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 102
byte 1 97
byte 1 105
byte 1 108
byte 1 101
byte 1 100
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1025
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $937
byte 1 87
byte 1 97
byte 1 114
byte 1 109
byte 1 117
byte 1 112
byte 1 58
byte 1 10
byte 1 0
align 1
LABELV $887
byte 1 109
byte 1 97
byte 1 112
byte 1 95
byte 1 114
byte 1 101
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 0
align 1
LABELV $860
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 66
byte 1 108
byte 1 117
byte 1 101
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 99
byte 1 97
byte 1 112
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $854
byte 1 67
byte 1 97
byte 1 112
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 46
byte 1 0
align 1
LABELV $853
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 82
byte 1 101
byte 1 100
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 99
byte 1 97
byte 1 112
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $842
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 37
byte 1 115
byte 1 94
byte 1 55
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 102
byte 1 114
byte 1 97
byte 1 103
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $829
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 66
byte 1 108
byte 1 117
byte 1 101
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 102
byte 1 114
byte 1 97
byte 1 103
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $823
byte 1 70
byte 1 114
byte 1 97
byte 1 103
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 46
byte 1 0
align 1
LABELV $822
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 82
byte 1 101
byte 1 100
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 32
byte 1 116
byte 1 104
byte 1 101
byte 1 32
byte 1 102
byte 1 114
byte 1 97
byte 1 103
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $809
byte 1 84
byte 1 105
byte 1 109
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 46
byte 1 0
align 1
LABELV $808
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 84
byte 1 105
byte 1 109
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 32
byte 1 104
byte 1 105
byte 1 116
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $712
byte 1 115
byte 1 99
byte 1 111
byte 1 114
byte 1 101
byte 1 58
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 32
byte 1 112
byte 1 105
byte 1 110
byte 1 103
byte 1 58
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 32
byte 1 99
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 58
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $695
byte 1 114
byte 1 101
byte 1 100
byte 1 58
byte 1 37
byte 1 105
byte 1 32
byte 1 32
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 58
byte 1 37
byte 1 105
byte 1 10
byte 1 0
align 1
LABELV $685
byte 1 69
byte 1 120
byte 1 105
byte 1 116
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $679
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $674
byte 1 37
byte 1 51
byte 1 105
byte 1 58
byte 1 37
byte 1 48
byte 1 50
byte 1 105
byte 1 46
byte 1 37
byte 1 105
byte 1 32
byte 1 0
align 1
LABELV $671
byte 1 118
byte 1 115
byte 1 116
byte 1 114
byte 1 32
byte 1 110
byte 1 101
byte 1 120
byte 1 116
byte 1 109
byte 1 97
byte 1 112
byte 1 10
byte 1 0
align 1
LABELV $669
byte 1 109
byte 1 97
byte 1 112
byte 1 95
byte 1 114
byte 1 101
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 32
byte 1 0
align 1
LABELV $666
byte 1 110
byte 1 101
byte 1 120
byte 1 116
byte 1 109
byte 1 97
byte 1 112
byte 1 0
align 1
LABELV $642
byte 1 109
byte 1 97
byte 1 112
byte 1 95
byte 1 114
byte 1 101
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 32
byte 1 48
byte 1 10
byte 1 0
align 1
LABELV $557
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $416
byte 1 115
byte 1 0
align 1
LABELV $407
byte 1 102
byte 1 0
align 1
LABELV $373
byte 1 83
byte 1 104
byte 1 117
byte 1 116
byte 1 100
byte 1 111
byte 1 119
byte 1 110
byte 1 71
byte 1 97
byte 1 109
byte 1 101
byte 1 58
byte 1 10
byte 1 0
align 1
LABELV $369
byte 1 61
byte 1 61
byte 1 61
byte 1 61
byte 1 32
byte 1 83
byte 1 104
byte 1 117
byte 1 116
byte 1 100
byte 1 111
byte 1 119
byte 1 110
byte 1 71
byte 1 97
byte 1 109
byte 1 101
byte 1 32
byte 1 61
byte 1 61
byte 1 61
byte 1 61
byte 1 10
byte 1 0
align 1
LABELV $366
byte 1 115
byte 1 101
byte 1 115
byte 1 115
byte 1 105
byte 1 111
byte 1 110
byte 1 77
byte 1 97
byte 1 112
byte 1 73
byte 1 110
byte 1 100
byte 1 101
byte 1 120
byte 1 0
align 1
LABELV $360
byte 1 98
byte 1 111
byte 1 116
byte 1 95
byte 1 101
byte 1 110
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $357
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 115
byte 1 47
byte 1 109
byte 1 97
byte 1 112
byte 1 111
byte 1 98
byte 1 106
byte 1 101
byte 1 99
byte 1 116
byte 1 115
byte 1 47
byte 1 112
byte 1 111
byte 1 100
byte 1 105
byte 1 117
byte 1 109
byte 1 47
byte 1 112
byte 1 111
byte 1 100
byte 1 105
byte 1 117
byte 1 109
byte 1 52
byte 1 46
byte 1 109
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $355
byte 1 99
byte 1 111
byte 1 109
byte 1 95
byte 1 98
byte 1 117
byte 1 105
byte 1 108
byte 1 100
byte 1 83
byte 1 99
byte 1 114
byte 1 105
byte 1 112
byte 1 116
byte 1 0
align 1
LABELV $351
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 10
byte 1 0
align 1
LABELV $344
byte 1 99
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 115
byte 1 108
byte 1 111
byte 1 116
byte 1 0
align 1
LABELV $328
byte 1 78
byte 1 111
byte 1 116
byte 1 32
byte 1 108
byte 1 111
byte 1 103
byte 1 103
byte 1 105
byte 1 110
byte 1 103
byte 1 32
byte 1 116
byte 1 111
byte 1 32
byte 1 100
byte 1 105
byte 1 115
byte 1 107
byte 1 46
byte 1 10
byte 1 0
align 1
LABELV $327
byte 1 73
byte 1 110
byte 1 105
byte 1 116
byte 1 71
byte 1 97
byte 1 109
byte 1 101
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $326
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 10
byte 1 0
align 1
LABELV $324
byte 1 87
byte 1 65
byte 1 82
byte 1 78
byte 1 73
byte 1 78
byte 1 71
byte 1 58
byte 1 32
byte 1 67
byte 1 111
byte 1 117
byte 1 108
byte 1 100
byte 1 110
byte 1 39
byte 1 116
byte 1 32
byte 1 111
byte 1 112
byte 1 101
byte 1 110
byte 1 32
byte 1 108
byte 1 111
byte 1 103
byte 1 102
byte 1 105
byte 1 108
byte 1 101
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $309
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 47
byte 1 102
byte 1 114
byte 1 121
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $303
byte 1 83
byte 1 86
byte 1 70
byte 1 95
byte 1 83
byte 1 69
byte 1 76
byte 1 70
byte 1 95
byte 1 80
byte 1 79
byte 1 82
byte 1 84
byte 1 65
byte 1 76
byte 1 50
byte 1 95
byte 1 81
byte 1 51
byte 1 69
byte 1 0
align 1
LABELV $298
byte 1 47
byte 1 47
byte 1 116
byte 1 114
byte 1 97
byte 1 112
byte 1 95
byte 1 71
byte 1 101
byte 1 116
byte 1 86
byte 1 97
byte 1 108
byte 1 117
byte 1 101
byte 1 0
align 1
LABELV $297
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 100
byte 1 97
byte 1 116
byte 1 101
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $296
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $295
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 32
byte 1 71
byte 1 97
byte 1 109
byte 1 101
byte 1 32
byte 1 73
byte 1 110
byte 1 105
byte 1 116
byte 1 105
byte 1 97
byte 1 108
byte 1 105
byte 1 122
byte 1 97
byte 1 116
byte 1 105
byte 1 111
byte 1 110
byte 1 32
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 45
byte 1 10
byte 1 0
align 1
LABELV $290
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $285
byte 1 114
byte 1 101
byte 1 100
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $280
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 0
align 1
LABELV $275
byte 1 114
byte 1 101
byte 1 100
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 0
align 1
LABELV $272
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 95
byte 1 67
byte 1 84
byte 1 70
byte 1 95
byte 1 0
align 1
LABELV $267
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 109
byte 1 97
byte 1 116
byte 1 99
byte 1 104
byte 1 0
align 1
LABELV $258
byte 1 105
byte 1 110
byte 1 116
byte 1 101
byte 1 114
byte 1 109
byte 1 105
byte 1 115
byte 1 115
byte 1 105
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $255
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 95
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 95
byte 1 0
align 1
LABELV $237
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 32
byte 1 34
byte 1 83
byte 1 101
byte 1 114
byte 1 118
byte 1 101
byte 1 114
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 99
byte 1 104
byte 1 97
byte 1 110
byte 1 103
byte 1 101
byte 1 100
byte 1 32
byte 1 116
byte 1 111
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $225
byte 1 103
byte 1 95
byte 1 100
byte 1 111
byte 1 87
byte 1 97
byte 1 114
byte 1 109
byte 1 117
byte 1 112
byte 1 0
align 1
LABELV $221
byte 1 103
byte 1 95
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 116
byte 1 121
byte 1 112
byte 1 101
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 105
byte 1 115
byte 1 32
byte 1 111
byte 1 117
byte 1 116
byte 1 32
byte 1 111
byte 1 102
byte 1 32
byte 1 114
byte 1 97
byte 1 110
byte 1 103
byte 1 101
byte 1 44
byte 1 32
byte 1 100
byte 1 101
byte 1 102
byte 1 97
byte 1 117
byte 1 108
byte 1 116
byte 1 105
byte 1 110
byte 1 103
byte 1 32
byte 1 116
byte 1 111
byte 1 32
byte 1 48
byte 1 10
byte 1 0
align 1
LABELV $204
byte 1 116
byte 1 101
byte 1 120
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 115
byte 1 47
byte 1 99
byte 1 116
byte 1 102
byte 1 50
byte 1 47
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 48
byte 1 50
byte 1 0
align 1
LABELV $203
byte 1 116
byte 1 101
byte 1 120
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 115
byte 1 47
byte 1 99
byte 1 116
byte 1 102
byte 1 50
byte 1 47
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 48
byte 1 49
byte 1 0
align 1
LABELV $201
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 95
byte 1 105
byte 1 99
byte 1 111
byte 1 110
byte 1 47
byte 1 37
byte 1 115
byte 1 95
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 0
align 1
LABELV $200
byte 1 116
byte 1 101
byte 1 120
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 115
byte 1 47
byte 1 99
byte 1 116
byte 1 102
byte 1 50
byte 1 47
byte 1 114
byte 1 101
byte 1 100
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 48
byte 1 50
byte 1 0
align 1
LABELV $199
byte 1 116
byte 1 101
byte 1 120
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 115
byte 1 47
byte 1 99
byte 1 116
byte 1 102
byte 1 50
byte 1 47
byte 1 114
byte 1 101
byte 1 100
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 48
byte 1 49
byte 1 0
align 1
LABELV $197
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 95
byte 1 105
byte 1 99
byte 1 111
byte 1 110
byte 1 47
byte 1 37
byte 1 115
byte 1 95
byte 1 114
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $194
byte 1 37
byte 1 105
byte 1 32
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 115
byte 1 32
byte 1 119
byte 1 105
byte 1 116
byte 1 104
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 101
byte 1 110
byte 1 116
byte 1 105
byte 1 116
byte 1 105
byte 1 101
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $136
byte 1 103
byte 1 95
byte 1 114
byte 1 111
byte 1 116
byte 1 97
byte 1 116
byte 1 105
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $135
byte 1 112
byte 1 109
byte 1 111
byte 1 118
byte 1 101
byte 1 95
byte 1 109
byte 1 115
byte 1 101
byte 1 99
byte 1 0
align 1
LABELV $134
byte 1 112
byte 1 109
byte 1 111
byte 1 118
byte 1 101
byte 1 95
byte 1 102
byte 1 105
byte 1 120
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $133
byte 1 103
byte 1 95
byte 1 115
byte 1 109
byte 1 111
byte 1 111
byte 1 116
byte 1 104
byte 1 67
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 115
byte 1 0
align 1
LABELV $132
byte 1 50
byte 1 48
byte 1 48
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $131
byte 1 103
byte 1 95
byte 1 112
byte 1 114
byte 1 111
byte 1 120
byte 1 77
byte 1 105
byte 1 110
byte 1 101
byte 1 84
byte 1 105
byte 1 109
byte 1 101
byte 1 111
byte 1 117
byte 1 116
byte 1 0
align 1
LABELV $130
byte 1 103
byte 1 95
byte 1 101
byte 1 110
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 66
byte 1 114
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 0
align 1
LABELV $129
byte 1 103
byte 1 95
byte 1 101
byte 1 110
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 68
byte 1 117
byte 1 115
byte 1 116
byte 1 0
align 1
LABELV $128
byte 1 117
byte 1 105
byte 1 95
byte 1 115
byte 1 105
byte 1 110
byte 1 103
byte 1 108
byte 1 101
byte 1 80
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 65
byte 1 99
byte 1 116
byte 1 105
byte 1 118
byte 1 101
byte 1 0
align 1
LABELV $127
byte 1 80
byte 1 97
byte 1 103
byte 1 97
byte 1 110
byte 1 115
byte 1 0
align 1
LABELV $126
byte 1 103
byte 1 95
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 0
align 1
LABELV $125
byte 1 83
byte 1 116
byte 1 114
byte 1 111
byte 1 103
byte 1 103
byte 1 115
byte 1 0
align 1
LABELV $124
byte 1 103
byte 1 95
byte 1 114
byte 1 101
byte 1 100
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 0
align 1
LABELV $123
byte 1 103
byte 1 95
byte 1 99
byte 1 117
byte 1 98
byte 1 101
byte 1 84
byte 1 105
byte 1 109
byte 1 101
byte 1 111
byte 1 117
byte 1 116
byte 1 0
align 1
LABELV $122
byte 1 49
byte 1 48
byte 1 0
align 1
LABELV $121
byte 1 103
byte 1 95
byte 1 111
byte 1 98
byte 1 101
byte 1 108
byte 1 105
byte 1 115
byte 1 107
byte 1 82
byte 1 101
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 68
byte 1 101
byte 1 108
byte 1 97
byte 1 121
byte 1 0
align 1
LABELV $120
byte 1 49
byte 1 53
byte 1 0
align 1
LABELV $119
byte 1 103
byte 1 95
byte 1 111
byte 1 98
byte 1 101
byte 1 108
byte 1 105
byte 1 115
byte 1 107
byte 1 82
byte 1 101
byte 1 103
byte 1 101
byte 1 110
byte 1 65
byte 1 109
byte 1 111
byte 1 117
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $118
byte 1 103
byte 1 95
byte 1 111
byte 1 98
byte 1 101
byte 1 108
byte 1 105
byte 1 115
byte 1 107
byte 1 82
byte 1 101
byte 1 103
byte 1 101
byte 1 110
byte 1 80
byte 1 101
byte 1 114
byte 1 105
byte 1 111
byte 1 100
byte 1 0
align 1
LABELV $117
byte 1 50
byte 1 53
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $116
byte 1 103
byte 1 95
byte 1 111
byte 1 98
byte 1 101
byte 1 108
byte 1 105
byte 1 115
byte 1 107
byte 1 72
byte 1 101
byte 1 97
byte 1 108
byte 1 116
byte 1 104
byte 1 0
align 1
LABELV $115
byte 1 103
byte 1 95
byte 1 112
byte 1 114
byte 1 101
byte 1 100
byte 1 105
byte 1 99
byte 1 116
byte 1 80
byte 1 86
byte 1 83
byte 1 0
align 1
LABELV $114
byte 1 103
byte 1 95
byte 1 117
byte 1 110
byte 1 108
byte 1 97
byte 1 103
byte 1 103
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $113
byte 1 103
byte 1 95
byte 1 108
byte 1 105
byte 1 115
byte 1 116
byte 1 69
byte 1 110
byte 1 116
byte 1 105
byte 1 116
byte 1 121
byte 1 0
align 1
LABELV $112
byte 1 103
byte 1 95
byte 1 97
byte 1 108
byte 1 108
byte 1 111
byte 1 119
byte 1 86
byte 1 111
byte 1 116
byte 1 101
byte 1 0
align 1
LABELV $111
byte 1 55
byte 1 48
byte 1 0
align 1
LABELV $110
byte 1 103
byte 1 95
byte 1 112
byte 1 111
byte 1 100
byte 1 105
byte 1 117
byte 1 109
byte 1 68
byte 1 114
byte 1 111
byte 1 112
byte 1 0
align 1
LABELV $109
byte 1 56
byte 1 48
byte 1 0
align 1
LABELV $108
byte 1 103
byte 1 95
byte 1 112
byte 1 111
byte 1 100
byte 1 105
byte 1 117
byte 1 109
byte 1 68
byte 1 105
byte 1 115
byte 1 116
byte 1 0
align 1
LABELV $107
byte 1 99
byte 1 111
byte 1 109
byte 1 95
byte 1 98
byte 1 108
byte 1 111
byte 1 111
byte 1 100
byte 1 0
align 1
LABELV $106
byte 1 103
byte 1 95
byte 1 109
byte 1 111
byte 1 116
byte 1 100
byte 1 0
align 1
LABELV $105
byte 1 103
byte 1 95
byte 1 100
byte 1 101
byte 1 98
byte 1 117
byte 1 103
byte 1 65
byte 1 108
byte 1 108
byte 1 111
byte 1 99
byte 1 0
align 1
LABELV $104
byte 1 103
byte 1 95
byte 1 100
byte 1 101
byte 1 98
byte 1 117
byte 1 103
byte 1 68
byte 1 97
byte 1 109
byte 1 97
byte 1 103
byte 1 101
byte 1 0
align 1
LABELV $103
byte 1 103
byte 1 95
byte 1 100
byte 1 101
byte 1 98
byte 1 117
byte 1 103
byte 1 77
byte 1 111
byte 1 118
byte 1 101
byte 1 0
align 1
LABELV $102
byte 1 103
byte 1 95
byte 1 105
byte 1 110
byte 1 97
byte 1 99
byte 1 116
byte 1 105
byte 1 118
byte 1 105
byte 1 116
byte 1 121
byte 1 0
align 1
LABELV $101
byte 1 103
byte 1 95
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 114
byte 1 101
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 0
align 1
LABELV $100
byte 1 103
byte 1 95
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 84
byte 1 101
byte 1 97
byte 1 109
byte 1 82
byte 1 101
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 0
align 1
LABELV $99
byte 1 53
byte 1 0
align 1
LABELV $98
byte 1 103
byte 1 95
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 114
byte 1 101
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 0
align 1
LABELV $97
byte 1 51
byte 1 0
align 1
LABELV $96
byte 1 103
byte 1 95
byte 1 113
byte 1 117
byte 1 97
byte 1 100
byte 1 102
byte 1 97
byte 1 99
byte 1 116
byte 1 111
byte 1 114
byte 1 0
align 1
LABELV $95
byte 1 49
byte 1 48
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $94
byte 1 103
byte 1 95
byte 1 107
byte 1 110
byte 1 111
byte 1 99
byte 1 107
byte 1 98
byte 1 97
byte 1 99
byte 1 107
byte 1 0
align 1
LABELV $93
byte 1 56
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $92
byte 1 103
byte 1 95
byte 1 103
byte 1 114
byte 1 97
byte 1 118
byte 1 105
byte 1 116
byte 1 121
byte 1 0
align 1
LABELV $91
byte 1 51
byte 1 50
byte 1 48
byte 1 0
align 1
LABELV $90
byte 1 103
byte 1 95
byte 1 115
byte 1 112
byte 1 101
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $89
byte 1 100
byte 1 101
byte 1 100
byte 1 105
byte 1 99
byte 1 97
byte 1 116
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $88
byte 1 103
byte 1 95
byte 1 110
byte 1 101
byte 1 101
byte 1 100
byte 1 112
byte 1 97
byte 1 115
byte 1 115
byte 1 0
align 1
LABELV $87
byte 1 103
byte 1 95
byte 1 102
byte 1 105
byte 1 108
byte 1 116
byte 1 101
byte 1 114
byte 1 66
byte 1 97
byte 1 110
byte 1 0
align 1
LABELV $86
byte 1 103
byte 1 95
byte 1 98
byte 1 97
byte 1 110
byte 1 73
byte 1 80
byte 1 115
byte 1 0
align 1
LABELV $85
byte 1 103
byte 1 95
byte 1 112
byte 1 97
byte 1 115
byte 1 115
byte 1 119
byte 1 111
byte 1 114
byte 1 100
byte 1 0
align 1
LABELV $84
byte 1 103
byte 1 95
byte 1 108
byte 1 111
byte 1 103
byte 1 83
byte 1 121
byte 1 110
byte 1 99
byte 1 0
align 1
LABELV $83
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 115
byte 1 46
byte 1 108
byte 1 111
byte 1 103
byte 1 0
align 1
LABELV $82
byte 1 103
byte 1 95
byte 1 108
byte 1 111
byte 1 103
byte 1 0
align 1
LABELV $81
byte 1 103
byte 1 95
byte 1 119
byte 1 97
byte 1 114
byte 1 109
byte 1 117
byte 1 112
byte 1 0
align 1
LABELV $80
byte 1 103
byte 1 95
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 70
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 66
byte 1 97
byte 1 108
byte 1 97
byte 1 110
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $79
byte 1 49
byte 1 0
align 1
LABELV $78
byte 1 103
byte 1 95
byte 1 97
byte 1 117
byte 1 116
byte 1 111
byte 1 74
byte 1 111
byte 1 105
byte 1 110
byte 1 0
align 1
LABELV $77
byte 1 103
byte 1 95
byte 1 102
byte 1 114
byte 1 105
byte 1 101
byte 1 110
byte 1 100
byte 1 108
byte 1 121
byte 1 70
byte 1 105
byte 1 114
byte 1 101
byte 1 0
align 1
LABELV $76
byte 1 103
byte 1 95
byte 1 115
byte 1 121
byte 1 110
byte 1 99
byte 1 104
byte 1 114
byte 1 111
byte 1 110
byte 1 111
byte 1 117
byte 1 115
byte 1 67
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 115
byte 1 0
align 1
LABELV $75
byte 1 99
byte 1 97
byte 1 112
byte 1 116
byte 1 117
byte 1 114
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 0
align 1
LABELV $74
byte 1 116
byte 1 105
byte 1 109
byte 1 101
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 0
align 1
LABELV $73
byte 1 50
byte 1 48
byte 1 0
align 1
LABELV $72
byte 1 102
byte 1 114
byte 1 97
byte 1 103
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 0
align 1
LABELV $71
byte 1 100
byte 1 109
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 115
byte 1 0
align 1
LABELV $70
byte 1 103
byte 1 95
byte 1 109
byte 1 97
byte 1 120
byte 1 71
byte 1 97
byte 1 109
byte 1 101
byte 1 67
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 115
byte 1 0
align 1
LABELV $69
byte 1 56
byte 1 0
align 1
LABELV $68
byte 1 115
byte 1 118
byte 1 95
byte 1 109
byte 1 97
byte 1 120
byte 1 99
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 115
byte 1 0
align 1
LABELV $67
byte 1 103
byte 1 95
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 116
byte 1 121
byte 1 112
byte 1 101
byte 1 0
align 1
LABELV $66
byte 1 51
byte 1 48
byte 1 0
align 1
LABELV $65
byte 1 115
byte 1 118
byte 1 95
byte 1 102
byte 1 112
byte 1 115
byte 1 0
align 1
LABELV $64
byte 1 109
byte 1 97
byte 1 112
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $63
byte 1 48
byte 1 0
align 1
LABELV $62
byte 1 103
byte 1 95
byte 1 114
byte 1 101
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $61
byte 1 77
byte 1 97
byte 1 114
byte 1 32
byte 1 48
byte 1 50
byte 1 32
byte 1 50
byte 1 48
byte 1 50
byte 1 49
byte 1 0
align 1
LABELV $60
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 100
byte 1 97
byte 1 116
byte 1 101
byte 1 0
align 1
LABELV $59
byte 1 98
byte 1 97
byte 1 115
byte 1 101
byte 1 113
byte 1 51
byte 1 0
align 1
LABELV $58
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $57
byte 1 0
align 1
LABELV $56
byte 1 115
byte 1 118
byte 1 95
byte 1 99
byte 1 104
byte 1 101
byte 1 97
byte 1 116
byte 1 115
byte 1 0
