data
export gDuelExit
align 4
LABELV gDuelExit
byte 4 0
export gDuelist1
align 4
LABELV gDuelist1
byte 4 -1
export gDuelist2
align 4
LABELV gDuelist2
byte 4 -1
align 4
LABELV gameCvarTable
address g_cheats
address $90
address $91
byte 4 0
byte 4 0
byte 4 0
skip 4
byte 4 0
address $92
address $93
byte 4 68
byte 4 0
byte 4 0
skip 4
byte 4 0
address $94
address $95
byte 4 64
byte 4 0
byte 4 0
skip 4
address g_restarted
address $96
address $97
byte 4 64
byte 4 0
byte 4 0
skip 4
byte 4 0
address $98
address $91
byte 4 68
byte 4 0
byte 4 0
skip 4
address g_gametype
address $99
address $97
byte 4 38
byte 4 0
byte 4 0
skip 4
address g_MaxHolocronCarry
address $100
address $101
byte 4 38
byte 4 0
byte 4 0
skip 4
address g_maxclients
address $102
address $103
byte 4 37
byte 4 0
byte 4 0
skip 4
address g_maxGameClients
address $104
address $97
byte 4 37
byte 4 0
byte 4 0
skip 4
address g_ff_objectives
address $105
address $97
byte 4 1024
byte 4 0
byte 4 1
skip 4
address g_trueJedi
address $106
address $97
byte 4 37
byte 4 0
byte 4 1
skip 4
address g_autoMapCycle
address $107
address $97
byte 4 1025
byte 4 0
byte 4 1
skip 4
address g_dmflags
address $108
address $97
byte 4 5
byte 4 0
byte 4 1
skip 4
address g_maxForceRank
address $109
address $110
byte 4 39
byte 4 0
byte 4 0
skip 4
address g_forceBasedTeams
address $111
address $97
byte 4 39
byte 4 0
byte 4 0
skip 4
address g_privateDuel
address $112
address $113
byte 4 5
byte 4 0
byte 4 1
skip 4
address g_saberLocking
address $114
address $113
byte 4 5
byte 4 0
byte 4 1
skip 4
address g_saberLockFactor
address $115
address $110
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_saberTraceSaberFirst
address $116
address $113
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_saberGhoul2Collision
address $117
address $97
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_saberAlwaysBoxTrace
address $118
address $97
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_saberBoxTraceSize
address $119
address $120
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_logClientInfo
address $121
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_slowmoDuelEnd
address $122
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_saberDamageScale
address $123
address $113
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_forceRegenTime
address $124
address $125
byte 4 5
byte 4 0
byte 4 1
skip 4
address g_spawnInvulnerability
address $126
address $127
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_forcePowerDisable
address $128
address $97
byte 4 37
byte 4 0
byte 4 1
skip 4
address g_weaponDisable
address $129
address $97
byte 4 37
byte 4 0
byte 4 1
skip 4
address g_duelWeaponDisable
address $130
address $113
byte 4 37
byte 4 0
byte 4 1
skip 4
address g_allowDuelSuicide
address $131
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_fraglimitVoteCorrection
address $132
address $113
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_fraglimit
address $133
address $134
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_duel_fraglimit
address $135
address $136
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_timelimit
address $137
address $97
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_capturelimit
address $138
address $103
byte 4 1029
byte 4 0
byte 4 1
skip 4
address g_synchronousClients
address $139
address $97
byte 4 8
byte 4 0
byte 4 0
skip 4
address g_saberInterpolate
address $140
address $113
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_friendlyFire
address $141
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_friendlySaber
address $142
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_teamAutoJoin
address $143
address $97
byte 4 1
skip 12
address g_teamForceBalance
address $144
address $97
byte 4 1
skip 12
address g_warmup
address $145
address $134
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_doWarmup
address $146
address $97
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_log
address $147
address $148
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_logSync
address $149
address $97
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_statLog
address $150
address $97
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_statLogFile
address $151
address $152
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_password
address $153
address $91
byte 4 2
byte 4 0
byte 4 0
skip 4
address g_banIPs
address $154
address $91
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_filterBan
address $155
address $113
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_needpass
address $156
address $97
byte 4 68
byte 4 0
byte 4 0
skip 4
address g_dedicated
address $157
address $97
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_speed
address $158
address $159
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_gravity
address $160
address $161
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_knockback
address $162
address $163
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_quadfactor
address $164
address $101
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_weaponRespawn
address $165
address $166
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_weaponTeamRespawn
address $167
address $166
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_adaptRespawn
address $168
address $113
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_forcerespawn
address $169
address $170
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_inactivity
address $171
address $97
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_debugMove
address $172
address $97
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_debugDamage
address $173
address $97
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_debugAlloc
address $174
address $97
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_motd
address $175
address $91
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_blood
address $176
address $113
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_podiumDist
address $177
address $178
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_podiumDrop
address $179
address $180
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_allowVote
address $181
address $113
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_listEntity
address $182
address $97
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_redteam
address $183
address $184
byte 4 7
byte 4 0
byte 4 1
byte 4 1
address g_blueteam
address $185
address $186
byte 4 7
byte 4 0
byte 4 1
byte 4 1
address g_singlePlayer
address $187
address $91
byte 4 0
byte 4 0
byte 4 0
byte 4 0
address g_enableDust
address $188
address $97
byte 4 0
byte 4 0
byte 4 1
byte 4 0
address g_enableBreath
address $189
address $97
byte 4 0
byte 4 0
byte 4 1
byte 4 0
address g_smoothClients
address $190
address $113
byte 4 0
byte 4 0
byte 4 0
skip 4
address pmove_fixed
address $191
address $97
byte 4 8
byte 4 0
byte 4 0
skip 4
address pmove_msec
address $192
address $103
byte 4 8
byte 4 0
byte 4 0
skip 4
address g_rankings
address $193
address $97
byte 4 0
byte 4 0
byte 4 0
skip 4
address g_dismember
address $194
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_forceDodge
address $195
address $113
byte 4 0
byte 4 0
byte 4 1
skip 4
address g_timeouttospec
address $196
address $180
byte 4 1
byte 4 0
byte 4 0
skip 4
address g_saberDmgVelocityScale
address $197
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_saberDmgDelay_Idle
address $198
address $199
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_saberDmgDelay_Wound
address $200
address $97
byte 4 1
byte 4 0
byte 4 1
skip 4
address g_saberDebugPrint
address $201
address $97
byte 4 512
byte 4 0
byte 4 0
skip 4
address g_austrian
address $202
address $97
byte 4 1
byte 4 0
byte 4 0
skip 4
align 4
LABELV gameCvarTableSize
byte 4 88
export vmMain
code
proc vmMain 16 12
file "../g_main.c"
line 295
;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:	char		*cvarName;
;11:	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:// adnan
;22:// tie fighter vehicles
;23:#include "bg_vehicles.h"
;24:
;25:int            vehicleId;
;26:vehicle_t      g_vehicleTemplates[MAX_CLIENTS];
;27:vehicle_t      g_vehicles[MAX_CLIENTS];
;28:
;29:qboolean gDuelExit = qfalse;
;30:
;31:vmCvar_t	g_trueJedi;
;32:
;33:vmCvar_t	g_gametype;
;34:vmCvar_t	g_MaxHolocronCarry;
;35:vmCvar_t	g_ff_objectives;
;36:vmCvar_t	g_autoMapCycle;
;37:vmCvar_t	g_dmflags;
;38:vmCvar_t	g_maxForceRank;
;39:vmCvar_t	g_forceBasedTeams;
;40:vmCvar_t	g_privateDuel;
;41:vmCvar_t	g_saberLocking;
;42:vmCvar_t	g_saberLockFactor;
;43:vmCvar_t	g_saberTraceSaberFirst;
;44:
;45:#ifdef G2_COLLISION_ENABLED
;46:vmCvar_t	g_saberGhoul2Collision;
;47:#endif
;48:vmCvar_t	g_saberAlwaysBoxTrace;
;49:vmCvar_t	g_saberBoxTraceSize;
;50:
;51:vmCvar_t	g_logClientInfo;
;52:
;53:vmCvar_t	g_slowmoDuelEnd;
;54:
;55:vmCvar_t	g_saberDamageScale;
;56:
;57:vmCvar_t	g_forceRegenTime;
;58:vmCvar_t	g_spawnInvulnerability;
;59:vmCvar_t	g_forcePowerDisable;
;60:vmCvar_t	g_weaponDisable;
;61:vmCvar_t	g_duelWeaponDisable;
;62:vmCvar_t	g_allowDuelSuicide;
;63:vmCvar_t	g_fraglimitVoteCorrection;
;64:vmCvar_t	g_fraglimit;
;65:vmCvar_t	g_duel_fraglimit;
;66:vmCvar_t	g_timelimit;
;67:vmCvar_t	g_capturelimit;
;68:vmCvar_t	g_saberInterpolate;
;69:vmCvar_t	g_friendlyFire;
;70:vmCvar_t	g_friendlySaber;
;71:vmCvar_t	g_password;
;72:vmCvar_t	g_needpass;
;73:vmCvar_t	g_maxclients;
;74:vmCvar_t	g_maxGameClients;
;75:vmCvar_t	g_dedicated;
;76:vmCvar_t	g_speed;
;77:vmCvar_t	g_gravity;
;78:vmCvar_t	g_cheats;
;79:vmCvar_t	g_knockback;
;80:vmCvar_t	g_quadfactor;
;81:vmCvar_t	g_forcerespawn;
;82:vmCvar_t	g_inactivity;
;83:vmCvar_t	g_debugMove;
;84:vmCvar_t	g_debugDamage;
;85:vmCvar_t	g_debugAlloc;
;86:vmCvar_t	g_weaponRespawn;
;87:vmCvar_t	g_weaponTeamRespawn;
;88:vmCvar_t	g_adaptRespawn;
;89:vmCvar_t	g_motd;
;90:vmCvar_t	g_synchronousClients;
;91:vmCvar_t	g_warmup;
;92:vmCvar_t	g_doWarmup;
;93:vmCvar_t	g_restarted;
;94:vmCvar_t	g_log;
;95:vmCvar_t	g_logSync;
;96:vmCvar_t	g_statLog;
;97:vmCvar_t	g_statLogFile;
;98:vmCvar_t	g_blood;
;99:vmCvar_t	g_podiumDist;
;100:vmCvar_t	g_podiumDrop;
;101:vmCvar_t	g_allowVote;
;102:vmCvar_t	g_teamAutoJoin;
;103:vmCvar_t	g_teamForceBalance;
;104:vmCvar_t	g_banIPs;
;105:vmCvar_t	g_filterBan;
;106:vmCvar_t	g_debugForward;
;107:vmCvar_t	g_debugRight;
;108:vmCvar_t	g_debugUp;
;109:vmCvar_t	g_smoothClients;
;110:vmCvar_t	pmove_fixed;
;111:vmCvar_t	pmove_msec;
;112:vmCvar_t	g_rankings;
;113:vmCvar_t	g_listEntity;
;114:vmCvar_t	g_redteam;
;115:vmCvar_t	g_blueteam;
;116:vmCvar_t	g_singlePlayer;
;117:vmCvar_t	g_enableDust;
;118:vmCvar_t	g_enableBreath;
;119:vmCvar_t	g_dismember;
;120:vmCvar_t	g_forceDodge;
;121:vmCvar_t	g_timeouttospec;
;122:
;123:vmCvar_t	g_saberDmgVelocityScale;
;124:vmCvar_t	g_saberDmgDelay_Idle;
;125:vmCvar_t	g_saberDmgDelay_Wound;
;126:
;127:vmCvar_t	g_saberDebugPrint;
;128:
;129:vmCvar_t	g_austrian;
;130:
;131:int gDuelist1 = -1;
;132:int gDuelist2 = -1;
;133:
;134:// bk001129 - made static to avoid aliasing
;135:static cvarTable_t		gameCvarTable[] = {
;136:	// don't override the cheat state set by the system
;137:	{ &g_cheats, "sv_cheats", "", 0, 0, qfalse },
;138:
;139:	// noset vars
;140:	{ NULL, "gamename", GAMEVERSION , CVAR_SERVERINFO | CVAR_ROM, 0, qfalse  },
;141:	{ NULL, "gamedate", __DATE__ , CVAR_ROM, 0, qfalse  },
;142:	{ &g_restarted, "g_restarted", "0", CVAR_ROM, 0, qfalse  },
;143:	{ NULL, "sv_mapname", "", CVAR_SERVERINFO | CVAR_ROM, 0, qfalse  },
;144:
;145:	// latched vars
;146:	{ &g_gametype, "g_gametype", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse  },
;147:	{ &g_MaxHolocronCarry, "g_MaxHolocronCarry", "3", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse  },
;148:
;149:	{ &g_maxclients, "sv_maxclients", "8", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse  },
;150:	{ &g_maxGameClients, "g_maxGameClients", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse  },
;151:
;152:	// change anytime vars
;153:	{ &g_ff_objectives, "g_ff_objectives", "0", /*CVAR_SERVERINFO |*/  CVAR_NORESTART, 0, qtrue },
;154:
;155:	{ &g_trueJedi, "g_jediVmerc", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qtrue },
;156:
;157:	{ &g_autoMapCycle, "g_autoMapCycle", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;158:	{ &g_dmflags, "dmflags", "0", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue  },
;159:	
;160:	{ &g_maxForceRank, "g_maxForceRank", "6", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_USERINFO | CVAR_LATCH, 0, qfalse  },
;161:	{ &g_forceBasedTeams, "g_forceBasedTeams", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_USERINFO | CVAR_LATCH, 0, qfalse  },
;162:	{ &g_privateDuel, "g_privateDuel", "1", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue  },
;163:	{ &g_saberLocking, "g_saberLocking", "1", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue  },
;164:	{ &g_saberLockFactor, "g_saberLockFactor", "6", CVAR_ARCHIVE, 0, qtrue  },
;165:	{ &g_saberTraceSaberFirst, "g_saberTraceSaberFirst", "1", CVAR_ARCHIVE, 0, qtrue  },
;166:
;167:#ifdef G2_COLLISION_ENABLED
;168:	{ &g_saberGhoul2Collision, "g_saberGhoul2Collision", "0", 0, 0, qtrue  },
;169:#endif
;170:	{ &g_saberAlwaysBoxTrace, "g_saberAlwaysBoxTrace", "0", 0, 0, qtrue  },
;171:	{ &g_saberBoxTraceSize, "g_saberBoxTraceSize", "2", 0, 0, qtrue  },
;172:
;173:	{ &g_logClientInfo, "g_logClientInfo", "0", CVAR_ARCHIVE, 0, qtrue  },
;174:
;175:	{ &g_slowmoDuelEnd, "g_slowmoDuelEnd", "0", CVAR_ARCHIVE, 0, qtrue  },
;176:
;177:	{ &g_saberDamageScale, "g_saberDamageScale", "1", CVAR_ARCHIVE, 0, qtrue  },
;178:
;179:	{ &g_forceRegenTime, "g_forceRegenTime", "200", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue  },
;180:
;181:	{ &g_spawnInvulnerability, "g_spawnInvulnerability", "3000", CVAR_ARCHIVE, 0, qtrue  },
;182:
;183:	{ &g_forcePowerDisable, "g_forcePowerDisable", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_LATCH, 0, qtrue  },
;184:	{ &g_weaponDisable, "g_weaponDisable", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_LATCH, 0, qtrue  },
;185:	{ &g_duelWeaponDisable, "g_duelWeaponDisable", "1", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_LATCH, 0, qtrue  },
;186:
;187:	{ &g_allowDuelSuicide, "g_allowDuelSuicide", "0", CVAR_ARCHIVE, 0, qtrue },
;188:
;189:	{ &g_fraglimitVoteCorrection, "g_fraglimitVoteCorrection", "1", CVAR_ARCHIVE, 0, qtrue },
;190:
;191:	{ &g_fraglimit, "fraglimit", "20", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;192:	{ &g_duel_fraglimit, "duel_fraglimit", "10", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;193:	{ &g_timelimit, "timelimit", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;194:	{ &g_capturelimit, "capturelimit", "8", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
;195:
;196:	{ &g_synchronousClients, "g_synchronousClients", "0", CVAR_SYSTEMINFO, 0, qfalse  },
;197:
;198:	{ &g_saberInterpolate, "g_saberInterpolate", "1", CVAR_ARCHIVE, 0, qtrue },
;199:
;200:	{ &g_friendlyFire, "g_friendlyFire", "0", CVAR_ARCHIVE, 0, qtrue  },
;201:	{ &g_friendlySaber, "g_friendlySaber", "0", CVAR_ARCHIVE, 0, qtrue  },
;202:
;203:	{ &g_teamAutoJoin, "g_teamAutoJoin", "0", CVAR_ARCHIVE  },
;204:	{ &g_teamForceBalance, "g_teamForceBalance", "0", CVAR_ARCHIVE  },
;205:
;206:	{ &g_warmup, "g_warmup", "20", CVAR_ARCHIVE, 0, qtrue  },
;207:	{ &g_doWarmup, "g_doWarmup", "0", 0, 0, qtrue  },
;208:	{ &g_log, "g_log", "games.log", CVAR_ARCHIVE, 0, qfalse  },
;209:	{ &g_logSync, "g_logSync", "0", CVAR_ARCHIVE, 0, qfalse  },
;210:
;211:	{ &g_statLog, "g_statLog", "0", CVAR_ARCHIVE, 0, qfalse },
;212:	{ &g_statLogFile, "g_statLogFile", "statlog.log", CVAR_ARCHIVE, 0, qfalse },
;213:
;214:	{ &g_password, "g_password", "", CVAR_USERINFO, 0, qfalse  },
;215:
;216:	{ &g_banIPs, "g_banIPs", "", CVAR_ARCHIVE, 0, qfalse  },
;217:	{ &g_filterBan, "g_filterBan", "1", CVAR_ARCHIVE, 0, qfalse  },
;218:
;219:	{ &g_needpass, "g_needpass", "0", CVAR_SERVERINFO | CVAR_ROM, 0, qfalse },
;220:
;221:	{ &g_dedicated, "dedicated", "0", 0, 0, qfalse  },
;222:
;223:	{ &g_speed, "g_speed", "250", 0, 0, qtrue  },
;224:	{ &g_gravity, "g_gravity", "800", 0, 0, qtrue  },
;225:	{ &g_knockback, "g_knockback", "1000", 0, 0, qtrue  },
;226:	{ &g_quadfactor, "g_quadfactor", "3", 0, 0, qtrue  },
;227:	{ &g_weaponRespawn, "g_weaponrespawn", "5", 0, 0, qtrue  },
;228:	{ &g_weaponTeamRespawn, "g_weaponTeamRespawn", "5", 0, 0, qtrue },
;229:	{ &g_adaptRespawn, "g_adaptrespawn", "1", 0, 0, qtrue  },		// Make weapons respawn faster with a lot of players.
;230:	{ &g_forcerespawn, "g_forcerespawn", "60", 0, 0, qtrue },		// One minute force respawn.  Give a player enough time to reallocate force.
;231:	{ &g_inactivity, "g_inactivity", "0", 0, 0, qtrue },
;232:	{ &g_debugMove, "g_debugMove", "0", 0, 0, qfalse },
;233:	{ &g_debugDamage, "g_debugDamage", "0", 0, 0, qfalse },
;234:	{ &g_debugAlloc, "g_debugAlloc", "0", 0, 0, qfalse },
;235:	{ &g_motd, "g_motd", "", 0, 0, qfalse },
;236:	{ &g_blood, "com_blood", "1", 0, 0, qfalse },
;237:
;238:	{ &g_podiumDist, "g_podiumDist", "80", 0, 0, qfalse },
;239:	{ &g_podiumDrop, "g_podiumDrop", "70", 0, 0, qfalse },
;240:
;241:	{ &g_allowVote, "g_allowVote", "1", CVAR_ARCHIVE, 0, qfalse },
;242:	{ &g_listEntity, "g_listEntity", "0", 0, 0, qfalse },
;243:
;244:#if 0
;245:	{ &g_debugForward, "g_debugForward", "0", 0, 0, qfalse },
;246:	{ &g_debugRight, "g_debugRight", "0", 0, 0, qfalse },
;247:	{ &g_debugUp, "g_debugUp", "0", 0, 0, qfalse },
;248:#endif
;249:
;250:	{ &g_redteam, "g_redteam", "Empire", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO , 0, qtrue, qtrue },
;251:	{ &g_blueteam, "g_blueteam", "Rebellion", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_USERINFO , 0, qtrue, qtrue  },
;252:	{ &g_singlePlayer, "ui_singlePlayerActive", "", 0, 0, qfalse, qfalse  },
;253:
;254:	{ &g_enableDust, "g_enableDust", "0", 0, 0, qtrue, qfalse },
;255:	{ &g_enableBreath, "g_enableBreath", "0", 0, 0, qtrue, qfalse },
;256:	{ &g_smoothClients, "g_smoothClients", "1", 0, 0, qfalse},
;257:	{ &pmove_fixed, "pmove_fixed", "0", CVAR_SYSTEMINFO, 0, qfalse},
;258:	{ &pmove_msec, "pmove_msec", "8", CVAR_SYSTEMINFO, 0, qfalse},
;259:
;260:	{ &g_rankings, "g_rankings", "0", 0, 0, qfalse},
;261:
;262:	{ &g_dismember, "g_dismember", "0", CVAR_ARCHIVE, 0, qtrue  },
;263:	{ &g_forceDodge, "g_forceDodge", "1", 0, 0, qtrue  },
;264:
;265:	{ &g_timeouttospec, "g_timeouttospec", "70", CVAR_ARCHIVE, 0, qfalse },
;266:
;267:	{ &g_saberDmgVelocityScale, "g_saberDmgVelocityScale", "0", CVAR_ARCHIVE, 0, qtrue  },
;268:	{ &g_saberDmgDelay_Idle, "g_saberDmgDelay_Idle", "350", CVAR_ARCHIVE, 0, qtrue  },
;269:	{ &g_saberDmgDelay_Wound, "g_saberDmgDelay_Wound", "0", CVAR_ARCHIVE, 0, qtrue  },
;270:
;271:	{ &g_saberDebugPrint, "g_saberDebugPrint", "0", CVAR_CHEAT, 0, qfalse  },
;272:
;273:	{ &g_austrian, "g_austrian", "0", CVAR_ARCHIVE, 0, qfalse  },
;274:};
;275:
;276:// bk001129 - made static to avoid aliasing
;277:static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[0] );
;278:
;279:
;280:void G_InitGame					( int levelTime, int randomSeed, int restart );
;281:void G_RunFrame					( int levelTime );
;282:void G_ShutdownGame				( int restart );
;283:void CheckExitRules				( void );
;284:void G_ROFF_NotetrackCallback	( gentity_t *cent, const char *notetrack);
;285:
;286:
;287:/*
;288:================
;289:vmMain
;290:
;291:This is the only way control passes into the module.
;292:This must be the very first function compiled into the .q3vm file
;293:================
;294:*/
;295:int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11  ) {
line 296
;296:	switch ( command ) {
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
LTI4 $204
ADDRLP4 0
INDIRI4
CNSTI4 11
GTI4 $204
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 $218
ADDP4
INDIRP4
JUMPV
lit
align 4
LABELV $218
address $206
address $207
address $208
address $212
address $210
address $211
address $213
address $209
address $214
address $215
address $216
address $217
code
LABELV $206
line 298
;297:	case GAME_INIT:
;298:		G_InitGame( arg0, arg1, arg2 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRFP4 8
INDIRI4
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRGP4 G_InitGame
CALLV
pop
line 299
;299:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $207
line 301
;300:	case GAME_SHUTDOWN:
;301:		G_ShutdownGame( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_ShutdownGame
CALLV
pop
line 302
;302:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $208
line 304
;303:	case GAME_CLIENT_CONNECT:
;304:		return (int)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 $203
JUMPV
LABELV $209
line 306
;305:	case GAME_CLIENT_THINK:
;306:		ClientThink( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientThink
CALLV
pop
line 307
;307:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $210
line 309
;308:	case GAME_CLIENT_USERINFO_CHANGED:
;309:		ClientUserinfoChanged( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 310
;310:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $211
line 312
;311:	case GAME_CLIENT_DISCONNECT:
;312:		ClientDisconnect( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientDisconnect
CALLV
pop
line 313
;313:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $212
line 315
;314:	case GAME_CLIENT_BEGIN:
;315:		ClientBegin( arg0, qtrue );
ADDRFP4 4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 ClientBegin
CALLV
pop
line 316
;316:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $213
line 318
;317:	case GAME_CLIENT_COMMAND:
;318:		ClientCommand( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientCommand
CALLV
pop
line 319
;319:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $214
line 321
;320:	case GAME_RUN_FRAME:
;321:		G_RunFrame( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_RunFrame
CALLV
pop
line 322
;322:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $203
JUMPV
LABELV $215
line 324
;323:	case GAME_CONSOLE_COMMAND:
;324:		return ConsoleCommand();
ADDRLP4 8
ADDRGP4 ConsoleCommand
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
RETI4
ADDRGP4 $203
JUMPV
LABELV $216
line 326
;325:	case BOTAI_START_FRAME:
;326:		return BotAIStartFrame( arg0 );
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 12
ADDRGP4 BotAIStartFrame
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
RETI4
ADDRGP4 $203
JUMPV
LABELV $217
line 328
;327:	case GAME_ROFF_NOTETRACK_CALLBACK:
;328:		G_ROFF_NotetrackCallback( &g_entities[arg0], (const char *)arg1 );
CNSTI4 828
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRFP4 8
INDIRI4
CVIU4 4
CVUP4 4
ARGP4
ADDRGP4 G_ROFF_NotetrackCallback
CALLV
pop
line 329
;329:	}
LABELV $204
line 331
;330:
;331:	return -1;
CNSTI4 -1
RETI4
LABELV $203
endproc vmMain 16 12
export G_Printf
proc G_Printf 1028 12
line 335
;332:}
;333:
;334:
;335:void QDECL G_Printf( const char *fmt, ... ) {
line 339
;336:	va_list		argptr;
;337:	char		text[1024];
;338:
;339:	va_start (argptr, fmt);
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 340
;340:	vsprintf (text, fmt, argptr);
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 341
;341:	va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 343
;342:
;343:	trap_Printf( text );
ADDRLP4 4
ARGP4
ADDRGP4 trap_Printf
CALLV
pop
line 344
;344:}
LABELV $219
endproc G_Printf 1028 12
export G_Error
proc G_Error 1028 12
line 346
;345:
;346:void QDECL G_Error( const char *fmt, ... ) {
line 350
;347:	va_list		argptr;
;348:	char		text[1024];
;349:
;350:	va_start (argptr, fmt);
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 351
;351:	vsprintf (text, fmt, argptr);
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 352
;352:	va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 354
;353:
;354:	trap_Error( text );
ADDRLP4 4
ARGP4
ADDRGP4 trap_Error
CALLV
pop
line 355
;355:}
LABELV $221
endproc G_Error 1028 12
export G_FindTeams
proc G_FindTeams 48 12
line 368
;356:
;357:/*
;358:================
;359:G_FindTeams
;360:
;361:Chain together all entities with a matching team field.
;362:Entity teams are used for item groups and multi-entity mover groups.
;363:
;364:All but the first will have the FL_TEAMSLAVE flag set and teammaster field set
;365:All but the last will have the teamchain field set to the next one
;366:================
;367:*/
;368:void G_FindTeams( void ) {
line 373
;369:	gentity_t	*e, *e2;
;370:	int		i, j;
;371:	int		c, c2;
;372:
;373:	c = 0;
ADDRLP4 20
CNSTI4 0
ASGNI4
line 374
;374:	c2 = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 375
;375:	for ( i=1, e=g_entities+i ; i < level.num_entities ; i++,e++ ){
ADDRLP4 16
CNSTI4 1
ASGNI4
ADDRLP4 4
CNSTI4 828
ADDRLP4 16
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
ADDRGP4 $227
JUMPV
LABELV $224
line 376
;376:		if (!e->inuse)
ADDRLP4 4
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $229
line 377
;377:			continue;
ADDRGP4 $225
JUMPV
LABELV $229
line 378
;378:		if (!e->team)
ADDRLP4 4
INDIRP4
CNSTI4 592
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $231
line 379
;379:			continue;
ADDRGP4 $225
JUMPV
LABELV $231
line 380
;380:		if (e->flags & FL_TEAMSLAVE)
ADDRLP4 4
INDIRP4
CNSTI4 472
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $233
line 381
;381:			continue;
ADDRGP4 $225
JUMPV
LABELV $233
line 382
;382:		e->teammaster = e;
ADDRLP4 4
INDIRP4
CNSTI4 740
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 383
;383:		c++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 384
;384:		c2++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 385
;385:		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 828
ADDP4
ASGNP4
ADDRGP4 $238
JUMPV
LABELV $235
line 386
;386:		{
line 387
;387:			if (!e2->inuse)
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $240
line 388
;388:				continue;
ADDRGP4 $236
JUMPV
LABELV $240
line 389
;389:			if (!e2->team)
ADDRLP4 0
INDIRP4
CNSTI4 592
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $242
line 390
;390:				continue;
ADDRGP4 $236
JUMPV
LABELV $242
line 391
;391:			if (e2->flags & FL_TEAMSLAVE)
ADDRLP4 0
INDIRP4
CNSTI4 472
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $244
line 392
;392:				continue;
ADDRGP4 $236
JUMPV
LABELV $244
line 393
;393:			if (!strcmp(e->team, e2->team))
ADDRLP4 28
CNSTI4 592
ASGNI4
ADDRLP4 4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
NEI4 $246
line 394
;394:			{
line 395
;395:				c2++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 396
;396:				e2->teamchain = e->teamchain;
ADDRLP4 36
CNSTI4 736
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
ADDRLP4 4
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRP4
ASGNP4
line 397
;397:				e->teamchain = e2;
ADDRLP4 4
INDIRP4
CNSTI4 736
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
line 398
;398:				e2->teammaster = e;
ADDRLP4 0
INDIRP4
CNSTI4 740
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 399
;399:				e2->flags |= FL_TEAMSLAVE;
ADDRLP4 40
ADDRLP4 0
INDIRP4
CNSTI4 472
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 1024
BORI4
ASGNI4
line 402
;400:
;401:				// make sure that targets only point at the master
;402:				if ( e2->targetname ) {
ADDRLP4 0
INDIRP4
CNSTI4 588
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $248
line 403
;403:					e->targetname = e2->targetname;
ADDRLP4 44
CNSTI4 588
ASGNI4
ADDRLP4 4
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ADDRLP4 0
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
INDIRP4
ASGNP4
line 404
;404:					e2->targetname = NULL;
ADDRLP4 0
INDIRP4
CNSTI4 588
ADDP4
CNSTP4 0
ASGNP4
line 405
;405:				}
LABELV $248
line 406
;406:			}
LABELV $246
line 407
;407:		}
LABELV $236
line 385
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 828
ADDP4
ASGNP4
LABELV $238
ADDRLP4 8
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $235
line 408
;408:	}
LABELV $225
line 375
ADDRLP4 16
ADDRLP4 16
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
ADDRLP4 4
INDIRP4
CNSTI4 828
ADDP4
ASGNP4
LABELV $227
ADDRLP4 16
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $224
line 410
;409:
;410:	G_Printf ("%i teams with %i entities\n", c, c2);
ADDRGP4 $250
ARGP4
ADDRLP4 20
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 411
;411:}
LABELV $223
endproc G_FindTeams 48 12
export G_RemapTeamShaders
proc G_RemapTeamShaders 0 0
line 413
;412:
;413:void G_RemapTeamShaders( void ) {
line 425
;414:#if 0
;415:	char string[1024];
;416:	float f = level.time * 0.001;
;417:	Com_sprintf( string, sizeof(string), "team_icon/%s_red", g_redteam.string );
;418:	AddRemap("textures/ctf2/redteam01", string, f); 
;419:	AddRemap("textures/ctf2/redteam02", string, f); 
;420:	Com_sprintf( string, sizeof(string), "team_icon/%s_blue", g_blueteam.string );
;421:	AddRemap("textures/ctf2/blueteam01", string, f); 
;422:	AddRemap("textures/ctf2/blueteam02", string, f); 
;423:	trap_SetConfigstring(CS_SHADERSTATE, BuildShaderStateConfig());
;424:#endif
;425:}
LABELV $251
endproc G_RemapTeamShaders 0 0
export G_RegisterCvars
proc G_RegisterCvars 20 16
line 433
;426:
;427:
;428:/*
;429:=================
;430:G_RegisterCvars
;431:=================
;432:*/
;433:void G_RegisterCvars( void ) {
line 436
;434:	int			i;
;435:	cvarTable_t	*cv;
;436:	qboolean remapped = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 438
;437:
;438:	for ( i = 0, cv = gameCvarTable ; i < gameCvarTableSize ; i++, cv++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRLP4 0
ADDRGP4 gameCvarTable
ASGNP4
ADDRGP4 $256
JUMPV
LABELV $253
line 439
;439:		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 441
;440:			cv->defaultString, cv->cvarFlags );
;441:		if ( cv->vmCvar )
ADDRLP4 0
INDIRP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $257
line 442
;442:			cv->modificationCount = cv->vmCvar->modificationCount;
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ASGNI4
LABELV $257
line 444
;443:
;444:		if (cv->teamShader) {
ADDRLP4 0
INDIRP4
CNSTI4 24
ADDP4
INDIRI4
CNSTI4 0
EQI4 $259
line 445
;445:			remapped = qtrue;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 446
;446:		}
LABELV $259
line 447
;447:	}
LABELV $254
line 438
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
LABELV $256
ADDRLP4 4
INDIRI4
ADDRGP4 gameCvarTableSize
INDIRI4
LTI4 $253
line 449
;448:
;449:	if (remapped) {
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $261
line 450
;450:		G_RemapTeamShaders();
ADDRGP4 G_RemapTeamShaders
CALLV
pop
line 451
;451:	}
LABELV $261
line 454
;452:
;453:	// check some things
;454:	if ( g_gametype.integer < 0 || g_gametype.integer >= GT_MAX_GAME_TYPE ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 0
LTI4 $267
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 9
LTI4 $263
LABELV $267
line 455
;455:		G_Printf( "g_gametype %i is out of range, defaulting to 0\n", g_gametype.integer );
ADDRGP4 $268
ARGP4
ADDRGP4 g_gametype+12
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 456
;456:		trap_Cvar_Set( "g_gametype", "0" );
ADDRGP4 $99
ARGP4
ADDRGP4 $97
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 457
;457:	}
LABELV $263
line 459
;458:
;459:	level.warmupModificationCount = g_warmup.modificationCount;
ADDRGP4 level+224
ADDRGP4 g_warmup+4
INDIRI4
ASGNI4
line 460
;460:}
LABELV $252
endproc G_RegisterCvars 20 16
export G_UpdateCvars
proc G_UpdateCvars 28 12
line 467
;461:
;462:/*
;463:=================
;464:G_UpdateCvars
;465:=================
;466:*/
;467:void G_UpdateCvars( void ) {
line 470
;468:	int			i;
;469:	cvarTable_t	*cv;
;470:	qboolean remapped = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 472
;471:
;472:	for ( i = 0, cv = gameCvarTable ; i < gameCvarTableSize ; i++, cv++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRLP4 0
ADDRGP4 gameCvarTable
ASGNP4
ADDRGP4 $276
JUMPV
LABELV $273
line 473
;473:		if ( cv->vmCvar ) {
ADDRLP4 0
INDIRP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $277
line 474
;474:			trap_Cvar_Update( cv->vmCvar );
ADDRLP4 0
INDIRP4
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 476
;475:
;476:			if ( cv->modificationCount != cv->vmCvar->modificationCount ) {
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
EQI4 $279
line 477
;477:				cv->modificationCount = cv->vmCvar->modificationCount;
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 0
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ASGNI4
line 479
;478:
;479:				if ( cv->trackChange ) {
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
INDIRI4
CNSTI4 0
EQI4 $281
line 480
;480:					trap_SendServerCommand( -1, va("print \"Server: %s changed to %s\n\"", 
ADDRGP4 $283
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 trap_SendServerCommand
CALLV
pop
line 482
;481:						cv->cvarName, cv->vmCvar->string ) );
;482:				}
LABELV $281
line 484
;483:
;484:				if (cv->teamShader) {
ADDRLP4 0
INDIRP4
CNSTI4 24
ADDP4
INDIRI4
CNSTI4 0
EQI4 $284
line 485
;485:					remapped = qtrue;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 486
;486:				}
LABELV $284
line 487
;487:			}
LABELV $279
line 488
;488:		}
LABELV $277
line 489
;489:	}
LABELV $274
line 472
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
LABELV $276
ADDRLP4 4
INDIRI4
ADDRGP4 gameCvarTableSize
INDIRI4
LTI4 $273
line 491
;490:
;491:	if (remapped) {
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $286
line 492
;492:		G_RemapTeamShaders();
ADDRGP4 G_RemapTeamShaders
CALLV
pop
line 493
;493:	}
LABELV $286
line 494
;494:}
LABELV $272
endproc G_UpdateCvars 28 12
export G_InitGame
proc G_InitGame 1032 20
line 502
;495:
;496:/*
;497:============
;498:G_InitGame
;499:
;500:============
;501:*/
;502:void G_InitGame( int levelTime, int randomSeed, int restart ) {
line 505
;503:	int					i;
;504:
;505:	B_InitAlloc(); //make sure everything is clean
ADDRGP4 B_InitAlloc
CALLV
pop
line 507
;506:
;507:	G_Printf ("------- Game Initialization -------\n");
ADDRGP4 $289
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 508
;508:	G_Printf ("gamename: %s\n", GAMEVERSION);
ADDRGP4 $290
ARGP4
ADDRGP4 $93
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 509
;509:	G_Printf ("gamedate: %s\n", __DATE__);
ADDRGP4 $291
ARGP4
ADDRGP4 $95
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 511
;510:
;511:	srand( randomSeed );
ADDRFP4 4
INDIRI4
CVIU4 4
ARGU4
ADDRGP4 srand
CALLV
pop
line 513
;512:
;513:	G_RegisterCvars();
ADDRGP4 G_RegisterCvars
CALLV
pop
line 515
;514:
;515:	G_ProcessIPBans();
ADDRGP4 G_ProcessIPBans
CALLV
pop
line 517
;516:
;517:	G_InitMemory();
ADDRGP4 G_InitMemory
CALLV
pop
line 520
;518:
;519:	// set some level globals
;520:	memset( &level, 0, sizeof( level ) );
ADDRGP4 level
ARGP4
CNSTI4 0
ARGI4
CNSTI4 9096
ARGI4
ADDRGP4 memset
CALLP4
pop
line 521
;521:	level.time = levelTime;
ADDRGP4 level+32
ADDRFP4 0
INDIRI4
ASGNI4
line 522
;522:	level.startTime = levelTime;
ADDRGP4 level+40
ADDRFP4 0
INDIRI4
ASGNI4
line 524
;523:
;524:	level.snd_fry = G_SoundIndex("sound/player/fry.wav");	// FIXME standing in lava / slime
ADDRGP4 $295
ARGP4
ADDRLP4 4
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 level+220
ADDRLP4 4
INDIRI4
ASGNI4
line 528
;525:
;526:	//trap_SP_RegisterServer("mp_svgame");
;527:
;528:	if ( g_log.string[0] ) {
ADDRGP4 g_log+16
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $296
line 529
;529:		if ( g_logSync.integer ) {
ADDRGP4 g_logSync+12
INDIRI4
CNSTI4 0
EQI4 $299
line 530
;530:			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 531
;531:		} else {
ADDRGP4 $300
JUMPV
LABELV $299
line 532
;532:			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 533
;533:		}
LABELV $300
line 534
;534:		if ( !level.logFile ) {
ADDRGP4 level+20
INDIRI4
CNSTI4 0
NEI4 $306
line 535
;535:			G_Printf( "WARNING: Couldn't open logfile: %s\n", g_log.string );
ADDRGP4 $309
ARGP4
ADDRGP4 g_log+16
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 536
;536:		} else {
ADDRGP4 $297
JUMPV
LABELV $306
line 539
;537:			char	serverinfo[MAX_INFO_STRING];
;538:
;539:			trap_GetServerinfo( serverinfo, sizeof( serverinfo ) );
ADDRLP4 8
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_GetServerinfo
CALLV
pop
line 541
;540:
;541:			G_LogPrintf("------------------------------------------------------------\n" );
ADDRGP4 $311
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 542
;542:			G_LogPrintf("InitGame: %s\n", serverinfo );
ADDRGP4 $312
ARGP4
ADDRLP4 8
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 543
;543:		}
line 544
;544:	} else {
ADDRGP4 $297
JUMPV
LABELV $296
line 545
;545:		G_Printf( "Not logging to disk.\n" );
ADDRGP4 $313
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 546
;546:	}
LABELV $297
line 548
;547:
;548:	G_LogWeaponInit();
ADDRGP4 G_LogWeaponInit
CALLV
pop
line 550
;549:
;550:	G_InitWorldSession();
ADDRGP4 G_InitWorldSession
CALLV
pop
line 553
;551:
;552:	// initialize all entities for this game
;553:	memset( g_entities, 0, MAX_GENTITIES * sizeof(g_entities[0]) );
ADDRGP4 g_entities
ARGP4
CNSTI4 0
ARGI4
CNSTI4 847872
ARGI4
ADDRGP4 memset
CALLP4
pop
line 554
;554:	level.gentities = g_entities;
ADDRGP4 level+4
ADDRGP4 g_entities
ASGNP4
line 557
;555:
;556:	// initialize all clients for this game
;557:	level.maxclients = g_maxclients.integer;
ADDRGP4 level+24
ADDRGP4 g_maxclients+12
INDIRI4
ASGNI4
line 558
;558:	memset( g_clients, 0, MAX_CLIENTS * sizeof(g_clients[0]) );
ADDRGP4 g_clients
ARGP4
CNSTI4 0
ARGI4
CNSTI4 57728
ARGI4
ADDRGP4 memset
CALLP4
pop
line 559
;559:	level.clients = g_clients;
ADDRGP4 level
ADDRGP4 g_clients
ASGNP4
line 562
;560:
;561:	// set client fields on player ents
;562:	for ( i=0 ; i<level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $320
JUMPV
LABELV $317
line 563
;563:		g_entities[i].client = level.clients + i;
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 564
;564:	}
LABELV $318
line 562
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $320
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $317
line 569
;565:
;566:	// always leave room for the max number of clients,
;567:	// even if they aren't all used, so numbers inside that
;568:	// range are NEVER anything but clients
;569:	level.num_entities = MAX_CLIENTS;
ADDRGP4 level+12
CNSTI4 32
ASGNI4
line 572
;570:
;571:	// let the server system know where the entites are
;572:	trap_LocateGameData( level.gentities, level.num_entities, sizeof( gentity_t ), 
ADDRGP4 level+4
INDIRP4
ARGP4
ADDRGP4 level+12
INDIRI4
ARGI4
CNSTI4 828
ARGI4
ADDRGP4 level
INDIRP4
ARGP4
CNSTI4 1804
ARGI4
ADDRGP4 trap_LocateGameData
CALLV
pop
line 576
;573:		&level.clients[0].ps, sizeof( level.clients[0] ) );
;574:
;575:	// reserve some spots for dead player bodies
;576:	InitBodyQue();
ADDRGP4 InitBodyQue
CALLV
pop
line 578
;577:
;578:	ClearRegisteredItems();
ADDRGP4 ClearRegisteredItems
CALLV
pop
line 582
;579:
;580:	// initialize saga mode before spawning entities so we know
;581:	// if we should remove any saga-related entities on spawn
;582:	InitSagaMode();
ADDRGP4 InitSagaMode
CALLV
pop
line 585
;583:
;584:	// parse the key/value pairs and spawn gentities
;585:	G_SpawnEntitiesFromString();
ADDRGP4 G_SpawnEntitiesFromString
CALLV
pop
line 588
;586:
;587:	// general initialization
;588:	G_FindTeams();
ADDRGP4 G_FindTeams
CALLV
pop
line 592
;589:
;590:   // adnan
;591:   // tie fighter vehicles
;592:   VehicleTemplateArray_InitVehicleTemplateArray();
ADDRGP4 VehicleTemplateArray_InitVehicleTemplateArray
CALLI4
pop
line 593
;593:   VehicleArray_InitVehicleArray();
ADDRGP4 VehicleArray_InitVehicleArray
CALLI4
pop
line 595
;594:
;595:   Parser_ParseVehicleInfo("scripts/test.vehicles");
ADDRGP4 $326
ARGP4
ADDRGP4 Parser_ParseVehicleInfo
CALLI4
pop
line 598
;596:
;597:	// make sure we have flags for CTF, etc
;598:	if( g_gametype.integer >= GT_TEAM ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LTI4 $327
line 599
;599:		G_CheckTeamItems();
ADDRGP4 G_CheckTeamItems
CALLV
pop
line 600
;600:	}
ADDRGP4 $328
JUMPV
LABELV $327
line 601
;601:	else if ( g_gametype.integer == GT_JEDIMASTER )
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 2
NEI4 $330
line 602
;602:	{
line 603
;603:		trap_SetConfigstring ( CS_CLIENT_JEDIMASTER, "-1" );
CNSTI4 28
ARGI4
ADDRGP4 $333
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 604
;604:	}
LABELV $330
LABELV $328
line 606
;605:
;606:	trap_SetConfigstring ( CS_CLIENT_DUELISTS, va("-1|-1") );
ADDRGP4 $334
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 30
ARGI4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 607
;607:	trap_SetConfigstring ( CS_CLIENT_DUELWINNER, va("-1") );
ADDRGP4 $333
ARGP4
ADDRLP4 12
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 29
ARGI4
ADDRLP4 12
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 608
;608:	gDuelist1 = -1;
ADDRGP4 gDuelist1
CNSTI4 -1
ASGNI4
line 609
;609:	gDuelist2 = -1;
ADDRGP4 gDuelist2
CNSTI4 -1
ASGNI4
line 611
;610:
;611:	SaveRegisteredItems();
ADDRGP4 SaveRegisteredItems
CALLV
pop
line 613
;612:
;613:	G_Printf ("-----------------------------------\n");
ADDRGP4 $335
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 615
;614:
;615:	if( g_gametype.integer == GT_SINGLE_PLAYER || trap_Cvar_VariableIntegerValue( "com_buildScript" ) ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 4
EQI4 $340
ADDRGP4 $339
ARGP4
ADDRLP4 16
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
EQI4 $336
LABELV $340
line 616
;616:		G_ModelIndex( SP_PODIUM_MODEL );
ADDRGP4 $341
ARGP4
ADDRGP4 G_ModelIndex
CALLI4
pop
line 617
;617:		G_SoundIndex( "sound/player/gurp1.wav" );
ADDRGP4 $342
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 618
;618:		G_SoundIndex( "sound/player/gurp2.wav" );
ADDRGP4 $343
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 619
;619:	}
LABELV $336
line 621
;620:
;621:	if ( trap_Cvar_VariableIntegerValue( "bot_enable" ) ) {
ADDRGP4 $346
ARGP4
ADDRLP4 20
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $344
line 622
;622:		BotAISetup( restart );
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 BotAISetup
CALLI4
pop
line 623
;623:		BotAILoadMap( restart );
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 BotAILoadMap
CALLI4
pop
line 624
;624:		G_InitBots( restart );
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 G_InitBots
CALLV
pop
line 625
;625:	}
LABELV $344
line 627
;626:
;627:	G_RemapTeamShaders();
ADDRGP4 G_RemapTeamShaders
CALLV
pop
line 629
;628:
;629:	if ( g_gametype.integer == GT_TOURNAMENT )
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $347
line 630
;630:	{
line 631
;631:		G_LogPrintf("Duel Tournament Begun: kill limit %d, win limit: %d\n", g_fraglimit.integer, g_duel_fraglimit.integer );
ADDRGP4 $350
ARGP4
ADDRGP4 g_fraglimit+12
INDIRI4
ARGI4
ADDRGP4 g_duel_fraglimit+12
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 632
;632:	}
LABELV $347
line 633
;633:}
LABELV $288
endproc G_InitGame 1032 20
export G_ShutdownGame
proc G_ShutdownGame 4 4
line 642
;634:
;635:
;636:
;637:/*
;638:=================
;639:G_ShutdownGame
;640:=================
;641:*/
;642:void G_ShutdownGame( int restart ) {
line 643
;643:	G_Printf ("==== ShutdownGame ====\n");
ADDRGP4 $354
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 645
;644:
;645:	G_LogWeaponOutput();
ADDRGP4 G_LogWeaponOutput
CALLV
pop
line 647
;646:
;647:	if ( level.logFile ) {
ADDRGP4 level+20
INDIRI4
CNSTI4 0
EQI4 $355
line 648
;648:		G_LogPrintf("ShutdownGame:\n" );
ADDRGP4 $358
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 649
;649:		G_LogPrintf("------------------------------------------------------------\n" );
ADDRGP4 $311
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 650
;650:		trap_FS_FCloseFile( level.logFile );
ADDRGP4 level+20
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 651
;651:	}
LABELV $355
line 654
;652:
;653:	// write all the client session data so we can get it back
;654:	G_WriteSessionData();
ADDRGP4 G_WriteSessionData
CALLV
pop
line 656
;655:
;656:	trap_ROFF_Clean();
ADDRGP4 trap_ROFF_Clean
CALLI4
pop
line 658
;657:
;658:	if ( trap_Cvar_VariableIntegerValue( "bot_enable" ) ) {
ADDRGP4 $346
ARGP4
ADDRLP4 0
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $360
line 659
;659:		BotAIShutdown( restart );
ADDRFP4 0
INDIRI4
ARGI4
ADDRGP4 BotAIShutdown
CALLI4
pop
line 660
;660:	}
LABELV $360
line 662
;661:
;662:	B_CleanupAlloc(); //clean up all allocations made with B_Alloc
ADDRGP4 B_CleanupAlloc
CALLV
pop
line 663
;663:}
LABELV $353
endproc G_ShutdownGame 4 4
export Com_Error
proc Com_Error 1028 12
line 672
;664:
;665:
;666:
;667://===================================================================
;668:
;669:#ifndef GAME_HARD_LINKED
;670:// this is only here so the functions in q_shared.c and bg_*.c can link
;671:
;672:void QDECL Com_Error ( int level, const char *error, ... ) {
line 676
;673:	va_list		argptr;
;674:	char		text[1024];
;675:
;676:	va_start (argptr, error);
ADDRLP4 0
ADDRFP4 4+4
ASGNP4
line 677
;677:	vsprintf (text, error, argptr);
ADDRLP4 4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 678
;678:	va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 680
;679:
;680:	G_Error( "%s", text);
ADDRGP4 $364
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 G_Error
CALLV
pop
line 681
;681:}
LABELV $362
endproc Com_Error 1028 12
export Com_Printf
proc Com_Printf 1028 12
line 683
;682:
;683:void QDECL Com_Printf( const char *msg, ... ) {
line 687
;684:	va_list		argptr;
;685:	char		text[1024];
;686:
;687:	va_start (argptr, msg);
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 688
;688:	vsprintf (text, msg, argptr);
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 689
;689:	va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 691
;690:
;691:	G_Printf ("%s", text);
ADDRGP4 $364
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 692
;692:}
LABELV $365
endproc Com_Printf 1028 12
export AddTournamentPlayer
proc AddTournamentPlayer 24 8
line 712
;693:
;694:#endif
;695:
;696:/*
;697:========================================================================
;698:
;699:PLAYER COUNTING / SCORE SORTING
;700:
;701:========================================================================
;702:*/
;703:
;704:/*
;705:=============
;706:AddTournamentPlayer
;707:
;708:If there are less than two tournament players, put a
;709:spectator in the game and restart
;710:=============
;711:*/
;712:void AddTournamentPlayer( void ) {
line 717
;713:	int			i;
;714:	gclient_t	*client;
;715:	gclient_t	*nextInLine;
;716:
;717:	if ( level.numPlayingClients >= 2 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 2
LTI4 $368
line 718
;718:		return;
ADDRGP4 $367
JUMPV
LABELV $368
line 726
;719:	}
;720:
;721:	// never change during intermission
;722://	if ( level.intermissiontime ) {
;723://		return;
;724://	}
;725:
;726:	nextInLine = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 728
;727:
;728:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $374
JUMPV
LABELV $371
line 729
;729:		client = &level.clients[i];
ADDRLP4 0
CNSTI4 1804
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 730
;730:		if ( client->pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $376
line 731
;731:			continue;
ADDRGP4 $372
JUMPV
LABELV $376
line 733
;732:		}
;733:		if ( client->sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $378
line 734
;734:			continue;
ADDRGP4 $372
JUMPV
LABELV $378
line 737
;735:		}
;736:		// never select the dedicated follow or scoreboard clients
;737:		if ( client->sess.spectatorState == SPECTATOR_SCOREBOARD || 
ADDRLP4 0
INDIRP4
CNSTI4 1544
ADDP4
INDIRI4
CNSTI4 3
EQI4 $382
ADDRLP4 0
INDIRP4
CNSTI4 1548
ADDP4
INDIRI4
CNSTI4 0
GEI4 $380
LABELV $382
line 738
;738:			client->sess.spectatorClient < 0  ) {
line 739
;739:			continue;
ADDRGP4 $372
JUMPV
LABELV $380
line 742
;740:		}
;741:
;742:		if ( !nextInLine || client->sess.spectatorTime < nextInLine->sess.spectatorTime ) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $385
ADDRLP4 20
CNSTI4 1540
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRI4
ADDRLP4 8
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRI4
GEI4 $383
LABELV $385
line 743
;743:			nextInLine = client;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 744
;744:		}
LABELV $383
line 745
;745:	}
LABELV $372
line 728
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $374
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $371
line 747
;746:
;747:	if ( !nextInLine ) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $386
line 748
;748:		return;
ADDRGP4 $367
JUMPV
LABELV $386
line 751
;749:	}
;750:
;751:	level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 754
;752:
;753:	// set them to free-for-all team
;754:	SetTeam( &g_entities[ nextInLine - level.clients ], "f" );
CNSTI4 828
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRGP4 level
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
CNSTI4 1804
DIVI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $389
ARGP4
ADDRGP4 SetTeam
CALLV
pop
line 755
;755:}
LABELV $367
endproc AddTournamentPlayer 24 8
export RemoveTournamentLoser
proc RemoveTournamentLoser 4 8
line 764
;756:
;757:/*
;758:=======================
;759:RemoveTournamentLoser
;760:
;761:Make the loser a spectator at the back of the line
;762:=======================
;763:*/
;764:void RemoveTournamentLoser( void ) {
line 767
;765:	int			clientNum;
;766:
;767:	if ( level.numPlayingClients != 2 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 2
EQI4 $391
line 768
;768:		return;
ADDRGP4 $390
JUMPV
LABELV $391
line 771
;769:	}
;770:
;771:	clientNum = level.sortedClients[1];
ADDRLP4 0
ADDRGP4 level+84+4
INDIRI4
ASGNI4
line 773
;772:
;773:	if ( level.clients[ clientNum ].pers.connected != CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $396
line 774
;774:		return;
ADDRGP4 $390
JUMPV
LABELV $396
line 778
;775:	}
;776:
;777:	// make them a spectator
;778:	SetTeam( &g_entities[ clientNum ], "s" );
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $398
ARGP4
ADDRGP4 SetTeam
CALLV
pop
line 779
;779:}
LABELV $390
endproc RemoveTournamentLoser 4 8
export RemoveDuelDrawLoser
proc RemoveDuelDrawLoser 28 8
line 782
;780:
;781:void RemoveDuelDrawLoser(void)
;782:{
line 783
;783:	int clFirst = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 784
;784:	int clSec = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 785
;785:	int clFailure = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 787
;786:
;787:	if ( level.clients[ level.sortedClients[0] ].pers.connected != CON_CONNECTED )
CNSTI4 1804
ADDRGP4 level+84
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $400
line 788
;788:	{
line 789
;789:		return;
ADDRGP4 $399
JUMPV
LABELV $400
line 791
;790:	}
;791:	if ( level.clients[ level.sortedClients[1] ].pers.connected != CON_CONNECTED )
CNSTI4 1804
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $403
line 792
;792:	{
line 793
;793:		return;
ADDRGP4 $399
JUMPV
LABELV $403
line 796
;794:	}
;795:
;796:	clFirst = level.clients[ level.sortedClients[0] ].ps.stats[STAT_HEALTH] + level.clients[ level.sortedClients[0] ].ps.stats[STAT_ARMOR];
ADDRLP4 12
CNSTI4 1804
ASGNI4
ADDRLP4 16
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 12
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 16
INDIRP4
ADDP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 12
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 16
INDIRP4
ADDP4
CNSTI4 236
ADDP4
INDIRI4
ADDI4
ASGNI4
line 797
;797:	clSec = level.clients[ level.sortedClients[1] ].ps.stats[STAT_HEALTH] + level.clients[ level.sortedClients[1] ].ps.stats[STAT_ARMOR];
ADDRLP4 20
CNSTI4 1804
ASGNI4
ADDRLP4 24
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 20
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 236
ADDP4
INDIRI4
ADDI4
ASGNI4
line 799
;798:
;799:	if (clFirst > clSec)
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
LEI4 $413
line 800
;800:	{
line 801
;801:		clFailure = 1;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 802
;802:	}
ADDRGP4 $414
JUMPV
LABELV $413
line 803
;803:	else if (clSec > clFirst)
ADDRLP4 4
INDIRI4
ADDRLP4 0
INDIRI4
LEI4 $415
line 804
;804:	{
line 805
;805:		clFailure = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 806
;806:	}
ADDRGP4 $416
JUMPV
LABELV $415
line 808
;807:	else
;808:	{
line 809
;809:		clFailure = 2;
ADDRLP4 8
CNSTI4 2
ASGNI4
line 810
;810:	}
LABELV $416
LABELV $414
line 812
;811:
;812:	if (clFailure != 2)
ADDRLP4 8
INDIRI4
CNSTI4 2
EQI4 $417
line 813
;813:	{
line 814
;814:		SetTeam( &g_entities[ level.sortedClients[clFailure] ], "s" );
CNSTI4 828
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $398
ARGP4
ADDRGP4 SetTeam
CALLV
pop
line 815
;815:	}
ADDRGP4 $418
JUMPV
LABELV $417
line 817
;816:	else
;817:	{ //we could be more elegant about this, but oh well.
line 818
;818:		SetTeam( &g_entities[ level.sortedClients[1] ], "s" );
CNSTI4 828
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $398
ARGP4
ADDRGP4 SetTeam
CALLV
pop
line 819
;819:	}
LABELV $418
line 820
;820:}
LABELV $399
endproc RemoveDuelDrawLoser 28 8
export RemoveTournamentWinner
proc RemoveTournamentWinner 4 8
line 827
;821:
;822:/*
;823:=======================
;824:RemoveTournamentWinner
;825:=======================
;826:*/
;827:void RemoveTournamentWinner( void ) {
line 830
;828:	int			clientNum;
;829:
;830:	if ( level.numPlayingClients != 2 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 2
EQI4 $423
line 831
;831:		return;
ADDRGP4 $422
JUMPV
LABELV $423
line 834
;832:	}
;833:
;834:	clientNum = level.sortedClients[0];
ADDRLP4 0
ADDRGP4 level+84
INDIRI4
ASGNI4
line 836
;835:
;836:	if ( level.clients[ clientNum ].pers.connected != CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $427
line 837
;837:		return;
ADDRGP4 $422
JUMPV
LABELV $427
line 841
;838:	}
;839:
;840:	// make them a spectator
;841:	SetTeam( &g_entities[ clientNum ], "s" );
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 $398
ARGP4
ADDRGP4 SetTeam
CALLV
pop
line 842
;842:}
LABELV $422
endproc RemoveTournamentWinner 4 8
export AdjustTournamentScores
proc AdjustTournamentScores 68 8
line 849
;843:
;844:/*
;845:=======================
;846:AdjustTournamentScores
;847:=======================
;848:*/
;849:void AdjustTournamentScores( void ) {
line 852
;850:	int			clientNum;
;851:
;852:	if (level.clients[level.sortedClients[0]].ps.persistant[PERS_SCORE] ==
ADDRLP4 4
CNSTI4 1804
ASGNI4
ADDRLP4 8
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 12
CNSTI4 280
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 8
INDIRP4
ADDP4
ADDRLP4 12
INDIRI4
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 8
INDIRP4
ADDP4
ADDRLP4 12
INDIRI4
ADDP4
INDIRI4
NEI4 $430
ADDRLP4 16
CNSTI4 1380
ASGNI4
ADDRLP4 20
CNSTI4 2
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 8
INDIRP4
ADDP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $430
ADDRLP4 4
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 8
INDIRP4
ADDP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $430
line 856
;853:		level.clients[level.sortedClients[1]].ps.persistant[PERS_SCORE] &&
;854:		level.clients[level.sortedClients[0]].pers.connected == CON_CONNECTED &&
;855:		level.clients[level.sortedClients[1]].pers.connected == CON_CONNECTED)
;856:	{
line 857
;857:		int clFirst = level.clients[ level.sortedClients[0] ].ps.stats[STAT_HEALTH] + level.clients[ level.sortedClients[0] ].ps.stats[STAT_ARMOR];
ADDRLP4 40
CNSTI4 1804
ASGNI4
ADDRLP4 44
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 32
ADDRLP4 40
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 44
INDIRP4
ADDP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 40
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 44
INDIRP4
ADDP4
CNSTI4 236
ADDP4
INDIRI4
ADDI4
ASGNI4
line 858
;858:		int clSec = level.clients[ level.sortedClients[1] ].ps.stats[STAT_HEALTH] + level.clients[ level.sortedClients[1] ].ps.stats[STAT_ARMOR];
ADDRLP4 48
CNSTI4 1804
ASGNI4
ADDRLP4 52
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 36
ADDRLP4 48
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 52
INDIRP4
ADDP4
CNSTI4 216
ADDP4
INDIRI4
ADDRLP4 48
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 52
INDIRP4
ADDP4
CNSTI4 236
ADDP4
INDIRI4
ADDI4
ASGNI4
line 859
;859:		int clFailure = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 860
;860:		int clSuccess = 0;
ADDRLP4 28
CNSTI4 0
ASGNI4
line 862
;861:
;862:		if (clFirst > clSec)
ADDRLP4 32
INDIRI4
ADDRLP4 36
INDIRI4
LEI4 $444
line 863
;863:		{
line 864
;864:			clFailure = 1;
ADDRLP4 24
CNSTI4 1
ASGNI4
line 865
;865:			clSuccess = 0;
ADDRLP4 28
CNSTI4 0
ASGNI4
line 866
;866:		}
ADDRGP4 $445
JUMPV
LABELV $444
line 867
;867:		else if (clSec > clFirst)
ADDRLP4 36
INDIRI4
ADDRLP4 32
INDIRI4
LEI4 $446
line 868
;868:		{
line 869
;869:			clFailure = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 870
;870:			clSuccess = 1;
ADDRLP4 28
CNSTI4 1
ASGNI4
line 871
;871:		}
ADDRGP4 $447
JUMPV
LABELV $446
line 873
;872:		else
;873:		{
line 874
;874:			clFailure = 2;
ADDRLP4 24
CNSTI4 2
ASGNI4
line 875
;875:			clSuccess = 2;
ADDRLP4 28
CNSTI4 2
ASGNI4
line 876
;876:		}
LABELV $447
LABELV $445
line 878
;877:
;878:		if (clFailure != 2)
ADDRLP4 24
INDIRI4
CNSTI4 2
EQI4 $448
line 879
;879:		{
line 880
;880:			clientNum = level.sortedClients[clSuccess];
ADDRLP4 0
ADDRLP4 28
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
ASGNI4
line 882
;881:
;882:			level.clients[ clientNum ].sess.wins++;
ADDRLP4 56
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1552
ADDP4
ASGNP4
ADDRLP4 56
INDIRP4
ADDRLP4 56
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 883
;883:			ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 884
;884:			trap_SetConfigstring ( CS_CLIENT_DUELWINNER, va("%i", clientNum ) );
ADDRGP4 $451
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 60
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 29
ARGI4
ADDRLP4 60
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 886
;885:
;886:			clientNum = level.sortedClients[clFailure];
ADDRLP4 0
ADDRLP4 24
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
ASGNI4
line 888
;887:
;888:			level.clients[ clientNum ].sess.losses++;
ADDRLP4 64
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1556
ADDP4
ASGNP4
ADDRLP4 64
INDIRP4
ADDRLP4 64
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 889
;889:			ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 890
;890:		}
ADDRGP4 $431
JUMPV
LABELV $448
line 892
;891:		else
;892:		{
line 893
;893:			clSuccess = 0;
ADDRLP4 28
CNSTI4 0
ASGNI4
line 894
;894:			clFailure = 1;
ADDRLP4 24
CNSTI4 1
ASGNI4
line 896
;895:
;896:			clientNum = level.sortedClients[clSuccess];
ADDRLP4 0
ADDRLP4 28
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
ASGNI4
line 898
;897:
;898:			level.clients[ clientNum ].sess.wins++;
ADDRLP4 56
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1552
ADDP4
ASGNP4
ADDRLP4 56
INDIRP4
ADDRLP4 56
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 899
;899:			ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 900
;900:			trap_SetConfigstring ( CS_CLIENT_DUELWINNER, va("%i", clientNum ) );
ADDRGP4 $451
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 60
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 29
ARGI4
ADDRLP4 60
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 902
;901:
;902:			clientNum = level.sortedClients[clFailure];
ADDRLP4 0
ADDRLP4 24
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
ASGNI4
line 904
;903:
;904:			level.clients[ clientNum ].sess.losses++;
ADDRLP4 64
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1556
ADDP4
ASGNP4
ADDRLP4 64
INDIRP4
ADDRLP4 64
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 905
;905:			ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 906
;906:		}
line 907
;907:	}
ADDRGP4 $431
JUMPV
LABELV $430
line 909
;908:	else
;909:	{
line 910
;910:		clientNum = level.sortedClients[0];
ADDRLP4 0
ADDRGP4 level+84
INDIRI4
ASGNI4
line 911
;911:		if ( level.clients[ clientNum ].pers.connected == CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
NEI4 $456
line 912
;912:			level.clients[ clientNum ].sess.wins++;
ADDRLP4 24
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1552
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 913
;913:			ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 915
;914:
;915:			trap_SetConfigstring ( CS_CLIENT_DUELWINNER, va("%i", clientNum ) );
ADDRGP4 $451
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 29
ARGI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 916
;916:		}
LABELV $456
line 918
;917:
;918:		clientNum = level.sortedClients[1];
ADDRLP4 0
ADDRGP4 level+84+4
INDIRI4
ASGNI4
line 919
;919:		if ( level.clients[ clientNum ].pers.connected == CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
NEI4 $460
line 920
;920:			level.clients[ clientNum ].sess.losses++;
ADDRLP4 24
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1556
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 921
;921:			ClientUserinfoChanged( clientNum );
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 922
;922:		}
LABELV $460
line 923
;923:	}
LABELV $431
line 924
;924:}
LABELV $429
endproc AdjustTournamentScores 68 8
export SortRanks
proc SortRanks 32 0
line 932
;925:
;926:/*
;927:=============
;928:SortRanks
;929:
;930:=============
;931:*/
;932:int QDECL SortRanks( const void *a, const void *b ) {
line 935
;933:	gclient_t	*ca, *cb;
;934:
;935:	ca = &level.clients[*(int *)a];
ADDRLP4 0
CNSTI4 1804
ADDRFP4 0
INDIRP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 936
;936:	cb = &level.clients[*(int *)b];
ADDRLP4 4
CNSTI4 1804
ADDRFP4 4
INDIRP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 939
;937:
;938:	// sort special clients last
;939:	if ( ca->sess.spectatorState == SPECTATOR_SCOREBOARD || ca->sess.spectatorClient < 0 ) {
ADDRLP4 0
INDIRP4
CNSTI4 1544
ADDP4
INDIRI4
CNSTI4 3
EQI4 $465
ADDRLP4 0
INDIRP4
CNSTI4 1548
ADDP4
INDIRI4
CNSTI4 0
GEI4 $463
LABELV $465
line 940
;940:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $462
JUMPV
LABELV $463
line 942
;941:	}
;942:	if ( cb->sess.spectatorState == SPECTATOR_SCOREBOARD || cb->sess.spectatorClient < 0  ) {
ADDRLP4 4
INDIRP4
CNSTI4 1544
ADDP4
INDIRI4
CNSTI4 3
EQI4 $468
ADDRLP4 4
INDIRP4
CNSTI4 1548
ADDP4
INDIRI4
CNSTI4 0
GEI4 $466
LABELV $468
line 943
;943:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $462
JUMPV
LABELV $466
line 947
;944:	}
;945:
;946:	// then connecting clients
;947:	if ( ca->pers.connected == CON_CONNECTING ) {
ADDRLP4 0
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 1
NEI4 $469
line 948
;948:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $462
JUMPV
LABELV $469
line 950
;949:	}
;950:	if ( cb->pers.connected == CON_CONNECTING ) {
ADDRLP4 4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 1
NEI4 $471
line 951
;951:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $462
JUMPV
LABELV $471
line 956
;952:	}
;953:
;954:
;955:	// then spectators
;956:	if ( ca->sess.sessionTeam == TEAM_SPECTATOR && cb->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 16
CNSTI4 1536
ASGNI4
ADDRLP4 20
CNSTI4 3
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $473
ADDRLP4 4
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $473
line 957
;957:		if ( ca->sess.spectatorTime < cb->sess.spectatorTime ) {
ADDRLP4 24
CNSTI4 1540
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
GEI4 $475
line 958
;958:			return -1;
CNSTI4 -1
RETI4
ADDRGP4 $462
JUMPV
LABELV $475
line 960
;959:		}
;960:		if ( ca->sess.spectatorTime > cb->sess.spectatorTime ) {
ADDRLP4 28
CNSTI4 1540
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRI4
LEI4 $477
line 961
;961:			return 1;
CNSTI4 1
RETI4
ADDRGP4 $462
JUMPV
LABELV $477
line 963
;962:		}
;963:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $462
JUMPV
LABELV $473
line 965
;964:	}
;965:	if ( ca->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $479
line 966
;966:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $462
JUMPV
LABELV $479
line 968
;967:	}
;968:	if ( cb->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $481
line 969
;969:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $462
JUMPV
LABELV $481
line 973
;970:	}
;971:
;972:	// then sort by score
;973:	if ( ca->ps.persistant[PERS_SCORE]
ADDRLP4 24
CNSTI4 280
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
LEI4 $483
line 974
;974:		> cb->ps.persistant[PERS_SCORE] ) {
line 975
;975:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $462
JUMPV
LABELV $483
line 977
;976:	}
;977:	if ( ca->ps.persistant[PERS_SCORE]
ADDRLP4 28
CNSTI4 280
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRI4
ADDRLP4 4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRI4
GEI4 $485
line 978
;978:		< cb->ps.persistant[PERS_SCORE] ) {
line 979
;979:		return 1;
CNSTI4 1
RETI4
ADDRGP4 $462
JUMPV
LABELV $485
line 981
;980:	}
;981:	return 0;
CNSTI4 0
RETI4
LABELV $462
endproc SortRanks 32 0
data
export gQueueScoreMessage
align 4
LABELV gQueueScoreMessage
byte 4 0
export gQueueScoreMessageTime
align 4
LABELV gQueueScoreMessageTime
byte 4 0
export CalculateRanks
code
proc CalculateRanks 52 16
line 996
;982:}
;983:
;984:qboolean gQueueScoreMessage = qfalse;
;985:int gQueueScoreMessageTime = 0;
;986:
;987:/*
;988:============
;989:CalculateRanks
;990:
;991:Recalculates the score ranks of all players
;992:This will be called on every client connect, begin, disconnect, death,
;993:and team change.
;994:============
;995:*/
;996:void CalculateRanks( void ) {
line 1001
;997:	int		i;
;998:	int		rank;
;999:	int		score;
;1000:	int		newScore;
;1001:	int		preNumSpec = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 1002
;1002:	int		nonSpecIndex = -1;
ADDRLP4 20
CNSTI4 -1
ASGNI4
line 1005
;1003:	gclient_t	*cl;
;1004:
;1005:	preNumSpec = level.numNonSpectatorClients;
ADDRLP4 24
ADDRGP4 level+76
INDIRI4
ASGNI4
line 1007
;1006:
;1007:	level.follow1 = -1;
ADDRGP4 level+212
CNSTI4 -1
ASGNI4
line 1008
;1008:	level.follow2 = -1;
ADDRGP4 level+216
CNSTI4 -1
ASGNI4
line 1009
;1009:	level.numConnectedClients = 0;
ADDRGP4 level+72
CNSTI4 0
ASGNI4
line 1010
;1010:	level.numNonSpectatorClients = 0;
ADDRGP4 level+76
CNSTI4 0
ASGNI4
line 1011
;1011:	level.numPlayingClients = 0;
ADDRGP4 level+80
CNSTI4 0
ASGNI4
line 1012
;1012:	level.numVotingClients = 0;		// don't count bots
ADDRGP4 level+2292
CNSTI4 0
ASGNI4
line 1013
;1013:	for ( i = 0; i < TEAM_NUM_TEAMS; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $495
line 1014
;1014:		level.numteamVotingClients[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+4376
ADDP4
CNSTI4 0
ASGNI4
line 1015
;1015:	}
LABELV $496
line 1013
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 4
LTI4 $495
line 1016
;1016:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $503
JUMPV
LABELV $500
line 1017
;1017:		if ( level.clients[i].pers.connected != CON_DISCONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 0
EQI4 $505
line 1018
;1018:			level.sortedClients[level.numConnectedClients] = i;
ADDRGP4 level+72
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 1019
;1019:			level.numConnectedClients++;
ADDRLP4 28
ADDRGP4 level+72
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1021
;1020:
;1021:			if ( level.clients[i].sess.sessionTeam != TEAM_SPECTATOR ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $510
line 1022
;1022:				level.numNonSpectatorClients++;
ADDRLP4 32
ADDRGP4 level+76
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 32
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1023
;1023:				nonSpecIndex = i;
ADDRLP4 20
ADDRLP4 0
INDIRI4
ASGNI4
line 1026
;1024:			
;1025:				// decide if this should be auto-followed
;1026:				if ( level.clients[i].pers.connected == CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
NEI4 $513
line 1027
;1027:					level.numPlayingClients++;
ADDRLP4 36
ADDRGP4 level+80
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1028
;1028:					if ( !(g_entities[i].r.svFlags & SVF_BOT) ) {
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
NEI4 $516
line 1029
;1029:						level.numVotingClients++;
ADDRLP4 40
ADDRGP4 level+2292
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1030
;1030:						if ( level.clients[i].sess.sessionTeam == TEAM_RED )
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 1
NEI4 $521
line 1031
;1031:							level.numteamVotingClients[0]++;
ADDRLP4 44
ADDRGP4 level+4376
ASGNP4
ADDRLP4 44
INDIRP4
ADDRLP4 44
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $522
JUMPV
LABELV $521
line 1032
;1032:						else if ( level.clients[i].sess.sessionTeam == TEAM_BLUE )
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 2
NEI4 $524
line 1033
;1033:							level.numteamVotingClients[1]++;
ADDRLP4 48
ADDRGP4 level+4376+4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 48
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $524
LABELV $522
line 1034
;1034:					}
LABELV $516
line 1035
;1035:					if ( level.follow1 == -1 ) {
ADDRGP4 level+212
INDIRI4
CNSTI4 -1
NEI4 $528
line 1036
;1036:						level.follow1 = i;
ADDRGP4 level+212
ADDRLP4 0
INDIRI4
ASGNI4
line 1037
;1037:					} else if ( level.follow2 == -1 ) {
ADDRGP4 $529
JUMPV
LABELV $528
ADDRGP4 level+216
INDIRI4
CNSTI4 -1
NEI4 $532
line 1038
;1038:						level.follow2 = i;
ADDRGP4 level+216
ADDRLP4 0
INDIRI4
ASGNI4
line 1039
;1039:					}
LABELV $532
LABELV $529
line 1040
;1040:				}
LABELV $513
line 1041
;1041:			}
LABELV $510
line 1042
;1042:		}
LABELV $505
line 1043
;1043:	}
LABELV $501
line 1016
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $503
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $500
line 1045
;1044:
;1045:	if (!g_warmup.integer)
ADDRGP4 g_warmup+12
INDIRI4
CNSTI4 0
NEI4 $536
line 1046
;1046:	{
line 1047
;1047:		level.warmupTime = 0;
ADDRGP4 level+16
CNSTI4 0
ASGNI4
line 1048
;1048:	}
LABELV $536
line 1064
;1049:
;1050:	/*
;1051:	if (level.numNonSpectatorClients == 2 && preNumSpec < 2 && nonSpecIndex != -1 && g_gametype.integer == GT_TOURNAMENT && !level.warmupTime)
;1052:	{
;1053:		gentity_t *currentWinner = G_GetDuelWinner(&level.clients[nonSpecIndex]);
;1054:
;1055:		if (currentWinner && currentWinner->client)
;1056:		{
;1057:			trap_SendServerCommand( -1, va("cp \"%s" S_COLOR_WHITE " %s %s\n\"",
;1058:			currentWinner->client->pers.netname, G_GetStripEdString("SVINGAME", "VERSUS"), level.clients[nonSpecIndex].pers.netname));
;1059:		}
;1060:	}
;1061:	*/
;1062:	//NOTE: for now not doing this either. May use later if appropriate.
;1063:
;1064:	qsort( level.sortedClients, level.numConnectedClients, 
ADDRGP4 level+84
ARGP4
ADDRGP4 level+72
INDIRI4
ARGI4
CNSTI4 4
ARGI4
ADDRGP4 SortRanks
ARGP4
ADDRGP4 qsort
CALLV
pop
line 1068
;1065:		sizeof(level.sortedClients[0]), SortRanks );
;1066:
;1067:	// set the rank value for all clients that are connected and not spectators
;1068:	if ( g_gametype.integer >= GT_TEAM ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LTI4 $543
line 1070
;1069:		// in team games, rank is just the order of the teams, 0=red, 1=blue, 2=tied
;1070:		for ( i = 0;  i < level.numConnectedClients; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $549
JUMPV
LABELV $546
line 1071
;1071:			cl = &level.clients[ level.sortedClients[i] ];
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1072
;1072:			if ( level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE] ) {
ADDRGP4 level+44+4
INDIRI4
ADDRGP4 level+44+8
INDIRI4
NEI4 $552
line 1073
;1073:				cl->ps.persistant[PERS_RANK] = 2;
ADDRLP4 4
INDIRP4
CNSTI4 288
ADDP4
CNSTI4 2
ASGNI4
line 1074
;1074:			} else if ( level.teamScores[TEAM_RED] > level.teamScores[TEAM_BLUE] ) {
ADDRGP4 $553
JUMPV
LABELV $552
ADDRGP4 level+44+4
INDIRI4
ADDRGP4 level+44+8
INDIRI4
LEI4 $558
line 1075
;1075:				cl->ps.persistant[PERS_RANK] = 0;
ADDRLP4 4
INDIRP4
CNSTI4 288
ADDP4
CNSTI4 0
ASGNI4
line 1076
;1076:			} else {
ADDRGP4 $559
JUMPV
LABELV $558
line 1077
;1077:				cl->ps.persistant[PERS_RANK] = 1;
ADDRLP4 4
INDIRP4
CNSTI4 288
ADDP4
CNSTI4 1
ASGNI4
line 1078
;1078:			}
LABELV $559
LABELV $553
line 1079
;1079:		}
LABELV $547
line 1070
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $549
ADDRLP4 0
INDIRI4
ADDRGP4 level+72
INDIRI4
LTI4 $546
line 1080
;1080:	} else {	
ADDRGP4 $544
JUMPV
LABELV $543
line 1081
;1081:		rank = -1;
ADDRLP4 12
CNSTI4 -1
ASGNI4
line 1082
;1082:		score = 0;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 1083
;1083:		for ( i = 0;  i < level.numPlayingClients; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $567
JUMPV
LABELV $564
line 1084
;1084:			cl = &level.clients[ level.sortedClients[i] ];
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1085
;1085:			newScore = cl->ps.persistant[PERS_SCORE];
ADDRLP4 8
ADDRLP4 4
INDIRP4
CNSTI4 280
ADDP4
INDIRI4
ASGNI4
line 1086
;1086:			if ( i == 0 || newScore != score ) {
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $572
ADDRLP4 8
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $570
LABELV $572
line 1087
;1087:				rank = i;
ADDRLP4 12
ADDRLP4 0
INDIRI4
ASGNI4
line 1089
;1088:				// assume we aren't tied until the next client is checked
;1089:				level.clients[ level.sortedClients[i] ].ps.persistant[PERS_RANK] = rank;
CNSTI4 1804
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 288
ADDP4
ADDRLP4 12
INDIRI4
ASGNI4
line 1090
;1090:			} else {
ADDRGP4 $571
JUMPV
LABELV $570
line 1092
;1091:				// we are tied with the previous client
;1092:				level.clients[ level.sortedClients[i-1] ].ps.persistant[PERS_RANK] = rank | RANK_TIED_FLAG;
CNSTI4 1804
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84-4
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 288
ADDP4
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 1093
;1093:				level.clients[ level.sortedClients[i] ].ps.persistant[PERS_RANK] = rank | RANK_TIED_FLAG;
CNSTI4 1804
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 288
ADDP4
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 1094
;1094:			}
LABELV $571
line 1095
;1095:			score = newScore;
ADDRLP4 16
ADDRLP4 8
INDIRI4
ASGNI4
line 1096
;1096:			if ( g_gametype.integer == GT_SINGLE_PLAYER && level.numPlayingClients == 1 ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 4
NEI4 $577
ADDRGP4 level+80
INDIRI4
CNSTI4 1
NEI4 $577
line 1097
;1097:				level.clients[ level.sortedClients[i] ].ps.persistant[PERS_RANK] = rank | RANK_TIED_FLAG;
CNSTI4 1804
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 288
ADDP4
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 1098
;1098:			}
LABELV $577
line 1099
;1099:		}
LABELV $565
line 1083
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $567
ADDRLP4 0
INDIRI4
ADDRGP4 level+80
INDIRI4
LTI4 $564
line 1100
;1100:	}
LABELV $544
line 1103
;1101:
;1102:	// set the CS_SCORES1/2 configstrings, which will be visible to everyone
;1103:	if ( g_gametype.integer >= GT_TEAM ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LTI4 $582
line 1104
;1104:		trap_SetConfigstring( CS_SCORES1, va("%i", level.teamScores[TEAM_RED] ) );
ADDRGP4 $451
ARGP4
ADDRGP4 level+44+4
INDIRI4
ARGI4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1105
;1105:		trap_SetConfigstring( CS_SCORES2, va("%i", level.teamScores[TEAM_BLUE] ) );
ADDRGP4 $451
ARGP4
ADDRGP4 level+44+8
INDIRI4
ARGI4
ADDRLP4 32
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 32
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1106
;1106:	} else {
ADDRGP4 $583
JUMPV
LABELV $582
line 1107
;1107:		if ( level.numConnectedClients == 0 ) {
ADDRGP4 level+72
INDIRI4
CNSTI4 0
NEI4 $589
line 1108
;1108:			trap_SetConfigstring( CS_SCORES1, va("%i", SCORE_NOT_PRESENT) );
ADDRGP4 $451
ARGP4
CNSTI4 -9999
ARGI4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1109
;1109:			trap_SetConfigstring( CS_SCORES2, va("%i", SCORE_NOT_PRESENT) );
ADDRGP4 $451
ARGP4
CNSTI4 -9999
ARGI4
ADDRLP4 32
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 32
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1110
;1110:		} else if ( level.numConnectedClients == 1 ) {
ADDRGP4 $590
JUMPV
LABELV $589
ADDRGP4 level+72
INDIRI4
CNSTI4 1
NEI4 $592
line 1111
;1111:			trap_SetConfigstring( CS_SCORES1, va("%i", level.clients[ level.sortedClients[0] ].ps.persistant[PERS_SCORE] ) );
ADDRGP4 $451
ARGP4
CNSTI4 1804
ADDRGP4 level+84
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ARGI4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1112
;1112:			trap_SetConfigstring( CS_SCORES2, va("%i", SCORE_NOT_PRESENT) );
ADDRGP4 $451
ARGP4
CNSTI4 -9999
ARGI4
ADDRLP4 32
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 32
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1113
;1113:		} else {
ADDRGP4 $593
JUMPV
LABELV $592
line 1114
;1114:			trap_SetConfigstring( CS_SCORES1, va("%i", level.clients[ level.sortedClients[0] ].ps.persistant[PERS_SCORE] ) );
ADDRGP4 $451
ARGP4
CNSTI4 1804
ADDRGP4 level+84
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ARGI4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 6
ARGI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1115
;1115:			trap_SetConfigstring( CS_SCORES2, va("%i", level.clients[ level.sortedClients[1] ].ps.persistant[PERS_SCORE] ) );
ADDRGP4 $451
ARGP4
CNSTI4 1804
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ARGI4
ADDRLP4 32
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 7
ARGI4
ADDRLP4 32
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1116
;1116:		}
LABELV $593
LABELV $590
line 1118
;1117:
;1118:		if (g_gametype.integer != GT_TOURNAMENT)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
EQI4 $599
line 1119
;1119:		{ //when not in duel, use this configstring to pass the index of the player currently in first place
line 1120
;1120:			if ( level.numConnectedClients >= 1 )
ADDRGP4 level+72
INDIRI4
CNSTI4 1
LTI4 $602
line 1121
;1121:			{
line 1122
;1122:				trap_SetConfigstring ( CS_CLIENT_DUELWINNER, va("%i", level.sortedClients[0] ) );
ADDRGP4 $451
ARGP4
ADDRGP4 level+84
INDIRI4
ARGI4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 29
ARGI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1123
;1123:			}
ADDRGP4 $603
JUMPV
LABELV $602
line 1125
;1124:			else
;1125:			{
line 1126
;1126:				trap_SetConfigstring ( CS_CLIENT_DUELWINNER, "-1" );
CNSTI4 29
ARGI4
ADDRGP4 $333
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1127
;1127:			}
LABELV $603
line 1128
;1128:		}
LABELV $599
line 1129
;1129:	}
LABELV $583
line 1132
;1130:
;1131:	// see if it is time to end the level
;1132:	CheckExitRules();
ADDRGP4 CheckExitRules
CALLV
pop
line 1135
;1133:
;1134:	// if we are at the intermission or in multi-frag Duel game mode, send the new info to everyone
;1135:	if ( level.intermissiontime || g_gametype.integer == GT_TOURNAMENT ) {
ADDRGP4 level+9008
INDIRI4
CNSTI4 0
NEI4 $610
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $606
LABELV $610
line 1136
;1136:		gQueueScoreMessage = qtrue;
ADDRGP4 gQueueScoreMessage
CNSTI4 1
ASGNI4
line 1137
;1137:		gQueueScoreMessageTime = level.time + 500;
ADDRGP4 gQueueScoreMessageTime
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 1140
;1138:		//SendScoreboardMessageToAllClients();
;1139:		//rww - Made this operate on a "queue" system because it was causing large overflows
;1140:	}
LABELV $606
line 1141
;1141:}
LABELV $487
endproc CalculateRanks 52 16
export SendScoreboardMessageToAllClients
proc SendScoreboardMessageToAllClients 4 4
line 1160
;1142:
;1143:
;1144:/*
;1145:========================================================================
;1146:
;1147:MAP CHANGING
;1148:
;1149:========================================================================
;1150:*/
;1151:
;1152:/*
;1153:========================
;1154:SendScoreboardMessageToAllClients
;1155:
;1156:Do this at BeginIntermission time and whenever ranks are recalculated
;1157:due to enters/exits/forced team changes
;1158:========================
;1159:*/
;1160:void SendScoreboardMessageToAllClients( void ) {
line 1163
;1161:	int		i;
;1162:
;1163:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $616
JUMPV
LABELV $613
line 1164
;1164:		if ( level.clients[ i ].pers.connected == CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
NEI4 $618
line 1165
;1165:			DeathmatchScoreboardMessage( g_entities + i );
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRGP4 DeathmatchScoreboardMessage
CALLV
pop
line 1166
;1166:		}
LABELV $618
line 1167
;1167:	}
LABELV $614
line 1163
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $616
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $613
line 1168
;1168:}
LABELV $612
endproc SendScoreboardMessageToAllClients 4 4
export MoveClientToIntermission
proc MoveClientToIntermission 0 12
line 1178
;1169:
;1170:/*
;1171:========================
;1172:MoveClientToIntermission
;1173:
;1174:When the intermission starts, this will be called for all players.
;1175:If a new client connects, this will be called after the spawn function.
;1176:========================
;1177:*/
;1178:void MoveClientToIntermission( gentity_t *ent ) {
line 1180
;1179:	// take out of follow mode if needed
;1180:	if ( ent->client->sess.spectatorState == SPECTATOR_FOLLOW ) {
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1544
ADDP4
INDIRI4
CNSTI4 2
NEI4 $621
line 1181
;1181:		StopFollowing( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 StopFollowing
CALLV
pop
line 1182
;1182:	}
LABELV $621
line 1186
;1183:
;1184:
;1185:	// move to the spot
;1186:	VectorCopy( level.intermission_origin, ent->s.origin );
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ADDRGP4 level+9024
INDIRB
ASGNB 12
line 1187
;1187:	VectorCopy( level.intermission_origin, ent->client->ps.origin );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ADDRGP4 level+9024
INDIRB
ASGNB 12
line 1188
;1188:	VectorCopy (level.intermission_angle, ent->client->ps.viewangles);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ADDRGP4 level+9036
INDIRB
ASGNB 12
line 1189
;1189:	ent->client->ps.pm_type = PM_INTERMISSION;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 6
ASGNI4
line 1192
;1190:
;1191:	// clean up powerup info
;1192:	memset( ent->client->ps.powerups, 0, sizeof(ent->client->ps.powerups) );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 344
ADDP4
ARGP4
CNSTI4 0
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 memset
CALLP4
pop
line 1194
;1193:
;1194:	ent->client->ps.eFlags = 0;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
CNSTI4 0
ASGNI4
line 1195
;1195:	ent->s.eFlags = 0;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
CNSTI4 0
ASGNI4
line 1196
;1196:	ent->s.eType = ET_GENERAL;
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 0
ASGNI4
line 1197
;1197:	ent->s.modelindex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 212
ADDP4
CNSTI4 0
ASGNI4
line 1198
;1198:	ent->s.loopSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
CNSTI4 0
ASGNI4
line 1199
;1199:	ent->s.event = 0;
ADDRFP4 0
INDIRP4
CNSTI4 252
ADDP4
CNSTI4 0
ASGNI4
line 1200
;1200:	ent->r.contents = 0;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 0
ASGNI4
line 1201
;1201:}
LABELV $620
endproc MoveClientToIntermission 0 12
export FindIntermissionPoint
proc FindIntermissionPoint 32 12
line 1210
;1202:
;1203:/*
;1204:==================
;1205:FindIntermissionPoint
;1206:
;1207:This is also used for spectator spawns
;1208:==================
;1209:*/
;1210:void FindIntermissionPoint( void ) {
line 1215
;1211:	gentity_t	*ent, *target;
;1212:	vec3_t		dir;
;1213:
;1214:	// find the intermission spot
;1215:	ent = G_Find (NULL, FOFS(classname), "info_player_intermission");
CNSTP4 0
ARGP4
CNSTI4 416
ARGI4
ADDRGP4 $627
ARGP4
ADDRLP4 20
ADDRGP4 G_Find
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 20
INDIRP4
ASGNP4
line 1216
;1216:	if ( !ent ) {	// the map creator forgot to put in an intermission point...
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $628
line 1217
;1217:		SelectSpawnPoint ( vec3_origin, level.intermission_origin, level.intermission_angle );
ADDRGP4 vec3_origin
ARGP4
ADDRGP4 level+9024
ARGP4
ADDRGP4 level+9036
ARGP4
ADDRGP4 SelectSpawnPoint
CALLP4
pop
line 1218
;1218:	} else {
ADDRGP4 $629
JUMPV
LABELV $628
line 1219
;1219:		VectorCopy (ent->s.origin, level.intermission_origin);
ADDRGP4 level+9024
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
INDIRB
ASGNB 12
line 1220
;1220:		VectorCopy (ent->s.angles, level.intermission_angle);
ADDRGP4 level+9036
ADDRLP4 0
INDIRP4
CNSTI4 116
ADDP4
INDIRB
ASGNB 12
line 1222
;1221:		// if it has a target, look towards it
;1222:		if ( ent->target ) {
ADDRLP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $634
line 1223
;1223:			target = G_PickTarget( ent->target );
ADDRLP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 G_PickTarget
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 24
INDIRP4
ASGNP4
line 1224
;1224:			if ( target ) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $636
line 1225
;1225:				VectorSubtract( target->s.origin, level.intermission_origin, dir );
ADDRLP4 28
ADDRLP4 4
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 28
INDIRP4
CNSTI4 92
ADDP4
INDIRF4
ADDRGP4 level+9024
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 28
INDIRP4
CNSTI4 96
ADDP4
INDIRF4
ADDRGP4 level+9024+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+8
ADDRLP4 4
INDIRP4
CNSTI4 100
ADDP4
INDIRF4
ADDRGP4 level+9024+8
INDIRF4
SUBF4
ASGNF4
line 1226
;1226:				vectoangles( dir, level.intermission_angle );
ADDRLP4 8
ARGP4
ADDRGP4 level+9036
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 1227
;1227:			}
LABELV $636
line 1228
;1228:		}
LABELV $634
line 1229
;1229:	}
LABELV $629
line 1231
;1230:
;1231:}
LABELV $626
endproc FindIntermissionPoint 32 12
export BeginIntermission
proc BeginIntermission 12 8
line 1240
;1232:
;1233:qboolean DuelLimitHit(void);
;1234:
;1235:/*
;1236:==================
;1237:BeginIntermission
;1238:==================
;1239:*/
;1240:void BeginIntermission( void ) {
line 1244
;1241:	int			i;
;1242:	gentity_t	*client;
;1243:
;1244:	if ( level.intermissiontime ) {
ADDRGP4 level+9008
INDIRI4
CNSTI4 0
EQI4 $647
line 1245
;1245:		return;		// already active
ADDRGP4 $646
JUMPV
LABELV $647
line 1249
;1246:	}
;1247:
;1248:	// if in tournement mode, change the wins / losses
;1249:	if ( g_gametype.integer == GT_TOURNAMENT ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $650
line 1250
;1250:		trap_SetConfigstring ( CS_CLIENT_DUELWINNER, "-1" );
CNSTI4 29
ARGI4
ADDRGP4 $333
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1252
;1251:
;1252:		AdjustTournamentScores();
ADDRGP4 AdjustTournamentScores
CALLV
pop
line 1253
;1253:		if (DuelLimitHit())
ADDRLP4 8
ADDRGP4 DuelLimitHit
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $653
line 1254
;1254:		{
line 1255
;1255:			gDuelExit = qtrue;
ADDRGP4 gDuelExit
CNSTI4 1
ASGNI4
line 1256
;1256:		}
ADDRGP4 $654
JUMPV
LABELV $653
line 1258
;1257:		else
;1258:		{
line 1259
;1259:			gDuelExit = qfalse;
ADDRGP4 gDuelExit
CNSTI4 0
ASGNI4
line 1260
;1260:		}
LABELV $654
line 1261
;1261:	}
LABELV $650
line 1263
;1262:
;1263:	level.intermissiontime = level.time;
ADDRGP4 level+9008
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1264
;1264:	FindIntermissionPoint();
ADDRGP4 FindIntermissionPoint
CALLV
pop
line 1266
;1265:
;1266:	if (g_singlePlayer.integer) {
ADDRGP4 g_singlePlayer+12
INDIRI4
CNSTI4 0
EQI4 $657
line 1267
;1267:		trap_Cvar_Set("ui_singlePlayerActive", "0");
ADDRGP4 $187
ARGP4
ADDRGP4 $97
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1268
;1268:		UpdateTournamentInfo();
ADDRGP4 UpdateTournamentInfo
CALLV
pop
line 1269
;1269:	}
LABELV $657
line 1272
;1270:
;1271:	// move all clients to the intermission point
;1272:	for (i=0 ; i< level.maxclients ; i++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $663
JUMPV
LABELV $660
line 1273
;1273:		client = g_entities + i;
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1274
;1274:		if (!client->inuse)
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $665
line 1275
;1275:			continue;
ADDRGP4 $661
JUMPV
LABELV $665
line 1277
;1276:		// respawn if dead
;1277:		if (client->health <= 0) {
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
GTI4 $667
line 1278
;1278:			respawn(client);
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 respawn
CALLV
pop
line 1279
;1279:		}
LABELV $667
line 1280
;1280:		MoveClientToIntermission( client );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 MoveClientToIntermission
CALLV
pop
line 1281
;1281:	}
LABELV $661
line 1272
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $663
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $660
line 1284
;1282:
;1283:	// send the current scoring to all clients
;1284:	SendScoreboardMessageToAllClients();
ADDRGP4 SendScoreboardMessageToAllClients
CALLV
pop
line 1286
;1285:
;1286:}
LABELV $646
endproc BeginIntermission 12 8
export DuelLimitHit
proc DuelLimitHit 8 0
line 1289
;1287:
;1288:qboolean DuelLimitHit(void)
;1289:{
line 1293
;1290:	int i;
;1291:	gclient_t *cl;
;1292:
;1293:	for ( i=0 ; i< g_maxclients.integer ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $673
JUMPV
LABELV $670
line 1294
;1294:		cl = level.clients + i;
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1295
;1295:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $675
line 1296
;1296:			continue;
ADDRGP4 $671
JUMPV
LABELV $675
line 1299
;1297:		}
;1298:
;1299:		if ( g_duel_fraglimit.integer && cl->sess.wins >= g_duel_fraglimit.integer )
ADDRGP4 g_duel_fraglimit+12
INDIRI4
CNSTI4 0
EQI4 $677
ADDRLP4 4
INDIRP4
CNSTI4 1552
ADDP4
INDIRI4
ADDRGP4 g_duel_fraglimit+12
INDIRI4
LTI4 $677
line 1300
;1300:		{
line 1301
;1301:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $669
JUMPV
LABELV $677
line 1303
;1302:		}
;1303:	}
LABELV $671
line 1293
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $673
ADDRLP4 0
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $670
line 1305
;1304:
;1305:	return qfalse;
CNSTI4 0
RETI4
LABELV $669
endproc DuelLimitHit 8 0
export DuelResetWinsLosses
proc DuelResetWinsLosses 8 0
line 1309
;1306:}
;1307:
;1308:void DuelResetWinsLosses(void)
;1309:{
line 1313
;1310:	int i;
;1311:	gclient_t *cl;
;1312:
;1313:	for ( i=0 ; i< g_maxclients.integer ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $685
JUMPV
LABELV $682
line 1314
;1314:		cl = level.clients + i;
ADDRLP4 0
CNSTI4 1804
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1315
;1315:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $687
line 1316
;1316:			continue;
ADDRGP4 $683
JUMPV
LABELV $687
line 1319
;1317:		}
;1318:
;1319:		cl->sess.wins = 0;
ADDRLP4 0
INDIRP4
CNSTI4 1552
ADDP4
CNSTI4 0
ASGNI4
line 1320
;1320:		cl->sess.losses = 0;
ADDRLP4 0
INDIRP4
CNSTI4 1556
ADDP4
CNSTI4 0
ASGNI4
line 1321
;1321:	}
LABELV $683
line 1313
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $685
ADDRLP4 4
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $682
line 1322
;1322:}
LABELV $681
endproc DuelResetWinsLosses 8 0
export ExitLevel
proc ExitLevel 12 8
line 1333
;1323:
;1324:/*
;1325:=============
;1326:ExitLevel
;1327:
;1328:When the intermission has been exited, the server is either killed
;1329:or moved to a new level based on the "nextmap" cvar 
;1330:
;1331:=============
;1332:*/
;1333:void ExitLevel (void) {
line 1339
;1334:	int		i;
;1335:	gclient_t *cl;
;1336:
;1337:	// if we are running a tournement map, kick the loser to spectator status,
;1338:	// which will automatically grab the next spectator and restart
;1339:	if ( g_gametype.integer == GT_TOURNAMENT  ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $690
line 1340
;1340:		if (!DuelLimitHit())
ADDRLP4 8
ADDRGP4 DuelLimitHit
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $693
line 1341
;1341:		{
line 1342
;1342:			if ( !level.restarted ) {
ADDRGP4 level+68
INDIRI4
CNSTI4 0
NEI4 $689
line 1343
;1343:				trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0\n" );
CNSTI4 2
ARGI4
ADDRGP4 $698
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 1344
;1344:				level.restarted = qtrue;
ADDRGP4 level+68
CNSTI4 1
ASGNI4
line 1345
;1345:				level.changemap = NULL;
ADDRGP4 level+9012
CNSTP4 0
ASGNP4
line 1346
;1346:				level.intermissiontime = 0;
ADDRGP4 level+9008
CNSTI4 0
ASGNI4
line 1347
;1347:			}
line 1348
;1348:			return;	
ADDRGP4 $689
JUMPV
LABELV $693
line 1351
;1349:		}
;1350:
;1351:		DuelResetWinsLosses();
ADDRGP4 DuelResetWinsLosses
CALLV
pop
line 1352
;1352:	}
LABELV $690
line 1355
;1353:
;1354:
;1355:	trap_SendConsoleCommand( EXEC_APPEND, "vstr nextmap\n" );
CNSTI4 2
ARGI4
ADDRGP4 $702
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 1356
;1356:	level.changemap = NULL;
ADDRGP4 level+9012
CNSTP4 0
ASGNP4
line 1357
;1357:	level.intermissiontime = 0;
ADDRGP4 level+9008
CNSTI4 0
ASGNI4
line 1360
;1358:
;1359:	// reset all the scores so we don't enter the intermission again
;1360:	level.teamScores[TEAM_RED] = 0;
ADDRGP4 level+44+4
CNSTI4 0
ASGNI4
line 1361
;1361:	level.teamScores[TEAM_BLUE] = 0;
ADDRGP4 level+44+8
CNSTI4 0
ASGNI4
line 1362
;1362:	for ( i=0 ; i< g_maxclients.integer ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $712
JUMPV
LABELV $709
line 1363
;1363:		cl = level.clients + i;
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1364
;1364:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $714
line 1365
;1365:			continue;
ADDRGP4 $710
JUMPV
LABELV $714
line 1367
;1366:		}
;1367:		cl->ps.persistant[PERS_SCORE] = 0;
ADDRLP4 4
INDIRP4
CNSTI4 280
ADDP4
CNSTI4 0
ASGNI4
line 1368
;1368:	}
LABELV $710
line 1362
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $712
ADDRLP4 0
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $709
line 1371
;1369:
;1370:	// we need to do this here before chaning to CON_CONNECTING
;1371:	G_WriteSessionData();
ADDRGP4 G_WriteSessionData
CALLV
pop
line 1375
;1372:
;1373:	// change all client states to connecting, so the early players into the
;1374:	// next level will know the others aren't done reconnecting
;1375:	for (i=0 ; i< g_maxclients.integer ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $719
JUMPV
LABELV $716
line 1376
;1376:		if ( level.clients[i].pers.connected == CON_CONNECTED ) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
NEI4 $721
line 1377
;1377:			level.clients[i].pers.connected = CON_CONNECTING;
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
CNSTI4 1
ASGNI4
line 1378
;1378:		}
LABELV $721
line 1379
;1379:	}
LABELV $717
line 1375
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $719
ADDRLP4 0
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $716
line 1381
;1380:
;1381:}
LABELV $689
endproc ExitLevel 12 8
export G_LogPrintf
proc G_LogPrintf 1044 24
line 1390
;1382:
;1383:/*
;1384:=================
;1385:G_LogPrintf
;1386:
;1387:Print to the logfile with a time stamp if it is open
;1388:=================
;1389:*/
;1390:void QDECL G_LogPrintf( const char *fmt, ... ) {
line 1395
;1391:	va_list		argptr;
;1392:	char		string[1024];
;1393:	int			min, tens, sec;
;1394:
;1395:	sec = level.time / 1000;
ADDRLP4 0
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
DIVI4
ASGNI4
line 1397
;1396:
;1397:	min = sec / 60;
ADDRLP4 1032
ADDRLP4 0
INDIRI4
CNSTI4 60
DIVI4
ASGNI4
line 1398
;1398:	sec -= min * 60;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 60
ADDRLP4 1032
INDIRI4
MULI4
SUBI4
ASGNI4
line 1399
;1399:	tens = sec / 10;
ADDRLP4 1036
ADDRLP4 0
INDIRI4
CNSTI4 10
DIVI4
ASGNI4
line 1400
;1400:	sec -= tens * 10;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 10
ADDRLP4 1036
INDIRI4
MULI4
SUBI4
ASGNI4
line 1402
;1401:
;1402:	Com_sprintf( string, sizeof(string), "%3i:%i%i ", min, tens, sec );
ADDRLP4 4
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $725
ARGP4
ADDRLP4 1032
INDIRI4
ARGI4
ADDRLP4 1036
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 Com_sprintf
CALLV
pop
line 1404
;1403:
;1404:	va_start( argptr, fmt );
ADDRLP4 1028
ADDRFP4 0+4
ASGNP4
line 1405
;1405:	vsprintf( string +7 , fmt,argptr );
ADDRLP4 4+7
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1028
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 1406
;1406:	va_end( argptr );
ADDRLP4 1028
CNSTP4 0
ASGNP4
line 1408
;1407:
;1408:	if ( g_dedicated.integer ) {
ADDRGP4 g_dedicated+12
INDIRI4
CNSTI4 0
EQI4 $728
line 1409
;1409:		G_Printf( "%s", string + 7 );
ADDRGP4 $364
ARGP4
ADDRLP4 4+7
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 1410
;1410:	}
LABELV $728
line 1412
;1411:
;1412:	if ( !level.logFile ) {
ADDRGP4 level+20
INDIRI4
CNSTI4 0
NEI4 $732
line 1413
;1413:		return;
ADDRGP4 $723
JUMPV
LABELV $732
line 1416
;1414:	}
;1415:
;1416:	trap_FS_Write( string, strlen( string ), level.logFile );
ADDRLP4 4
ARGP4
ADDRLP4 1040
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 4
ARGP4
ADDRLP4 1040
INDIRI4
ARGI4
ADDRGP4 level+20
INDIRI4
ARGI4
ADDRGP4 trap_FS_Write
CALLV
pop
line 1417
;1417:}
LABELV $723
endproc G_LogPrintf 1044 24
export LogExit
proc LogExit 36 20
line 1426
;1418:
;1419:/*
;1420:================
;1421:LogExit
;1422:
;1423:Append information about this game to the log file
;1424:================
;1425:*/
;1426:void LogExit( const char *string ) {
line 1429
;1427:	int				i, numSorted;
;1428:	gclient_t		*cl;
;1429:	qboolean		won = qtrue;
ADDRLP4 12
CNSTI4 1
ASGNI4
line 1430
;1430:	G_LogPrintf( "Exit: %s\n", string );
ADDRGP4 $737
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1432
;1431:
;1432:	level.intermissionQueued = level.time;
ADDRGP4 level+9004
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1436
;1433:
;1434:	// this will keep the clients from playing any voice sounds
;1435:	// that will get cut off when the queued intermission starts
;1436:	trap_SetConfigstring( CS_INTERMISSION, "1" );
CNSTI4 22
ARGI4
ADDRGP4 $113
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1439
;1437:
;1438:	// don't send more than 32 scores (FIXME?)
;1439:	numSorted = level.numConnectedClients;
ADDRLP4 8
ADDRGP4 level+72
INDIRI4
ASGNI4
line 1440
;1440:	if ( numSorted > 32 ) {
ADDRLP4 8
INDIRI4
CNSTI4 32
LEI4 $741
line 1441
;1441:		numSorted = 32;
ADDRLP4 8
CNSTI4 32
ASGNI4
line 1442
;1442:	}
LABELV $741
line 1444
;1443:
;1444:	if ( g_gametype.integer >= GT_TEAM ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LTI4 $743
line 1445
;1445:		G_LogPrintf( "red:%i  blue:%i\n",
ADDRGP4 $746
ARGP4
ADDRGP4 level+44+4
INDIRI4
ARGI4
ADDRGP4 level+44+8
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1447
;1446:			level.teamScores[TEAM_RED], level.teamScores[TEAM_BLUE] );
;1447:	}
LABELV $743
line 1449
;1448:
;1449:	for (i=0 ; i < numSorted ; i++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $754
JUMPV
LABELV $751
line 1452
;1450:		int		ping;
;1451:
;1452:		cl = &level.clients[level.sortedClients[i]];
ADDRLP4 0
CNSTI4 1804
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1454
;1453:
;1454:		if ( cl->sess.sessionTeam == TEAM_SPECTATOR ) {
ADDRLP4 0
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $756
line 1455
;1455:			continue;
ADDRGP4 $752
JUMPV
LABELV $756
line 1457
;1456:		}
;1457:		if ( cl->pers.connected == CON_CONNECTING ) {
ADDRLP4 0
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 1
NEI4 $758
line 1458
;1458:			continue;
ADDRGP4 $752
JUMPV
LABELV $758
line 1461
;1459:		}
;1460:
;1461:		ping = cl->ps.ping < 999 ? cl->ps.ping : 999;
ADDRLP4 0
INDIRP4
CNSTI4 484
ADDP4
INDIRI4
CNSTI4 999
GEI4 $761
ADDRLP4 20
ADDRLP4 0
INDIRP4
CNSTI4 484
ADDP4
INDIRI4
ASGNI4
ADDRGP4 $762
JUMPV
LABELV $761
ADDRLP4 20
CNSTI4 999
ASGNI4
LABELV $762
ADDRLP4 16
ADDRLP4 20
INDIRI4
ASGNI4
line 1463
;1462:
;1463:		G_LogPrintf( "score: %i  ping: %i  client: %i %s\n", cl->ps.persistant[PERS_SCORE], ping, level.sortedClients[i],	cl->pers.netname );
ADDRGP4 $763
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 280
ADDP4
INDIRI4
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+84
ADDP4
INDIRI4
ARGI4
ADDRLP4 0
INDIRP4
CNSTI4 1428
ADDP4
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1464
;1464:		if (g_singlePlayer.integer && g_gametype.integer == GT_TOURNAMENT) {
ADDRGP4 g_singlePlayer+12
INDIRI4
CNSTI4 0
EQI4 $765
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $765
line 1465
;1465:			if (g_entities[cl - level.clients].r.svFlags & SVF_BOT && cl->ps.persistant[PERS_RANK] == 0) {
ADDRLP4 32
CNSTI4 0
ASGNI4
CNSTI4 828
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRGP4 level
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
CNSTI4 1804
DIVI4
MULI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
ADDRLP4 32
INDIRI4
EQI4 $769
ADDRLP4 0
INDIRP4
CNSTI4 288
ADDP4
INDIRI4
ADDRLP4 32
INDIRI4
NEI4 $769
line 1466
;1466:				won = qfalse;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 1467
;1467:			}
LABELV $769
line 1468
;1468:		}
LABELV $765
line 1469
;1469:	}
LABELV $752
line 1449
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $754
ADDRLP4 4
INDIRI4
ADDRLP4 8
INDIRI4
LTI4 $751
line 1471
;1470:
;1471:	if (g_singlePlayer.integer) {
ADDRGP4 g_singlePlayer+12
INDIRI4
CNSTI4 0
EQI4 $773
line 1472
;1472:		if (g_gametype.integer >= GT_CTF) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 7
LTI4 $776
line 1473
;1473:			won = level.teamScores[TEAM_RED] > level.teamScores[TEAM_BLUE];
ADDRGP4 level+44+4
INDIRI4
ADDRGP4 level+44+8
INDIRI4
LEI4 $784
ADDRLP4 16
CNSTI4 1
ASGNI4
ADDRGP4 $785
JUMPV
LABELV $784
ADDRLP4 16
CNSTI4 0
ASGNI4
LABELV $785
ADDRLP4 12
ADDRLP4 16
INDIRI4
ASGNI4
line 1474
;1474:		}
LABELV $776
line 1475
;1475:		trap_SendConsoleCommand( EXEC_APPEND, (won) ? "spWin\n" : "spLose\n" );
CNSTI4 2
ARGI4
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $789
ADDRLP4 16
ADDRGP4 $786
ASGNP4
ADDRGP4 $790
JUMPV
LABELV $789
ADDRLP4 16
ADDRGP4 $787
ASGNP4
LABELV $790
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 1476
;1476:	}
LABELV $773
line 1477
;1477:}
LABELV $736
endproc LogExit 36 20
data
export gDidDuelStuff
align 4
LABELV gDidDuelStuff
byte 4 0
export CheckIntermissionExit
code
proc CheckIntermissionExit 64 32
line 1491
;1478:
;1479:qboolean gDidDuelStuff = qfalse; //gets reset on game reinit
;1480:
;1481:/*
;1482:=================
;1483:CheckIntermissionExit
;1484:
;1485:The level will stay at the intermission for a minimum of 5 seconds
;1486:If all players wish to continue, the level will then exit.
;1487:If one or more players have not acknowledged the continue, the game will
;1488:wait 10 seconds before going on.
;1489:=================
;1490:*/
;1491:void CheckIntermissionExit( void ) {
line 1498
;1492:	int			ready, notReady;
;1493:	int			i;
;1494:	gclient_t	*cl;
;1495:	int			readyMask;
;1496:
;1497:	// see which players are ready
;1498:	ready = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 1499
;1499:	notReady = 0;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 1500
;1500:	readyMask = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1501
;1501:	for (i=0 ; i< g_maxclients.integer ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $795
JUMPV
LABELV $792
line 1502
;1502:		cl = level.clients + i;
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1503
;1503:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $797
line 1504
;1504:			continue;
ADDRGP4 $793
JUMPV
LABELV $797
line 1506
;1505:		}
;1506:		if ( g_entities[cl->ps.clientNum].r.svFlags & SVF_BOT ) {
CNSTI4 828
ADDRLP4 4
INDIRP4
CNSTI4 144
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
EQI4 $799
line 1507
;1507:			continue;
ADDRGP4 $793
JUMPV
LABELV $799
line 1510
;1508:		}
;1509:
;1510:		if ( cl->readyToExit ) {
ADDRLP4 4
INDIRP4
CNSTI4 1588
ADDP4
INDIRI4
CNSTI4 0
EQI4 $803
line 1511
;1511:			ready++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1512
;1512:			if ( i < 16 ) {
ADDRLP4 0
INDIRI4
CNSTI4 16
GEI4 $804
line 1513
;1513:				readyMask |= 1 << i;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDRLP4 0
INDIRI4
LSHI4
BORI4
ASGNI4
line 1514
;1514:			}
line 1515
;1515:		} else {
ADDRGP4 $804
JUMPV
LABELV $803
line 1516
;1516:			notReady++;
ADDRLP4 16
ADDRLP4 16
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1517
;1517:		}
LABELV $804
line 1518
;1518:	}
LABELV $793
line 1501
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $795
ADDRLP4 0
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $792
line 1520
;1519:
;1520:	if ( g_gametype.integer == GT_TOURNAMENT && !gDidDuelStuff &&
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $807
ADDRGP4 gDidDuelStuff
INDIRI4
CNSTI4 0
NEI4 $807
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+9008
INDIRI4
CNSTI4 2000
ADDI4
LEI4 $807
line 1522
;1521:		(level.time > level.intermissiontime + 2000) )
;1522:	{
line 1523
;1523:		gDidDuelStuff = qtrue;
ADDRGP4 gDidDuelStuff
CNSTI4 1
ASGNI4
line 1525
;1524:
;1525:		if ( g_austrian.integer )
ADDRGP4 g_austrian+12
INDIRI4
CNSTI4 0
EQI4 $812
line 1526
;1526:		{
line 1527
;1527:			G_LogPrintf("Duel Results:\n");
ADDRGP4 $815
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1529
;1528:			//G_LogPrintf("Duel Time: %d\n", level.time );
;1529:			G_LogPrintf("winner: %s, score: %d, wins/losses: %d/%d\n", 
ADDRGP4 $816
ARGP4
ADDRLP4 20
CNSTI4 1804
ASGNI4
ADDRLP4 24
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 20
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 20
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ARGI4
ADDRLP4 20
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 1552
ADDP4
INDIRI4
ARGI4
ADDRLP4 20
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 24
INDIRP4
ADDP4
CNSTI4 1556
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1534
;1530:				level.clients[level.sortedClients[0]].pers.netname,
;1531:				level.clients[level.sortedClients[0]].ps.persistant[PERS_SCORE],
;1532:				level.clients[level.sortedClients[0]].sess.wins,
;1533:				level.clients[level.sortedClients[0]].sess.losses );
;1534:			G_LogPrintf("loser: %s, score: %d, wins/losses: %d/%d\n", 
ADDRGP4 $821
ARGP4
ADDRLP4 28
CNSTI4 1804
ASGNI4
ADDRLP4 32
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 28
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 32
INDIRP4
ADDP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 28
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 32
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ARGI4
ADDRLP4 28
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 32
INDIRP4
ADDP4
CNSTI4 1552
ADDP4
INDIRI4
ARGI4
ADDRLP4 28
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 32
INDIRP4
ADDP4
CNSTI4 1556
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1539
;1535:				level.clients[level.sortedClients[1]].pers.netname,
;1536:				level.clients[level.sortedClients[1]].ps.persistant[PERS_SCORE],
;1537:				level.clients[level.sortedClients[1]].sess.wins,
;1538:				level.clients[level.sortedClients[1]].sess.losses );
;1539:		}
LABELV $812
line 1542
;1540:		// if we are running a tournement map, kick the loser to spectator status,
;1541:		// which will automatically grab the next spectator and restart
;1542:		if (!DuelLimitHit())
ADDRLP4 20
ADDRGP4 DuelLimitHit
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $830
line 1543
;1543:		{
line 1544
;1544:			if (level.clients[level.sortedClients[0]].ps.persistant[PERS_SCORE] ==
ADDRLP4 24
CNSTI4 1804
ASGNI4
ADDRLP4 28
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 32
CNSTI4 280
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
NEI4 $832
ADDRLP4 36
CNSTI4 1380
ASGNI4
ADDRLP4 40
CNSTI4 2
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRI4
ADDRLP4 40
INDIRI4
NEI4 $832
ADDRLP4 24
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRI4
ADDRLP4 40
INDIRI4
NEI4 $832
line 1548
;1545:				level.clients[level.sortedClients[1]].ps.persistant[PERS_SCORE] &&
;1546:				level.clients[level.sortedClients[0]].pers.connected == CON_CONNECTED &&
;1547:				level.clients[level.sortedClients[1]].pers.connected == CON_CONNECTED)
;1548:			{
line 1549
;1549:				RemoveDuelDrawLoser();
ADDRGP4 RemoveDuelDrawLoser
CALLV
pop
line 1550
;1550:			}
ADDRGP4 $833
JUMPV
LABELV $832
line 1552
;1551:			else
;1552:			{
line 1553
;1553:				RemoveTournamentLoser();
ADDRGP4 RemoveTournamentLoser
CALLV
pop
line 1554
;1554:			}
LABELV $833
line 1556
;1555:
;1556:			AddTournamentPlayer();
ADDRGP4 AddTournamentPlayer
CALLV
pop
line 1558
;1557:
;1558:			if ( g_austrian.integer )
ADDRGP4 g_austrian+12
INDIRI4
CNSTI4 0
EQI4 $840
line 1559
;1559:			{
line 1560
;1560:				G_LogPrintf("Duel Initiated: %s %d/%d vs %s %d/%d, kill limit: %d\n", 
ADDRGP4 $843
ARGP4
ADDRLP4 44
CNSTI4 1804
ASGNI4
ADDRLP4 48
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 52
CNSTI4 1428
ASGNI4
ADDRLP4 44
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 48
INDIRP4
ADDP4
ADDRLP4 52
INDIRI4
ADDP4
ARGP4
ADDRLP4 56
CNSTI4 1552
ASGNI4
ADDRLP4 44
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 48
INDIRP4
ADDP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRLP4 60
CNSTI4 1556
ASGNI4
ADDRLP4 44
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 48
INDIRP4
ADDP4
ADDRLP4 60
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRLP4 44
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 48
INDIRP4
ADDP4
ADDRLP4 52
INDIRI4
ADDP4
ARGP4
ADDRLP4 44
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 48
INDIRP4
ADDP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRLP4 44
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 48
INDIRP4
ADDP4
ADDRLP4 60
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRGP4 g_fraglimit+12
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1568
;1561:					level.clients[level.sortedClients[0]].pers.netname,
;1562:					level.clients[level.sortedClients[0]].sess.wins,
;1563:					level.clients[level.sortedClients[0]].sess.losses,
;1564:					level.clients[level.sortedClients[1]].pers.netname,
;1565:					level.clients[level.sortedClients[1]].sess.wins,
;1566:					level.clients[level.sortedClients[1]].sess.losses,
;1567:					g_fraglimit.integer );
;1568:			}
LABELV $840
line 1570
;1569:			
;1570:			if (level.numPlayingClients >= 2)
ADDRGP4 level+80
INDIRI4
CNSTI4 2
LTI4 $791
line 1571
;1571:			{
line 1572
;1572:				trap_SetConfigstring ( CS_CLIENT_DUELISTS, va("%i|%i", level.sortedClients[0], level.sortedClients[1] ) );
ADDRGP4 $857
ARGP4
ADDRGP4 level+84
INDIRI4
ARGI4
ADDRGP4 level+84+4
INDIRI4
ARGI4
ADDRLP4 44
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 30
ARGI4
ADDRLP4 44
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1573
;1573:				trap_SetConfigstring ( CS_CLIENT_DUELWINNER, "-1" );
CNSTI4 29
ARGI4
ADDRGP4 $333
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1575
;1574:
;1575:				gDuelist1 = level.sortedClients[0];
ADDRGP4 gDuelist1
ADDRGP4 level+84
INDIRI4
ASGNI4
line 1576
;1576:				gDuelist2 = level.sortedClients[1];
ADDRGP4 gDuelist2
ADDRGP4 level+84+4
INDIRI4
ASGNI4
line 1577
;1577:			}
line 1579
;1578:
;1579:			return;	
ADDRGP4 $791
JUMPV
LABELV $830
line 1582
;1580:		}
;1581:
;1582:		if ( g_austrian.integer )
ADDRGP4 g_austrian+12
INDIRI4
CNSTI4 0
EQI4 $864
line 1583
;1583:		{
line 1584
;1584:			G_LogPrintf("Duel Tournament Winner: %s wins/losses: %d/%d\n", 
ADDRGP4 $867
ARGP4
ADDRLP4 24
CNSTI4 1804
ASGNI4
ADDRLP4 28
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
CNSTI4 1552
ADDP4
INDIRI4
ARGI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
CNSTI4 1556
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1588
;1585:				level.clients[level.sortedClients[0]].pers.netname,
;1586:				level.clients[level.sortedClients[0]].sess.wins,
;1587:				level.clients[level.sortedClients[0]].sess.losses );
;1588:		}
LABELV $864
line 1592
;1589:		//this means we hit the duel limit so reset the wins/losses
;1590:		//but still push the loser to the back of the line, and retain the order for
;1591:		//the map change
;1592:		if (level.clients[level.sortedClients[0]].ps.persistant[PERS_SCORE] ==
ADDRLP4 24
CNSTI4 1804
ASGNI4
ADDRLP4 28
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 32
CNSTI4 280
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
NEI4 $871
ADDRLP4 36
CNSTI4 1380
ASGNI4
ADDRLP4 40
CNSTI4 2
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRI4
ADDRLP4 40
INDIRI4
NEI4 $871
ADDRLP4 24
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 28
INDIRP4
ADDP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRI4
ADDRLP4 40
INDIRI4
NEI4 $871
line 1596
;1593:			level.clients[level.sortedClients[1]].ps.persistant[PERS_SCORE] &&
;1594:			level.clients[level.sortedClients[0]].pers.connected == CON_CONNECTED &&
;1595:			level.clients[level.sortedClients[1]].pers.connected == CON_CONNECTED)
;1596:		{
line 1597
;1597:			RemoveDuelDrawLoser();
ADDRGP4 RemoveDuelDrawLoser
CALLV
pop
line 1598
;1598:		}
ADDRGP4 $872
JUMPV
LABELV $871
line 1600
;1599:		else
;1600:		{
line 1601
;1601:			RemoveTournamentLoser();
ADDRGP4 RemoveTournamentLoser
CALLV
pop
line 1602
;1602:		}
LABELV $872
line 1604
;1603:
;1604:		AddTournamentPlayer();
ADDRGP4 AddTournamentPlayer
CALLV
pop
line 1606
;1605:
;1606:		if (level.numPlayingClients >= 2)
ADDRGP4 level+80
INDIRI4
CNSTI4 2
LTI4 $879
line 1607
;1607:		{
line 1608
;1608:			trap_SetConfigstring ( CS_CLIENT_DUELISTS, va("%i|%i", level.sortedClients[0], level.sortedClients[1] ) );
ADDRGP4 $857
ARGP4
ADDRGP4 level+84
INDIRI4
ARGI4
ADDRGP4 level+84+4
INDIRI4
ARGI4
ADDRLP4 44
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 30
ARGI4
ADDRLP4 44
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1609
;1609:			trap_SetConfigstring ( CS_CLIENT_DUELWINNER, "-1" );
CNSTI4 29
ARGI4
ADDRGP4 $333
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1611
;1610:
;1611:			gDuelist1 = level.sortedClients[0];
ADDRGP4 gDuelist1
ADDRGP4 level+84
INDIRI4
ASGNI4
line 1612
;1612:			gDuelist2 = level.sortedClients[1];
ADDRGP4 gDuelist2
ADDRGP4 level+84+4
INDIRI4
ASGNI4
line 1613
;1613:		}
LABELV $879
line 1614
;1614:	}
LABELV $807
line 1616
;1615:
;1616:	if (g_gametype.integer == GT_TOURNAMENT && !gDuelExit)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $888
ADDRGP4 gDuelExit
INDIRI4
CNSTI4 0
NEI4 $888
line 1617
;1617:	{ //in duel, we have different behaviour for between-round intermissions
line 1618
;1618:		if ( level.time > level.intermissiontime + 4000 )
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+9008
INDIRI4
CNSTI4 4000
ADDI4
LEI4 $891
line 1619
;1619:		{ //automatically go to next after 4 seconds
line 1620
;1620:			ExitLevel();
ADDRGP4 ExitLevel
CALLV
pop
line 1621
;1621:			return;
ADDRGP4 $791
JUMPV
LABELV $891
line 1624
;1622:		}
;1623:
;1624:		for (i=0 ; i< g_maxclients.integer ; i++)
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $898
JUMPV
LABELV $895
line 1625
;1625:		{ //being in a "ready" state is not necessary here, so clear it for everyone
line 1628
;1626:		  //yes, I also thinking holding this in a ps value uniquely for each player
;1627:		  //is bad and wrong, but it wasn't my idea.
;1628:			cl = level.clients + i;
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1629
;1629:			if ( cl->pers.connected != CON_CONNECTED )
ADDRLP4 4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $900
line 1630
;1630:			{
line 1631
;1631:				continue;
ADDRGP4 $896
JUMPV
LABELV $900
line 1633
;1632:			}
;1633:			cl->ps.stats[STAT_CLIENTS_READY] = 0;
ADDRLP4 4
INDIRP4
CNSTI4 244
ADDP4
CNSTI4 0
ASGNI4
line 1634
;1634:		}
LABELV $896
line 1624
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $898
ADDRLP4 0
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $895
line 1635
;1635:		return;
ADDRGP4 $791
JUMPV
LABELV $888
line 1640
;1636:	}
;1637:
;1638:	// copy the readyMask to each player's stats so
;1639:	// it can be displayed on the scoreboard
;1640:	for (i=0 ; i< g_maxclients.integer ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $905
JUMPV
LABELV $902
line 1641
;1641:		cl = level.clients + i;
ADDRLP4 4
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1642
;1642:		if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 4
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $907
line 1643
;1643:			continue;
ADDRGP4 $903
JUMPV
LABELV $907
line 1645
;1644:		}
;1645:		cl->ps.stats[STAT_CLIENTS_READY] = readyMask;
ADDRLP4 4
INDIRP4
CNSTI4 244
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
line 1646
;1646:	}
LABELV $903
line 1640
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $905
ADDRLP4 0
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $902
line 1649
;1647:
;1648:	// never exit in less than five seconds
;1649:	if ( level.time < level.intermissiontime + 5000 ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+9008
INDIRI4
CNSTI4 5000
ADDI4
GEI4 $909
line 1650
;1650:		return;
ADDRGP4 $791
JUMPV
LABELV $909
line 1654
;1651:	}
;1652:
;1653:	// if nobody wants to go, clear timer
;1654:	if ( !ready ) {
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $913
line 1655
;1655:		level.readyToExit = qfalse;
ADDRGP4 level+9016
CNSTI4 0
ASGNI4
line 1656
;1656:		return;
ADDRGP4 $791
JUMPV
LABELV $913
line 1660
;1657:	}
;1658:
;1659:	// if everyone wants to go, go now
;1660:	if ( !notReady ) {
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $916
line 1661
;1661:		ExitLevel();
ADDRGP4 ExitLevel
CALLV
pop
line 1662
;1662:		return;
ADDRGP4 $791
JUMPV
LABELV $916
line 1666
;1663:	}
;1664:
;1665:	// the first person to ready starts the ten second timeout
;1666:	if ( !level.readyToExit ) {
ADDRGP4 level+9016
INDIRI4
CNSTI4 0
NEI4 $918
line 1667
;1667:		level.readyToExit = qtrue;
ADDRGP4 level+9016
CNSTI4 1
ASGNI4
line 1668
;1668:		level.exitTime = level.time;
ADDRGP4 level+9020
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1669
;1669:	}
LABELV $918
line 1673
;1670:
;1671:	// if we have waited ten seconds since at least one player
;1672:	// wanted to exit, go ahead
;1673:	if ( level.time < level.exitTime + 10000 ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+9020
INDIRI4
CNSTI4 10000
ADDI4
GEI4 $924
line 1674
;1674:		return;
ADDRGP4 $791
JUMPV
LABELV $924
line 1677
;1675:	}
;1676:
;1677:	ExitLevel();
ADDRGP4 ExitLevel
CALLV
pop
line 1678
;1678:}
LABELV $791
endproc CheckIntermissionExit 64 32
export ScoreIsTied
proc ScoreIsTied 12 0
line 1685
;1679:
;1680:/*
;1681:=============
;1682:ScoreIsTied
;1683:=============
;1684:*/
;1685:qboolean ScoreIsTied( void ) {
line 1688
;1686:	int		a, b;
;1687:
;1688:	if ( level.numPlayingClients < 2 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 2
GEI4 $929
line 1689
;1689:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $928
JUMPV
LABELV $929
line 1692
;1690:	}
;1691:	
;1692:	if ( g_gametype.integer >= GT_TEAM ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LTI4 $932
line 1693
;1693:		return level.teamScores[TEAM_RED] == level.teamScores[TEAM_BLUE];
ADDRGP4 level+44+4
INDIRI4
ADDRGP4 level+44+8
INDIRI4
NEI4 $940
ADDRLP4 8
CNSTI4 1
ASGNI4
ADDRGP4 $941
JUMPV
LABELV $940
ADDRLP4 8
CNSTI4 0
ASGNI4
LABELV $941
ADDRLP4 8
INDIRI4
RETI4
ADDRGP4 $928
JUMPV
LABELV $932
line 1696
;1694:	}
;1695:
;1696:	a = level.clients[level.sortedClients[0]].ps.persistant[PERS_SCORE];
ADDRLP4 0
CNSTI4 1804
ADDRGP4 level+84
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ASGNI4
line 1697
;1697:	b = level.clients[level.sortedClients[1]].ps.persistant[PERS_SCORE];
ADDRLP4 4
CNSTI4 1804
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 280
ADDP4
INDIRI4
ASGNI4
line 1699
;1698:
;1699:	return a == b;
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
NEI4 $946
ADDRLP4 8
CNSTI4 1
ASGNI4
ADDRGP4 $947
JUMPV
LABELV $946
ADDRLP4 8
CNSTI4 0
ASGNI4
LABELV $947
ADDRLP4 8
INDIRI4
RETI4
LABELV $928
endproc ScoreIsTied 12 0
export CheckExitRules
proc CheckExitRules 28 12
line 1711
;1700:}
;1701:
;1702:/*
;1703:=================
;1704:CheckExitRules
;1705:
;1706:There will be a delay between the time the exit is qualified for
;1707:and the time everyone is moved to the intermission spot, so you
;1708:can see the last frag.
;1709:=================
;1710:*/
;1711:void CheckExitRules( void ) {
line 1716
;1712: 	int			i;
;1713:	gclient_t	*cl;
;1714:	// if at the intermission, wait for all non-bots to
;1715:	// signal ready, then go to next level
;1716:	if ( level.intermissiontime ) {
ADDRGP4 level+9008
INDIRI4
CNSTI4 0
EQI4 $949
line 1717
;1717:		CheckIntermissionExit ();
ADDRGP4 CheckIntermissionExit
CALLV
pop
line 1718
;1718:		return;
ADDRGP4 $948
JUMPV
LABELV $949
line 1721
;1719:	}
;1720:
;1721:	if (gDoSlowMoDuel)
ADDRGP4 gDoSlowMoDuel
INDIRI4
CNSTI4 0
EQI4 $952
line 1722
;1722:	{ //don't go to intermission while in slow motion
line 1723
;1723:		return;
ADDRGP4 $948
JUMPV
LABELV $952
line 1726
;1724:	}
;1725:
;1726:	if (gEscaping)
ADDRGP4 gEscaping
INDIRI4
CNSTI4 0
EQI4 $954
line 1727
;1727:	{
line 1728
;1728:		int i = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1729
;1729:		int numLiveClients = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
ADDRGP4 $957
JUMPV
LABELV $956
line 1732
;1730:
;1731:		while (i < MAX_CLIENTS)
;1732:		{
line 1733
;1733:			if (g_entities[i].inuse && g_entities[i].client && g_entities[i].health > 0)
ADDRLP4 16
CNSTI4 828
ADDRLP4 8
INDIRI4
MULI4
ASGNI4
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $959
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $959
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $959
line 1734
;1734:			{
line 1735
;1735:				if (g_entities[i].client->sess.sessionTeam != TEAM_SPECTATOR &&
ADDRLP4 24
CNSTI4 828
ADDRLP4 8
INDIRI4
MULI4
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $964
ADDRLP4 24
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 4096
BANDI4
CNSTI4 0
NEI4 $964
line 1737
;1736:					!(g_entities[i].client->ps.pm_flags & PMF_FOLLOW))
;1737:				{
line 1738
;1738:					numLiveClients++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1739
;1739:				}
LABELV $964
line 1740
;1740:			}
LABELV $959
line 1742
;1741:
;1742:			i++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1743
;1743:		}
LABELV $957
line 1731
ADDRLP4 8
INDIRI4
CNSTI4 32
LTI4 $956
line 1744
;1744:		if (gEscapeTime < level.time)
ADDRGP4 gEscapeTime
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $968
line 1745
;1745:		{
line 1746
;1746:			gEscaping = qfalse;
ADDRGP4 gEscaping
CNSTI4 0
ASGNI4
line 1747
;1747:			LogExit( "Escape time ended." );
ADDRGP4 $971
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1748
;1748:			return;
ADDRGP4 $948
JUMPV
LABELV $968
line 1750
;1749:		}
;1750:		if (!numLiveClients)
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $972
line 1751
;1751:		{
line 1752
;1752:			gEscaping = qfalse;
ADDRGP4 gEscaping
CNSTI4 0
ASGNI4
line 1753
;1753:			LogExit( "Everyone failed to escape." );
ADDRGP4 $974
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1754
;1754:			return;
ADDRGP4 $948
JUMPV
LABELV $972
line 1756
;1755:		}
;1756:	}
LABELV $954
line 1758
;1757:
;1758:	if ( level.intermissionQueued ) {
ADDRGP4 level+9004
INDIRI4
CNSTI4 0
EQI4 $975
line 1759
;1759:		int time = (g_singlePlayer.integer) ? SP_INTERMISSION_DELAY_TIME : INTERMISSION_DELAY_TIME;
ADDRGP4 g_singlePlayer+12
INDIRI4
CNSTI4 0
EQI4 $980
ADDRLP4 12
CNSTI4 5000
ASGNI4
ADDRGP4 $981
JUMPV
LABELV $980
ADDRLP4 12
CNSTI4 1000
ASGNI4
LABELV $981
ADDRLP4 8
ADDRLP4 12
INDIRI4
ASGNI4
line 1760
;1760:		if ( level.time - level.intermissionQueued >= time ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+9004
INDIRI4
SUBI4
ADDRLP4 8
INDIRI4
LTI4 $948
line 1761
;1761:			level.intermissionQueued = 0;
ADDRGP4 level+9004
CNSTI4 0
ASGNI4
line 1762
;1762:			BeginIntermission();
ADDRGP4 BeginIntermission
CALLV
pop
line 1763
;1763:		}
line 1764
;1764:		return;
ADDRGP4 $948
JUMPV
LABELV $975
line 1768
;1765:	}
;1766:
;1767:	// check for sudden death
;1768:	if ( ScoreIsTied() ) {
ADDRLP4 8
ADDRGP4 ScoreIsTied
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $987
line 1770
;1769:		// always wait for sudden death
;1770:		if (g_gametype.integer != GT_TOURNAMENT || !g_timelimit.integer)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $993
ADDRGP4 g_timelimit+12
INDIRI4
CNSTI4 0
NEI4 $989
LABELV $993
line 1771
;1771:		{
line 1772
;1772:			return;
ADDRGP4 $948
JUMPV
LABELV $989
line 1774
;1773:		}
;1774:	}
LABELV $987
line 1776
;1775:
;1776:	if ( g_timelimit.integer && !level.warmupTime ) {
ADDRLP4 12
CNSTI4 0
ASGNI4
ADDRGP4 g_timelimit+12
INDIRI4
ADDRLP4 12
INDIRI4
EQI4 $994
ADDRGP4 level+16
INDIRI4
ADDRLP4 12
INDIRI4
NEI4 $994
line 1777
;1777:		if ( level.time - level.startTime >= g_timelimit.integer*60000 ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+40
INDIRI4
SUBI4
CNSTI4 60000
ADDRGP4 g_timelimit+12
INDIRI4
MULI4
LTI4 $998
line 1779
;1778://			trap_SendServerCommand( -1, "print \"Timelimit hit.\n\"");
;1779:			trap_SendServerCommand( -1, va("print \"%s.\n\"",G_GetStripEdString("SVINGAME", "TIMELIMIT_HIT")));
ADDRGP4 $1004
ARGP4
ADDRGP4 $1005
ARGP4
ADDRLP4 16
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1003
ARGP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1780
;1780:			LogExit( "Timelimit hit." );
ADDRGP4 $1006
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1781
;1781:			return;
ADDRGP4 $948
JUMPV
LABELV $998
line 1783
;1782:		}
;1783:	}
LABELV $994
line 1785
;1784:
;1785:	if ( level.numPlayingClients < 2 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 2
GEI4 $1007
line 1786
;1786:		return;
ADDRGP4 $948
JUMPV
LABELV $1007
line 1789
;1787:	}
;1788:
;1789:	if ( g_gametype.integer < GT_CTF && g_fraglimit.integer ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 7
GEI4 $1010
ADDRGP4 g_fraglimit+12
INDIRI4
CNSTI4 0
EQI4 $1010
line 1790
;1790:		if ( level.teamScores[TEAM_RED] >= g_fraglimit.integer ) {
ADDRGP4 level+44+4
INDIRI4
ADDRGP4 g_fraglimit+12
INDIRI4
LTI4 $1014
line 1791
;1791:			trap_SendServerCommand( -1, va("print \"Red %s\n\"", G_GetStripEdString("SVINGAME", "HIT_THE_KILL_LIMIT")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1020
ARGP4
ADDRLP4 16
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1019
ARGP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1792
;1792:			LogExit( "Kill limit hit." );
ADDRGP4 $1021
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1793
;1793:			return;
ADDRGP4 $948
JUMPV
LABELV $1014
line 1796
;1794:		}
;1795:
;1796:		if ( level.teamScores[TEAM_BLUE] >= g_fraglimit.integer ) {
ADDRGP4 level+44+8
INDIRI4
ADDRGP4 g_fraglimit+12
INDIRI4
LTI4 $1022
line 1797
;1797:			trap_SendServerCommand( -1, va("print \"Blue %s\n\"", G_GetStripEdString("SVINGAME", "HIT_THE_KILL_LIMIT")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1020
ARGP4
ADDRLP4 16
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1027
ARGP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1798
;1798:			LogExit( "Kill limit hit." );
ADDRGP4 $1021
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1799
;1799:			return;
ADDRGP4 $948
JUMPV
LABELV $1022
line 1802
;1800:		}
;1801:
;1802:		for ( i=0 ; i< g_maxclients.integer ; i++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1031
JUMPV
LABELV $1028
line 1803
;1803:			cl = level.clients + i;
ADDRLP4 0
CNSTI4 1804
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
ASGNP4
line 1804
;1804:			if ( cl->pers.connected != CON_CONNECTED ) {
ADDRLP4 0
INDIRP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 2
EQI4 $1033
line 1805
;1805:				continue;
ADDRGP4 $1029
JUMPV
LABELV $1033
line 1807
;1806:			}
;1807:			if ( cl->sess.sessionTeam != TEAM_FREE ) {
ADDRLP4 0
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1035
line 1808
;1808:				continue;
ADDRGP4 $1029
JUMPV
LABELV $1035
line 1811
;1809:			}
;1810:
;1811:			if ( g_gametype.integer == GT_TOURNAMENT && g_duel_fraglimit.integer && cl->sess.wins >= g_duel_fraglimit.integer )
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $1037
ADDRGP4 g_duel_fraglimit+12
INDIRI4
CNSTI4 0
EQI4 $1037
ADDRLP4 0
INDIRP4
CNSTI4 1552
ADDP4
INDIRI4
ADDRGP4 g_duel_fraglimit+12
INDIRI4
LTI4 $1037
line 1812
;1812:			{
line 1813
;1813:				LogExit( "Duel limit hit." );
ADDRGP4 $1042
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1814
;1814:				gDuelExit = qtrue;
ADDRGP4 gDuelExit
CNSTI4 1
ASGNI4
line 1815
;1815:				trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " hit the win limit.\n\"",
ADDRGP4 $1043
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 16
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1817
;1816:					cl->pers.netname ) );
;1817:				return;
ADDRGP4 $948
JUMPV
LABELV $1037
line 1820
;1818:			}
;1819:
;1820:			if ( cl->ps.persistant[PERS_SCORE] >= g_fraglimit.integer ) {
ADDRLP4 0
INDIRP4
CNSTI4 280
ADDP4
INDIRI4
ADDRGP4 g_fraglimit+12
INDIRI4
LTI4 $1044
line 1821
;1821:				LogExit( "Kill limit hit." );
ADDRGP4 $1021
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1822
;1822:				gDuelExit = qfalse;
ADDRGP4 gDuelExit
CNSTI4 0
ASGNI4
line 1823
;1823:				trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " %s.\n\"",
ADDRGP4 $1004
ARGP4
ADDRGP4 $1020
ARGP4
ADDRLP4 16
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1047
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1828
;1824:												cl->pers.netname,
;1825:												G_GetStripEdString("SVINGAME", "HIT_THE_KILL_LIMIT")
;1826:												) 
;1827:										);
;1828:				return;
ADDRGP4 $948
JUMPV
LABELV $1044
line 1830
;1829:			}
;1830:		}
LABELV $1029
line 1802
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1031
ADDRLP4 4
INDIRI4
ADDRGP4 g_maxclients+12
INDIRI4
LTI4 $1028
line 1831
;1831:	}
LABELV $1010
line 1833
;1832:
;1833:	if ( g_gametype.integer >= GT_CTF && g_capturelimit.integer ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 7
LTI4 $1048
ADDRGP4 g_capturelimit+12
INDIRI4
CNSTI4 0
EQI4 $1048
line 1835
;1834:
;1835:		if ( level.teamScores[TEAM_RED] >= g_capturelimit.integer ) {
ADDRGP4 level+44+4
INDIRI4
ADDRGP4 g_capturelimit+12
INDIRI4
LTI4 $1052
line 1836
;1836:			trap_SendServerCommand( -1, "print \"Red hit the capturelimit.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1057
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1837
;1837:			LogExit( "Capturelimit hit." );
ADDRGP4 $1058
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1838
;1838:			return;
ADDRGP4 $948
JUMPV
LABELV $1052
line 1841
;1839:		}
;1840:
;1841:		if ( level.teamScores[TEAM_BLUE] >= g_capturelimit.integer ) {
ADDRGP4 level+44+8
INDIRI4
ADDRGP4 g_capturelimit+12
INDIRI4
LTI4 $1059
line 1842
;1842:			trap_SendServerCommand( -1, "print \"Blue hit the capturelimit.\n\"" );
CNSTI4 -1
ARGI4
ADDRGP4 $1064
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 1843
;1843:			LogExit( "Capturelimit hit." );
ADDRGP4 $1058
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 1844
;1844:			return;
LABELV $1059
line 1846
;1845:		}
;1846:	}
LABELV $1048
line 1847
;1847:}
LABELV $948
endproc CheckExitRules 28 12
export CheckTournament
proc CheckTournament 32 32
line 1866
;1848:
;1849:
;1850:
;1851:/*
;1852:========================================================================
;1853:
;1854:FUNCTIONS CALLED EVERY FRAME
;1855:
;1856:========================================================================
;1857:*/
;1858:
;1859:/*
;1860:=============
;1861:CheckTournament
;1862:
;1863:Once a frame, check for changes in tournement player state
;1864:=============
;1865:*/
;1866:void CheckTournament( void ) {
line 1869
;1867:	// check because we run 3 game frames before calling Connect and/or ClientBegin
;1868:	// for clients on a map_restart
;1869:	if ( level.numPlayingClients == 0 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 0
NEI4 $1066
line 1870
;1870:		return;
ADDRGP4 $1065
JUMPV
LABELV $1066
line 1873
;1871:	}
;1872:
;1873:	if ( g_gametype.integer == GT_TOURNAMENT ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 3
NEI4 $1069
line 1876
;1874:
;1875:		// pull in a spectator if needed
;1876:		if ( level.numPlayingClients < 2 ) {
ADDRGP4 level+80
INDIRI4
CNSTI4 2
GEI4 $1072
line 1877
;1877:			AddTournamentPlayer();
ADDRGP4 AddTournamentPlayer
CALLV
pop
line 1879
;1878:
;1879:			if (level.numPlayingClients >= 2)
ADDRGP4 level+80
INDIRI4
CNSTI4 2
LTI4 $1075
line 1880
;1880:			{
line 1881
;1881:				trap_SetConfigstring ( CS_CLIENT_DUELISTS, va("%i|%i", level.sortedClients[0], level.sortedClients[1] ) );
ADDRGP4 $857
ARGP4
ADDRGP4 level+84
INDIRI4
ARGI4
ADDRGP4 level+84+4
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 30
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1882
;1882:				gDuelist1 = level.sortedClients[0];
ADDRGP4 gDuelist1
ADDRGP4 level+84
INDIRI4
ASGNI4
line 1883
;1883:				gDuelist2 = level.sortedClients[1];
ADDRGP4 gDuelist2
ADDRGP4 level+84+4
INDIRI4
ASGNI4
line 1884
;1884:			}
LABELV $1075
line 1885
;1885:		}
LABELV $1072
line 1887
;1886:
;1887:		if (level.numPlayingClients >= 2)
ADDRGP4 level+80
INDIRI4
CNSTI4 2
LTI4 $1084
line 1888
;1888:		{
line 1889
;1889:			if (gDuelist1 == -1 ||
ADDRLP4 0
CNSTI4 -1
ASGNI4
ADDRGP4 gDuelist1
INDIRI4
ADDRLP4 0
INDIRI4
EQI4 $1089
ADDRGP4 gDuelist2
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $1087
LABELV $1089
line 1891
;1890:				gDuelist2 == -1)
;1891:			{
line 1892
;1892:				trap_SetConfigstring ( CS_CLIENT_DUELISTS, va("%i|%i", level.sortedClients[0], level.sortedClients[1] ) );
ADDRGP4 $857
ARGP4
ADDRGP4 level+84
INDIRI4
ARGI4
ADDRGP4 level+84+4
INDIRI4
ARGI4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 30
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 1893
;1893:				gDuelist1 = level.sortedClients[0];
ADDRGP4 gDuelist1
ADDRGP4 level+84
INDIRI4
ASGNI4
line 1894
;1894:				gDuelist2 = level.sortedClients[1];
ADDRGP4 gDuelist2
ADDRGP4 level+84+4
INDIRI4
ASGNI4
line 1895
;1895:				if ( g_austrian.integer )
ADDRGP4 g_austrian+12
INDIRI4
CNSTI4 0
EQI4 $1096
line 1896
;1896:				{
line 1897
;1897:					G_LogPrintf("Duel Initiated: %s %d/%d vs %s %d/%d, kill limit: %d\n", 
ADDRGP4 $843
ARGP4
ADDRLP4 8
CNSTI4 1804
ASGNI4
ADDRLP4 12
ADDRGP4 level
INDIRP4
ASGNP4
ADDRLP4 16
CNSTI4 1428
ASGNI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 16
INDIRI4
ADDP4
ARGP4
ADDRLP4 20
CNSTI4 1552
ASGNI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRLP4 24
CNSTI4 1556
ASGNI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+84
INDIRI4
MULI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 16
INDIRI4
ADDP4
ARGP4
ADDRLP4 8
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+84+4
INDIRI4
MULI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
ARGI4
ADDRGP4 g_fraglimit+12
INDIRI4
ARGI4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1905
;1898:						level.clients[level.sortedClients[0]].pers.netname,
;1899:						level.clients[level.sortedClients[0]].sess.wins,
;1900:						level.clients[level.sortedClients[0]].sess.losses,
;1901:						level.clients[level.sortedClients[1]].pers.netname,
;1902:						level.clients[level.sortedClients[1]].sess.wins,
;1903:						level.clients[level.sortedClients[1]].sess.losses,
;1904:						g_fraglimit.integer );
;1905:				}
LABELV $1096
line 1908
;1906:				//trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0\n" );
;1907:				//FIXME: This seems to cause problems. But we'd like to reset things whenever a new opponent is set.
;1908:			}
LABELV $1087
line 1909
;1909:		}
LABELV $1084
line 1913
;1910:
;1911:		//rww - It seems we have decided there will be no warmup in duel.
;1912:		//if (!g_warmup.integer)
;1913:		{ //don't care about any of this stuff then, just add people and leave me alone
line 1914
;1914:			level.warmupTime = 0;
ADDRGP4 level+16
CNSTI4 0
ASGNI4
line 1915
;1915:			return;
ADDRGP4 $1065
JUMPV
LABELV $1069
line 1962
;1916:		}
;1917:#if 0
;1918:		// if we don't have two players, go back to "waiting for players"
;1919:		if ( level.numPlayingClients != 2 ) {
;1920:			if ( level.warmupTime != -1 ) {
;1921:				level.warmupTime = -1;
;1922:				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
;1923:				G_LogPrintf( "Warmup:\n" );
;1924:			}
;1925:			return;
;1926:		}
;1927:
;1928:		if ( level.warmupTime == 0 ) {
;1929:			return;
;1930:		}
;1931:
;1932:		// if the warmup is changed at the console, restart it
;1933:		if ( g_warmup.modificationCount != level.warmupModificationCount ) {
;1934:			level.warmupModificationCount = g_warmup.modificationCount;
;1935:			level.warmupTime = -1;
;1936:		}
;1937:
;1938:		// if all players have arrived, start the countdown
;1939:		if ( level.warmupTime < 0 ) {
;1940:			if ( level.numPlayingClients == 2 ) {
;1941:				// fudge by -1 to account for extra delays
;1942:				level.warmupTime = level.time + ( g_warmup.integer - 1 ) * 1000;
;1943:
;1944:				if (level.warmupTime < (level.time + 3000))
;1945:				{ //rww - this is an unpleasent hack to keep the level from resetting completely on the client (this happens when two map_restarts are issued rapidly)
;1946:					level.warmupTime = level.time + 3000;
;1947:				}
;1948:				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
;1949:			}
;1950:			return;
;1951:		}
;1952:
;1953:		// if the warmup time has counted down, restart
;1954:		if ( level.time > level.warmupTime ) {
;1955:			level.warmupTime += 10000;
;1956:			trap_Cvar_Set( "g_restarted", "1" );
;1957:			trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0\n" );
;1958:			level.restarted = qtrue;
;1959:			return;
;1960:		}
;1961:#endif
;1962:	} else if ( level.warmupTime != 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
EQI4 $1110
line 1964
;1963:		int		counts[TEAM_NUM_TEAMS];
;1964:		qboolean	notEnough = qfalse;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1966
;1965:
;1966:		if ( g_gametype.integer > GT_TEAM ) {
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 5
LEI4 $1113
line 1967
;1967:			counts[TEAM_BLUE] = TeamCount( -1, TEAM_BLUE );
CNSTI4 -1
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 TeamCount
CALLI4
ASGNI4
ADDRLP4 4+8
ADDRLP4 20
INDIRI4
ASGNI4
line 1968
;1968:			counts[TEAM_RED] = TeamCount( -1, TEAM_RED );
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRLP4 24
ADDRGP4 TeamCount
CALLI4
ASGNI4
ADDRLP4 4+4
ADDRLP4 24
INDIRI4
ASGNI4
line 1970
;1969:
;1970:			if (counts[TEAM_RED] < 1 || counts[TEAM_BLUE] < 1) {
ADDRLP4 28
CNSTI4 1
ASGNI4
ADDRLP4 4+4
INDIRI4
ADDRLP4 28
INDIRI4
LTI4 $1122
ADDRLP4 4+8
INDIRI4
ADDRLP4 28
INDIRI4
GEI4 $1114
LABELV $1122
line 1971
;1971:				notEnough = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 1972
;1972:			}
line 1973
;1973:		} else if ( level.numPlayingClients < 2 ) {
ADDRGP4 $1114
JUMPV
LABELV $1113
ADDRGP4 level+80
INDIRI4
CNSTI4 2
GEI4 $1123
line 1974
;1974:			notEnough = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 1975
;1975:		}
LABELV $1123
LABELV $1114
line 1977
;1976:
;1977:		if ( notEnough ) {
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $1126
line 1978
;1978:			if ( level.warmupTime != -1 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 -1
EQI4 $1065
line 1979
;1979:				level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 1980
;1980:				trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
ADDRGP4 $451
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 1981
;1981:				G_LogPrintf( "Warmup:\n" );
ADDRGP4 $1133
ARGP4
ADDRGP4 G_LogPrintf
CALLV
pop
line 1982
;1982:			}
line 1983
;1983:			return; // still waiting for team members
ADDRGP4 $1065
JUMPV
LABELV $1126
line 1986
;1984:		}
;1985:
;1986:		if ( level.warmupTime == 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
NEI4 $1134
line 1987
;1987:			return;
ADDRGP4 $1065
JUMPV
LABELV $1134
line 1991
;1988:		}
;1989:
;1990:		// if the warmup is changed at the console, restart it
;1991:		if ( g_warmup.modificationCount != level.warmupModificationCount ) {
ADDRGP4 g_warmup+4
INDIRI4
ADDRGP4 level+224
INDIRI4
EQI4 $1137
line 1992
;1992:			level.warmupModificationCount = g_warmup.modificationCount;
ADDRGP4 level+224
ADDRGP4 g_warmup+4
INDIRI4
ASGNI4
line 1993
;1993:			level.warmupTime = -1;
ADDRGP4 level+16
CNSTI4 -1
ASGNI4
line 1994
;1994:		}
LABELV $1137
line 1997
;1995:
;1996:		// if all players have arrived, start the countdown
;1997:		if ( level.warmupTime < 0 ) {
ADDRGP4 level+16
INDIRI4
CNSTI4 0
GEI4 $1144
line 1999
;1998:			// fudge by -1 to account for extra delays
;1999:			level.warmupTime = level.time + ( g_warmup.integer - 1 ) * 1000;
ADDRLP4 20
CNSTI4 1000
ASGNI4
ADDRGP4 level+16
ADDRGP4 level+32
INDIRI4
ADDRLP4 20
INDIRI4
ADDRGP4 g_warmup+12
INDIRI4
MULI4
ADDRLP4 20
INDIRI4
SUBI4
ADDI4
ASGNI4
line 2000
;2000:			trap_SetConfigstring( CS_WARMUP, va("%i", level.warmupTime) );
ADDRGP4 $451
ARGP4
ADDRGP4 level+16
INDIRI4
ARGI4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 5
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 2001
;2001:			return;
ADDRGP4 $1065
JUMPV
LABELV $1144
line 2005
;2002:		}
;2003:
;2004:		// if the warmup time has counted down, restart
;2005:		if ( level.time > level.warmupTime ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+16
INDIRI4
LEI4 $1151
line 2006
;2006:			level.warmupTime += 10000;
ADDRLP4 20
ADDRGP4 level+16
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
CNSTI4 10000
ADDI4
ASGNI4
line 2007
;2007:			trap_Cvar_Set( "g_restarted", "1" );
ADDRGP4 $96
ARGP4
ADDRGP4 $113
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2008
;2008:			trap_SendConsoleCommand( EXEC_APPEND, "map_restart 0\n" );
CNSTI4 2
ARGI4
ADDRGP4 $698
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 2009
;2009:			level.restarted = qtrue;
ADDRGP4 level+68
CNSTI4 1
ASGNI4
line 2010
;2010:			return;
LABELV $1151
line 2012
;2011:		}
;2012:	}
LABELV $1110
line 2013
;2013:}
LABELV $1065
endproc CheckTournament 32 32
export CheckVote
proc CheckVote 36 8
line 2021
;2014:
;2015:
;2016:/*
;2017:==================
;2018:CheckVote
;2019:==================
;2020:*/
;2021:void CheckVote( void ) {
line 2022
;2022:	if ( level.voteExecuteTime && level.voteExecuteTime < level.time ) {
ADDRGP4 level+2280
INDIRI4
CNSTI4 0
EQI4 $1158
ADDRGP4 level+2280
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1158
line 2023
;2023:		level.voteExecuteTime = 0;
ADDRGP4 level+2280
CNSTI4 0
ASGNI4
line 2024
;2024:		trap_SendConsoleCommand( EXEC_APPEND, va("%s\n", level.voteString ) );
ADDRGP4 $1164
ARGP4
ADDRGP4 level+228
ARGP4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 2026
;2025:
;2026:		if (level.votingGametype)
ADDRGP4 level+2296
INDIRI4
CNSTI4 0
EQI4 $1166
line 2027
;2027:		{
line 2028
;2028:			if (trap_Cvar_VariableIntegerValue("g_gametype") != level.votingGametypeTo)
ADDRGP4 $99
ARGP4
ADDRLP4 4
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 level+2300
INDIRI4
EQI4 $1169
line 2029
;2029:			{ //If we're voting to a different game type, be sure to refresh all the map stuff
line 2030
;2030:				const char *nextMap = G_RefreshNextMap(level.votingGametypeTo, qtrue);
ADDRGP4 level+2300
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRLP4 12
ADDRGP4 G_RefreshNextMap
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 12
INDIRP4
ASGNP4
line 2032
;2031:
;2032:				if (nextMap && nextMap[0])
ADDRLP4 16
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1170
ADDRLP4 16
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $1170
line 2033
;2033:				{
line 2034
;2034:					trap_SendConsoleCommand( EXEC_APPEND, va("map %s\n", nextMap ) );
ADDRGP4 $1175
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 2035
;2035:				}
line 2037
;2036:
;2037:			}
ADDRGP4 $1170
JUMPV
LABELV $1169
line 2039
;2038:			else
;2039:			{ //otherwise, just leave the map until a restart
line 2040
;2040:				G_RefreshNextMap(level.votingGametypeTo, qfalse);
ADDRGP4 level+2300
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 G_RefreshNextMap
CALLP4
pop
line 2041
;2041:			}
LABELV $1170
line 2043
;2042:
;2043:			if (g_fraglimitVoteCorrection.integer)
ADDRGP4 g_fraglimitVoteCorrection+12
INDIRI4
CNSTI4 0
EQI4 $1177
line 2044
;2044:			{ //This means to auto-correct fraglimit when voting to and from duel.
line 2045
;2045:				int currentGT = trap_Cvar_VariableIntegerValue("g_gametype");
ADDRGP4 $99
ARGP4
ADDRLP4 16
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 16
INDIRI4
ASGNI4
line 2046
;2046:				int currentFL = trap_Cvar_VariableIntegerValue("fraglimit");
ADDRGP4 $133
ARGP4
ADDRLP4 20
ADDRGP4 trap_Cvar_VariableIntegerValue
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 20
INDIRI4
ASGNI4
line 2048
;2047:
;2048:				if (level.votingGametypeTo == GT_TOURNAMENT && currentGT != GT_TOURNAMENT)
ADDRLP4 24
CNSTI4 3
ASGNI4
ADDRGP4 level+2300
INDIRI4
ADDRLP4 24
INDIRI4
NEI4 $1180
ADDRLP4 8
INDIRI4
ADDRLP4 24
INDIRI4
EQI4 $1180
line 2049
;2049:				{
line 2050
;2050:					if (currentFL > 3 || !currentFL)
ADDRLP4 28
ADDRLP4 12
INDIRI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 3
GTI4 $1185
ADDRLP4 28
INDIRI4
CNSTI4 0
NEI4 $1181
LABELV $1185
line 2051
;2051:					{ //if voting to duel, and fraglimit is more than 3 (or unlimited), then set it down to 3
line 2052
;2052:						trap_SendConsoleCommand(EXEC_APPEND, "fraglimit 3\n");
CNSTI4 2
ARGI4
ADDRGP4 $1186
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 2053
;2053:					}
line 2054
;2054:				}
ADDRGP4 $1181
JUMPV
LABELV $1180
line 2055
;2055:				else if (level.votingGametypeTo != GT_TOURNAMENT && currentGT == GT_TOURNAMENT)
ADDRLP4 28
CNSTI4 3
ASGNI4
ADDRGP4 level+2300
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $1187
ADDRLP4 8
INDIRI4
ADDRLP4 28
INDIRI4
NEI4 $1187
line 2056
;2056:				{
line 2057
;2057:					if (currentFL && currentFL < 20)
ADDRLP4 32
ADDRLP4 12
INDIRI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $1190
ADDRLP4 32
INDIRI4
CNSTI4 20
GEI4 $1190
line 2058
;2058:					{ //if voting from duel, an fraglimit is less than 20, then set it up to 20
line 2059
;2059:						trap_SendConsoleCommand(EXEC_APPEND, "fraglimit 20\n");
CNSTI4 2
ARGI4
ADDRGP4 $1192
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 2060
;2060:					}
LABELV $1190
line 2061
;2061:				}
LABELV $1187
LABELV $1181
line 2062
;2062:			}
LABELV $1177
line 2064
;2063:
;2064:			level.votingGametype = qfalse;
ADDRGP4 level+2296
CNSTI4 0
ASGNI4
line 2065
;2065:			level.votingGametypeTo = 0;
ADDRGP4 level+2300
CNSTI4 0
ASGNI4
line 2066
;2066:		}
LABELV $1166
line 2067
;2067:	}
LABELV $1158
line 2068
;2068:	if ( !level.voteTime ) {
ADDRGP4 level+2276
INDIRI4
CNSTI4 0
NEI4 $1195
line 2069
;2069:		return;
ADDRGP4 $1157
JUMPV
LABELV $1195
line 2071
;2070:	}
;2071:	if ( level.time - level.voteTime >= VOTE_TIME ) {
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+2276
INDIRI4
SUBI4
CNSTI4 30000
LTI4 $1198
line 2072
;2072:		trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "VOTEFAILED")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1203
ARGP4
ADDRLP4 0
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1202
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2073
;2073:	} else {
ADDRGP4 $1199
JUMPV
LABELV $1198
line 2074
;2074:		if ( level.voteYes > level.numVotingClients/2 ) {
ADDRGP4 level+2284
INDIRI4
ADDRGP4 level+2292
INDIRI4
CNSTI4 2
DIVI4
LEI4 $1204
line 2076
;2075:			// execute the command, then remove the vote
;2076:			trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "VOTEPASSED")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1208
ARGP4
ADDRLP4 0
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1202
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2077
;2077:			level.voteExecuteTime = level.time + 3000;
ADDRGP4 level+2280
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 2078
;2078:		} else if ( level.voteNo >= level.numVotingClients/2 ) {
ADDRGP4 $1205
JUMPV
LABELV $1204
ADDRGP4 level+2288
INDIRI4
ADDRGP4 level+2292
INDIRI4
CNSTI4 2
DIVI4
LTI4 $1157
line 2080
;2079:			// same behavior as a timeout
;2080:			trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "VOTEFAILED")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1203
ARGP4
ADDRLP4 0
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1202
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2081
;2081:		} else {
line 2083
;2082:			// still waiting for a majority
;2083:			return;
LABELV $1212
LABELV $1205
line 2085
;2084:		}
;2085:	}
LABELV $1199
line 2086
;2086:	level.voteTime = 0;
ADDRGP4 level+2276
CNSTI4 0
ASGNI4
line 2087
;2087:	trap_SetConfigstring( CS_VOTE_TIME, "" );
CNSTI4 8
ARGI4
ADDRGP4 $91
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 2089
;2088:
;2089:}
LABELV $1157
endproc CheckVote 36 8
export PrintTeam
proc PrintTeam 4 8
line 2096
;2090:
;2091:/*
;2092:==================
;2093:PrintTeam
;2094:==================
;2095:*/
;2096:void PrintTeam(int team, char *message) {
line 2099
;2097:	int i;
;2098:
;2099:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1220
JUMPV
LABELV $1217
line 2100
;2100:		if (level.clients[i].sess.sessionTeam != team)
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1222
line 2101
;2101:			continue;
ADDRGP4 $1218
JUMPV
LABELV $1222
line 2102
;2102:		trap_SendServerCommand( i, message );
ADDRLP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2103
;2103:	}
LABELV $1218
line 2099
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1220
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1217
line 2104
;2104:}
LABELV $1216
endproc PrintTeam 4 8
export SetLeader
proc SetLeader 12 12
line 2111
;2105:
;2106:/*
;2107:==================
;2108:SetLeader
;2109:==================
;2110:*/
;2111:void SetLeader(int team, int client) {
line 2114
;2112:	int i;
;2113:
;2114:	if ( level.clients[client].pers.connected == CON_DISCONNECTED ) {
CNSTI4 1804
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1380
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1225
line 2115
;2115:		PrintTeam(team, va("print \"%s is not connected\n\"", level.clients[client].pers.netname) );
ADDRGP4 $1227
ARGP4
CNSTI4 1804
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 PrintTeam
CALLV
pop
line 2116
;2116:		return;
ADDRGP4 $1224
JUMPV
LABELV $1225
line 2118
;2117:	}
;2118:	if (level.clients[client].sess.sessionTeam != team) {
CNSTI4 1804
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1228
line 2119
;2119:		PrintTeam(team, va("print \"%s is not on the team anymore\n\"", level.clients[client].pers.netname) );
ADDRGP4 $1230
ARGP4
CNSTI4 1804
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 PrintTeam
CALLV
pop
line 2120
;2120:		return;
ADDRGP4 $1224
JUMPV
LABELV $1228
line 2122
;2121:	}
;2122:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1234
JUMPV
LABELV $1231
line 2123
;2123:		if (level.clients[i].sess.sessionTeam != team)
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1236
line 2124
;2124:			continue;
ADDRGP4 $1232
JUMPV
LABELV $1236
line 2125
;2125:		if (level.clients[i].sess.teamLeader) {
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1576
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1238
line 2126
;2126:			level.clients[i].sess.teamLeader = qfalse;
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1576
ADDP4
CNSTI4 0
ASGNI4
line 2127
;2127:			ClientUserinfoChanged(i);
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 2128
;2128:		}
LABELV $1238
line 2129
;2129:	}
LABELV $1232
line 2122
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1234
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1231
line 2130
;2130:	level.clients[client].sess.teamLeader = qtrue;
CNSTI4 1804
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1576
ADDP4
CNSTI4 1
ASGNI4
line 2131
;2131:	ClientUserinfoChanged( client );
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 ClientUserinfoChanged
CALLV
pop
line 2132
;2132:	PrintTeam(team, va("print \"%s %s\n\"", level.clients[client].pers.netname, G_GetStripEdString("SVINGAME", "NEWTEAMLEADER")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1241
ARGP4
ADDRLP4 4
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1240
ARGP4
CNSTI4 1804
ADDRFP4 4
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1428
ADDP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 PrintTeam
CALLV
pop
line 2133
;2133:}
LABELV $1224
endproc SetLeader 12 12
export CheckTeamLeader
proc CheckTeamLeader 4 0
line 2140
;2134:
;2135:/*
;2136:==================
;2137:CheckTeamLeader
;2138:==================
;2139:*/
;2140:void CheckTeamLeader( int team ) {
line 2143
;2141:	int i;
;2142:
;2143:	for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1246
JUMPV
LABELV $1243
line 2144
;2144:		if (level.clients[i].sess.sessionTeam != team)
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1248
line 2145
;2145:			continue;
ADDRGP4 $1244
JUMPV
LABELV $1248
line 2146
;2146:		if (level.clients[i].sess.teamLeader)
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1576
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1250
line 2147
;2147:			break;
ADDRGP4 $1245
JUMPV
LABELV $1250
line 2148
;2148:	}
LABELV $1244
line 2143
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1246
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1243
LABELV $1245
line 2149
;2149:	if (i >= level.maxclients) {
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1252
line 2150
;2150:		for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1258
JUMPV
LABELV $1255
line 2151
;2151:			if (level.clients[i].sess.sessionTeam != team)
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1260
line 2152
;2152:				continue;
ADDRGP4 $1256
JUMPV
LABELV $1260
line 2153
;2153:			if (!(g_entities[i].r.svFlags & SVF_BOT)) {
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
NEI4 $1262
line 2154
;2154:				level.clients[i].sess.teamLeader = qtrue;
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1576
ADDP4
CNSTI4 1
ASGNI4
line 2155
;2155:				break;
ADDRGP4 $1257
JUMPV
LABELV $1262
line 2157
;2156:			}
;2157:		}
LABELV $1256
line 2150
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1258
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1255
LABELV $1257
line 2158
;2158:		for ( i = 0 ; i < level.maxclients ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1269
JUMPV
LABELV $1266
line 2159
;2159:			if (level.clients[i].sess.sessionTeam != team)
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1536
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
EQI4 $1271
line 2160
;2160:				continue;
ADDRGP4 $1267
JUMPV
LABELV $1271
line 2161
;2161:			level.clients[i].sess.teamLeader = qtrue;
CNSTI4 1804
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 level
INDIRP4
ADDP4
CNSTI4 1576
ADDP4
CNSTI4 1
ASGNI4
line 2162
;2162:			break;
ADDRGP4 $1268
JUMPV
LABELV $1267
line 2158
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $1269
ADDRLP4 0
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1266
LABELV $1268
line 2164
;2163:		}
;2164:	}
LABELV $1252
line 2165
;2165:}
LABELV $1242
endproc CheckTeamLeader 4 0
export CheckTeamVote
proc CheckTeamVote 28 12
line 2172
;2166:
;2167:/*
;2168:==================
;2169:CheckTeamVote
;2170:==================
;2171:*/
;2172:void CheckTeamVote( int team ) {
line 2175
;2173:	int cs_offset;
;2174:
;2175:	if ( team == TEAM_RED )
ADDRFP4 0
INDIRI4
CNSTI4 1
NEI4 $1274
line 2176
;2176:		cs_offset = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1275
JUMPV
LABELV $1274
line 2177
;2177:	else if ( team == TEAM_BLUE )
ADDRFP4 0
INDIRI4
CNSTI4 2
NEI4 $1273
line 2178
;2178:		cs_offset = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 2180
;2179:	else
;2180:		return;
LABELV $1277
LABELV $1275
line 2182
;2181:
;2182:	if ( !level.teamVoteTime[cs_offset] ) {
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+4352
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1278
line 2183
;2183:		return;
ADDRGP4 $1273
JUMPV
LABELV $1278
line 2185
;2184:	}
;2185:	if ( level.time - level.teamVoteTime[cs_offset] >= VOTE_TIME ) {
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+4352
ADDP4
INDIRI4
SUBI4
CNSTI4 30000
LTI4 $1281
line 2186
;2186:		trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TEAMVOTEFAILED")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1285
ARGP4
ADDRLP4 4
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1202
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2187
;2187:	} else {
ADDRGP4 $1282
JUMPV
LABELV $1281
line 2188
;2188:		if ( level.teamVoteYes[cs_offset] > level.numteamVotingClients[cs_offset]/2 ) {
ADDRLP4 4
CNSTI4 2
ASGNI4
ADDRLP4 8
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
LSHI4
ASGNI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+4360
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
ADDRGP4 level+4376
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
DIVI4
LEI4 $1286
line 2190
;2189:			// execute the command, then remove the vote
;2190:			trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TEAMVOTEPASSED")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1290
ARGP4
ADDRLP4 12
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1202
ARGP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2192
;2191:			//
;2192:			if ( !Q_strncmp( "leader", level.teamVoteString[cs_offset], 6) ) {
ADDRGP4 $1293
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 level+2304
ADDP4
ARGP4
CNSTI4 6
ARGI4
ADDRLP4 20
ADDRGP4 Q_strncmp
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $1291
line 2194
;2193:				//set the team leader
;2194:				SetLeader(team, atoi(level.teamVoteString[cs_offset] + 7));
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 level+2304+7
ADDP4
ARGP4
ADDRLP4 24
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 24
INDIRI4
ARGI4
ADDRGP4 SetLeader
CALLV
pop
line 2195
;2195:			}
ADDRGP4 $1287
JUMPV
LABELV $1291
line 2196
;2196:			else {
line 2197
;2197:				trap_SendConsoleCommand( EXEC_APPEND, va("%s\n", level.teamVoteString[cs_offset] ) );
ADDRGP4 $1164
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 level+2304
ADDP4
ARGP4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 2198
;2198:			}
line 2199
;2199:		} else if ( level.teamVoteNo[cs_offset] >= level.numteamVotingClients[cs_offset]/2 ) {
ADDRGP4 $1287
JUMPV
LABELV $1286
ADDRLP4 12
CNSTI4 2
ASGNI4
ADDRLP4 16
ADDRLP4 0
INDIRI4
ADDRLP4 12
INDIRI4
LSHI4
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 level+4368
ADDP4
INDIRI4
ADDRLP4 16
INDIRI4
ADDRGP4 level+4376
ADDP4
INDIRI4
ADDRLP4 12
INDIRI4
DIVI4
LTI4 $1273
line 2201
;2200:			// same behavior as a timeout
;2201:			trap_SendServerCommand( -1, va("print \"%s\n\"", G_GetStripEdString("SVINGAME", "TEAMVOTEFAILED")) );
ADDRGP4 $1004
ARGP4
ADDRGP4 $1285
ARGP4
ADDRLP4 20
ADDRGP4 G_GetStripEdString
CALLP4
ASGNP4
ADDRGP4 $1202
ARGP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
CNSTI4 -1
ARGI4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 trap_SendServerCommand
CALLV
pop
line 2202
;2202:		} else {
line 2204
;2203:			// still waiting for a majority
;2204:			return;
LABELV $1299
LABELV $1287
line 2206
;2205:		}
;2206:	}
LABELV $1282
line 2207
;2207:	level.teamVoteTime[cs_offset] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 level+4352
ADDP4
CNSTI4 0
ASGNI4
line 2208
;2208:	trap_SetConfigstring( CS_TEAMVOTE_TIME + cs_offset, "" );
ADDRLP4 0
INDIRI4
CNSTI4 12
ADDI4
ARGI4
ADDRGP4 $91
ARGP4
ADDRGP4 trap_SetConfigstring
CALLV
pop
line 2210
;2209:
;2210:}
LABELV $1273
endproc CheckTeamVote 28 12
data
align 4
LABELV $1304
byte 4 -1
export CheckCvars
code
proc CheckCvars 4 8
line 2218
;2211:
;2212:
;2213:/*
;2214:==================
;2215:CheckCvars
;2216:==================
;2217:*/
;2218:void CheckCvars( void ) {
line 2221
;2219:	static int lastMod = -1;
;2220:
;2221:	if ( g_password.modificationCount != lastMod ) {
ADDRGP4 g_password+4
INDIRI4
ADDRGP4 $1304
INDIRI4
EQI4 $1305
line 2222
;2222:		lastMod = g_password.modificationCount;
ADDRGP4 $1304
ADDRGP4 g_password+4
INDIRI4
ASGNI4
line 2223
;2223:		if ( *g_password.string && Q_stricmp( g_password.string, "none" ) ) {
ADDRGP4 g_password+16
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $1309
ADDRGP4 g_password+16
ARGP4
ADDRGP4 $1313
ARGP4
ADDRLP4 0
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $1309
line 2224
;2224:			trap_Cvar_Set( "g_needpass", "1" );
ADDRGP4 $156
ARGP4
ADDRGP4 $113
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2225
;2225:		} else {
ADDRGP4 $1310
JUMPV
LABELV $1309
line 2226
;2226:			trap_Cvar_Set( "g_needpass", "0" );
ADDRGP4 $156
ARGP4
ADDRGP4 $97
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2227
;2227:		}
LABELV $1310
line 2228
;2228:	}
LABELV $1305
line 2229
;2229:}
LABELV $1303
endproc CheckCvars 4 8
export G_RunThink
proc G_RunThink 8 4
line 2238
;2230:
;2231:/*
;2232:=============
;2233:G_RunThink
;2234:
;2235:Runs thinking code for this frame if necessary
;2236:=============
;2237:*/
;2238:void G_RunThink (gentity_t *ent) {
line 2241
;2239:	float	thinktime;
;2240:
;2241:	thinktime = ent->nextthink;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
INDIRI4
CVIF4 4
ASGNF4
line 2242
;2242:	if (thinktime <= 0) {
ADDRLP4 0
INDIRF4
CNSTF4 0
GTF4 $1315
line 2243
;2243:		return;
ADDRGP4 $1314
JUMPV
LABELV $1315
line 2245
;2244:	}
;2245:	if (thinktime > level.time) {
ADDRLP4 0
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LEF4 $1317
line 2246
;2246:		return;
ADDRGP4 $1314
JUMPV
LABELV $1317
line 2249
;2247:	}
;2248:	
;2249:	ent->nextthink = 0;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
CNSTI4 0
ASGNI4
line 2250
;2250:	if (!ent->think) {
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1320
line 2251
;2251:		G_Error ( "NULL ent->think");
ADDRGP4 $1322
ARGP4
ADDRGP4 G_Error
CALLV
pop
line 2252
;2252:	}
LABELV $1320
line 2253
;2253:	ent->think (ent);
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 636
ADDP4
INDIRP4
CALLV
pop
line 2254
;2254:}
LABELV $1314
endproc G_RunThink 8 4
data
export g_LastFrameTime
align 4
LABELV g_LastFrameTime
byte 4 0
export g_TimeSinceLastFrame
align 4
LABELV g_TimeSinceLastFrame
byte 4 0
export gDoSlowMoDuel
align 4
LABELV gDoSlowMoDuel
byte 4 0
export gSlowMoDuelTime
align 4
LABELV gSlowMoDuelTime
byte 4 0
export G_RunFrame
code
proc G_RunFrame 164 12
line 2270
;2255:
;2256:int g_LastFrameTime = 0;
;2257:int g_TimeSinceLastFrame = 0;
;2258:
;2259:qboolean gDoSlowMoDuel = qfalse;
;2260:int gSlowMoDuelTime = 0;
;2261:
;2262:/*
;2263:================
;2264:G_RunFrame
;2265:
;2266:Advances the non-player objects in the world
;2267:================
;2268:*/
;2269:
;2270:void G_RunFrame( int levelTime ) {
line 2276
;2271:	int			i;
;2272:	gentity_t	*ent;
;2273:	int			msec;
;2274:	int start, end;
;2275:
;2276:	if (gDoSlowMoDuel)
ADDRGP4 gDoSlowMoDuel
INDIRI4
CNSTI4 0
EQI4 $1324
line 2277
;2277:	{
line 2278
;2278:		if (level.restarted)
ADDRGP4 level+68
INDIRI4
CNSTI4 0
EQI4 $1326
line 2279
;2279:		{
line 2281
;2280:			char buf[128];
;2281:			float tFVal = 0;
ADDRLP4 20
CNSTF4 0
ASGNF4
line 2283
;2282:
;2283:			trap_Cvar_VariableStringBuffer("timescale", buf, sizeof(buf));
ADDRGP4 $1329
ARGP4
ADDRLP4 24
ARGP4
CNSTI4 128
ARGI4
ADDRGP4 trap_Cvar_VariableStringBuffer
CALLV
pop
line 2285
;2284:
;2285:			tFVal = atof(buf);
ADDRLP4 24
ARGP4
ADDRLP4 152
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 20
ADDRLP4 152
INDIRF4
ASGNF4
line 2287
;2286:
;2287:			trap_Cvar_Set("timescale", "1");
ADDRGP4 $1329
ARGP4
ADDRGP4 $113
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2288
;2288:			if (tFVal == 1.0f)
ADDRLP4 20
INDIRF4
CNSTF4 1065353216
NEF4 $1327
line 2289
;2289:			{
line 2290
;2290:				gDoSlowMoDuel = qfalse;
ADDRGP4 gDoSlowMoDuel
CNSTI4 0
ASGNI4
line 2291
;2291:			}
line 2292
;2292:		}
ADDRGP4 $1327
JUMPV
LABELV $1326
line 2294
;2293:		else
;2294:		{
line 2295
;2295:			float timeDif = (level.time - gSlowMoDuelTime); //difference in time between when the slow motion was initiated and now
ADDRLP4 20
ADDRGP4 level+32
INDIRI4
ADDRGP4 gSlowMoDuelTime
INDIRI4
SUBI4
CVIF4 4
ASGNF4
line 2296
;2296:			float useDif = 0; //the difference to use when actually setting the timescale
ADDRLP4 24
CNSTF4 0
ASGNF4
line 2298
;2297:
;2298:			if (timeDif < 150)
ADDRLP4 20
INDIRF4
CNSTF4 1125515264
GEF4 $1333
line 2299
;2299:			{
line 2300
;2300:				trap_Cvar_Set("timescale", "0.1f");
ADDRGP4 $1329
ARGP4
ADDRGP4 $1335
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2301
;2301:			}
ADDRGP4 $1334
JUMPV
LABELV $1333
line 2302
;2302:			else if (timeDif < 1150)
ADDRLP4 20
INDIRF4
CNSTF4 1150271488
GEF4 $1336
line 2303
;2303:			{
line 2304
;2304:				useDif = (timeDif/1000); //scale from 0.1 up to 1
ADDRLP4 24
ADDRLP4 20
INDIRF4
CNSTF4 1148846080
DIVF4
ASGNF4
line 2305
;2305:				if (useDif < 0.1)
ADDRLP4 24
INDIRF4
CNSTF4 1036831949
GEF4 $1338
line 2306
;2306:				{
line 2307
;2307:					useDif = 0.1;
ADDRLP4 24
CNSTF4 1036831949
ASGNF4
line 2308
;2308:				}
LABELV $1338
line 2309
;2309:				if (useDif > 1.0)
ADDRLP4 24
INDIRF4
CNSTF4 1065353216
LEF4 $1340
line 2310
;2310:				{
line 2311
;2311:					useDif = 1.0;
ADDRLP4 24
CNSTF4 1065353216
ASGNF4
line 2312
;2312:				}
LABELV $1340
line 2313
;2313:				trap_Cvar_Set("timescale", va("%f", useDif));
ADDRGP4 $1342
ARGP4
ADDRLP4 24
INDIRF4
ARGF4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $1329
ARGP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2314
;2314:			}
ADDRGP4 $1337
JUMPV
LABELV $1336
line 2316
;2315:			else
;2316:			{
line 2318
;2317:				char buf[128];
;2318:				float tFVal = 0;
ADDRLP4 28
CNSTF4 0
ASGNF4
line 2320
;2319:
;2320:				trap_Cvar_VariableStringBuffer("timescale", buf, sizeof(buf));
ADDRGP4 $1329
ARGP4
ADDRLP4 32
ARGP4
CNSTI4 128
ARGI4
ADDRGP4 trap_Cvar_VariableStringBuffer
CALLV
pop
line 2322
;2321:
;2322:				tFVal = atof(buf);
ADDRLP4 32
ARGP4
ADDRLP4 160
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 28
ADDRLP4 160
INDIRF4
ASGNF4
line 2324
;2323:
;2324:				trap_Cvar_Set("timescale", "1");
ADDRGP4 $1329
ARGP4
ADDRGP4 $113
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2325
;2325:				if (timeDif > 1500 && tFVal == 1.0f)
ADDRLP4 20
INDIRF4
CNSTF4 1153138688
LEF4 $1343
ADDRLP4 28
INDIRF4
CNSTF4 1065353216
NEF4 $1343
line 2326
;2326:				{
line 2327
;2327:					gDoSlowMoDuel = qfalse;
ADDRGP4 gDoSlowMoDuel
CNSTI4 0
ASGNI4
line 2328
;2328:				}
LABELV $1343
line 2329
;2329:			}
LABELV $1337
LABELV $1334
line 2330
;2330:		}
LABELV $1327
line 2331
;2331:	}
LABELV $1324
line 2334
;2332:
;2333:	// if we are waiting for the level to restart, do nothing
;2334:	if ( level.restarted ) {
ADDRGP4 level+68
INDIRI4
CNSTI4 0
EQI4 $1345
line 2335
;2335:		return;
ADDRGP4 $1323
JUMPV
LABELV $1345
line 2338
;2336:	}
;2337:
;2338:	level.framenum++;
ADDRLP4 20
ADDRGP4 level+28
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2339
;2339:	level.previousTime = level.time;
ADDRGP4 level+36
ADDRGP4 level+32
INDIRI4
ASGNI4
line 2340
;2340:	level.time = levelTime;
ADDRGP4 level+32
ADDRFP4 0
INDIRI4
ASGNI4
line 2341
;2341:	msec = level.time - level.previousTime;
ADDRLP4 16
ADDRGP4 level+32
INDIRI4
ADDRGP4 level+36
INDIRI4
SUBI4
ASGNI4
line 2343
;2342:
;2343:	g_TimeSinceLastFrame = (level.time - g_LastFrameTime);
ADDRGP4 g_TimeSinceLastFrame
ADDRGP4 level+32
INDIRI4
ADDRGP4 g_LastFrameTime
INDIRI4
SUBI4
ASGNI4
line 2346
;2344:
;2345:	// get any cvar changes
;2346:	G_UpdateCvars();
ADDRGP4 G_UpdateCvars
CALLV
pop
line 2351
;2347:
;2348:	//
;2349:	// go through all allocated objects
;2350:	//
;2351:	start = trap_Milliseconds();
ADDRLP4 24
ADDRGP4 trap_Milliseconds
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 24
INDIRI4
ASGNI4
line 2352
;2352:	ent = &g_entities[0];
ADDRLP4 0
ADDRGP4 g_entities
ASGNP4
line 2353
;2353:	for (i=0 ; i<level.num_entities ; i++, ent++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1358
JUMPV
LABELV $1355
line 2354
;2354:		if ( !ent->inuse ) {
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1360
line 2355
;2355:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1360
line 2359
;2356:		}
;2357:
;2358:		// clear events that are too old
;2359:		if ( level.time - ent->eventTime > EVENT_VALID_MSEC ) {
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 488
ADDP4
INDIRI4
SUBI4
CNSTI4 300
LEI4 $1362
line 2360
;2360:			if ( ent->s.event ) {
ADDRLP4 0
INDIRP4
CNSTI4 252
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1365
line 2361
;2361:				ent->s.event = 0;	// &= EV_EVENT_BITS;
ADDRLP4 0
INDIRP4
CNSTI4 252
ADDP4
CNSTI4 0
ASGNI4
line 2362
;2362:				if ( ent->client ) {
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1367
line 2363
;2363:					ent->client->ps.externalEvent = 0;
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 132
ADDP4
CNSTI4 0
ASGNI4
line 2367
;2364:					// predicted events should never be set to zero
;2365:					//ent->client->ps.events[0] = 0;
;2366:					//ent->client->ps.events[1] = 0;
;2367:				}
LABELV $1367
line 2368
;2368:			}
LABELV $1365
line 2369
;2369:			if ( ent->freeAfterEvent ) {
ADDRLP4 0
INDIRP4
CNSTI4 492
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1369
line 2371
;2370:				// tempEntities or dropped items completely go away after their event
;2371:				if (ent->s.eFlags & EF_SOUNDTRACKER)
ADDRLP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
CNSTI4 8388608
BANDI4
CNSTI4 0
EQI4 $1371
line 2372
;2372:				{ //don't trigger the event again..
line 2373
;2373:					ent->s.event = 0;
ADDRLP4 0
INDIRP4
CNSTI4 252
ADDP4
CNSTI4 0
ASGNI4
line 2374
;2374:					ent->s.eventParm = 0;
ADDRLP4 0
INDIRP4
CNSTI4 256
ADDP4
CNSTI4 0
ASGNI4
line 2375
;2375:					ent->s.eType = 0;
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 0
ASGNI4
line 2376
;2376:					ent->eventTime = 0;
ADDRLP4 0
INDIRP4
CNSTI4 488
ADDP4
CNSTI4 0
ASGNI4
line 2377
;2377:				}
ADDRGP4 $1370
JUMPV
LABELV $1371
line 2379
;2378:				else
;2379:				{
line 2380
;2380:					G_FreeEntity( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 2381
;2381:					continue;
ADDRGP4 $1356
JUMPV
line 2383
;2382:				}
;2383:			} else if ( ent->unlinkAfterEvent ) {
LABELV $1369
ADDRLP4 0
INDIRP4
CNSTI4 496
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1373
line 2385
;2384:				// items that will respawn will hide themselves after their pickup event
;2385:				ent->unlinkAfterEvent = qfalse;
ADDRLP4 0
INDIRP4
CNSTI4 496
ADDP4
CNSTI4 0
ASGNI4
line 2386
;2386:				trap_UnlinkEntity( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_UnlinkEntity
CALLV
pop
line 2387
;2387:			}
LABELV $1373
LABELV $1370
line 2388
;2388:		}
LABELV $1362
line 2391
;2389:
;2390:		// temporary entities don't think
;2391:		if ( ent->freeAfterEvent ) {
ADDRLP4 0
INDIRP4
CNSTI4 492
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1375
line 2392
;2392:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1375
line 2395
;2393:		}
;2394:
;2395:		if ( !ent->r.linked && ent->neverFree ) {
ADDRLP4 32
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 296
ADDP4
INDIRI4
ADDRLP4 32
INDIRI4
NEI4 $1377
ADDRLP4 0
INDIRP4
CNSTI4 468
ADDP4
INDIRI4
ADDRLP4 32
INDIRI4
EQI4 $1377
line 2396
;2396:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1377
line 2399
;2397:		}
;2398:
;2399:		if ( ent->s.eType == ET_MISSILE ) {
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1379
line 2400
;2400:			G_RunMissile( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunMissile
CALLV
pop
line 2401
;2401:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1379
line 2404
;2402:		}
;2403:
;2404:		if ( ent->s.eType == ET_ITEM || ent->physicsObject ) {
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 2
EQI4 $1383
ADDRLP4 0
INDIRP4
CNSTI4 500
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1381
LABELV $1383
line 2405
;2405:			G_RunItem( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunItem
CALLV
pop
line 2406
;2406:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1381
line 2409
;2407:		}
;2408:
;2409:		if ( ent->s.eType == ET_MOVER ) {
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 6
NEI4 $1384
line 2410
;2410:			G_RunMover( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunMover
CALLV
pop
line 2411
;2411:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1384
line 2414
;2412:		}
;2413:
;2414:		if ( i < MAX_CLIENTS ) 
ADDRLP4 4
INDIRI4
CNSTI4 32
GEI4 $1386
line 2415
;2415:		{
line 2416
;2416:			G_CheckClientTimeouts ( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_CheckClientTimeouts
CALLV
pop
line 2418
;2417:			
;2418:			if((!level.intermissiontime)&&!(ent->client->ps.pm_flags&PMF_FOLLOW))
ADDRLP4 40
CNSTI4 0
ASGNI4
ADDRGP4 level+9008
INDIRI4
ADDRLP4 40
INDIRI4
NEI4 $1388
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 4096
BANDI4
ADDRLP4 40
INDIRI4
NEI4 $1388
line 2419
;2419:			{
line 2420
;2420:				WP_ForcePowersUpdate(ent, &ent->client->pers.cmd );
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1384
ADDP4
ARGP4
ADDRGP4 WP_ForcePowersUpdate
CALLV
pop
line 2421
;2421:				WP_SaberPositionUpdate(ent, &ent->client->pers.cmd);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1384
ADDP4
ARGP4
ADDRGP4 WP_SaberPositionUpdate
CALLV
pop
line 2422
;2422:			}
LABELV $1388
line 2423
;2423:			G_RunClient( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunClient
CALLV
pop
line 2424
;2424:			continue;
ADDRGP4 $1356
JUMPV
LABELV $1386
line 2427
;2425:		}
;2426:
;2427:		G_RunThink( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunThink
CALLV
pop
line 2428
;2428:	}
LABELV $1356
line 2353
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 828
ADDP4
ASGNP4
LABELV $1358
ADDRLP4 4
INDIRI4
ADDRGP4 level+12
INDIRI4
LTI4 $1355
line 2429
;2429:end = trap_Milliseconds();
ADDRLP4 28
ADDRGP4 trap_Milliseconds
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 28
INDIRI4
ASGNI4
line 2431
;2430:
;2431:	trap_ROFF_UpdateEntities();
ADDRGP4 trap_ROFF_UpdateEntities
CALLV
pop
line 2433
;2432:
;2433:start = trap_Milliseconds();
ADDRLP4 32
ADDRGP4 trap_Milliseconds
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 32
INDIRI4
ASGNI4
line 2435
;2434:	// perform final fixups on the players
;2435:	ent = &g_entities[0];
ADDRLP4 0
ADDRGP4 g_entities
ASGNP4
line 2436
;2436:	for (i=0 ; i < level.maxclients ; i++, ent++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1394
JUMPV
LABELV $1391
line 2437
;2437:		if ( ent->inuse ) {
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1396
line 2438
;2438:			ClientEndFrame( ent );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 ClientEndFrame
CALLV
pop
line 2439
;2439:		}
LABELV $1396
line 2440
;2440:	}
LABELV $1392
line 2436
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 828
ADDP4
ASGNP4
LABELV $1394
ADDRLP4 4
INDIRI4
ADDRGP4 level+24
INDIRI4
LTI4 $1391
line 2441
;2441:end = trap_Milliseconds();
ADDRLP4 36
ADDRGP4 trap_Milliseconds
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 36
INDIRI4
ASGNI4
line 2444
;2442:
;2443:	// see if it is time to do a tournement restart
;2444:	CheckTournament();
ADDRGP4 CheckTournament
CALLV
pop
line 2447
;2445:
;2446:	// see if it is time to end the level
;2447:	CheckExitRules();
ADDRGP4 CheckExitRules
CALLV
pop
line 2450
;2448:
;2449:	// update to team status?
;2450:	CheckTeamStatus();
ADDRGP4 CheckTeamStatus
CALLV
pop
line 2453
;2451:
;2452:	// cancel vote if timed out
;2453:	CheckVote();
ADDRGP4 CheckVote
CALLV
pop
line 2456
;2454:
;2455:	// check team votes
;2456:	CheckTeamVote( TEAM_RED );
CNSTI4 1
ARGI4
ADDRGP4 CheckTeamVote
CALLV
pop
line 2457
;2457:	CheckTeamVote( TEAM_BLUE );
CNSTI4 2
ARGI4
ADDRGP4 CheckTeamVote
CALLV
pop
line 2460
;2458:
;2459:	// for tracking changes
;2460:	CheckCvars();
ADDRGP4 CheckCvars
CALLV
pop
line 2462
;2461:
;2462:	if (g_listEntity.integer) {
ADDRGP4 g_listEntity+12
INDIRI4
CNSTI4 0
EQI4 $1398
line 2463
;2463:		for (i = 0; i < MAX_GENTITIES; i++) {
ADDRLP4 4
CNSTI4 0
ASGNI4
LABELV $1401
line 2464
;2464:			G_Printf("%4i: %s\n", i, g_entities[i].classname);
ADDRGP4 $1405
ARGP4
ADDRLP4 4
INDIRI4
ARGI4
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities+416
ADDP4
INDIRP4
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2465
;2465:		}
LABELV $1402
line 2463
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $1401
line 2466
;2466:		trap_Cvar_Set("g_listEntity", "0");
ADDRGP4 $182
ARGP4
ADDRGP4 $97
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 2467
;2467:	}
LABELV $1398
line 2470
;2468:
;2469:	//At the end of the frame, send out the ghoul2 kill queue, if there is one
;2470:	G_SendG2KillQueue();
ADDRGP4 G_SendG2KillQueue
CALLV
pop
line 2473
;2471:
;2472:
;2473:	if (gQueueScoreMessage)
ADDRGP4 gQueueScoreMessage
INDIRI4
CNSTI4 0
EQI4 $1407
line 2474
;2474:	{
line 2475
;2475:		if (gQueueScoreMessageTime < level.time)
ADDRGP4 gQueueScoreMessageTime
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1409
line 2476
;2476:		{
line 2477
;2477:			SendScoreboardMessageToAllClients();
ADDRGP4 SendScoreboardMessageToAllClients
CALLV
pop
line 2479
;2478:
;2479:			gQueueScoreMessageTime = 0;
ADDRGP4 gQueueScoreMessageTime
CNSTI4 0
ASGNI4
line 2480
;2480:			gQueueScoreMessage = 0;
ADDRGP4 gQueueScoreMessage
CNSTI4 0
ASGNI4
line 2481
;2481:		}
LABELV $1409
line 2482
;2482:	}
LABELV $1407
line 2484
;2483:
;2484:	g_LastFrameTime = level.time;
ADDRGP4 g_LastFrameTime
ADDRGP4 level+32
INDIRI4
ASGNI4
line 2485
;2485:}
LABELV $1323
endproc G_RunFrame 164 12
data
align 1
LABELV $1414
byte 1 0
skip 1023
export G_GetStripEdString
code
proc G_GetStripEdString 0 16
line 2488
;2486:
;2487:const char *G_GetStripEdString(char *refSection, char *refName)
;2488:{
line 2501
;2489:	/*
;2490:	static char text[1024]={0};
;2491:	trap_SP_GetStringTextString(va("%s_%s", refSection, refName), text, sizeof(text));
;2492:	return text;
;2493:	*/
;2494:
;2495:	//Well, it would've been lovely doing it the above way, but it would mean mixing
;2496:	//languages for the client depending on what the server is. So we'll mark this as
;2497:	//a striped reference with @@@ and send the refname to the client, and when it goes
;2498:	//to print it will get scanned for the striped reference indication and dealt with
;2499:	//properly.
;2500:	static char text[1024]={0};
;2501:	Com_sprintf(text, sizeof(text), "@@@%s", refName);
ADDRGP4 $1414
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $1415
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 2502
;2502:	return text;
ADDRGP4 $1414
RETP4
LABELV $1413
endproc G_GetStripEdString 0 16
import Parser_ParseVehicleInfo
import G_ROFF_NotetrackCallback
bss
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_statLogFile
align 4
LABELV g_statLogFile
skip 272
export g_statLog
align 4
LABELV g_statLog
skip 272
export g_logSync
align 4
LABELV g_logSync
skip 272
export g_log
align 4
LABELV g_log
skip 272
export g_MaxHolocronCarry
align 4
LABELV g_MaxHolocronCarry
skip 272
export g_clients
align 4
LABELV g_clients
skip 57728
import trap_ROFF_Purge_Ent
import trap_ROFF_Play
import trap_ROFF_Cache
import trap_ROFF_UpdateEntities
import trap_ROFF_Clean
import trap_SP_GetStringTextString
import trap_SP_Register
import trap_SP_RegisterServer
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_ForcePower
import trap_EA_Alt_Attack
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_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_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_Milliseconds
import trap_Error
import trap_Printf
export g_austrian
align 4
LABELV g_austrian
skip 272
export g_saberDebugPrint
align 4
LABELV g_saberDebugPrint
skip 272
export g_saberDmgDelay_Wound
align 4
LABELV g_saberDmgDelay_Wound
skip 272
export g_saberDmgDelay_Idle
align 4
LABELV g_saberDmgDelay_Idle
skip 272
export g_saberDmgVelocityScale
align 4
LABELV g_saberDmgVelocityScale
skip 272
export g_timeouttospec
align 4
LABELV g_timeouttospec
skip 272
export g_forceDodge
align 4
LABELV g_forceDodge
skip 272
export g_dismember
align 4
LABELV g_dismember
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_rankings
align 4
LABELV g_rankings
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_debugUp
align 4
LABELV g_debugUp
skip 272
export g_debugRight
align 4
LABELV g_debugRight
skip 272
export g_debugForward
align 4
LABELV g_debugForward
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_teamAutoJoin
align 4
LABELV g_teamAutoJoin
skip 272
export g_allowVote
align 4
LABELV g_allowVote
skip 272
export g_blood
align 4
LABELV g_blood
skip 272
export g_doWarmup
align 4
LABELV g_doWarmup
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_adaptRespawn
align 4
LABELV g_adaptRespawn
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_friendlySaber
align 4
LABELV g_friendlySaber
skip 272
export g_friendlyFire
align 4
LABELV g_friendlyFire
skip 272
export g_saberInterpolate
align 4
LABELV g_saberInterpolate
skip 272
export g_capturelimit
align 4
LABELV g_capturelimit
skip 272
export g_timelimit
align 4
LABELV g_timelimit
skip 272
export g_duel_fraglimit
align 4
LABELV g_duel_fraglimit
skip 272
export g_fraglimit
align 4
LABELV g_fraglimit
skip 272
export g_duelWeaponDisable
align 4
LABELV g_duelWeaponDisable
skip 272
export g_fraglimitVoteCorrection
align 4
LABELV g_fraglimitVoteCorrection
skip 272
export g_allowDuelSuicide
align 4
LABELV g_allowDuelSuicide
skip 272
export g_weaponDisable
align 4
LABELV g_weaponDisable
skip 272
export g_forcePowerDisable
align 4
LABELV g_forcePowerDisable
skip 272
export g_spawnInvulnerability
align 4
LABELV g_spawnInvulnerability
skip 272
export g_forceRegenTime
align 4
LABELV g_forceRegenTime
skip 272
export g_saberDamageScale
align 4
LABELV g_saberDamageScale
skip 272
export g_slowmoDuelEnd
align 4
LABELV g_slowmoDuelEnd
skip 272
export g_logClientInfo
align 4
LABELV g_logClientInfo
skip 272
export g_saberBoxTraceSize
align 4
LABELV g_saberBoxTraceSize
skip 272
export g_saberAlwaysBoxTrace
align 4
LABELV g_saberAlwaysBoxTrace
skip 272
export g_saberGhoul2Collision
align 4
LABELV g_saberGhoul2Collision
skip 272
export g_saberTraceSaberFirst
align 4
LABELV g_saberTraceSaberFirst
skip 272
export g_saberLockFactor
align 4
LABELV g_saberLockFactor
skip 272
export g_saberLocking
align 4
LABELV g_saberLocking
skip 272
export g_privateDuel
align 4
LABELV g_privateDuel
skip 272
export g_forceBasedTeams
align 4
LABELV g_forceBasedTeams
skip 272
export g_maxForceRank
align 4
LABELV g_maxForceRank
skip 272
export g_dmflags
align 4
LABELV g_dmflags
skip 272
export g_autoMapCycle
align 4
LABELV g_autoMapCycle
skip 272
export g_trueJedi
align 4
LABELV g_trueJedi
skip 272
export g_restarted
align 4
LABELV g_restarted
skip 272
export g_maxGameClients
align 4
LABELV g_maxGameClients
skip 272
export g_maxclients
align 4
LABELV g_maxclients
skip 272
export g_cheats
align 4
LABELV g_cheats
skip 272
export g_dedicated
align 4
LABELV g_dedicated
skip 272
export g_gametype
align 4
LABELV g_gametype
skip 272
export g_vehicles
align 4
LABELV g_vehicles
skip 2560
export g_vehicleTemplates
align 4
LABELV g_vehicleTemplates
skip 2560
export vehicleId
align 4
LABELV vehicleId
skip 4
import VehicleTemplateArray_GetTemplateIndexForName
import VehicleTemplateArray_OutputTemplates
import VehicleTemplateArray_InitVehicleTemplateArray
import VehicleArray_OutputVehicles
import VehicleArray_RemoveVehicleForId
import VehicleArray_AddVehicle
import VehicleArray_SetVehicleForId
import VehicleArray_GetVehicleForId
import VehicleArray_InitVehicleArray
import G_SpawnVehicle
import Touch_Vehicle
import VehicleInfo_GetNameForMovementType
import VehicleInfo_GetBitForMovementType
import VehicleInfo_GetNameForWeapon
import VehicleInfo_GetIndexForWeapon
import VehicleInfo_GetBitForWeapon
import VehicleInfo_GetBitForVehicleType
import Vehicle_CopyVehicle
import Vehicle_InitVehicle
export g_entities
align 4
LABELV g_entities
skip 847872
export level
align 4
LABELV level
skip 9096
import Pickup_Team
import CheckTeamStatus
import TeamplayInfoMessage
import Team_GetLocationMsg
import Team_GetLocation
import SelectSagaSpawnPoint
import SelectCTFSpawnPoint
import Team_FreeEntity
import Team_ReturnFlag
import Team_InitGame
import Team_CheckHurtCarrier
import Team_FragBonuses
import Team_DroppedFlagThink
import AddTeamScore
import TeamColorString
import OtherTeamName
import TeamName
import OtherTeam
import BotAIStartFrame
import BotAIShutdownClient
import BotAISetupClient
import BotAILoadMap
import BotAIShutdown
import BotAISetup
import B_CleanupAlloc
import B_InitAlloc
import InFieldOfVision
import BotOrder
import OrgVisible
import InitSagaMode
import G_ClearClientLog
import G_LogExit
import G_LogWeaponOutput
import G_LogWeaponInit
import G_LogWeaponItem
import G_LogWeaponPowerup
import G_LogWeaponFrag
import G_LogWeaponDeath
import G_LogWeaponKill
import G_LogWeaponDamage
import G_LogWeaponFire
import G_LogWeaponPickup
import Jedi_DodgeEvasion
import ForceTelepathy
import ForceThrow
import ForceSeeing
import ForceTeamForceReplenish
import ForceTeamHeal
import ForceAbsorb
import ForceProtect
import ForceGrip
import ForceRage
import ForceSpeed
import ForceHeal
import ForcePowerUsableOn
import WP_ForcePowersUpdate
import WP_SpawnInitForcePowers
import WP_InitForcePowers
import WP_SaberInitBladeData
import WP_SaberCanBlock
import WP_SaberPositionUpdate
import WP_ForcePowerStop
import HasSetSaberOnly
import G_PreDefSound
import G_RefreshNextMap
import G_DoesMapSupportGametype
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 UpdateTournamentInfo
import G_WriteSessionData
import G_InitWorldSession
import G_InitSessionData
import G_ReadSessionData
import Svcmd_GameMem_f
import G_InitMemory
import G_Alloc
import Team_CheckDroppedItem
import OnSameTeam
import G_RunClient
import ClientEndFrame
import ClientThink
import G_CheckClientTimeouts
import ClientCommand
import ClientBegin
import ClientDisconnect
import ClientUserinfoChanged
import ClientConnect
export g_ff_objectives
align 4
LABELV g_ff_objectives
skip 272
import DeathmatchScoreboardMessage
import G_SetStats
import BlowDetpacks
import FireWeapon
import G_FilterPacket
import G_ProcessIPBans
import ConsoleCommand
import gJMSaberEnt
import SpotWouldTelefrag
import AddScore
import player_die
import ClientSpawn
import InitBodyQue
import respawn
import CopyToBodyQue
import SelectSpawnPoint
import SetClientViewAngle
import PickTeam
import TeamLeader
import TeamCount
import CheckGauntletAttack
import SnapVectorTowards
import CalcMuzzlePoint
import LogAccuracyHit
import WP_FireGenericBlasterMissile
import WP_FireTurretMissile
import G_CreateExampleAnimEnt
import G_PlayerBecomeATST
import ATST_ManageDamageBoxes
import TeleportPlayer
import trigger_teleporter_touch
import Touch_DoorTrigger
import G_RunMover
import WP_FireBlasterMissile
import G_ExplodeMissile
import G_BounceProjectile
import CreateMissile
import G_RunMissile
import G_ReflectMissile
import gGAvoidDismember
import G_CheckForDismemberment
import ExplodeDeath
import TossClientCubes
import TossClientItems
import TossClientWeapon
import body_die
import G_RadiusDamage
import G_Damage
import CanDamage
import trap_G2API_SetBoneAnim
import trap_G2API_GetGLAName
import trap_G2API_SetBoneAngles
import trap_G2API_CollisionDetect
import trap_G2API_CleanGhoul2Models
import trap_G2API_RemoveGhoul2Model
import trap_G2API_HasGhoul2ModelOnIndex
import trap_G2API_DuplicateGhoul2Instance
import trap_G2API_CopySpecificGhoul2Model
import trap_G2API_CopyGhoul2Instance
import trap_G2API_SetBoltInfo
import trap_G2API_AddBolt
import trap_G2API_InitGhoul2Model
import trap_G2API_GetBoltMatrix_NoRecNoRot
import trap_G2API_GetBoltMatrix_NoReconstruct
import trap_G2API_GetBoltMatrix
import trap_G2_HaveWeGhoul2Models
import trap_G2_SetGhoul2ModelIndexes
import trap_G2_ListModelBones
import trap_G2_ListModelSurfaces
import G_SkinIndex
import BuildShaderStateConfig
import AddRemap
import G_SetOrigin
import G_AddEvent
import G_AddPredictableEvent
import vtos
import tv
import G_RunObject
import G_TouchSolids
import G_TouchTriggers
import G_EntitiesFree
import G_FreeEntity
import G_KillG2Queue
import G_SendG2KillQueue
import TryUse
import G_EntitySound
import G_SoundAtLoc
import G_Sound
import G_MuteSound
import G_ScreenShake
import G_PlayEffect
import G_TempEntity
import G_Spawn
import G_InitGentity
import G_SetAngles
import G_SetMovedir
import G_UseTargets
import G_PickTarget
import G_RadiusList
import G_Find
import G_KillBox
import G_TeamCommand
import G_EffectIndex
import G_SoundIndex
import G_ModelIndex
import SaveRegisteredItems
import RegisterItem
import ClearRegisteredItems
import Touch_Item
import Add_Ammo
import ArmorIndex
import Think_Weapon
import FinishSpawningItem
import G_SpawnItem
import SetRespawn
import LaunchItem
import Drop_Item
import PrecacheItem
import UseHoldableItem
import RespawnItem
import G_RunItem
import G_CheckTeamItems
import ItemUse_MedPack
import ItemUse_Seeker
import ItemUse_Sentry
import ItemUse_Shield
import ItemUse_Binoculars
import G_GetDuelWinner
import Cmd_EngageDuel_f
import Cmd_ToggleSaber_f
import G_ItemUsable
import Cmd_SaberAttackCycle_f
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 gEscapeTime
import gEscaping
import g2SaberInstance
import precachedKyle
import forcePowerDarkLight
import WeaponAttackAnim
import WeaponReadyAnim
import BG_OutOfMemory
import BG_StringAlloc
import BG_TempFree
import BG_TempAlloc
import BG_AllocUnaligned
import BG_Alloc
import BG_CanUseFPNow
import BG_HasYsalamiri
import BG_GetItemIndexByTag
import BG_ParseAnimationFile
import BG_PlayerTouchesItem
import BG_PlayerStateToEntityStateExtraPolate
import BG_PlayerStateToEntityState
import BG_TouchJumpPad
import BG_AddPredictableEventToPlayerstate
import BG_EvaluateTrajectoryDelta
import BG_EvaluateTrajectory
import BG_ForcePowerDrain
import BG_SaberStartTransAnim
import BG_InDeathAnim
import BG_InRoll
import BG_KnockawayForParry
import BG_BrokenParryForParry
import BG_BrokenParryForAttack
import BG_SaberInSpecialAttack
import BG_SpinningSaberAnim
import BG_FlippingAnim
import BG_SaberInIdle
import BG_SaberInSpecial
import BG_SaberInAttack
import BG_DirectFlippingAnim
import BG_InSaberStandAnim
import BG_InSpecialJump
import BG_LegalizedForcePowers
import saberMoveData
import BG_CanItemBeGrabbed
import BG_FindItemForHoldable
import BG_FindItemForPowerup
import BG_FindItemForWeapon
import BG_FindItem
import vectoyaw
import bg_numItems
import bg_itemlist
import PM_CalculateRelativeViewAngles
import Pmove
import PM_QuaternionViewAngles
import PM_UpdateViewAngles
import pm
import bgForcePowerCost
import forceMasteryPoints
import forceMasteryLevels
import bgGlobalAnimations
import BGPAFtextLoaded
import forcePowerSorted
import WP_MuzzlePoint
import ammoData
import weaponData
import GetStringForID
import GetIDForString
import Q_irand
import irand
import flrand
import Rand_Init
import Info_NextPair
import Info_Validate
import Info_SetValueForKey_Big
import Info_SetValueForKey
import Info_RemoveKey_big
import Info_RemoveKey
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 Com_sprintf
import Parse3DMatrix
import Parse2DMatrix
import Parse1DMatrix
import SkipRestOfLine
import SkipBracedSection
import COM_MatchToken
import COM_ParseVec4
import COM_ParseFloat
import COM_ParseInt
import COM_ParseString
import COM_ParseWarning
import COM_ParseError
import COM_Compress
import COM_ParseExt
import COM_Parse
import SkipWhitespace
import COM_GetCurrentParseLine
import COM_BeginParseSession
import COM_DefaultExtension
import COM_StripExtension
import COM_SkipPath
import Com_Clamp
import MatrixToEuler
import QuatToAngles
import QuatMul
import AnglesToQuat
import AxisToQuaternion
import QuaternionToAxis
import QuaternionToEuler
import QuatToAxis
import QuaternionMultiply
import QuaternionNormalize
import QuaternionMagnitude
import QuaternionFromString
import AnglesToTieFloats
import AnglesFromTieFloats
import QuaternionToTieFloats
import QuaternionFromTieFloats
import QuaternionCopy
import PerpendicularVector
import AngleVectors
import RotationMatrixAroundDir
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 powf
import ClampShort
import ClampChar
import Q_rsqrt
import Q_fabs
import axisDefault
import vec3_origin
import g_color_table
import colorDkBlue
import colorLtBlue
import colorDkGrey
import colorMdGrey
import colorLtGrey
import colorWhite
import colorCyan
import colorMagenta
import colorYellow
import colorBlue
import colorGreen
import colorRed
import colorBlack
import colorTable
import bytedirs
import Com_Memcpy
import Com_Memset
import Hunk_Alloc
import forceSpeedLevels
import FloatSwap
import LongSwap
import ShortSwap
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 sscanf
import vsprintf
import _atoi
import atoi
import _atof
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 $1415
byte 1 64
byte 1 64
byte 1 64
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $1405
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 $1342
byte 1 37
byte 1 102
byte 1 0
align 1
LABELV $1335
byte 1 48
byte 1 46
byte 1 49
byte 1 102
byte 1 0
align 1
LABELV $1329
byte 1 116
byte 1 105
byte 1 109
byte 1 101
byte 1 115
byte 1 99
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $1322
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 $1313
byte 1 110
byte 1 111
byte 1 110
byte 1 101
byte 1 0
align 1
LABELV $1293
byte 1 108
byte 1 101
byte 1 97
byte 1 100
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $1290
byte 1 84
byte 1 69
byte 1 65
byte 1 77
byte 1 86
byte 1 79
byte 1 84
byte 1 69
byte 1 80
byte 1 65
byte 1 83
byte 1 83
byte 1 69
byte 1 68
byte 1 0
align 1
LABELV $1285
byte 1 84
byte 1 69
byte 1 65
byte 1 77
byte 1 86
byte 1 79
byte 1 84
byte 1 69
byte 1 70
byte 1 65
byte 1 73
byte 1 76
byte 1 69
byte 1 68
byte 1 0
align 1
LABELV $1241
byte 1 78
byte 1 69
byte 1 87
byte 1 84
byte 1 69
byte 1 65
byte 1 77
byte 1 76
byte 1 69
byte 1 65
byte 1 68
byte 1 69
byte 1 82
byte 1 0
align 1
LABELV $1240
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 37
byte 1 115
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1230
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 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 $1227
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 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 $1208
byte 1 86
byte 1 79
byte 1 84
byte 1 69
byte 1 80
byte 1 65
byte 1 83
byte 1 83
byte 1 69
byte 1 68
byte 1 0
align 1
LABELV $1203
byte 1 86
byte 1 79
byte 1 84
byte 1 69
byte 1 70
byte 1 65
byte 1 73
byte 1 76
byte 1 69
byte 1 68
byte 1 0
align 1
LABELV $1202
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 10
byte 1 34
byte 1 0
align 1
LABELV $1192
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 32
byte 1 50
byte 1 48
byte 1 10
byte 1 0
align 1
LABELV $1186
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 32
byte 1 51
byte 1 10
byte 1 0
align 1
LABELV $1175
byte 1 109
byte 1 97
byte 1 112
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $1164
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $1133
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 $1064
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 $1058
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 $1057
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 $1047
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 37
byte 1 115
byte 1 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1043
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 119
byte 1 105
byte 1 110
byte 1 32
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 $1042
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 32
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 $1027
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 37
byte 1 115
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1021
byte 1 75
byte 1 105
byte 1 108
byte 1 108
byte 1 32
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 $1020
byte 1 72
byte 1 73
byte 1 84
byte 1 95
byte 1 84
byte 1 72
byte 1 69
byte 1 95
byte 1 75
byte 1 73
byte 1 76
byte 1 76
byte 1 95
byte 1 76
byte 1 73
byte 1 77
byte 1 73
byte 1 84
byte 1 0
align 1
LABELV $1019
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 37
byte 1 115
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $1006
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 $1005
byte 1 84
byte 1 73
byte 1 77
byte 1 69
byte 1 76
byte 1 73
byte 1 77
byte 1 73
byte 1 84
byte 1 95
byte 1 72
byte 1 73
byte 1 84
byte 1 0
align 1
LABELV $1004
byte 1 83
byte 1 86
byte 1 73
byte 1 78
byte 1 71
byte 1 65
byte 1 77
byte 1 69
byte 1 0
align 1
LABELV $1003
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 46
byte 1 10
byte 1 34
byte 1 0
align 1
LABELV $974
byte 1 69
byte 1 118
byte 1 101
byte 1 114
byte 1 121
byte 1 111
byte 1 110
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 32
byte 1 116
byte 1 111
byte 1 32
byte 1 101
byte 1 115
byte 1 99
byte 1 97
byte 1 112
byte 1 101
byte 1 46
byte 1 0
align 1
LABELV $971
byte 1 69
byte 1 115
byte 1 99
byte 1 97
byte 1 112
byte 1 101
byte 1 32
byte 1 116
byte 1 105
byte 1 109
byte 1 101
byte 1 32
byte 1 101
byte 1 110
byte 1 100
byte 1 101
byte 1 100
byte 1 46
byte 1 0
align 1
LABELV $867
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 32
byte 1 84
byte 1 111
byte 1 117
byte 1 114
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 110
byte 1 116
byte 1 32
byte 1 87
byte 1 105
byte 1 110
byte 1 110
byte 1 101
byte 1 114
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 119
byte 1 105
byte 1 110
byte 1 115
byte 1 47
byte 1 108
byte 1 111
byte 1 115
byte 1 115
byte 1 101
byte 1 115
byte 1 58
byte 1 32
byte 1 37
byte 1 100
byte 1 47
byte 1 37
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $857
byte 1 37
byte 1 105
byte 1 124
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $843
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 32
byte 1 73
byte 1 110
byte 1 105
byte 1 116
byte 1 105
byte 1 97
byte 1 116
byte 1 101
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 37
byte 1 100
byte 1 47
byte 1 37
byte 1 100
byte 1 32
byte 1 118
byte 1 115
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 37
byte 1 100
byte 1 47
byte 1 37
byte 1 100
byte 1 44
byte 1 32
byte 1 107
byte 1 105
byte 1 108
byte 1 108
byte 1 32
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 58
byte 1 32
byte 1 37
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $821
byte 1 108
byte 1 111
byte 1 115
byte 1 101
byte 1 114
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 44
byte 1 32
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 100
byte 1 44
byte 1 32
byte 1 119
byte 1 105
byte 1 110
byte 1 115
byte 1 47
byte 1 108
byte 1 111
byte 1 115
byte 1 115
byte 1 101
byte 1 115
byte 1 58
byte 1 32
byte 1 37
byte 1 100
byte 1 47
byte 1 37
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $816
byte 1 119
byte 1 105
byte 1 110
byte 1 110
byte 1 101
byte 1 114
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 44
byte 1 32
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 100
byte 1 44
byte 1 32
byte 1 119
byte 1 105
byte 1 110
byte 1 115
byte 1 47
byte 1 108
byte 1 111
byte 1 115
byte 1 115
byte 1 101
byte 1 115
byte 1 58
byte 1 32
byte 1 37
byte 1 100
byte 1 47
byte 1 37
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $815
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 32
byte 1 82
byte 1 101
byte 1 115
byte 1 117
byte 1 108
byte 1 116
byte 1 115
byte 1 58
byte 1 10
byte 1 0
align 1
LABELV $787
byte 1 115
byte 1 112
byte 1 76
byte 1 111
byte 1 115
byte 1 101
byte 1 10
byte 1 0
align 1
LABELV $786
byte 1 115
byte 1 112
byte 1 87
byte 1 105
byte 1 110
byte 1 10
byte 1 0
align 1
LABELV $763
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 $746
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 $737
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 $725
byte 1 37
byte 1 51
byte 1 105
byte 1 58
byte 1 37
byte 1 105
byte 1 37
byte 1 105
byte 1 32
byte 1 0
align 1
LABELV $702
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 $698
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 $627
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 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 $451
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $398
byte 1 115
byte 1 0
align 1
LABELV $389
byte 1 102
byte 1 0
align 1
LABELV $364
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $358
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 $354
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 $350
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 32
byte 1 84
byte 1 111
byte 1 117
byte 1 114
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 110
byte 1 116
byte 1 32
byte 1 66
byte 1 101
byte 1 103
byte 1 117
byte 1 110
byte 1 58
byte 1 32
byte 1 107
byte 1 105
byte 1 108
byte 1 108
byte 1 32
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 32
byte 1 37
byte 1 100
byte 1 44
byte 1 32
byte 1 119
byte 1 105
byte 1 110
byte 1 32
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 58
byte 1 32
byte 1 37
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $346
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 $343
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 103
byte 1 117
byte 1 114
byte 1 112
byte 1 50
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $342
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 103
byte 1 117
byte 1 114
byte 1 112
byte 1 49
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $341
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 $339
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 $335
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 $334
byte 1 45
byte 1 49
byte 1 124
byte 1 45
byte 1 49
byte 1 0
align 1
LABELV $333
byte 1 45
byte 1 49
byte 1 0
align 1
LABELV $326
byte 1 115
byte 1 99
byte 1 114
byte 1 105
byte 1 112
byte 1 116
byte 1 115
byte 1 47
byte 1 116
byte 1 101
byte 1 115
byte 1 116
byte 1 46
byte 1 118
byte 1 101
byte 1 104
byte 1 105
byte 1 99
byte 1 108
byte 1 101
byte 1 115
byte 1 0
align 1
LABELV $313
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 $312
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 $311
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 $309
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 $295
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 $291
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 $290
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 $289
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 $283
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 $268
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 $250
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 $202
byte 1 103
byte 1 95
byte 1 97
byte 1 117
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 97
byte 1 110
byte 1 0
align 1
LABELV $201
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 68
byte 1 101
byte 1 98
byte 1 117
byte 1 103
byte 1 80
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $200
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 68
byte 1 109
byte 1 103
byte 1 68
byte 1 101
byte 1 108
byte 1 97
byte 1 121
byte 1 95
byte 1 87
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 0
align 1
LABELV $199
byte 1 51
byte 1 53
byte 1 48
byte 1 0
align 1
LABELV $198
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 68
byte 1 109
byte 1 103
byte 1 68
byte 1 101
byte 1 108
byte 1 97
byte 1 121
byte 1 95
byte 1 73
byte 1 100
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $197
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 68
byte 1 109
byte 1 103
byte 1 86
byte 1 101
byte 1 108
byte 1 111
byte 1 99
byte 1 105
byte 1 116
byte 1 121
byte 1 83
byte 1 99
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $196
byte 1 103
byte 1 95
byte 1 116
byte 1 105
byte 1 109
byte 1 101
byte 1 111
byte 1 117
byte 1 116
byte 1 116
byte 1 111
byte 1 115
byte 1 112
byte 1 101
byte 1 99
byte 1 0
align 1
LABELV $195
byte 1 103
byte 1 95
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 68
byte 1 111
byte 1 100
byte 1 103
byte 1 101
byte 1 0
align 1
LABELV $194
byte 1 103
byte 1 95
byte 1 100
byte 1 105
byte 1 115
byte 1 109
byte 1 101
byte 1 109
byte 1 98
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $193
byte 1 103
byte 1 95
byte 1 114
byte 1 97
byte 1 110
byte 1 107
byte 1 105
byte 1 110
byte 1 103
byte 1 115
byte 1 0
align 1
LABELV $192
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 $191
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 $190
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 $189
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 $188
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 $187
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 $186
byte 1 82
byte 1 101
byte 1 98
byte 1 101
byte 1 108
byte 1 108
byte 1 105
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $185
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 $184
byte 1 69
byte 1 109
byte 1 112
byte 1 105
byte 1 114
byte 1 101
byte 1 0
align 1
LABELV $183
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 $182
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 $181
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 $180
byte 1 55
byte 1 48
byte 1 0
align 1
LABELV $179
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 $178
byte 1 56
byte 1 48
byte 1 0
align 1
LABELV $177
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 $176
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 $175
byte 1 103
byte 1 95
byte 1 109
byte 1 111
byte 1 116
byte 1 100
byte 1 0
align 1
LABELV $174
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 $173
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 $172
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 $171
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 $170
byte 1 54
byte 1 48
byte 1 0
align 1
LABELV $169
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 $168
byte 1 103
byte 1 95
byte 1 97
byte 1 100
byte 1 97
byte 1 112
byte 1 116
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 $167
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 $166
byte 1 53
byte 1 0
align 1
LABELV $165
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 $164
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 $163
byte 1 49
byte 1 48
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $162
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 $161
byte 1 56
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $160
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 $159
byte 1 50
byte 1 53
byte 1 48
byte 1 0
align 1
LABELV $158
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 $157
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 $156
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 $155
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 $154
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 $153
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 $152
byte 1 115
byte 1 116
byte 1 97
byte 1 116
byte 1 108
byte 1 111
byte 1 103
byte 1 46
byte 1 108
byte 1 111
byte 1 103
byte 1 0
align 1
LABELV $151
byte 1 103
byte 1 95
byte 1 115
byte 1 116
byte 1 97
byte 1 116
byte 1 76
byte 1 111
byte 1 103
byte 1 70
byte 1 105
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $150
byte 1 103
byte 1 95
byte 1 115
byte 1 116
byte 1 97
byte 1 116
byte 1 76
byte 1 111
byte 1 103
byte 1 0
align 1
LABELV $149
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 $148
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 $147
byte 1 103
byte 1 95
byte 1 108
byte 1 111
byte 1 103
byte 1 0
align 1
LABELV $146
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 $145
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 $144
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 $143
byte 1 103
byte 1 95
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 65
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 $142
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 83
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $141
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 $140
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 73
byte 1 110
byte 1 116
byte 1 101
byte 1 114
byte 1 112
byte 1 111
byte 1 108
byte 1 97
byte 1 116
byte 1 101
byte 1 0
align 1
LABELV $139
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 $138
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 $137
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 $136
byte 1 49
byte 1 48
byte 1 0
align 1
LABELV $135
byte 1 100
byte 1 117
byte 1 101
byte 1 108
byte 1 95
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 $134
byte 1 50
byte 1 48
byte 1 0
align 1
LABELV $133
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 $132
byte 1 103
byte 1 95
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 86
byte 1 111
byte 1 116
byte 1 101
byte 1 67
byte 1 111
byte 1 114
byte 1 114
byte 1 101
byte 1 99
byte 1 116
byte 1 105
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $131
byte 1 103
byte 1 95
byte 1 97
byte 1 108
byte 1 108
byte 1 111
byte 1 119
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 83
byte 1 117
byte 1 105
byte 1 99
byte 1 105
byte 1 100
byte 1 101
byte 1 0
align 1
LABELV $130
byte 1 103
byte 1 95
byte 1 100
byte 1 117
byte 1 101
byte 1 108
byte 1 87
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 68
byte 1 105
byte 1 115
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $129
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 68
byte 1 105
byte 1 115
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $128
byte 1 103
byte 1 95
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 80
byte 1 111
byte 1 119
byte 1 101
byte 1 114
byte 1 68
byte 1 105
byte 1 115
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $127
byte 1 51
byte 1 48
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $126
byte 1 103
byte 1 95
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 73
byte 1 110
byte 1 118
byte 1 117
byte 1 108
byte 1 110
byte 1 101
byte 1 114
byte 1 97
byte 1 98
byte 1 105
byte 1 108
byte 1 105
byte 1 116
byte 1 121
byte 1 0
align 1
LABELV $125
byte 1 50
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $124
byte 1 103
byte 1 95
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 82
byte 1 101
byte 1 103
byte 1 101
byte 1 110
byte 1 84
byte 1 105
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $123
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 68
byte 1 97
byte 1 109
byte 1 97
byte 1 103
byte 1 101
byte 1 83
byte 1 99
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $122
byte 1 103
byte 1 95
byte 1 115
byte 1 108
byte 1 111
byte 1 119
byte 1 109
byte 1 111
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 69
byte 1 110
byte 1 100
byte 1 0
align 1
LABELV $121
byte 1 103
byte 1 95
byte 1 108
byte 1 111
byte 1 103
byte 1 67
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 0
align 1
LABELV $120
byte 1 50
byte 1 0
align 1
LABELV $119
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 66
byte 1 111
byte 1 120
byte 1 84
byte 1 114
byte 1 97
byte 1 99
byte 1 101
byte 1 83
byte 1 105
byte 1 122
byte 1 101
byte 1 0
align 1
LABELV $118
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 65
byte 1 108
byte 1 119
byte 1 97
byte 1 121
byte 1 115
byte 1 66
byte 1 111
byte 1 120
byte 1 84
byte 1 114
byte 1 97
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $117
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 71
byte 1 104
byte 1 111
byte 1 117
byte 1 108
byte 1 50
byte 1 67
byte 1 111
byte 1 108
byte 1 108
byte 1 105
byte 1 115
byte 1 105
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $116
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 84
byte 1 114
byte 1 97
byte 1 99
byte 1 101
byte 1 83
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 70
byte 1 105
byte 1 114
byte 1 115
byte 1 116
byte 1 0
align 1
LABELV $115
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 76
byte 1 111
byte 1 99
byte 1 107
byte 1 70
byte 1 97
byte 1 99
byte 1 116
byte 1 111
byte 1 114
byte 1 0
align 1
LABELV $114
byte 1 103
byte 1 95
byte 1 115
byte 1 97
byte 1 98
byte 1 101
byte 1 114
byte 1 76
byte 1 111
byte 1 99
byte 1 107
byte 1 105
byte 1 110
byte 1 103
byte 1 0
align 1
LABELV $113
byte 1 49
byte 1 0
align 1
LABELV $112
byte 1 103
byte 1 95
byte 1 112
byte 1 114
byte 1 105
byte 1 118
byte 1 97
byte 1 116
byte 1 101
byte 1 68
byte 1 117
byte 1 101
byte 1 108
byte 1 0
align 1
LABELV $111
byte 1 103
byte 1 95
byte 1 102
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 66
byte 1 97
byte 1 115
byte 1 101
byte 1 100
byte 1 84
byte 1 101
byte 1 97
byte 1 109
byte 1 115
byte 1 0
align 1
LABELV $110
byte 1 54
byte 1 0
align 1
LABELV $109
byte 1 103
byte 1 95
byte 1 109
byte 1 97
byte 1 120
byte 1 70
byte 1 111
byte 1 114
byte 1 99
byte 1 101
byte 1 82
byte 1 97
byte 1 110
byte 1 107
byte 1 0
align 1
LABELV $108
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 $107
byte 1 103
byte 1 95
byte 1 97
byte 1 117
byte 1 116
byte 1 111
byte 1 77
byte 1 97
byte 1 112
byte 1 67
byte 1 121
byte 1 99
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $106
byte 1 103
byte 1 95
byte 1 106
byte 1 101
byte 1 100
byte 1 105
byte 1 86
byte 1 109
byte 1 101
byte 1 114
byte 1 99
byte 1 0
align 1
LABELV $105
byte 1 103
byte 1 95
byte 1 102
byte 1 102
byte 1 95
byte 1 111
byte 1 98
byte 1 106
byte 1 101
byte 1 99
byte 1 116
byte 1 105
byte 1 118
byte 1 101
byte 1 115
byte 1 0
align 1
LABELV $104
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 $103
byte 1 56
byte 1 0
align 1
LABELV $102
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 $101
byte 1 51
byte 1 0
align 1
LABELV $100
byte 1 103
byte 1 95
byte 1 77
byte 1 97
byte 1 120
byte 1 72
byte 1 111
byte 1 108
byte 1 111
byte 1 99
byte 1 114
byte 1 111
byte 1 110
byte 1 67
byte 1 97
byte 1 114
byte 1 114
byte 1 121
byte 1 0
align 1
LABELV $99
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 $98
byte 1 115
byte 1 118
byte 1 95
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 $97
byte 1 48
byte 1 0
align 1
LABELV $96
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 $95
byte 1 77
byte 1 97
byte 1 121
byte 1 32
byte 1 49
byte 1 51
byte 1 32
byte 1 50
byte 1 48
byte 1 48
byte 1 51
byte 1 0
align 1
LABELV $94
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 $93
byte 1 98
byte 1 97
byte 1 115
byte 1 101
byte 1 106
byte 1 107
byte 1 0
align 1
LABELV $92
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 $91
byte 1 0
align 1
LABELV $90
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
