lit
align 4
LABELV validOrders
address $133
byte 4 1
address $134
byte 4 1
address $135
byte 4 2
address $136
byte 4 2
address $137
byte 4 3
address $138
byte 4 7
address $139
byte 4 4
address $140
byte 4 5
address $141
byte 4 6
align 4
LABELV numValidOrders
byte 4 9
code
proc CG_ValidOrder 8 8
file "../cg_servercmds.c"
line 32
;1:// Copyright (C) 1999-2000 Id Software, Inc.
;2://
;3:// cg_servercmds.c -- reliably sequenced text commands sent by the server
;4:// these are processed at snapshot transition time, so there will definately
;5:// be a valid snapshot this frame
;6:
;7:#include "cg_local.h"
;8:#include "../../ui/menudef.h"
;9:#if !defined(CL_LIGHT_H_INC)
;10:	#include "cg_lights.h"
;11:#endif
;12:
;13:typedef struct {
;14:	const char *order;
;15:	int taskNum;
;16:} orderTask_t;
;17:
;18:static const orderTask_t validOrders[] = {
;19:	{ VOICECHAT_GETFLAG,						TEAMTASK_OFFENSE },
;20:	{ VOICECHAT_OFFENSE,						TEAMTASK_OFFENSE },
;21:	{ VOICECHAT_DEFEND,							TEAMTASK_DEFENSE },
;22:	{ VOICECHAT_DEFENDFLAG,					TEAMTASK_DEFENSE },
;23:	{ VOICECHAT_PATROL,							TEAMTASK_PATROL },
;24:	{ VOICECHAT_CAMP,								TEAMTASK_CAMP },
;25:	{ VOICECHAT_FOLLOWME,						TEAMTASK_FOLLOW },
;26:	{ VOICECHAT_RETURNFLAG,					TEAMTASK_RETRIEVE },
;27:	{ VOICECHAT_FOLLOWFLAGCARRIER,	TEAMTASK_ESCORT }
;28:};
;29:
;30:static const int numValidOrders = sizeof(validOrders) / sizeof(orderTask_t);
;31:
;32:static int CG_ValidOrder(const char *p) {
line 34
;33:	int i;
;34:	for (i = 0; i < numValidOrders; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $146
JUMPV
LABELV $143
line 35
;35:		if (Q_stricmp(p, validOrders[i].order) == 0) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ADDRGP4 validOrders
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $147
line 36
;36:			return validOrders[i].taskNum;
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ADDRGP4 validOrders+4
ADDP4
INDIRI4
RETI4
ADDRGP4 $142
JUMPV
LABELV $147
line 38
;37:		}
;38:	}
LABELV $144
line 34
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $146
ADDRLP4 0
INDIRI4
ADDRGP4 numValidOrders
INDIRI4
LTI4 $143
line 39
;39:	return -1;
CNSTI4 -1
RETI4
LABELV $142
endproc CG_ValidOrder 8 8
proc CG_ParseScores 216 12
line 48
;40:}
;41:
;42:/*
;43:=================
;44:CG_ParseScores
;45:
;46:=================
;47:*/
;48:static void CG_ParseScores( void ) {
line 51
;49:	int		i, powerups, readScores;
;50:
;51:	cg.numScores = atoi( CG_Argv( 1 ) );
CNSTI4 1
ARGI4
ADDRLP4 12
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+5048
ADDRLP4 16
INDIRI4
ASGNI4
line 53
;52:
;53:	readScores = cg.numScores;
ADDRLP4 8
ADDRGP4 cg+5048
INDIRI4
ASGNI4
line 55
;54:
;55:	if (readScores > MAX_CLIENT_SCORE_SEND)
ADDRLP4 8
INDIRI4
CNSTI4 20
LEI4 $153
line 56
;56:	{
line 57
;57:		readScores = MAX_CLIENT_SCORE_SEND;
ADDRLP4 8
CNSTI4 20
ASGNI4
line 58
;58:	}
LABELV $153
line 60
;59:
;60:	if ( cg.numScores > MAX_CLIENTS ) {
ADDRGP4 cg+5048
INDIRI4
CNSTI4 32
LEI4 $155
line 61
;61:		cg.numScores = MAX_CLIENTS;
ADDRGP4 cg+5048
CNSTI4 32
ASGNI4
line 62
;62:	}
LABELV $155
line 64
;63:
;64:	cg.numScores = readScores;
ADDRGP4 cg+5048
ADDRLP4 8
INDIRI4
ASGNI4
line 66
;65:
;66:	cg.teamScores[0] = atoi( CG_Argv( 2 ) );
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+5056
ADDRLP4 24
INDIRI4
ASGNI4
line 67
;67:	cg.teamScores[1] = atoi( CG_Argv( 3 ) );
CNSTI4 3
ARGI4
ADDRLP4 28
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+5056+4
ADDRLP4 32
INDIRI4
ASGNI4
line 69
;68:
;69:	memset( cg.scores, 0, sizeof( cg.scores ) );
ADDRGP4 cg+5064
ARGP4
CNSTI4 0
ARGI4
CNSTI4 1920
ARGI4
ADDRGP4 memset
CALLP4
pop
line 70
;70:	for ( i = 0 ; i < readScores ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $168
JUMPV
LABELV $165
line 72
;71:		//
;72:		cg.scores[i].client = atoi( CG_Argv( i * 14 + 4 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 4
ADDI4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 73
;73:		cg.scores[i].score = atoi( CG_Argv( i * 14 + 5 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 5
ADDI4
ARGI4
ADDRLP4 52
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 52
INDIRP4
ARGP4
ADDRLP4 56
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+4
ADDP4
ADDRLP4 56
INDIRI4
ASGNI4
line 74
;74:		cg.scores[i].ping = atoi( CG_Argv( i * 14 + 6 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 6
ADDI4
ARGI4
ADDRLP4 64
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 64
INDIRP4
ARGP4
ADDRLP4 68
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+8
ADDP4
ADDRLP4 68
INDIRI4
ASGNI4
line 75
;75:		cg.scores[i].time = atoi( CG_Argv( i * 14 + 7 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 7
ADDI4
ARGI4
ADDRLP4 76
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 76
INDIRP4
ARGP4
ADDRLP4 80
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+12
ADDP4
ADDRLP4 80
INDIRI4
ASGNI4
line 76
;76:		cg.scores[i].scoreFlags = atoi( CG_Argv( i * 14 + 8 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 8
ADDI4
ARGI4
ADDRLP4 88
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 88
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+16
ADDP4
ADDRLP4 92
INDIRI4
ASGNI4
line 77
;77:		powerups = atoi( CG_Argv( i * 14 + 9 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 9
ADDI4
ARGI4
ADDRLP4 96
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 96
INDIRP4
ARGP4
ADDRLP4 100
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 100
INDIRI4
ASGNI4
line 78
;78:		cg.scores[i].accuracy = atoi(CG_Argv(i * 14 + 10));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 10
ADDI4
ARGI4
ADDRLP4 108
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 108
INDIRP4
ARGP4
ADDRLP4 112
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+24
ADDP4
ADDRLP4 112
INDIRI4
ASGNI4
line 79
;79:		cg.scores[i].impressiveCount = atoi(CG_Argv(i * 14 + 11));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 11
ADDI4
ARGI4
ADDRLP4 120
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 120
INDIRP4
ARGP4
ADDRLP4 124
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+28
ADDP4
ADDRLP4 124
INDIRI4
ASGNI4
line 80
;80:		cg.scores[i].excellentCount = atoi(CG_Argv(i * 14 + 12));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 12
ADDI4
ARGI4
ADDRLP4 132
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 132
INDIRP4
ARGP4
ADDRLP4 136
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+32
ADDP4
ADDRLP4 136
INDIRI4
ASGNI4
line 81
;81:		cg.scores[i].guantletCount = atoi(CG_Argv(i * 14 + 13));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 13
ADDI4
ARGI4
ADDRLP4 144
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 144
INDIRP4
ARGP4
ADDRLP4 148
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+36
ADDP4
ADDRLP4 148
INDIRI4
ASGNI4
line 82
;82:		cg.scores[i].defendCount = atoi(CG_Argv(i * 14 + 14));
ADDRLP4 152
CNSTI4 14
ASGNI4
ADDRLP4 152
INDIRI4
ADDRLP4 0
INDIRI4
MULI4
ADDRLP4 152
INDIRI4
ADDI4
ARGI4
ADDRLP4 160
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 160
INDIRP4
ARGP4
ADDRLP4 164
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+40
ADDP4
ADDRLP4 164
INDIRI4
ASGNI4
line 83
;83:		cg.scores[i].assistCount = atoi(CG_Argv(i * 14 + 15));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 15
ADDI4
ARGI4
ADDRLP4 172
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 172
INDIRP4
ARGP4
ADDRLP4 176
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+44
ADDP4
ADDRLP4 176
INDIRI4
ASGNI4
line 84
;84:		cg.scores[i].perfect = atoi(CG_Argv(i * 14 + 16));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 16
ADDI4
ARGI4
ADDRLP4 184
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 184
INDIRP4
ARGP4
ADDRLP4 188
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+52
ADDP4
ADDRLP4 188
INDIRI4
ASGNI4
line 85
;85:		cg.scores[i].captures = atoi(CG_Argv(i * 14 + 17));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 17
ADDI4
ARGI4
ADDRLP4 196
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 196
INDIRP4
ARGP4
ADDRLP4 200
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+48
ADDP4
ADDRLP4 200
INDIRI4
ASGNI4
line 87
;86:
;87:		if ( cg.scores[i].client < 0 || cg.scores[i].client >= MAX_CLIENTS ) {
ADDRLP4 204
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 204
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
CNSTI4 0
LTI4 $198
ADDRLP4 204
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
CNSTI4 32
LTI4 $194
LABELV $198
line 88
;88:			cg.scores[i].client = 0;
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064
ADDP4
CNSTI4 0
ASGNI4
line 89
;89:		}
LABELV $194
line 90
;90:		cgs.clientinfo[ cg.scores[i].client ].score = cg.scores[i].score;
ADDRLP4 208
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
CNSTI4 812
ADDRLP4 208
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+43024+108
ADDP4
ADDRLP4 208
INDIRI4
ADDRGP4 cg+5064+4
ADDP4
INDIRI4
ASGNI4
line 91
;91:		cgs.clientinfo[ cg.scores[i].client ].powerups = powerups;
CNSTI4 812
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+43024+148
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 93
;92:
;93:		cg.scores[i].team = cgs.clientinfo[cg.scores[i].client].team;
ADDRLP4 212
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 212
INDIRI4
ADDRGP4 cg+5064+56
ADDP4
CNSTI4 812
ADDRLP4 212
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+43024+68
ADDP4
INDIRI4
ASGNI4
line 94
;94:	}
LABELV $166
line 70
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $168
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
LTI4 $165
line 95
;95:	CG_SetScoreSelection(NULL);
CNSTP4 0
ARGP4
ADDRGP4 CG_SetScoreSelection
CALLV
pop
line 96
;96:}
LABELV $150
endproc CG_ParseScores 216 12
proc CG_ParseTeamInfo 68 4
line 104
;97:
;98:/*
;99:=================
;100:CG_ParseTeamInfo
;101:
;102:=================
;103:*/
;104:static void CG_ParseTeamInfo( void ) {
line 108
;105:	int		i;
;106:	int		client;
;107:
;108:	numSortedTeamPlayers = atoi( CG_Argv( 1 ) );
CNSTI4 1
ARGI4
ADDRLP4 8
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 numSortedTeamPlayers
ADDRLP4 12
INDIRI4
ASGNI4
line 110
;109:
;110:	for ( i = 0 ; i < numSortedTeamPlayers ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $217
JUMPV
LABELV $214
line 111
;111:		client = atoi( CG_Argv( i * 6 + 2 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 2
ADDI4
ARGI4
ADDRLP4 16
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 20
INDIRI4
ASGNI4
line 113
;112:
;113:		sortedTeamPlayers[i] = client;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 sortedTeamPlayers
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 115
;114:
;115:		cgs.clientinfo[ client ].location = atoi( CG_Argv( i * 6 + 3 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 3
ADDI4
ARGI4
ADDRLP4 24
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 812
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+112
ADDP4
ADDRLP4 28
INDIRI4
ASGNI4
line 116
;116:		cgs.clientinfo[ client ].health = atoi( CG_Argv( i * 6 + 4 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 4
ADDI4
ARGI4
ADDRLP4 32
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 812
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+116
ADDP4
ADDRLP4 36
INDIRI4
ASGNI4
line 117
;117:		cgs.clientinfo[ client ].armor = atoi( CG_Argv( i * 6 + 5 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 5
ADDI4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 812
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+120
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 118
;118:		cgs.clientinfo[ client ].curWeapon = atoi( CG_Argv( i * 6 + 6 ) );
ADDRLP4 48
CNSTI4 6
ASGNI4
ADDRLP4 48
INDIRI4
ADDRLP4 0
INDIRI4
MULI4
ADDRLP4 48
INDIRI4
ADDI4
ARGI4
ADDRLP4 52
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 52
INDIRP4
ARGP4
ADDRLP4 56
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 812
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+124
ADDP4
ADDRLP4 56
INDIRI4
ASGNI4
line 119
;119:		cgs.clientinfo[ client ].powerups = atoi( CG_Argv( i * 6 + 7 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 7
ADDI4
ARGI4
ADDRLP4 60
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 60
INDIRP4
ARGP4
ADDRLP4 64
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 812
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+148
ADDP4
ADDRLP4 64
INDIRI4
ASGNI4
line 120
;120:	}
LABELV $215
line 110
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $217
ADDRLP4 0
INDIRI4
ADDRGP4 numSortedTeamPlayers
INDIRI4
LTI4 $214
line 121
;121:}
LABELV $213
endproc CG_ParseTeamInfo 68 4
export CG_ParseServerinfo
proc CG_ParseServerinfo 164 16
line 132
;122:
;123:
;124:/*
;125:================
;126:CG_ParseServerinfo
;127:
;128:This is called explicitly when the gamestate is first received,
;129:and whenever the server updates any serverinfo flagged cvars
;130:================
;131:*/
;132:void CG_ParseServerinfo( void ) {
line 136
;133:	const char	*info;
;134:	char	*mapname;
;135:
;136:	info = CG_ConfigString( CS_SERVERINFO );
CNSTI4 0
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
ASGNP4
line 137
;137:	cgs.gametype = atoi( Info_ValueForKey( info, "g_gametype" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $230
ARGP4
ADDRLP4 12
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32960
ADDRLP4 16
INDIRI4
ASGNI4
line 138
;138:	trap_Cvar_Set("g_gametype", va("%i", cgs.gametype));
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32960
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $230
ARGP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 139
;139:	cgs.needpass = atoi( Info_ValueForKey( info, "needpass" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $234
ARGP4
ADDRLP4 24
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32992
ADDRLP4 28
INDIRI4
ASGNI4
line 140
;140:	cgs.jediVmerc = atoi( Info_ValueForKey( info, "g_jediVmerc" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $236
ARGP4
ADDRLP4 32
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32996
ADDRLP4 36
INDIRI4
ASGNI4
line 141
;141:	cgs.wDisable = atoi( Info_ValueForKey( info, "wdisable" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $238
ARGP4
ADDRLP4 40
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33000
ADDRLP4 44
INDIRI4
ASGNI4
line 142
;142:	cgs.fDisable = atoi( Info_ValueForKey( info, "fdisable" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $240
ARGP4
ADDRLP4 48
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33004
ADDRLP4 52
INDIRI4
ASGNI4
line 143
;143:	cgs.dmflags = atoi( Info_ValueForKey( info, "dmflags" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $242
ARGP4
ADDRLP4 56
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 56
INDIRP4
ARGP4
ADDRLP4 60
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32964
ADDRLP4 60
INDIRI4
ASGNI4
line 144
;144:	cgs.teamflags = atoi( Info_ValueForKey( info, "teamflags" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $244
ARGP4
ADDRLP4 64
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 64
INDIRP4
ARGP4
ADDRLP4 68
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32968
ADDRLP4 68
INDIRI4
ASGNI4
line 145
;145:	cgs.fraglimit = atoi( Info_ValueForKey( info, "fraglimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $246
ARGP4
ADDRLP4 72
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 72
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32972
ADDRLP4 76
INDIRI4
ASGNI4
line 146
;146:	cgs.duel_fraglimit = atoi( Info_ValueForKey( info, "duel_fraglimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $248
ARGP4
ADDRLP4 80
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 80
INDIRP4
ARGP4
ADDRLP4 84
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32976
ADDRLP4 84
INDIRI4
ASGNI4
line 147
;147:	cgs.capturelimit = atoi( Info_ValueForKey( info, "capturelimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $250
ARGP4
ADDRLP4 88
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 88
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32980
ADDRLP4 92
INDIRI4
ASGNI4
line 148
;148:	cgs.timelimit = atoi( Info_ValueForKey( info, "timelimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $252
ARGP4
ADDRLP4 96
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 96
INDIRP4
ARGP4
ADDRLP4 100
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32984
ADDRLP4 100
INDIRI4
ASGNI4
line 149
;149:	cgs.maxclients = atoi( Info_ValueForKey( info, "sv_maxclients" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $254
ARGP4
ADDRLP4 104
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 104
INDIRP4
ARGP4
ADDRLP4 108
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32988
ADDRLP4 108
INDIRI4
ASGNI4
line 150
;150:	mapname = Info_ValueForKey( info, "mapname" );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $255
ARGP4
ADDRLP4 112
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 112
INDIRP4
ASGNP4
line 154
;151:
;152:
;153:	//rww - You must do this one here, Info_ValueForKey always uses the same memory pointer.
;154:	trap_Cvar_Set ( "ui_about_mapname", mapname );
ADDRGP4 $256
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 156
;155:
;156:	Com_sprintf( cgs.mapname, sizeof( cgs.mapname ), "maps/%s.bsp", mapname );
ADDRGP4 cgs+33008
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $259
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 157
;157:	Q_strncpyz( cgs.redTeam, Info_ValueForKey( info, "g_redTeam" ), sizeof(cgs.redTeam) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $261
ARGP4
ADDRLP4 116
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 cgs+33072
ARGP4
ADDRLP4 116
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 158
;158:	trap_Cvar_Set("g_redTeam", cgs.redTeam);
ADDRGP4 $261
ARGP4
ADDRGP4 cgs+33072
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 159
;159:	Q_strncpyz( cgs.blueTeam, Info_ValueForKey( info, "g_blueTeam" ), sizeof(cgs.blueTeam) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $265
ARGP4
ADDRLP4 120
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 cgs+33136
ARGP4
ADDRLP4 120
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 160
;160:	trap_Cvar_Set("g_blueTeam", cgs.blueTeam);
ADDRGP4 $265
ARGP4
ADDRGP4 cgs+33136
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 162
;161:
;162:	trap_Cvar_Set ( "ui_about_gametype", va("%i", cgs.gametype ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32960
INDIRI4
ARGI4
ADDRLP4 124
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $268
ARGP4
ADDRLP4 124
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 163
;163:	trap_Cvar_Set ( "ui_about_fraglimit", va("%i", cgs.fraglimit ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32972
INDIRI4
ARGI4
ADDRLP4 128
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $270
ARGP4
ADDRLP4 128
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 164
;164:	trap_Cvar_Set ( "ui_about_duellimit", va("%i", cgs.duel_fraglimit ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32976
INDIRI4
ARGI4
ADDRLP4 132
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $272
ARGP4
ADDRLP4 132
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 165
;165:	trap_Cvar_Set ( "ui_about_capturelimit", va("%i", cgs.capturelimit ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32980
INDIRI4
ARGI4
ADDRLP4 136
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $274
ARGP4
ADDRLP4 136
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 166
;166:	trap_Cvar_Set ( "ui_about_timelimit", va("%i", cgs.timelimit ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32984
INDIRI4
ARGI4
ADDRLP4 140
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $276
ARGP4
ADDRLP4 140
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 167
;167:	trap_Cvar_Set ( "ui_about_maxclients", va("%i", cgs.maxclients ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32988
INDIRI4
ARGI4
ADDRLP4 144
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $278
ARGP4
ADDRLP4 144
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 168
;168:	trap_Cvar_Set ( "ui_about_dmflags", va("%i", cgs.dmflags ) );
ADDRGP4 $231
ARGP4
ADDRGP4 cgs+32964
INDIRI4
ARGI4
ADDRLP4 148
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $280
ARGP4
ADDRLP4 148
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 169
;169:	trap_Cvar_Set ( "ui_about_hostname", Info_ValueForKey( info, "sv_hostname" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $283
ARGP4
ADDRLP4 152
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 $282
ARGP4
ADDRLP4 152
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 170
;170:	trap_Cvar_Set ( "ui_about_needpass", Info_ValueForKey( info, "g_needpass" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $285
ARGP4
ADDRLP4 156
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 $284
ARGP4
ADDRLP4 156
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 171
;171:	trap_Cvar_Set ( "ui_about_botminplayers", Info_ValueForKey ( info, "bot_minplayers" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $287
ARGP4
ADDRLP4 160
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 $286
ARGP4
ADDRLP4 160
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 172
;172:}
LABELV $228
endproc CG_ParseServerinfo 164 16
proc CG_ParseWarmup 16 4
line 179
;173:
;174:/*
;175:==================
;176:CG_ParseWarmup
;177:==================
;178:*/
;179:static void CG_ParseWarmup( void ) {
line 183
;180:	const char	*info;
;181:	int			warmup;
;182:
;183:	info = CG_ConfigString( CS_WARMUP );
CNSTI4 5
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
ASGNP4
line 185
;184:
;185:	warmup = atoi( info );
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 12
INDIRI4
ASGNI4
line 186
;186:	cg.warmupCount = -1;
ADDRGP4 cg+13356
CNSTI4 -1
ASGNI4
line 188
;187:
;188:	cg.warmup = warmup;
ADDRGP4 cg+13352
ADDRLP4 4
INDIRI4
ASGNI4
line 189
;189:}
LABELV $288
endproc CG_ParseWarmup 16 4
export CG_SetConfigValues
proc CG_SetConfigValues 148 4
line 199
;190:
;191:/*
;192:================
;193:CG_SetConfigValues
;194:
;195:Called on load to set the initial values from configure strings
;196:================
;197:*/
;198:void CG_SetConfigValues( void ) 
;199:{
line 203
;200:	const char *s;
;201:	const char *str;
;202:
;203:	cgs.scores1 = atoi( CG_ConfigString( CS_SCORES1 ) );
CNSTI4 6
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36324
ADDRLP4 12
INDIRI4
ASGNI4
line 204
;204:	cgs.scores2 = atoi( CG_ConfigString( CS_SCORES2 ) );
CNSTI4 7
ARGI4
ADDRLP4 16
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36328
ADDRLP4 20
INDIRI4
ASGNI4
line 205
;205:	cgs.levelStartTime = atoi( CG_ConfigString( CS_LEVEL_START_TIME ) );
CNSTI4 21
ARGI4
ADDRLP4 24
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36320
ADDRLP4 28
INDIRI4
ASGNI4
line 206
;206:	if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTY ) {
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 7
EQI4 $299
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 8
NEI4 $295
LABELV $299
line 207
;207:		s = CG_ConfigString( CS_FLAGSTATUS );
CNSTI4 23
ARGI4
ADDRLP4 32
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 32
INDIRP4
ASGNP4
line 208
;208:		cgs.redflag = s[0] - '0';
ADDRGP4 cgs+36348
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 209
;209:		cgs.blueflag = s[1] - '0';
ADDRGP4 cgs+36352
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 210
;210:	}
LABELV $295
line 211
;211:	cg.warmup = atoi( CG_ConfigString( CS_WARMUP ) );
CNSTI4 5
ARGI4
ADDRLP4 32
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+13352
ADDRLP4 36
INDIRI4
ASGNI4
line 214
;212:
;213:	// Track who the jedi master is
;214:	cgs.jediMaster = atoi ( CG_ConfigString ( CS_CLIENT_JEDIMASTER ) );
CNSTI4 28
ARGI4
ADDRLP4 40
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36332
ADDRLP4 44
INDIRI4
ASGNI4
line 215
;215:	cgs.duelWinner = atoi ( CG_ConfigString ( CS_CLIENT_DUELWINNER ) );
CNSTI4 29
ARGI4
ADDRLP4 48
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36336
ADDRLP4 52
INDIRI4
ASGNI4
line 217
;216:
;217:	str = CG_ConfigString(CS_CLIENT_DUELISTS);
CNSTI4 30
ARGI4
ADDRLP4 56
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 56
INDIRP4
ASGNP4
line 219
;218:
;219:	if (str && str[0])
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $305
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $305
line 220
;220:	{
line 222
;221:		char buf[64];
;222:		int c = 0;
ADDRLP4 68
CNSTI4 0
ASGNI4
line 223
;223:		int i = 0;
ADDRLP4 64
CNSTI4 0
ASGNI4
ADDRGP4 $308
JUMPV
LABELV $307
line 226
;224:
;225:		while (str[i] && str[i] != '|')
;226:		{
line 227
;227:			buf[c] = str[i];
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 228
;228:			c++;
ADDRLP4 68
ADDRLP4 68
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 229
;229:			i++;
ADDRLP4 64
ADDRLP4 64
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 230
;230:		}
LABELV $308
line 225
ADDRLP4 136
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 136
INDIRI4
CNSTI4 0
EQI4 $310
ADDRLP4 136
INDIRI4
CNSTI4 124
NEI4 $307
LABELV $310
line 231
;231:		buf[c] = 0;
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
CNSTI1 0
ASGNI1
line 233
;232:
;233:		cgs.duelist1 = atoi ( buf );
ADDRLP4 72
ARGP4
ADDRLP4 140
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36340
ADDRLP4 140
INDIRI4
ASGNI4
line 234
;234:		c = 0;
ADDRLP4 68
CNSTI4 0
ASGNI4
line 236
;235:
;236:		i++;
ADDRLP4 64
ADDRLP4 64
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $313
JUMPV
LABELV $312
line 238
;237:		while (str[i])
;238:		{
line 239
;239:			buf[c] = str[i];
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 240
;240:			c++;
ADDRLP4 68
ADDRLP4 68
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 241
;241:			i++;
ADDRLP4 64
ADDRLP4 64
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 242
;242:		}
LABELV $313
line 237
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $312
line 243
;243:		buf[c] = 0;
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
CNSTI1 0
ASGNI1
line 245
;244:
;245:		cgs.duelist2 = atoi ( buf );
ADDRLP4 72
ARGP4
ADDRLP4 144
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36344
ADDRLP4 144
INDIRI4
ASGNI4
line 246
;246:	}
LABELV $305
line 247
;247:}
LABELV $291
endproc CG_SetConfigValues 148 4
export CG_ShaderStateChanged
proc CG_ShaderStateChanged 188 12
line 254
;248:
;249:/*
;250:=====================
;251:CG_ShaderStateChanged
;252:=====================
;253:*/
;254:void CG_ShaderStateChanged(void) {
line 261
;255:	char originalShader[MAX_QPATH];
;256:	char newShader[MAX_QPATH];
;257:	char timeOffset[16];
;258:	const char *o;
;259:	char *n,*t;
;260:
;261:	o = CG_ConfigString( CS_SHADERSTATE );
CNSTI4 24
ARGI4
ADDRLP4 156
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 156
INDIRP4
ASGNP4
ADDRGP4 $318
JUMPV
LABELV $317
line 262
;262:	while (o && *o) {
line 263
;263:		n = strstr(o, "=");
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $320
ARGP4
ADDRLP4 160
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 160
INDIRP4
ASGNP4
line 264
;264:		if (n && *n) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $319
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $319
line 265
;265:			strncpy(originalShader, o, n-o);
ADDRLP4 12
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 0
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 266
;266:			originalShader[n-o] = 0;
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 0
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 12
ADDP4
CNSTI1 0
ASGNI1
line 267
;267:			n++;
ADDRLP4 4
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 268
;268:			t = strstr(n, ":");
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 $323
ARGP4
ADDRLP4 172
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 172
INDIRP4
ASGNP4
line 269
;269:			if (t && *t) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $319
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $319
line 270
;270:				strncpy(newShader, n, t-n);
ADDRLP4 76
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 271
;271:				newShader[t-n] = 0;
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 76
ADDP4
CNSTI1 0
ASGNI1
line 272
;272:			} else {
line 273
;273:				break;
LABELV $325
line 275
;274:			}
;275:			t++;
ADDRLP4 8
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 276
;276:			o = strstr(t, "@");
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 $326
ARGP4
ADDRLP4 180
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 180
INDIRP4
ASGNP4
line 277
;277:			if (o) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $322
line 278
;278:				strncpy(timeOffset, t, o-t);
ADDRLP4 140
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 279
;279:				timeOffset[o-t] = 0;
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 140
ADDP4
CNSTI1 0
ASGNI1
line 280
;280:				o++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 281
;281:				trap_R_RemapShader( originalShader, newShader, timeOffset );
ADDRLP4 12
ARGP4
ADDRLP4 76
ARGP4
ADDRLP4 140
ARGP4
ADDRGP4 trap_R_RemapShader
CALLV
pop
line 282
;282:			}
line 283
;283:		} else {
line 284
;284:			break;
LABELV $322
line 286
;285:		}
;286:	}
LABELV $318
line 262
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $329
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $317
LABELV $329
LABELV $319
line 287
;287:}
LABELV $316
endproc CG_ShaderStateChanged 188 12
proc CG_ConfigStringModified 104 12
line 295
;288:
;289:/*
;290:================
;291:CG_ConfigStringModified
;292:
;293:================
;294:*/
;295:static void CG_ConfigStringModified( void ) {
line 299
;296:	const char	*str;
;297:	int		num;
;298:
;299:	num = atoi( CG_Argv( 1 ) );
CNSTI4 1
ARGI4
ADDRLP4 8
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 12
INDIRI4
ASGNI4
line 303
;300:
;301:	// get the gamestate from the client system, which will have the
;302:	// new configstring already integrated
;303:	trap_GetGameState( &cgs.gameState );
ADDRGP4 cgs
ARGP4
ADDRGP4 trap_GetGameState
CALLV
pop
line 306
;304:
;305:	// look up the individual string that was modified
;306:	str = CG_ConfigString( num );
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 16
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 16
INDIRP4
ASGNP4
line 309
;307:
;308:	// do something with it if necessary
;309:	if ( num == CS_MUSIC ) {
ADDRLP4 0
INDIRI4
CNSTI4 2
NEI4 $331
line 310
;310:		CG_StartMusic( qtrue );
CNSTI4 1
ARGI4
ADDRGP4 CG_StartMusic
CALLV
pop
line 311
;311:	} else if ( num == CS_SERVERINFO ) {
ADDRGP4 $332
JUMPV
LABELV $331
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $333
line 312
;312:		CG_ParseServerinfo();
ADDRGP4 CG_ParseServerinfo
CALLV
pop
line 313
;313:	} else if ( num == CS_WARMUP ) {
ADDRGP4 $334
JUMPV
LABELV $333
ADDRLP4 0
INDIRI4
CNSTI4 5
NEI4 $335
line 314
;314:		CG_ParseWarmup();
ADDRGP4 CG_ParseWarmup
CALLV
pop
line 315
;315:	} else if ( num == CS_SCORES1 ) {
ADDRGP4 $336
JUMPV
LABELV $335
ADDRLP4 0
INDIRI4
CNSTI4 6
NEI4 $337
line 316
;316:		cgs.scores1 = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36324
ADDRLP4 20
INDIRI4
ASGNI4
line 317
;317:	} else if ( num == CS_SCORES2 ) {
ADDRGP4 $338
JUMPV
LABELV $337
ADDRLP4 0
INDIRI4
CNSTI4 7
NEI4 $340
line 318
;318:		cgs.scores2 = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36328
ADDRLP4 20
INDIRI4
ASGNI4
line 319
;319:	} else if ( num == CS_CLIENT_JEDIMASTER ) {
ADDRGP4 $341
JUMPV
LABELV $340
ADDRLP4 0
INDIRI4
CNSTI4 28
NEI4 $343
line 320
;320:		cgs.jediMaster = atoi ( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36332
ADDRLP4 20
INDIRI4
ASGNI4
line 321
;321:	} else if ( num == CS_CLIENT_DUELWINNER ) {
ADDRGP4 $344
JUMPV
LABELV $343
ADDRLP4 0
INDIRI4
CNSTI4 29
NEI4 $346
line 322
;322:		cgs.duelWinner = atoi ( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36336
ADDRLP4 20
INDIRI4
ASGNI4
line 323
;323:	} else if ( num == CS_CLIENT_DUELISTS ) {
ADDRGP4 $347
JUMPV
LABELV $346
ADDRLP4 0
INDIRI4
CNSTI4 30
NEI4 $349
line 325
;324:		char buf[64];
;325:		int c = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 326
;326:		int i = 0;
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRGP4 $352
JUMPV
LABELV $351
line 329
;327:
;328:		while (str[i] && str[i] != '|')
;329:		{
line 330
;330:			buf[c] = str[i];
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 331
;331:			c++;
ADDRLP4 24
ADDRLP4 24
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 332
;332:			i++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 333
;333:		}
LABELV $352
line 328
ADDRLP4 92
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 92
INDIRI4
CNSTI4 0
EQI4 $354
ADDRLP4 92
INDIRI4
CNSTI4 124
NEI4 $351
LABELV $354
line 334
;334:		buf[c] = 0;
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
CNSTI1 0
ASGNI1
line 336
;335:
;336:		cgs.duelist1 = atoi ( buf );
ADDRLP4 28
ARGP4
ADDRLP4 96
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36340
ADDRLP4 96
INDIRI4
ASGNI4
line 337
;337:		c = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 339
;338:
;339:		i++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $357
JUMPV
LABELV $356
line 341
;340:		while (str[i])
;341:		{
line 342
;342:			buf[c] = str[i];
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 343
;343:			c++;
ADDRLP4 24
ADDRLP4 24
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 344
;344:			i++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 345
;345:		}
LABELV $357
line 340
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $356
line 346
;346:		buf[c] = 0;
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
CNSTI1 0
ASGNI1
line 348
;347:
;348:		cgs.duelist2 = atoi ( buf );
ADDRLP4 28
ARGP4
ADDRLP4 100
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36344
ADDRLP4 100
INDIRI4
ASGNI4
line 349
;349:	} else if ( num == CS_LEVEL_START_TIME ) {
ADDRGP4 $350
JUMPV
LABELV $349
ADDRLP4 0
INDIRI4
CNSTI4 21
NEI4 $360
line 350
;350:		cgs.levelStartTime = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36320
ADDRLP4 20
INDIRI4
ASGNI4
line 351
;351:	} else if ( num == CS_VOTE_TIME ) {
ADDRGP4 $361
JUMPV
LABELV $360
ADDRLP4 0
INDIRI4
CNSTI4 8
NEI4 $363
line 352
;352:		cgs.voteTime = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33200
ADDRLP4 20
INDIRI4
ASGNI4
line 353
;353:		cgs.voteModified = qtrue;
ADDRGP4 cgs+33212
CNSTI4 1
ASGNI4
line 354
;354:	} else if ( num == CS_VOTE_YES ) {
ADDRGP4 $364
JUMPV
LABELV $363
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $367
line 355
;355:		cgs.voteYes = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33204
ADDRLP4 20
INDIRI4
ASGNI4
line 356
;356:		cgs.voteModified = qtrue;
ADDRGP4 cgs+33212
CNSTI4 1
ASGNI4
line 357
;357:	} else if ( num == CS_VOTE_NO ) {
ADDRGP4 $368
JUMPV
LABELV $367
ADDRLP4 0
INDIRI4
CNSTI4 11
NEI4 $371
line 358
;358:		cgs.voteNo = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33208
ADDRLP4 20
INDIRI4
ASGNI4
line 359
;359:		cgs.voteModified = qtrue;
ADDRGP4 cgs+33212
CNSTI4 1
ASGNI4
line 360
;360:	} else if ( num == CS_VOTE_STRING ) {
ADDRGP4 $372
JUMPV
LABELV $371
ADDRLP4 0
INDIRI4
CNSTI4 9
NEI4 $375
line 361
;361:		Q_strncpyz( cgs.voteString, str, sizeof( cgs.voteString ) );
ADDRGP4 cgs+33216
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 362
;362:	} else if ( num >= CS_TEAMVOTE_TIME && num <= CS_TEAMVOTE_TIME + 1) {
ADDRGP4 $376
JUMPV
LABELV $375
ADDRLP4 0
INDIRI4
CNSTI4 12
LTI4 $379
ADDRLP4 0
INDIRI4
CNSTI4 13
GTI4 $379
line 363
;363:		cgs.teamVoteTime[num-CS_TEAMVOTE_TIME] = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34240-48
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
line 364
;364:		cgs.teamVoteModified[num-CS_TEAMVOTE_TIME] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34264-48
ADDP4
CNSTI4 1
ASGNI4
line 365
;365:	} else if ( num >= CS_TEAMVOTE_YES && num <= CS_TEAMVOTE_YES + 1) {
ADDRGP4 $380
JUMPV
LABELV $379
ADDRLP4 0
INDIRI4
CNSTI4 16
LTI4 $385
ADDRLP4 0
INDIRI4
CNSTI4 17
GTI4 $385
line 366
;366:		cgs.teamVoteYes[num-CS_TEAMVOTE_YES] = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34248-64
ADDP4
ADDRLP4 28
INDIRI4
ASGNI4
line 367
;367:		cgs.teamVoteModified[num-CS_TEAMVOTE_YES] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34264-64
ADDP4
CNSTI4 1
ASGNI4
line 368
;368:	} else if ( num >= CS_TEAMVOTE_NO && num <= CS_TEAMVOTE_NO + 1) {
ADDRGP4 $386
JUMPV
LABELV $385
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $391
ADDRLP4 0
INDIRI4
CNSTI4 19
GTI4 $391
line 369
;369:		cgs.teamVoteNo[num-CS_TEAMVOTE_NO] = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34256-72
ADDP4
ADDRLP4 32
INDIRI4
ASGNI4
line 370
;370:		cgs.teamVoteModified[num-CS_TEAMVOTE_NO] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34264-72
ADDP4
CNSTI4 1
ASGNI4
line 371
;371:	} else if ( num >= CS_TEAMVOTE_STRING && num <= CS_TEAMVOTE_STRING + 1) {
ADDRGP4 $392
JUMPV
LABELV $391
ADDRLP4 0
INDIRI4
CNSTI4 14
LTI4 $397
ADDRLP4 0
INDIRI4
CNSTI4 15
GTI4 $397
line 372
;372:		Q_strncpyz( cgs.teamVoteString[num-CS_TEAMVOTE_STRING], str, sizeof( cgs.teamVoteString ) );
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 cgs+34272-14336
ADDP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 2048
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 373
;373:	} else if ( num == CS_INTERMISSION ) {
ADDRGP4 $398
JUMPV
LABELV $397
ADDRLP4 0
INDIRI4
CNSTI4 22
NEI4 $402
line 374
;374:		cg.intermissionStarted = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+24
ADDRLP4 36
INDIRI4
ASGNI4
line 375
;375:	} else if ( num >= CS_MODELS && num < CS_MODELS+MAX_MODELS ) {
ADDRGP4 $403
JUMPV
LABELV $402
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $405
ADDRLP4 0
INDIRI4
CNSTI4 288
GEI4 $405
line 376
;376:		cgs.gameModels[ num-CS_MODELS ] = trap_R_RegisterModel( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 40
ADDRGP4 trap_R_RegisterModel
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+36364-128
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 378
;377:// GHOUL2 Insert start
;378:	} else if ( num >= CS_CHARSKINS && num < CS_CHARSKINS+MAX_CHARSKINS ) {
ADDRGP4 $406
JUMPV
LABELV $405
ADDRLP4 0
INDIRI4
CNSTI4 576
LTI4 $409
ADDRLP4 0
INDIRI4
CNSTI4 640
GEI4 $409
line 379
;379:		cgs.skins[ num-CS_CHARSKINS ] = trap_R_RegisterSkin( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 trap_R_RegisterSkin
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+38668-2304
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 381
;380:// Ghoul2 Insert end
;381:	} else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_SOUNDS ) {
ADDRGP4 $410
JUMPV
LABELV $409
ADDRLP4 0
INDIRI4
CNSTI4 288
LTI4 $413
ADDRLP4 0
INDIRI4
CNSTI4 544
GEI4 $413
line 382
;382:		if ( str[0] != '*' ) {	// player specific sounds don't register here
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 42
EQI4 $414
line 383
;383:			cgs.gameSounds[ num-CS_SOUNDS] = trap_S_RegisterSound( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 48
ADDRGP4 trap_S_RegisterSound
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+37388-1152
ADDP4
ADDRLP4 48
INDIRI4
ASGNI4
line 384
;384:		}
line 385
;385:	} else if ( num >= CS_EFFECTS && num < CS_SOUNDS+MAX_SOUNDS ) {
ADDRGP4 $414
JUMPV
LABELV $413
ADDRLP4 0
INDIRI4
CNSTI4 768
LTI4 $419
ADDRLP4 0
INDIRI4
CNSTI4 544
GEI4 $419
line 386
;386:		if ( str[0] != '*' ) {	// player specific sounds don't register here
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 42
EQI4 $420
line 387
;387:			cgs.gameEffects[ num-CS_EFFECTS] = trap_FX_RegisterEffect( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 trap_FX_RegisterEffect
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+38412-3072
ADDP4
ADDRLP4 52
INDIRI4
ASGNI4
line 388
;388:		}
line 389
;389:	} else if ( num >= CS_PLAYERS && num < CS_PLAYERS+MAX_CLIENTS ) {
ADDRGP4 $420
JUMPV
LABELV $419
ADDRLP4 0
INDIRI4
CNSTI4 544
LTI4 $425
ADDRLP4 0
INDIRI4
CNSTI4 576
GEI4 $425
line 390
;390:		CG_NewClientInfo( num - CS_PLAYERS, qtrue);
ADDRLP4 0
INDIRI4
CNSTI4 544
SUBI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 CG_NewClientInfo
CALLV
pop
line 391
;391:		CG_BuildSpectatorString();
ADDRGP4 CG_BuildSpectatorString
CALLV
pop
line 392
;392:	} else if ( num == CS_FLAGSTATUS ) {
ADDRGP4 $426
JUMPV
LABELV $425
ADDRLP4 0
INDIRI4
CNSTI4 23
NEI4 $427
line 393
;393:		if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTY ) {
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 7
EQI4 $433
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 8
NEI4 $428
LABELV $433
line 395
;394:			// format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped
;395:			cgs.redflag = str[0] - '0';
ADDRGP4 cgs+36348
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 396
;396:			cgs.blueflag = str[1] - '0';
ADDRGP4 cgs+36352
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 397
;397:		}
line 398
;398:	}
ADDRGP4 $428
JUMPV
LABELV $427
line 399
;399:	else if ( num == CS_SHADERSTATE ) {
ADDRLP4 0
INDIRI4
CNSTI4 24
NEI4 $436
line 400
;400:		CG_ShaderStateChanged();
ADDRGP4 CG_ShaderStateChanged
CALLV
pop
line 401
;401:	}
ADDRGP4 $437
JUMPV
LABELV $436
line 402
;402:	else if ( num >= CS_LIGHT_STYLES && num < CS_LIGHT_STYLES + (MAX_LIGHT_STYLES * 3))
ADDRLP4 0
INDIRI4
CNSTI4 832
LTI4 $438
ADDRLP4 0
INDIRI4
CNSTI4 1024
GEI4 $438
line 403
;403:	{
line 404
;404:		CG_SetLightstyle(num - CS_LIGHT_STYLES);
ADDRLP4 0
INDIRI4
CNSTI4 832
SUBI4
ARGI4
ADDRGP4 CG_SetLightstyle
CALLV
pop
line 405
;405:	}
LABELV $438
LABELV $437
LABELV $428
LABELV $426
LABELV $420
LABELV $414
LABELV $410
LABELV $406
LABELV $403
LABELV $398
LABELV $392
LABELV $386
LABELV $380
LABELV $376
LABELV $372
LABELV $368
LABELV $364
LABELV $361
LABELV $350
LABELV $347
LABELV $344
LABELV $341
LABELV $338
LABELV $336
LABELV $334
LABELV $332
line 407
;406:		
;407:}
LABELV $330
endproc CG_ConfigStringModified 104 12
proc CG_AddToTeamChat 60 0
line 416
;408:
;409:
;410:/*
;411:=======================
;412:CG_AddToTeamChat
;413:
;414:=======================
;415:*/
;416:static void CG_AddToTeamChat( const char *str ) {
line 422
;417:	int len;
;418:	char *p, *ls;
;419:	int lastcolor;
;420:	int chatHeight;
;421:
;422:	if (cg_teamChatHeight.integer < TEAMCHAT_HEIGHT) {
ADDRGP4 cg_teamChatHeight+12
INDIRI4
CNSTI4 8
GEI4 $441
line 423
;423:		chatHeight = cg_teamChatHeight.integer;
ADDRLP4 12
ADDRGP4 cg_teamChatHeight+12
INDIRI4
ASGNI4
line 424
;424:	} else {
ADDRGP4 $442
JUMPV
LABELV $441
line 425
;425:		chatHeight = TEAMCHAT_HEIGHT;
ADDRLP4 12
CNSTI4 8
ASGNI4
line 426
;426:	}
LABELV $442
line 428
;427:
;428:	if (chatHeight <= 0 || cg_teamChatTime.integer <= 0) {
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $448
ADDRGP4 cg_teamChatTime+12
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $445
LABELV $448
line 430
;429:		// team chat disabled, dump into normal chat
;430:		cgs.teamChatPos = cgs.teamLastChatPos = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRGP4 cgs+70972
ADDRLP4 24
INDIRI4
ASGNI4
ADDRGP4 cgs+70968
ADDRLP4 24
INDIRI4
ASGNI4
line 431
;431:		return;
ADDRGP4 $440
JUMPV
LABELV $445
line 434
;432:	}
;433:
;434:	len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 436
;435:
;436:	p = cgs.teamChatMsgs[cgs.teamChatPos % chatHeight];
ADDRLP4 0
CNSTI4 241
ADDRGP4 cgs+70968
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
MULI4
ADDRGP4 cgs+69008
ADDP4
ASGNP4
line 437
;437:	*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 439
;438:
;439:	lastcolor = '7';
ADDRLP4 16
CNSTI4 55
ASGNI4
line 441
;440:
;441:	ls = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
ADDRGP4 $454
JUMPV
LABELV $453
line 442
;442:	while (*str) {
line 443
;443:		if (len > TEAMCHAT_WIDTH - 1) {
ADDRLP4 4
INDIRI4
CNSTI4 79
LEI4 $456
line 444
;444:			if (ls) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $458
line 445
;445:				str -= (p - ls);
ADDRFP4 0
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
SUBP4
ASGNP4
line 446
;446:				str++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 447
;447:				p -= (p - ls);
ADDRLP4 0
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
SUBP4
ASGNP4
line 448
;448:			}
LABELV $458
line 449
;449:			*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 451
;450:
;451:			cgs.teamChatMsgTimes[cgs.teamChatPos % chatHeight] = cg.time;
ADDRGP4 cgs+70968
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+70936
ADDP4
ADDRGP4 cg+64
INDIRI4
ASGNI4
line 453
;452:
;453:			cgs.teamChatPos++;
ADDRLP4 24
ADDRGP4 cgs+70968
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 454
;454:			p = cgs.teamChatMsgs[cgs.teamChatPos % chatHeight];
ADDRLP4 0
CNSTI4 241
ADDRGP4 cgs+70968
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
MULI4
ADDRGP4 cgs+69008
ADDP4
ASGNP4
line 455
;455:			*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 456
;456:			*p++ = Q_COLOR_ESCAPE;
ADDRLP4 28
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 28
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI1 94
ASGNI1
line 457
;457:			*p++ = lastcolor;
ADDRLP4 32
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 32
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 16
INDIRI4
CVII1 4
ASGNI1
line 458
;458:			len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 459
;459:			ls = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 460
;460:		}
LABELV $456
line 462
;461:
;462:		if ( Q_IsColorString( str ) ) {
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $466
ADDRLP4 28
CNSTI4 94
ASGNI4
ADDRLP4 24
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 28
INDIRI4
NEI4 $466
ADDRLP4 32
ADDRLP4 24
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $466
ADDRLP4 32
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $466
ADDRLP4 32
INDIRI4
CNSTI4 55
GTI4 $466
ADDRLP4 32
INDIRI4
CNSTI4 48
LTI4 $466
line 463
;463:			*p++ = *str++;
ADDRLP4 36
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 44
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 36
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 40
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI1
ASGNI1
line 464
;464:			lastcolor = *str;
ADDRLP4 16
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 465
;465:			*p++ = *str++;
ADDRLP4 48
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 56
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 48
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
ASGNP4
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 52
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 52
INDIRP4
INDIRI1
ASGNI1
line 466
;466:			continue;
ADDRGP4 $454
JUMPV
LABELV $466
line 468
;467:		}
;468:		if (*str == ' ') {
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $468
line 469
;469:			ls = p;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 470
;470:		}
LABELV $468
line 471
;471:		*p++ = *str++;
ADDRLP4 36
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 44
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 36
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 40
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI1
ASGNI1
line 472
;472:		len++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 473
;473:	}
LABELV $454
line 442
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $453
line 474
;474:	*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 476
;475:
;476:	cgs.teamChatMsgTimes[cgs.teamChatPos % chatHeight] = cg.time;
ADDRGP4 cgs+70968
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+70936
ADDP4
ADDRGP4 cg+64
INDIRI4
ASGNI4
line 477
;477:	cgs.teamChatPos++;
ADDRLP4 24
ADDRGP4 cgs+70968
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 479
;478:
;479:	if (cgs.teamChatPos - cgs.teamLastChatPos > chatHeight)
ADDRGP4 cgs+70968
INDIRI4
ADDRGP4 cgs+70972
INDIRI4
SUBI4
ADDRLP4 12
INDIRI4
LEI4 $474
line 480
;480:		cgs.teamLastChatPos = cgs.teamChatPos - chatHeight;
ADDRGP4 cgs+70972
ADDRGP4 cgs+70968
INDIRI4
ADDRLP4 12
INDIRI4
SUBI4
ASGNI4
LABELV $474
line 481
;481:}
LABELV $440
endproc CG_AddToTeamChat 60 0
export CG_KillCEntityInstances
proc CG_KillCEntityInstances 12 4
line 486
;482:
;483:void CG_LoadClientInfo( clientInfo_t *ci );
;484:
;485:void CG_KillCEntityInstances()
;486:{
line 487
;487:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $482
JUMPV
LABELV $481
line 490
;488:
;489:	while (i < MAX_GENTITIES)
;490:	{
line 491
;491:		if (i >= MAX_CLIENTS)
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $484
line 492
;492:		{ //do not clear G2 instances on client ents, they are constant
line 493
;493:			if (cg_entities[i].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[i].ghoul2))
ADDRLP4 4
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $486
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 trap_G2_HaveWeGhoul2Models
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $486
line 494
;494:			{
line 495
;495:				trap_G2API_CleanGhoul2Models(&(cg_entities[i].ghoul2));
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+952
ADDP4
ARGP4
ADDRGP4 trap_G2API_CleanGhoul2Models
CALLV
pop
line 496
;496:			}
LABELV $486
line 497
;497:		}
LABELV $484
line 518
;498:		/*
;499:		else
;500:		{ //we must do this, because otherwise after a map_restart it seems to return bad angles in matrices produced by GetBoltMatrix
;501:			if (cgs.clientinfo[i].ghoul2Model || cg_entities[i].ghoul2)
;502:			{
;503:				CG_LoadClientInfo(&cgs.clientinfo[i]);
;504:
;505:				if (cg_entities[i].ghoul2 != cgs.clientinfo[i].ghoul2Model)
;506:				{
;507:					if (cg_entities[i].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[i].ghoul2))
;508:					{
;509:						trap_G2API_CleanGhoul2Models(&(cg_entities[i].ghoul2));
;510:					}
;511:
;512:					trap_G2API_DuplicateGhoul2Instance(cgs.clientinfo[i].ghoul2Model, &cg_entities[i].ghoul2);
;513:				}
;514:			}
;515:		}
;516:		*/
;517:
;518:		cg_entities[i].isATST = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1028
ADDP4
CNSTI4 0
ASGNI4
line 519
;519:		cg_entities[i].atstFootClang = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1032
ADDP4
CNSTI4 0
ASGNI4
line 520
;520:		cg_entities[i].atstSwinging = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1036
ADDP4
CNSTI4 0
ASGNI4
line 521
;521:		cg_entities[i].bolt1 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+984
ADDP4
CNSTI4 0
ASGNI4
line 522
;522:		cg_entities[i].bolt2 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+988
ADDP4
CNSTI4 0
ASGNI4
line 523
;523:		cg_entities[i].bolt3 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+992
ADDP4
CNSTI4 0
ASGNI4
line 524
;524:		cg_entities[i].bolt4 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+996
ADDP4
CNSTI4 0
ASGNI4
line 526
;525:
;526:		cg_entities[i].saberLength = SABER_LENGTH_MAX;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1000
ADDP4
CNSTF4 1109393408
ASGNF4
line 527
;527:		cg_entities[i].saberExtendTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1004
ADDP4
CNSTI4 0
ASGNI4
line 529
;528:
;529:		cg_entities[i].boltInfo = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+980
ADDP4
CNSTI4 0
ASGNI4
line 531
;530:
;531:		cg_entities[i].frame_minus1_refreshed = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1464
ADDP4
CNSTI4 0
ASGNI4
line 532
;532:		cg_entities[i].frame_minus2_refreshed = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1468
ADDP4
CNSTI4 0
ASGNI4
line 533
;533:		cg_entities[i].dustTrailTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+616
ADDP4
CNSTI4 0
ASGNI4
line 534
;534:		cg_entities[i].ghoul2weapon = NULL;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+960
ADDP4
CNSTP4 0
ASGNP4
line 536
;535://		cg_entities[i].torsoBolt = 0;
;536:		cg_entities[i].trailTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+612
ADDP4
CNSTI4 0
ASGNI4
line 537
;537:		cg_entities[i].frame_hold_time = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1684
ADDP4
CNSTI4 0
ASGNI4
line 538
;538:		cg_entities[i].frame_hold_refreshed = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1688
ADDP4
CNSTI4 0
ASGNI4
line 539
;539:		cg_entities[i].trickAlpha = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1904
ADDP4
CNSTI4 0
ASGNI4
line 540
;540:		cg_entities[i].trickAlphaTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1908
ADDP4
CNSTI4 0
ASGNI4
line 541
;541:		VectorClear(cg_entities[i].turAngles);
ADDRLP4 4
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 8
CNSTF4 0
ASGNF4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+1016+8
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+1016+4
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+1016
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
line 542
;542:		cg_entities[i].weapon = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+956
ADDP4
CNSTI4 0
ASGNI4
line 543
;543:		cg_entities[i].teamPowerEffectTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1912
ADDP4
CNSTI4 0
ASGNI4
line 544
;544:		cg_entities[i].teamPowerType = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1916
ADDP4
CNSTI4 0
ASGNI4
line 546
;545:
;546:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 547
;547:	}
LABELV $482
line 489
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $481
line 548
;548:}
LABELV $480
endproc CG_KillCEntityInstances 12 4
proc CG_MapRestart 12 12
line 561
;549:
;550:/*
;551:===============
;552:CG_MapRestart
;553:
;554:The server has issued a map_restart, so the next snapshot
;555:is completely new and should not be interpolated to.
;556:
;557:A tournement restart will clear everything, but doesn't
;558:require a reload of all the media
;559:===============
;560:*/
;561:static void CG_MapRestart( void ) {
line 562
;562:	if ( cg_showmiss.integer ) {
ADDRGP4 cg_showmiss+12
INDIRI4
CNSTI4 0
EQI4 $519
line 563
;563:		CG_Printf( "CG_MapRestart\n" );
ADDRGP4 $522
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 564
;564:	}
LABELV $519
line 566
;565:
;566:	CG_InitLocalEntities();
ADDRGP4 CG_InitLocalEntities
CALLV
pop
line 567
;567:	CG_InitMarkPolys();
ADDRGP4 CG_InitMarkPolys
CALLV
pop
line 568
;568:	CG_ClearParticles ();
ADDRGP4 CG_ClearParticles
CALLV
pop
line 569
;569:	CG_KillCEntityInstances();
ADDRGP4 CG_KillCEntityInstances
CALLV
pop
line 572
;570:
;571:	// make sure the "3 frags left" warnings play again
;572:	cg.fraglimitWarnings = 0;
ADDRGP4 cg+80
CNSTI4 0
ASGNI4
line 574
;573:
;574:	cg.timelimitWarnings = 0;
ADDRGP4 cg+76
CNSTI4 0
ASGNI4
line 576
;575:
;576:	cg.intermissionStarted = qfalse;
ADDRGP4 cg+24
CNSTI4 0
ASGNI4
line 578
;577:
;578:	cgs.voteTime = 0;
ADDRGP4 cgs+33200
CNSTI4 0
ASGNI4
line 580
;579:
;580:	cg.mapRestart = qtrue;
ADDRGP4 cg+84
CNSTI4 1
ASGNI4
line 582
;581:
;582:	CG_StartMusic(qtrue);
CNSTI4 1
ARGI4
ADDRGP4 CG_StartMusic
CALLV
pop
line 584
;583:
;584:	trap_S_ClearLoopingSounds(qtrue);
CNSTI4 1
ARGI4
ADDRGP4 trap_S_ClearLoopingSounds
CALLV
pop
line 589
;585:
;586:	// we really should clear more parts of cg here and stop sounds
;587:
;588:	// play the "fight" sound if this is a restart without warmup
;589:	if ( cg.warmup == 0 /* && cgs.gametype == GT_TOURNAMENT */) {
ADDRGP4 cg+13352
INDIRI4
CNSTI4 0
NEI4 $528
line 590
;590:		trap_S_StartLocalSound( cgs.media.countFightSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+71064+852
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 591
;591:		CG_CenterPrint( CG_GetStripEdString("SVINGAME", "BEGIN_DUEL"), 120, GIANTCHAR_WIDTH*2 );
ADDRGP4 $533
ARGP4
ADDRGP4 $534
ARGP4
ADDRLP4 0
ADDRGP4 CG_GetStripEdString
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 120
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 592
;592:	}
LABELV $528
line 593
;593:	if (cg_singlePlayerActive.integer) {
ADDRGP4 cg_singlePlayerActive+12
INDIRI4
CNSTI4 0
EQI4 $535
line 594
;594:		trap_Cvar_Set("ui_matchStartTime", va("%i", cg.time));
ADDRGP4 $231
ARGP4
ADDRGP4 cg+64
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $538
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 595
;595:		if (cg_recordSPDemo.integer && cg_recordSPDemoName.string && *cg_recordSPDemoName.string) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 cg_recordSPDemo+12
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $540
ADDRGP4 cg_recordSPDemoName+16
CVPU4 4
CNSTU4 0
EQU4 $540
ADDRGP4 cg_recordSPDemoName+16
INDIRI1
CVII4 1
ADDRLP4 4
INDIRI4
EQI4 $540
line 596
;596:			trap_SendConsoleCommand(va("set g_synchronousclients 1 ; record %s \n", cg_recordSPDemoName.string));
ADDRGP4 $545
ARGP4
ADDRGP4 cg_recordSPDemoName+16
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 597
;597:		}
LABELV $540
line 598
;598:	}
LABELV $535
line 599
;599:	trap_Cvar_Set("cg_thirdPerson", "0");
ADDRGP4 $547
ARGP4
ADDRGP4 $548
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 600
;600:}
LABELV $518
endproc CG_MapRestart 12 12
export CG_ParseVoiceChats
proc CG_ParseVoiceChats 16504 16
line 639
;601:
;602:#define MAX_VOICEFILESIZE	16384
;603:#define MAX_VOICEFILES		8
;604:#define MAX_VOICECHATS		64
;605:#define MAX_VOICESOUNDS		64
;606:#define MAX_CHATSIZE		64
;607:#define MAX_HEADMODELS		64
;608:
;609:typedef struct voiceChat_s
;610:{
;611:	char id[64];
;612:	int numSounds;
;613:	sfxHandle_t sounds[MAX_VOICESOUNDS];
;614:	char chats[MAX_VOICESOUNDS][MAX_CHATSIZE];
;615:} voiceChat_t;
;616:
;617:typedef struct voiceChatList_s
;618:{
;619:	char name[64];
;620:	int gender;
;621:	int numVoiceChats;
;622:	voiceChat_t voiceChats[MAX_VOICECHATS];
;623:} voiceChatList_t;
;624:
;625:typedef struct headModelVoiceChat_s
;626:{
;627:	char headmodel[64];
;628:	int voiceChatNum;
;629:} headModelVoiceChat_t;
;630:
;631:voiceChatList_t voiceChatLists[MAX_VOICEFILES];
;632://headModelVoiceChat_t headModelVoiceChat[MAX_HEADMODELS];
;633:
;634:/*
;635:=================
;636:CG_ParseVoiceChats
;637:=================
;638:*/
;639:int CG_ParseVoiceChats( const char *filename, voiceChatList_t *voiceChatList, int maxVoiceChats ) {
line 648
;640:	int	len, i;
;641:	fileHandle_t f;
;642:	char buf[MAX_VOICEFILESIZE];
;643:	char **p, *ptr;
;644:	char *token;
;645:	voiceChat_t *voiceChats;
;646:	qboolean compress;
;647:
;648:	compress = qtrue;
ADDRLP4 16412
CNSTI4 1
ASGNI4
line 649
;649:	if (cg_buildScript.integer) {
ADDRGP4 cg_buildScript+12
INDIRI4
CNSTI4 0
EQI4 $550
line 650
;650:		compress = qfalse;
ADDRLP4 16412
CNSTI4 0
ASGNI4
line 651
;651:	}
LABELV $550
line 653
;652:
;653:	len = trap_FS_FOpenFile( filename, &f, FS_READ );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 20
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16416
ADDRGP4 trap_FS_FOpenFile
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 16416
INDIRI4
ASGNI4
line 654
;654:	if ( !f ) {
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $553
line 655
;655:		trap_Print( va( S_COLOR_RED "voice chat file not found: %s\n", filename ) );
ADDRGP4 $555
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16420
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16420
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 656
;656:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $549
JUMPV
LABELV $553
line 658
;657:	}
;658:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 16
INDIRI4
CNSTI4 16384
LTI4 $556
line 659
;659:		trap_Print( va( S_COLOR_RED "voice chat file too large: %s is %i, max allowed is %i", filename, len, MAX_VOICEFILESIZE ) );
ADDRGP4 $558
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16
INDIRI4
ARGI4
CNSTI4 16384
ARGI4
ADDRLP4 16420
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16420
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 660
;660:		trap_FS_FCloseFile( f );
ADDRLP4 20
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 661
;661:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $549
JUMPV
LABELV $556
line 664
;662:	}
;663:
;664:	trap_FS_Read( buf, len, f );
ADDRLP4 24
ARGP4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 20
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 665
;665:	buf[len] = 0;
ADDRLP4 16
INDIRI4
ADDRLP4 24
ADDP4
CNSTI1 0
ASGNI1
line 666
;666:	trap_FS_FCloseFile( f );
ADDRLP4 20
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 668
;667:
;668:	ptr = buf;
ADDRLP4 16408
ADDRLP4 24
ASGNP4
line 669
;669:	p = &ptr;
ADDRLP4 8
ADDRLP4 16408
ASGNP4
line 671
;670:
;671:	Com_sprintf(voiceChatList->name, sizeof(voiceChatList->name), "%s", filename);
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $559
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 672
;672:	voiceChats = voiceChatList->voiceChats;
ADDRLP4 4
ADDRFP4 4
INDIRP4
CNSTI4 72
ADDP4
ASGNP4
line 673
;673:	for ( i = 0; i < maxVoiceChats; i++ ) {
ADDRLP4 12
CNSTI4 0
ASGNI4
ADDRGP4 $563
JUMPV
LABELV $560
line 674
;674:		voiceChats[i].id[0] = 0;
CNSTI4 4420
ADDRLP4 12
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 675
;675:	}
LABELV $561
line 673
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $563
ADDRLP4 12
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $560
line 676
;676:	token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16420
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16420
INDIRP4
ASGNP4
line 677
;677:	if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $566
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $564
LABELV $566
line 678
;678:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $549
JUMPV
LABELV $564
line 680
;679:	}
;680:	if (!Q_stricmp(token, "female")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $569
ARGP4
ADDRLP4 16428
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16428
INDIRI4
CNSTI4 0
NEI4 $567
line 681
;681:		voiceChatList->gender = GENDER_FEMALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 1
ASGNI4
line 682
;682:	}
ADDRGP4 $568
JUMPV
LABELV $567
line 683
;683:	else if (!Q_stricmp(token, "male")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $572
ARGP4
ADDRLP4 16432
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16432
INDIRI4
CNSTI4 0
NEI4 $570
line 684
;684:		voiceChatList->gender = GENDER_MALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 0
ASGNI4
line 685
;685:	}
ADDRGP4 $571
JUMPV
LABELV $570
line 686
;686:	else if (!Q_stricmp(token, "neuter")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $575
ARGP4
ADDRLP4 16436
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16436
INDIRI4
CNSTI4 0
NEI4 $573
line 687
;687:		voiceChatList->gender = GENDER_NEUTER;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 2
ASGNI4
line 688
;688:	}
ADDRGP4 $574
JUMPV
LABELV $573
line 689
;689:	else {
line 690
;690:		trap_Print( va( S_COLOR_RED "expected gender not found in voice chat file: %s\n", filename ) );
ADDRGP4 $576
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16440
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16440
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 691
;691:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $549
JUMPV
LABELV $574
LABELV $571
LABELV $568
line 694
;692:	}
;693:
;694:	voiceChatList->numVoiceChats = 0;
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
CNSTI4 0
ASGNI4
ADDRGP4 $578
JUMPV
LABELV $577
line 695
;695:	while ( 1 ) {
line 696
;696:		token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16440
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16440
INDIRP4
ASGNP4
line 697
;697:		if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $582
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $580
LABELV $582
line 698
;698:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $549
JUMPV
LABELV $580
line 700
;699:		}
;700:		Com_sprintf(voiceChats[voiceChatList->numVoiceChats].id, sizeof( voiceChats[voiceChatList->numVoiceChats].id ), "%s", token);
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $559
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 701
;701:		token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16448
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16448
INDIRP4
ASGNP4
line 702
;702:		if (Q_stricmp(token, "{")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $585
ARGP4
ADDRLP4 16452
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16452
INDIRI4
CNSTI4 0
EQI4 $583
line 703
;703:			trap_Print( va( S_COLOR_RED "expected { found %s in voice chat file: %s\n", token, filename ) );
ADDRGP4 $586
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16456
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16456
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 704
;704:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $549
JUMPV
LABELV $583
line 706
;705:		}
;706:		voiceChats[voiceChatList->numVoiceChats].numSounds = 0;
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI4 64
ADDP4
CNSTI4 0
ASGNI4
ADDRGP4 $588
JUMPV
LABELV $587
line 707
;707:		while(1) {
line 708
;708:			token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16456
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16456
INDIRP4
ASGNP4
line 709
;709:			if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $592
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $590
LABELV $592
line 710
;710:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $549
JUMPV
LABELV $590
line 712
;711:			}
;712:			if (!Q_stricmp(token, "}"))
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $595
ARGP4
ADDRLP4 16464
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16464
INDIRI4
CNSTI4 0
NEI4 $593
line 713
;713:				break;
ADDRGP4 $589
JUMPV
LABELV $593
line 714
;714:			voiceChats[voiceChatList->numVoiceChats].sounds[voiceChats[voiceChatList->numVoiceChats].numSounds] = 
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 16468
ADDRGP4 trap_S_RegisterSound
CALLI4
ASGNI4
ADDRLP4 16472
CNSTI4 68
ASGNI4
ADDRLP4 16476
CNSTI4 4420
ADDRFP4 4
INDIRP4
ADDRLP4 16472
INDIRI4
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ASGNP4
ADDRLP4 16476
INDIRP4
CNSTI4 64
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 16476
INDIRP4
ADDRLP4 16472
INDIRI4
ADDP4
ADDP4
ADDRLP4 16468
INDIRI4
ASGNI4
line 716
;715:          trap_S_RegisterSound( token );
;716:			token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16480
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16480
INDIRP4
ASGNP4
line 717
;717:			if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $598
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $596
LABELV $598
line 718
;718:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $549
JUMPV
LABELV $596
line 720
;719:			}
;720:			Com_sprintf(voiceChats[voiceChatList->numVoiceChats].chats[
ADDRLP4 16488
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ASGNP4
ADDRLP4 16492
CNSTI4 64
ASGNI4
ADDRLP4 16488
INDIRP4
ADDRLP4 16492
INDIRI4
ADDP4
INDIRI4
CNSTI4 6
LSHI4
ADDRLP4 16488
INDIRP4
CNSTI4 324
ADDP4
ADDP4
ARGP4
ADDRLP4 16492
INDIRI4
ARGI4
ADDRGP4 $559
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 722
;721:							voiceChats[voiceChatList->numVoiceChats].numSounds], MAX_CHATSIZE, "%s", token);
;722:			voiceChats[voiceChatList->numVoiceChats].numSounds++;
ADDRLP4 16496
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI4 64
ADDP4
ASGNP4
ADDRLP4 16496
INDIRP4
ADDRLP4 16496
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 723
;723:			if (voiceChats[voiceChatList->numVoiceChats].numSounds >= MAX_VOICESOUNDS)
ADDRLP4 16500
CNSTI4 64
ASGNI4
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ADDRLP4 16500
INDIRI4
ADDP4
INDIRI4
ADDRLP4 16500
INDIRI4
LTI4 $599
line 724
;724:				break;
ADDRGP4 $589
JUMPV
LABELV $599
line 725
;725:		}
LABELV $588
line 707
ADDRGP4 $587
JUMPV
LABELV $589
line 726
;726:		voiceChatList->numVoiceChats++;
ADDRLP4 16456
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
ASGNP4
ADDRLP4 16456
INDIRP4
ADDRLP4 16456
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 727
;727:		if (voiceChatList->numVoiceChats >= maxVoiceChats)
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $601
line 728
;728:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $549
JUMPV
LABELV $601
line 729
;729:	}
LABELV $578
line 695
ADDRGP4 $577
JUMPV
line 730
;730:	return qtrue;
CNSTI4 1
RETI4
LABELV $549
endproc CG_ParseVoiceChats 16504 16
export CG_LoadVoiceChats
proc CG_LoadVoiceChats 12 12
line 738
;731:}
;732:
;733:/*
;734:=================
;735:CG_LoadVoiceChats
;736:=================
;737:*/
;738:void CG_LoadVoiceChats( void ) {
line 741
;739:	int size;
;740:
;741:	size = trap_MemoryRemaining();
ADDRLP4 4
ADDRGP4 trap_MemoryRemaining
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
line 742
;742:	CG_ParseVoiceChats( "scripts/female1.voice", &voiceChatLists[0], MAX_VOICECHATS );
ADDRGP4 $604
ARGP4
ADDRGP4 voiceChatLists
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 743
;743:	CG_ParseVoiceChats( "scripts/female2.voice", &voiceChatLists[1], MAX_VOICECHATS );
ADDRGP4 $605
ARGP4
ADDRGP4 voiceChatLists+282952
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 744
;744:	CG_ParseVoiceChats( "scripts/female3.voice", &voiceChatLists[2], MAX_VOICECHATS );
ADDRGP4 $607
ARGP4
ADDRGP4 voiceChatLists+565904
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 745
;745:	CG_ParseVoiceChats( "scripts/male1.voice", &voiceChatLists[3], MAX_VOICECHATS );
ADDRGP4 $609
ARGP4
ADDRGP4 voiceChatLists+848856
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 746
;746:	CG_ParseVoiceChats( "scripts/male2.voice", &voiceChatLists[4], MAX_VOICECHATS );
ADDRGP4 $611
ARGP4
ADDRGP4 voiceChatLists+1131808
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 747
;747:	CG_ParseVoiceChats( "scripts/male3.voice", &voiceChatLists[5], MAX_VOICECHATS );
ADDRGP4 $613
ARGP4
ADDRGP4 voiceChatLists+1414760
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 748
;748:	CG_ParseVoiceChats( "scripts/male4.voice", &voiceChatLists[6], MAX_VOICECHATS );
ADDRGP4 $615
ARGP4
ADDRGP4 voiceChatLists+1697712
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 749
;749:	CG_ParseVoiceChats( "scripts/male5.voice", &voiceChatLists[7], MAX_VOICECHATS );
ADDRGP4 $617
ARGP4
ADDRGP4 voiceChatLists+1980664
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 750
;750:	CG_Printf("voice chat memory size = %d\n", size - trap_MemoryRemaining());
ADDRLP4 8
ADDRGP4 trap_MemoryRemaining
CALLI4
ASGNI4
ADDRGP4 $619
ARGP4
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
SUBI4
ARGI4
ADDRGP4 CG_Printf
CALLV
pop
line 751
;751:}
LABELV $603
endproc CG_LoadVoiceChats 12 12
export CG_HeadModelVoiceChats
proc CG_HeadModelVoiceChats 16424 16
line 758
;752:
;753:/*
;754:=================
;755:CG_HeadModelVoiceChats
;756:=================
;757:*/
;758:int CG_HeadModelVoiceChats( char *filename ) {
line 765
;759:	int	len, i;
;760:	fileHandle_t f;
;761:	char buf[MAX_VOICEFILESIZE];
;762:	char **p, *ptr;
;763:	char *token;
;764:
;765:	len = trap_FS_FOpenFile( filename, &f, FS_READ );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 12
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16408
ADDRGP4 trap_FS_FOpenFile
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 16408
INDIRI4
ASGNI4
line 766
;766:	if ( !f ) {
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $621
line 768
;767:		//trap_Print( va( "voice chat file not found: %s\n", filename ) );
;768:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $620
JUMPV
LABELV $621
line 770
;769:	}
;770:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 8
INDIRI4
CNSTI4 16384
LTI4 $623
line 771
;771:		trap_Print( va( S_COLOR_RED "voice chat file too large: %s is %i, max allowed is %i", filename, len, MAX_VOICEFILESIZE ) );
ADDRGP4 $558
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8
INDIRI4
ARGI4
CNSTI4 16384
ARGI4
ADDRLP4 16412
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16412
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 772
;772:		trap_FS_FCloseFile( f );
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 773
;773:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $620
JUMPV
LABELV $623
line 776
;774:	}
;775:
;776:	trap_FS_Read( buf, len, f );
ADDRLP4 16
ARGP4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 777
;777:	buf[len] = 0;
ADDRLP4 8
INDIRI4
ADDRLP4 16
ADDP4
CNSTI1 0
ASGNI1
line 778
;778:	trap_FS_FCloseFile( f );
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 780
;779:
;780:	ptr = buf;
ADDRLP4 16404
ADDRLP4 16
ASGNP4
line 781
;781:	p = &ptr;
ADDRLP4 16400
ADDRLP4 16404
ASGNP4
line 783
;782:
;783:	token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 16400
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16412
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 16412
INDIRP4
ASGNP4
line 784
;784:	if (!token || token[0] == 0) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $627
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $625
LABELV $627
line 785
;785:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $620
JUMPV
LABELV $625
line 788
;786:	}
;787:
;788:	for ( i = 0; i < MAX_VOICEFILES; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $628
line 789
;789:		if ( !Q_stricmp(token, voiceChatLists[i].name) ) {
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
ARGP4
ADDRLP4 16420
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16420
INDIRI4
CNSTI4 0
NEI4 $632
line 790
;790:			return i;
ADDRLP4 0
INDIRI4
RETI4
ADDRGP4 $620
JUMPV
LABELV $632
line 792
;791:		}
;792:	}
LABELV $629
line 788
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 8
LTI4 $628
line 796
;793:
;794:	//FIXME: maybe try to load the .voice file which name is stored in token?
;795:
;796:	return -1;
CNSTI4 -1
RETI4
LABELV $620
endproc CG_HeadModelVoiceChats 16424 16
export CG_GetVoiceChat
proc CG_GetVoiceChat 16 8
line 805
;797:}
;798:
;799:
;800:/*
;801:=================
;802:CG_GetVoiceChat
;803:=================
;804:*/
;805:int CG_GetVoiceChat( voiceChatList_t *voiceChatList, const char *id, sfxHandle_t *snd, char **chat) {
line 808
;806:	int i, rnd;
;807:
;808:	for ( i = 0; i < voiceChatList->numVoiceChats; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $638
JUMPV
LABELV $635
line 809
;809:		if ( !Q_stricmp( id, voiceChatList->voiceChats[i].id ) ) {
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
ARGP4
ADDRLP4 8
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $639
line 810
;810:			rnd = random() * voiceChatList->voiceChats[i].numSounds;
ADDRLP4 12
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 12
INDIRI4
CNSTI4 32767
BANDI4
CVIF4 4
CNSTF4 1191181824
DIVF4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
CNSTI4 64
ADDP4
INDIRI4
CVIF4 4
MULF4
CVFI4 4
ASGNI4
line 811
;811:			*snd = voiceChatList->voiceChats[i].sounds[rnd];
ADDRFP4 8
INDIRP4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
CNSTI4 68
ADDP4
ADDP4
INDIRI4
ASGNI4
line 812
;812:			*chat = voiceChatList->voiceChats[i].chats[rnd];
ADDRFP4 12
INDIRP4
ADDRLP4 4
INDIRI4
CNSTI4 6
LSHI4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
CNSTI4 324
ADDP4
ADDP4
ASGNP4
line 813
;813:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $634
JUMPV
LABELV $639
line 815
;814:		}
;815:	}
LABELV $636
line 808
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $638
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
LTI4 $635
line 816
;816:	return qfalse;
CNSTI4 0
RETI4
LABELV $634
endproc CG_GetVoiceChat 16 8
export CG_VoiceChatListForClient
proc CG_VoiceChatListForClient 8 0
line 824
;817:}
;818:
;819:/*
;820:=================
;821:CG_VoiceChatListForClient
;822:=================
;823:*/
;824:voiceChatList_t *CG_VoiceChatListForClient( int clientNum ) {
line 827
;825:	clientInfo_t *ci;
;826:
;827:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
ADDRLP4 4
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
LTI4 $644
ADDRLP4 4
INDIRI4
CNSTI4 32
LTI4 $642
LABELV $644
line 828
;828:		clientNum = 0;
ADDRFP4 0
CNSTI4 0
ASGNI4
line 829
;829:	}
LABELV $642
line 830
;830:	ci = &cgs.clientinfo[ clientNum ];
ADDRLP4 0
CNSTI4 812
ADDRFP4 0
INDIRI4
MULI4
ADDRGP4 cgs+43024
ADDP4
ASGNP4
line 910
;831:/*
;832:	int voiceChatNum, i, j, k, gender;
;833:	char filename[MAX_QPATH], headModelName[MAX_QPATH];
;834:
;835:	for ( k = 0; k < 2; k++ ) {
;836:		if ( k == 0 ) {
;837:			if (ci->headModelName[0] == '*') {
;838:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName+1, ci->headSkinName );
;839:			}
;840:			else {
;841:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName, ci->headSkinName );
;842:			}
;843:		}
;844:		else {
;845:			if (ci->headModelName[0] == '*') {
;846:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName+1 );
;847:			}
;848:			else {
;849:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName );
;850:			}
;851:		}
;852:		// find the voice file for the head model the client uses
;853:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
;854:			if (!Q_stricmp(headModelVoiceChat[i].headmodel, headModelName)) {
;855:				break;
;856:			}
;857:		}
;858:		if (i < MAX_HEADMODELS) {
;859:			return &voiceChatLists[headModelVoiceChat[i].voiceChatNum];
;860:		}
;861:		// find a <headmodelname>.vc file
;862:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
;863:			if (!strlen(headModelVoiceChat[i].headmodel)) {
;864:				Com_sprintf(filename, sizeof(filename), "scripts/%s.vc", headModelName);
;865:				voiceChatNum = CG_HeadModelVoiceChats(filename);
;866:				if (voiceChatNum == -1)
;867:					break;
;868:				Com_sprintf(headModelVoiceChat[i].headmodel, sizeof ( headModelVoiceChat[i].headmodel ),
;869:							"%s", headModelName);
;870:				headModelVoiceChat[i].voiceChatNum = voiceChatNum;
;871:				return &voiceChatLists[headModelVoiceChat[i].voiceChatNum];
;872:			}
;873:		}
;874:	}
;875:	gender = ci->gender;
;876:	for (k = 0; k < 2; k++) {
;877:		// just pick the first with the right gender
;878:		for ( i = 0; i < MAX_VOICEFILES; i++ ) {
;879:			if (strlen(voiceChatLists[i].name)) {
;880:				if (voiceChatLists[i].gender == gender) {
;881:					// store this head model with voice chat for future reference
;882:					for ( j = 0; j < MAX_HEADMODELS; j++ ) {
;883:						if (!strlen(headModelVoiceChat[j].headmodel)) {
;884:							Com_sprintf(headModelVoiceChat[j].headmodel, sizeof ( headModelVoiceChat[j].headmodel ),
;885:									"%s", headModelName);
;886:							headModelVoiceChat[j].voiceChatNum = i;
;887:							break;
;888:						}
;889:					}
;890:					return &voiceChatLists[i];
;891:				}
;892:			}
;893:		}
;894:		// fall back to male gender because we don't have neuter in the mission pack
;895:		if (gender == GENDER_MALE)
;896:			break;
;897:		gender = GENDER_MALE;
;898:	}
;899:	// store this head model with voice chat for future reference
;900:	for ( j = 0; j < MAX_HEADMODELS; j++ ) {
;901:		if (!strlen(headModelVoiceChat[j].headmodel)) {
;902:			Com_sprintf(headModelVoiceChat[j].headmodel, sizeof ( headModelVoiceChat[j].headmodel ),
;903:					"%s", headModelName);
;904:			headModelVoiceChat[j].voiceChatNum = 0;
;905:			break;
;906:		}
;907:	}
;908:	*/
;909:	// just return the first voice chat list
;910:	return &voiceChatLists[0];
ADDRGP4 voiceChatLists
RETP4
LABELV $641
endproc CG_VoiceChatListForClient 8 0
export CG_PlayVoiceChat
proc CG_PlayVoiceChat 8 12
line 931
;911:}
;912:
;913:#define MAX_VOICECHATBUFFER		32
;914:
;915:typedef struct bufferedVoiceChat_s
;916:{
;917:	int clientNum;
;918:	sfxHandle_t snd;
;919:	int voiceOnly;
;920:	char cmd[MAX_SAY_TEXT];
;921:	char message[MAX_SAY_TEXT];
;922:} bufferedVoiceChat_t;
;923:
;924:bufferedVoiceChat_t voiceChatBuffer[MAX_VOICECHATBUFFER];
;925:
;926:/*
;927:=================
;928:CG_PlayVoiceChat
;929:=================
;930:*/
;931:void CG_PlayVoiceChat( bufferedVoiceChat_t *vchat ) {
line 933
;932:	// if we are going into the intermission, don't start any voices
;933:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $647
line 934
;934:		return;
ADDRGP4 $646
JUMPV
LABELV $647
line 937
;935:	}
;936:
;937:	if ( !cg_noVoiceChats.integer ) {
ADDRGP4 cg_noVoiceChats+12
INDIRI4
CNSTI4 0
NEI4 $650
line 938
;938:		trap_S_StartLocalSound( vchat->snd, CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 939
;939:		if (vchat->clientNum != cg.snap->ps.clientNum) {
ADDRFP4 0
INDIRP4
INDIRI4
ADDRGP4 cg+36
INDIRP4
CNSTI4 188
ADDP4
INDIRI4
EQI4 $653
line 940
;940:			int orderTask = CG_ValidOrder(vchat->cmd);
ADDRFP4 0
INDIRP4
CNSTI4 12
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 CG_ValidOrder
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
line 941
;941:			if (orderTask > 0) {
ADDRLP4 0
INDIRI4
CNSTI4 0
LEI4 $656
line 942
;942:				cgs.acceptOrderTime = cg.time + 5000;
ADDRGP4 cgs+71020
ADDRGP4 cg+64
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 943
;943:				Q_strncpyz(cgs.acceptVoice, vchat->cmd, sizeof(cgs.acceptVoice));
ADDRGP4 cgs+71032
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 12
ADDP4
ARGP4
CNSTI4 32
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 944
;944:				cgs.acceptTask = orderTask;
ADDRGP4 cgs+71024
ADDRLP4 0
INDIRI4
ASGNI4
line 945
;945:				cgs.acceptLeader = vchat->clientNum;
ADDRGP4 cgs+71028
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 946
;946:			}
LABELV $656
line 948
;947:			// see if this was an order
;948:			CG_ShowResponseHead();
ADDRGP4 CG_ShowResponseHead
CALLV
pop
line 949
;949:		}
LABELV $653
line 950
;950:	}
LABELV $650
line 951
;951:	if (!vchat->voiceOnly && !cg_noVoiceText.integer) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $664
ADDRGP4 cg_noVoiceText+12
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $664
line 952
;952:		CG_AddToTeamChat( vchat->message );
ADDRFP4 0
INDIRP4
CNSTI4 162
ADDP4
ARGP4
ADDRGP4 CG_AddToTeamChat
CALLV
pop
line 953
;953:		CG_Printf( "%s\n", vchat->message );
ADDRGP4 $667
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 162
ADDP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 954
;954:	}
LABELV $664
line 955
;955:	voiceChatBuffer[cg.voiceChatBufferOut].snd = 0;
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer+4
ADDP4
CNSTI4 0
ASGNI4
line 956
;956:}
LABELV $646
endproc CG_PlayVoiceChat 8 12
export CG_PlayBufferedVoiceChats
proc CG_PlayBufferedVoiceChats 0 4
line 963
;957:
;958:/*
;959:=====================
;960:CG_PlayBufferedVoieChats
;961:=====================
;962:*/
;963:void CG_PlayBufferedVoiceChats( void ) {
line 964
;964:	if ( cg.voiceChatTime < cg.time ) {
ADDRGP4 cg+13340
INDIRI4
ADDRGP4 cg+64
INDIRI4
GEI4 $671
line 965
;965:		if (cg.voiceChatBufferOut != cg.voiceChatBufferIn && voiceChatBuffer[cg.voiceChatBufferOut].snd) {
ADDRGP4 cg+13348
INDIRI4
ADDRGP4 cg+13344
INDIRI4
EQI4 $675
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer+4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $675
line 967
;966:			//
;967:			CG_PlayVoiceChat(&voiceChatBuffer[cg.voiceChatBufferOut]);
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRGP4 CG_PlayVoiceChat
CALLV
pop
line 969
;968:			//
;969:			cg.voiceChatBufferOut = (cg.voiceChatBufferOut + 1) % MAX_VOICECHATBUFFER;
ADDRGP4 cg+13348
ADDRGP4 cg+13348
INDIRI4
CNSTI4 1
ADDI4
CNSTI4 32
MODI4
ASGNI4
line 970
;970:			cg.voiceChatTime = cg.time + 1000;
ADDRGP4 cg+13340
ADDRGP4 cg+64
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 971
;971:		}
LABELV $675
line 972
;972:	}
LABELV $671
line 973
;973:}
LABELV $670
endproc CG_PlayBufferedVoiceChats 0 4
export CG_AddBufferedVoiceChat
proc CG_AddBufferedVoiceChat 8 12
line 980
;974:
;975:/*
;976:=====================
;977:CG_AddBufferedVoiceChat
;978:=====================
;979:*/
;980:void CG_AddBufferedVoiceChat( bufferedVoiceChat_t *vchat ) {
line 982
;981:	// if we are going into the intermission, don't start any voices
;982:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $687
line 983
;983:		return;
ADDRGP4 $686
JUMPV
LABELV $687
line 986
;984:	}
;985:
;986:	memcpy(&voiceChatBuffer[cg.voiceChatBufferIn], vchat, sizeof(bufferedVoiceChat_t));
ADDRLP4 0
CNSTI4 312
ASGNI4
ADDRLP4 0
INDIRI4
ADDRGP4 cg+13344
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 memcpy
CALLP4
pop
line 987
;987:	cg.voiceChatBufferIn = (cg.voiceChatBufferIn + 1) % MAX_VOICECHATBUFFER;
ADDRGP4 cg+13344
ADDRGP4 cg+13344
INDIRI4
CNSTI4 1
ADDI4
CNSTI4 32
MODI4
ASGNI4
line 988
;988:	if (cg.voiceChatBufferIn == cg.voiceChatBufferOut) {
ADDRGP4 cg+13344
INDIRI4
ADDRGP4 cg+13348
INDIRI4
NEI4 $693
line 989
;989:		CG_PlayVoiceChat( &voiceChatBuffer[cg.voiceChatBufferOut] );
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRGP4 CG_PlayVoiceChat
CALLV
pop
line 990
;990:		cg.voiceChatBufferOut++;
ADDRLP4 4
ADDRGP4 cg+13348
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 991
;991:	}
LABELV $693
line 992
;992:}
LABELV $686
endproc CG_AddBufferedVoiceChat 8 12
export CG_VoiceChatLocal
proc CG_VoiceChatLocal 340 28
line 999
;993:
;994:/*
;995:=================
;996:CG_VoiceChatLocal
;997:=================
;998:*/
;999:void CG_VoiceChatLocal( int mode, qboolean voiceOnly, int clientNum, int color, const char *cmd ) {
line 1007
;1000:	char *chat;
;1001:	voiceChatList_t *voiceChatList;
;1002:	clientInfo_t *ci;
;1003:	sfxHandle_t snd;
;1004:	bufferedVoiceChat_t vchat;
;1005:
;1006:	// if we are going into the intermission, don't start any voices
;1007:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $700
line 1008
;1008:		return;
ADDRGP4 $699
JUMPV
LABELV $700
line 1011
;1009:	}
;1010:
;1011:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
ADDRLP4 328
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 328
INDIRI4
CNSTI4 0
LTI4 $705
ADDRLP4 328
INDIRI4
CNSTI4 32
LTI4 $703
LABELV $705
line 1012
;1012:		clientNum = 0;
ADDRFP4 8
CNSTI4 0
ASGNI4
line 1013
;1013:	}
LABELV $703
line 1014
;1014:	ci = &cgs.clientinfo[ clientNum ];
ADDRLP4 320
CNSTI4 812
ADDRFP4 8
INDIRI4
MULI4
ADDRGP4 cgs+43024
ADDP4
ASGNP4
line 1016
;1015:
;1016:	cgs.currentVoiceClient = clientNum;
ADDRGP4 cgs+71016
ADDRFP4 8
INDIRI4
ASGNI4
line 1018
;1017:
;1018:	voiceChatList = CG_VoiceChatListForClient( clientNum );
ADDRFP4 8
INDIRI4
ARGI4
ADDRLP4 332
ADDRGP4 CG_VoiceChatListForClient
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 332
INDIRP4
ASGNP4
line 1020
;1019:
;1020:	if ( CG_GetVoiceChat( voiceChatList, cmd, &snd, &chat ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
ADDRLP4 324
ARGP4
ADDRLP4 316
ARGP4
ADDRLP4 336
ADDRGP4 CG_GetVoiceChat
CALLI4
ASGNI4
ADDRLP4 336
INDIRI4
CNSTI4 0
EQI4 $708
line 1022
;1021:		//
;1022:		if ( mode == SAY_TEAM || !cg_teamChatsOnly.integer ) {
ADDRFP4 0
INDIRI4
CNSTI4 1
EQI4 $713
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $710
LABELV $713
line 1023
;1023:			vchat.clientNum = clientNum;
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
line 1024
;1024:			vchat.snd = snd;
ADDRLP4 4+4
ADDRLP4 324
INDIRI4
ASGNI4
line 1025
;1025:			vchat.voiceOnly = voiceOnly;
ADDRLP4 4+8
ADDRFP4 4
INDIRI4
ASGNI4
line 1026
;1026:			Q_strncpyz(vchat.cmd, cmd, sizeof(vchat.cmd));
ADDRLP4 4+12
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1027
;1027:			if ( mode == SAY_TELL ) {
ADDRFP4 0
INDIRI4
CNSTI4 2
NEI4 $718
line 1028
;1028:				Com_sprintf(vchat.message, sizeof(vchat.message), "[%s]: %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
ADDRLP4 4+162
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 $722
ARGP4
ADDRLP4 320
INDIRP4
CNSTI4 4
ADDP4
ARGP4
CNSTI4 94
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 316
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1029
;1029:			}
ADDRGP4 $719
JUMPV
LABELV $718
line 1030
;1030:			else if ( mode == SAY_TEAM ) {
ADDRFP4 0
INDIRI4
CNSTI4 1
NEI4 $723
line 1031
;1031:				Com_sprintf(vchat.message, sizeof(vchat.message), "(%s): %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
ADDRLP4 4+162
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 $727
ARGP4
ADDRLP4 320
INDIRP4
CNSTI4 4
ADDP4
ARGP4
CNSTI4 94
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 316
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1032
;1032:			}
ADDRGP4 $724
JUMPV
LABELV $723
line 1033
;1033:			else {
line 1034
;1034:				Com_sprintf(vchat.message, sizeof(vchat.message), "%s: %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
ADDRLP4 4+162
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 $730
ARGP4
ADDRLP4 320
INDIRP4
CNSTI4 4
ADDP4
ARGP4
CNSTI4 94
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 316
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1035
;1035:			}
LABELV $724
LABELV $719
line 1036
;1036:			CG_AddBufferedVoiceChat(&vchat);
ADDRLP4 4
ARGP4
ADDRGP4 CG_AddBufferedVoiceChat
CALLV
pop
line 1037
;1037:		}
LABELV $710
line 1038
;1038:	}
LABELV $708
line 1039
;1039:}
LABELV $699
endproc CG_VoiceChatLocal 340 28
export CG_VoiceChat
proc CG_VoiceChat 64 20
line 1046
;1040:
;1041:/*
;1042:=================
;1043:CG_VoiceChat
;1044:=================
;1045:*/
;1046:void CG_VoiceChat( int mode ) {
line 1051
;1047:	const char *cmd;
;1048:	int clientNum, color;
;1049:	qboolean voiceOnly;
;1050:
;1051:	voiceOnly = atoi(CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 16
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 20
INDIRI4
ASGNI4
line 1052
;1052:	clientNum = atoi(CG_Argv(2));
CNSTI4 2
ARGI4
ADDRLP4 24
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 28
INDIRI4
ASGNI4
line 1053
;1053:	color = atoi(CG_Argv(3));
CNSTI4 3
ARGI4
ADDRLP4 32
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 36
INDIRI4
ASGNI4
line 1054
;1054:	cmd = CG_Argv(4);
CNSTI4 4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 40
INDIRP4
ASGNP4
line 1056
;1055:
;1056:	if (cg_noTaunt.integer != 0) {
ADDRGP4 cg_noTaunt+12
INDIRI4
CNSTI4 0
EQI4 $732
line 1057
;1057:		if (!strcmp(cmd, VOICECHAT_KILLINSULT)  || !strcmp(cmd, VOICECHAT_TAUNT) || \
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $737
ARGP4
ADDRLP4 44
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 44
INDIRI4
CNSTI4 0
EQI4 $745
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $738
ARGP4
ADDRLP4 48
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
EQI4 $745
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $739
ARGP4
ADDRLP4 52
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 52
INDIRI4
CNSTI4 0
EQI4 $745
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $740
ARGP4
ADDRLP4 56
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 0
EQI4 $745
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $741
ARGP4
ADDRLP4 60
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 60
INDIRI4
CNSTI4 0
NEI4 $735
LABELV $745
line 1060
;1058:			!strcmp(cmd, VOICECHAT_DEATHINSULT) || !strcmp(cmd, VOICECHAT_KILLGAUNTLET) || \
;1059:			!strcmp(cmd, VOICECHAT_PRAISE)) {
;1060:			return;
ADDRGP4 $731
JUMPV
LABELV $735
line 1062
;1061:		}
;1062:	}
LABELV $732
line 1064
;1063:
;1064:	CG_VoiceChatLocal( mode, voiceOnly, clientNum, color, cmd );
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 CG_VoiceChatLocal
CALLV
pop
line 1065
;1065:}
LABELV $731
endproc CG_VoiceChat 64 20
proc CG_RemoveChatEscapeChar 16 0
line 1072
;1066:
;1067:/*
;1068:=================
;1069:CG_RemoveChatEscapeChar
;1070:=================
;1071:*/
;1072:static void CG_RemoveChatEscapeChar( char *text ) {
line 1075
;1073:	int i, l;
;1074:
;1075:	l = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1076
;1076:	for ( i = 0; text[i]; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $750
JUMPV
LABELV $747
line 1077
;1077:		if (text[i] == '\x19')
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 25
NEI4 $751
line 1078
;1078:			continue;
ADDRGP4 $748
JUMPV
LABELV $751
line 1079
;1079:		text[l++] = text[i];
ADDRLP4 8
ADDRLP4 4
INDIRI4
ASGNI4
ADDRLP4 4
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1080
;1080:	}
LABELV $748
line 1076
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $750
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $747
line 1081
;1081:	text[l] = '\0';
ADDRLP4 4
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1082
;1082:}
LABELV $746
endproc CG_RemoveChatEscapeChar 16 0
export CG_CheckSVStripEdRef
proc CG_CheckSVStripEdRef 1084 12
line 1087
;1083:
;1084:#define MAX_STRIPED_SV_STRING 1024
;1085:
;1086:void CG_CheckSVStripEdRef(char *buf, const char *str)
;1087:{ //I don't really like doing this. But it utilizes the system that was already in place.
line 1088
;1088:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1089
;1089:	int b = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 1090
;1090:	int strLen = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1091
;1091:	qboolean gotStrip = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1093
;1092:
;1093:	if (!str || !str[0])
ADDRLP4 16
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $756
ADDRLP4 16
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $754
LABELV $756
line 1094
;1094:	{
line 1095
;1095:		if (str)
ADDRFP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $753
line 1096
;1096:		{
line 1097
;1097:			strcpy(buf, str);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 1098
;1098:		}
line 1099
;1099:		return;
ADDRGP4 $753
JUMPV
LABELV $754
line 1102
;1100:	}
;1101:
;1102:	strcpy(buf, str);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 1104
;1103:
;1104:	strLen = strlen(str);
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 20
INDIRI4
ASGNI4
line 1106
;1105:
;1106:	if (strLen >= MAX_STRIPED_SV_STRING)
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $762
line 1107
;1107:	{
line 1108
;1108:		return;
ADDRGP4 $753
JUMPV
LABELV $761
line 1112
;1109:	}
;1110:
;1111:	while (i < strLen && str[i])
;1112:	{
line 1113
;1113:		gotStrip = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1115
;1114:
;1115:		if (str[i] == '@' && (i+1) < strLen)
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
NEI4 $764
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ADDRLP4 4
INDIRI4
GEI4 $764
line 1116
;1116:		{
line 1117
;1117:			if (str[i+1] == '@' && (i+2) < strLen)
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
NEI4 $766
ADDRLP4 0
INDIRI4
CNSTI4 2
ADDI4
ADDRLP4 4
INDIRI4
GEI4 $766
line 1118
;1118:			{
line 1119
;1119:				if (str[i+2] == '@' && (i+3) < strLen)
ADDRLP4 0
INDIRI4
CNSTI4 2
ADDI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
NEI4 $768
ADDRLP4 0
INDIRI4
CNSTI4 3
ADDI4
ADDRLP4 4
INDIRI4
GEI4 $768
line 1120
;1120:				{ //@@@ should mean to insert a striped reference here, so insert it into buf at the current place
line 1122
;1121:					char stripRef[MAX_STRIPED_SV_STRING];
;1122:					int r = 0;
ADDRLP4 36
CNSTI4 0
ASGNI4
ADDRGP4 $771
JUMPV
LABELV $770
line 1125
;1123:
;1124:					while (i < strLen && str[i] == '@')
;1125:					{
line 1126
;1126:						i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1127
;1127:					}
LABELV $771
line 1124
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $773
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
EQI4 $770
LABELV $773
ADDRGP4 $775
JUMPV
LABELV $774
line 1130
;1128:
;1129:					while (i < strLen && str[i] && str[i] != ' ' && str[i] != ':' && str[i] != '.' && str[i] != '\n')
;1130:					{
line 1131
;1131:						stripRef[r] = str[i];
ADDRLP4 36
INDIRI4
ADDRLP4 40
ADDP4
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1132
;1132:						r++;
ADDRLP4 36
ADDRLP4 36
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1133
;1133:						i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1134
;1134:					}
LABELV $775
line 1129
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $781
ADDRLP4 1072
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 1072
INDIRI4
CNSTI4 0
EQI4 $781
ADDRLP4 1072
INDIRI4
CNSTI4 32
EQI4 $781
ADDRLP4 1072
INDIRI4
CNSTI4 58
EQI4 $781
ADDRLP4 1072
INDIRI4
CNSTI4 46
EQI4 $781
ADDRLP4 1072
INDIRI4
CNSTI4 10
NEI4 $774
LABELV $781
line 1135
;1135:					stripRef[r] = 0;
ADDRLP4 36
INDIRI4
ADDRLP4 40
ADDP4
CNSTI1 0
ASGNI1
line 1137
;1136:
;1137:					buf[b] = 0;
ADDRLP4 12
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1138
;1138:					Q_strcat(buf, MAX_STRIPED_SV_STRING, CG_GetStripEdString("SVINGAME", stripRef));
ADDRGP4 $533
ARGP4
ADDRLP4 40
ARGP4
ADDRLP4 1076
ADDRGP4 CG_GetStripEdString
CALLP4
ASGNP4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRLP4 1076
INDIRP4
ARGP4
ADDRGP4 Q_strcat
CALLV
pop
line 1139
;1139:					b = strlen(buf);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1080
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 1080
INDIRI4
ASGNI4
line 1140
;1140:				}
LABELV $768
line 1141
;1141:			}
LABELV $766
line 1142
;1142:		}
LABELV $764
line 1144
;1143:
;1144:		if (!gotStrip)
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $782
line 1145
;1145:		{
line 1146
;1146:			buf[b] = str[i];
ADDRLP4 12
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1147
;1147:			b++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1148
;1148:		}
LABELV $782
line 1149
;1149:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1150
;1150:	}
LABELV $762
line 1111
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $784
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $761
LABELV $784
line 1152
;1151:
;1152:	buf[b] = 0;
ADDRLP4 12
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1153
;1153:}
LABELV $753
endproc CG_CheckSVStripEdRef 1084 12
proc CG_ServerCommand 1404 20
line 1163
;1154:
;1155:/*
;1156:=================
;1157:CG_ServerCommand
;1158:
;1159:The string has been tokenized and can be retrieved with
;1160:Cmd_Argc() / Cmd_Argv()
;1161:=================
;1162:*/
;1163:static void CG_ServerCommand( void ) {
line 1167
;1164:	const char	*cmd;
;1165:	char		text[MAX_SAY_TEXT];
;1166:
;1167:	cmd = CG_Argv(0);
CNSTI4 0
ARGI4
ADDRLP4 156
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 156
INDIRP4
ASGNP4
line 1169
;1168:
;1169:	if ( !cmd[0] ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $786
line 1171
;1170:		// server claimed the command
;1171:		return;
ADDRGP4 $785
JUMPV
LABELV $786
line 1174
;1172:	}
;1173:
;1174:	if ( !strcmp( cmd, "spd" ) ) 
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $790
ARGP4
ADDRLP4 160
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 160
INDIRI4
CNSTI4 0
NEI4 $788
line 1175
;1175:	{
line 1180
;1176:		const char *ID;
;1177:		int holdInt,count,i;
;1178:		char string[1204];
;1179:
;1180:		count = trap_Argc();
ADDRLP4 1384
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 1372
ADDRLP4 1384
INDIRI4
ASGNI4
line 1182
;1181:
;1182:		ID =  CG_Argv(1);
CNSTI4 1
ARGI4
ADDRLP4 1388
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 1376
ADDRLP4 1388
INDIRP4
ASGNP4
line 1183
;1183:		holdInt = atoi(ID);
ADDRLP4 1376
INDIRP4
ARGP4
ADDRLP4 1392
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 1380
ADDRLP4 1392
INDIRI4
ASGNI4
line 1185
;1184:
;1185:		memset( &string, 0, sizeof( string ) );
ADDRLP4 164
ARGP4
CNSTI4 0
ARGI4
CNSTI4 1204
ARGI4
ADDRGP4 memset
CALLP4
pop
line 1187
;1186:
;1187:		Com_sprintf( string,sizeof(string)," \"%s\"", (const char *) CG_Argv(2));
CNSTI4 2
ARGI4
ADDRLP4 1396
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 164
ARGP4
CNSTI4 1204
ARGI4
ADDRGP4 $791
ARGP4
ADDRLP4 1396
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1189
;1188:
;1189:		for (i=3;i<count;i++)
ADDRLP4 1368
CNSTI4 3
ASGNI4
ADDRGP4 $795
JUMPV
LABELV $792
line 1190
;1190:		{
line 1191
;1191:			Com_sprintf( string,sizeof(string)," %s \"%s\"", string, (const char *) CG_Argv(i));
ADDRLP4 1368
INDIRI4
ARGI4
ADDRLP4 1400
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 164
ARGP4
CNSTI4 1204
ARGI4
ADDRGP4 $796
ARGP4
ADDRLP4 164
ARGP4
ADDRLP4 1400
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1192
;1192:		}
LABELV $793
line 1189
ADDRLP4 1368
ADDRLP4 1368
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $795
ADDRLP4 1368
INDIRI4
ADDRLP4 1372
INDIRI4
LTI4 $792
line 1194
;1193:
;1194:		trap_SP_Print(holdInt, (byte *)string);
ADDRLP4 1380
INDIRI4
CVIU4 4
ARGU4
ADDRLP4 164
ARGP4
ADDRGP4 trap_SP_Print
CALLV
pop
line 1195
;1195:		return;
ADDRGP4 $785
JUMPV
LABELV $788
line 1198
;1196:	}
;1197:
;1198:	if ( !strcmp( cmd, "nfr" ) )
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $799
ARGP4
ADDRLP4 164
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 164
INDIRI4
CNSTI4 0
NEI4 $797
line 1199
;1199:	{ //"nfr" == "new force rank" (want a short string)
line 1200
;1200:		int doMenu = 0;
ADDRLP4 168
CNSTI4 0
ASGNI4
line 1201
;1201:		int setTeam = 0;
ADDRLP4 172
CNSTI4 0
ASGNI4
line 1202
;1202:		int newRank = 0;
ADDRLP4 176
CNSTI4 0
ASGNI4
line 1204
;1203:
;1204:		if (trap_Argc() < 3)
ADDRLP4 180
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 3
GEI4 $800
line 1205
;1205:		{
line 1209
;1206:#ifdef _DEBUG
;1207:			Com_Printf("WARNING: Invalid newForceRank string\n");
;1208:#endif
;1209:			return;
ADDRGP4 $785
JUMPV
LABELV $800
line 1212
;1210:		}
;1211:
;1212:		newRank = atoi(CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 184
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 184
INDIRP4
ARGP4
ADDRLP4 188
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 176
ADDRLP4 188
INDIRI4
ASGNI4
line 1213
;1213:		doMenu = atoi(CG_Argv(2));
CNSTI4 2
ARGI4
ADDRLP4 192
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 192
INDIRP4
ARGP4
ADDRLP4 196
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 168
ADDRLP4 196
INDIRI4
ASGNI4
line 1214
;1214:		setTeam = atoi(CG_Argv(3));
CNSTI4 3
ARGI4
ADDRLP4 200
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 200
INDIRP4
ARGP4
ADDRLP4 204
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 172
ADDRLP4 204
INDIRI4
ASGNI4
line 1216
;1215:
;1216:		trap_Cvar_Set("ui_rankChange", va("%i", newRank));
ADDRGP4 $231
ARGP4
ADDRLP4 176
INDIRI4
ARGI4
ADDRLP4 208
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $802
ARGP4
ADDRLP4 208
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1218
;1217:
;1218:		trap_Cvar_Set("ui_myteam", va("%i", setTeam));
ADDRGP4 $231
ARGP4
ADDRLP4 172
INDIRI4
ARGI4
ADDRLP4 212
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $803
ARGP4
ADDRLP4 212
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1220
;1219:
;1220:		if (!( trap_Key_GetCatcher() & KEYCATCH_UI ) && doMenu)
ADDRLP4 216
ADDRGP4 trap_Key_GetCatcher
CALLI4
ASGNI4
ADDRLP4 220
CNSTI4 0
ASGNI4
ADDRLP4 216
INDIRI4
CNSTI4 2
BANDI4
ADDRLP4 220
INDIRI4
NEI4 $785
ADDRLP4 168
INDIRI4
ADDRLP4 220
INDIRI4
EQI4 $785
line 1221
;1221:		{
line 1222
;1222:			trap_OpenUIMenu(3);
CNSTI4 3
ARGI4
ADDRGP4 trap_OpenUIMenu
CALLV
pop
line 1223
;1223:		}
line 1225
;1224:
;1225:		return;
ADDRGP4 $785
JUMPV
LABELV $797
line 1228
;1226:	}
;1227:
;1228:	if ( !strcmp( cmd, "kg2" ) )
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $808
ARGP4
ADDRLP4 168
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 168
INDIRI4
CNSTI4 0
NEI4 $806
line 1229
;1229:	{ //Kill a ghoul2 instance in this slot.
line 1232
;1230:	  //If it has been occupied since this message was sent somehow, the worst that can (should) happen
;1231:	  //is the instance will have to reinit with its current info.
;1232:		int indexNum = 0;
ADDRLP4 172
CNSTI4 0
ASGNI4
line 1233
;1233:		int argNum = trap_Argc();
ADDRLP4 184
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 180
ADDRLP4 184
INDIRI4
ASGNI4
line 1234
;1234:		int i = 1;
ADDRLP4 176
CNSTI4 1
ASGNI4
line 1236
;1235:		
;1236:		if (argNum < 1)
ADDRLP4 180
INDIRI4
CNSTI4 1
GEI4 $812
line 1237
;1237:		{
line 1238
;1238:			return;
ADDRGP4 $785
JUMPV
LABELV $811
line 1242
;1239:		}
;1240:
;1241:		while (i < argNum)
;1242:		{
line 1243
;1243:			indexNum = atoi(CG_Argv(i));
ADDRLP4 176
INDIRI4
ARGI4
ADDRLP4 188
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 188
INDIRP4
ARGP4
ADDRLP4 192
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 172
ADDRLP4 192
INDIRI4
ASGNI4
line 1245
;1244:
;1245:			if (cg_entities[indexNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[indexNum].ghoul2))
ADDRLP4 196
CNSTI4 1920
ADDRLP4 172
INDIRI4
MULI4
ASGNI4
ADDRLP4 196
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $814
ADDRLP4 196
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
ARGP4
ADDRLP4 200
ADDRGP4 trap_G2_HaveWeGhoul2Models
CALLI4
ASGNI4
ADDRLP4 200
INDIRI4
CNSTI4 0
EQI4 $814
line 1246
;1246:			{
line 1247
;1247:				if (indexNum < MAX_CLIENTS)
ADDRLP4 172
INDIRI4
CNSTI4 32
GEI4 $818
line 1248
;1248:				{ //You try to do very bad thing!
line 1252
;1249:#ifdef _DEBUG
;1250:					Com_Printf("WARNING: Tried to kill a client ghoul2 instance with a kg2 command!\n");
;1251:#endif
;1252:					return;
ADDRGP4 $785
JUMPV
LABELV $818
line 1254
;1253:				}
;1254:				trap_G2API_CleanGhoul2Models(&(cg_entities[indexNum].ghoul2));
CNSTI4 1920
ADDRLP4 172
INDIRI4
MULI4
ADDRGP4 cg_entities+952
ADDP4
ARGP4
ADDRGP4 trap_G2API_CleanGhoul2Models
CALLV
pop
line 1255
;1255:			}
LABELV $814
line 1257
;1256:
;1257:			i++;
ADDRLP4 176
ADDRLP4 176
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1258
;1258:		}
LABELV $812
line 1241
ADDRLP4 176
INDIRI4
ADDRLP4 180
INDIRI4
LTI4 $811
line 1260
;1259:		
;1260:		return;
ADDRGP4 $785
JUMPV
LABELV $806
line 1263
;1261:	}
;1262:
;1263:	if ( !strcmp( cmd, "cp" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $823
ARGP4
ADDRLP4 172
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 172
INDIRI4
CNSTI4 0
NEI4 $821
line 1265
;1264:		char strEd[MAX_STRIPED_SV_STRING];
;1265:		CG_CheckSVStripEdRef(strEd, CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 1200
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 176
ARGP4
ADDRLP4 1200
INDIRP4
ARGP4
ADDRGP4 CG_CheckSVStripEdRef
CALLV
pop
line 1266
;1266:		CG_CenterPrint( strEd, SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH );
ADDRLP4 176
ARGP4
CNSTI4 144
ARGI4
CNSTI4 16
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 1267
;1267:		return;
ADDRGP4 $785
JUMPV
LABELV $821
line 1270
;1268:	}
;1269:
;1270:	if ( !strcmp( cmd, "cs" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $826
ARGP4
ADDRLP4 176
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 176
INDIRI4
CNSTI4 0
NEI4 $824
line 1271
;1271:		CG_ConfigStringModified();
ADDRGP4 CG_ConfigStringModified
CALLV
pop
line 1272
;1272:		return;
ADDRGP4 $785
JUMPV
LABELV $824
line 1275
;1273:	}
;1274:
;1275:	if ( !strcmp( cmd, "print" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $829
ARGP4
ADDRLP4 180
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 0
NEI4 $827
line 1277
;1276:		char strEd[MAX_STRIPED_SV_STRING];
;1277:		CG_CheckSVStripEdRef(strEd, CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 1208
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 184
ARGP4
ADDRLP4 1208
INDIRP4
ARGP4
ADDRGP4 CG_CheckSVStripEdRef
CALLV
pop
line 1278
;1278:		CG_Printf( "%s", strEd );
ADDRGP4 $559
ARGP4
ADDRLP4 184
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1279
;1279:		return;
ADDRGP4 $785
JUMPV
LABELV $827
line 1282
;1280:	}
;1281:
;1282:	if ( !strcmp( cmd, "chat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $832
ARGP4
ADDRLP4 184
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 184
INDIRI4
CNSTI4 0
NEI4 $830
line 1283
;1283:		if ( !cg_teamChatsOnly.integer ) {
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $785
line 1284
;1284:			trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+71064+708
INDIRI4
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 1285
;1285:			Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CNSTI4 1
ARGI4
ADDRLP4 188
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 4
ARGP4
ADDRLP4 188
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1286
;1286:			CG_RemoveChatEscapeChar( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_RemoveChatEscapeChar
CALLV
pop
line 1287
;1287:			CG_Printf( "%s\n", text );
ADDRGP4 $667
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1288
;1288:		}
line 1289
;1289:		return;
ADDRGP4 $785
JUMPV
LABELV $830
line 1292
;1290:	}
;1291:
;1292:	if ( !strcmp( cmd, "tchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $840
ARGP4
ADDRLP4 188
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 188
INDIRI4
CNSTI4 0
NEI4 $838
line 1293
;1293:		trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+71064+708
INDIRI4
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 1294
;1294:		Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CNSTI4 1
ARGI4
ADDRLP4 192
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 4
ARGP4
ADDRLP4 192
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1295
;1295:		CG_RemoveChatEscapeChar( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_RemoveChatEscapeChar
CALLV
pop
line 1296
;1296:		CG_AddToTeamChat( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_AddToTeamChat
CALLV
pop
line 1297
;1297:		CG_Printf( "%s\n", text );
ADDRGP4 $667
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1298
;1298:		return;
ADDRGP4 $785
JUMPV
LABELV $838
line 1300
;1299:	}
;1300:	if ( !strcmp( cmd, "vchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $845
ARGP4
ADDRLP4 192
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 192
INDIRI4
CNSTI4 0
NEI4 $843
line 1301
;1301:		CG_VoiceChat( SAY_ALL );
CNSTI4 0
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1302
;1302:		return;
ADDRGP4 $785
JUMPV
LABELV $843
line 1305
;1303:	}
;1304:
;1305:	if ( !strcmp( cmd, "vtchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $848
ARGP4
ADDRLP4 196
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 196
INDIRI4
CNSTI4 0
NEI4 $846
line 1306
;1306:		CG_VoiceChat( SAY_TEAM );
CNSTI4 1
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1307
;1307:		return;
ADDRGP4 $785
JUMPV
LABELV $846
line 1310
;1308:	}
;1309:
;1310:	if ( !strcmp( cmd, "vtell" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $851
ARGP4
ADDRLP4 200
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 200
INDIRI4
CNSTI4 0
NEI4 $849
line 1311
;1311:		CG_VoiceChat( SAY_TELL );
CNSTI4 2
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1312
;1312:		return;
ADDRGP4 $785
JUMPV
LABELV $849
line 1315
;1313:	}
;1314:
;1315:	if ( !strcmp( cmd, "scores" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $854
ARGP4
ADDRLP4 204
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 204
INDIRI4
CNSTI4 0
NEI4 $852
line 1316
;1316:		CG_ParseScores();
ADDRGP4 CG_ParseScores
CALLV
pop
line 1317
;1317:		return;
ADDRGP4 $785
JUMPV
LABELV $852
line 1320
;1318:	}
;1319:
;1320:	if ( !strcmp( cmd, "tinfo" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $857
ARGP4
ADDRLP4 208
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 208
INDIRI4
CNSTI4 0
NEI4 $855
line 1321
;1321:		CG_ParseTeamInfo();
ADDRGP4 CG_ParseTeamInfo
CALLV
pop
line 1322
;1322:		return;
ADDRGP4 $785
JUMPV
LABELV $855
line 1325
;1323:	}
;1324:
;1325:	if ( !strcmp( cmd, "map_restart" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $860
ARGP4
ADDRLP4 212
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 212
INDIRI4
CNSTI4 0
NEI4 $858
line 1326
;1326:		CG_MapRestart();
ADDRGP4 CG_MapRestart
CALLV
pop
line 1327
;1327:		return;
ADDRGP4 $785
JUMPV
LABELV $858
line 1330
;1328:	}
;1329:
;1330:  if ( Q_stricmp (cmd, "remapShader") == 0 ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $863
ARGP4
ADDRLP4 216
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 216
INDIRI4
CNSTI4 0
NEI4 $861
line 1331
;1331:		if (trap_Argc() == 4) {
ADDRLP4 220
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 220
INDIRI4
CNSTI4 4
NEI4 $864
line 1332
;1332:			trap_R_RemapShader(CG_Argv(1), CG_Argv(2), CG_Argv(3));
CNSTI4 1
ARGI4
ADDRLP4 224
ADDRGP4 CG_Argv
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 228
ADDRGP4 CG_Argv
CALLP4
ASGNP4
CNSTI4 3
ARGI4
ADDRLP4 232
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 224
INDIRP4
ARGP4
ADDRLP4 228
INDIRP4
ARGP4
ADDRLP4 232
INDIRP4
ARGP4
ADDRGP4 trap_R_RemapShader
CALLV
pop
line 1333
;1333:		}
LABELV $864
line 1334
;1334:	}
LABELV $861
line 1337
;1335:
;1336:	// loaddeferred can be both a servercmd and a consolecmd
;1337:	if ( !strcmp( cmd, "loaddefered" ) ) {	// FIXME: spelled wrong, but not changing for demo
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $868
ARGP4
ADDRLP4 220
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 220
INDIRI4
CNSTI4 0
NEI4 $866
line 1338
;1338:		CG_LoadDeferredPlayers();
ADDRGP4 CG_LoadDeferredPlayers
CALLV
pop
line 1339
;1339:		return;
ADDRGP4 $785
JUMPV
LABELV $866
line 1344
;1340:	}
;1341:
;1342:	// clientLevelShot is sent before taking a special screenshot for
;1343:	// the menu system during development
;1344:	if ( !strcmp( cmd, "clientLevelShot" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $871
ARGP4
ADDRLP4 224
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 224
INDIRI4
CNSTI4 0
NEI4 $869
line 1345
;1345:		cg.levelShot = qtrue;
ADDRGP4 cg+12
CNSTI4 1
ASGNI4
line 1346
;1346:		return;
ADDRGP4 $785
JUMPV
LABELV $869
line 1351
;1347:	}
;1348:
;1349:   // adnan
;1350:   // tie fighter vehicles
;1351:   if (Q_stricmp(cmd, "vehicleSpawnCG") == 0) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $875
ARGP4
ADDRLP4 228
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 228
INDIRI4
CNSTI4 0
NEI4 $873
line 1352
;1352:      Cmd_SpawnVehicle_f();
ADDRGP4 Cmd_SpawnVehicle_f
CALLI4
pop
line 1353
;1353:      return;
ADDRGP4 $785
JUMPV
LABELV $873
line 1356
;1354:   }
;1355:
;1356:	CG_Printf( "Unknown client game command: %s\n", cmd );
ADDRGP4 $876
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1357
;1357:}
LABELV $785
endproc CG_ServerCommand 1404 20
export CG_ExecuteNewServerCommands
proc CG_ExecuteNewServerCommands 12 4
line 1368
;1358:
;1359:
;1360:/*
;1361:====================
;1362:CG_ExecuteNewServerCommands
;1363:
;1364:Execute all of the server commands that were received along
;1365:with this this snapshot.
;1366:====================
;1367:*/
;1368:void CG_ExecuteNewServerCommands( int latestSequence ) {
ADDRGP4 $879
JUMPV
LABELV $878
line 1369
;1369:	while ( cgs.serverCommandSequence < latestSequence ) {
line 1370
;1370:		if ( trap_GetServerCommand( ++cgs.serverCommandSequence ) ) {
ADDRLP4 0
ADDRGP4 cgs+32948
ASGNP4
ADDRLP4 4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 4
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 8
ADDRGP4 trap_GetServerCommand
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $882
line 1371
;1371:			CG_ServerCommand();
ADDRGP4 CG_ServerCommand
CALLV
pop
line 1372
;1372:		}
LABELV $882
line 1373
;1373:	}
LABELV $879
line 1369
ADDRGP4 cgs+32948
INDIRI4
ADDRFP4 0
INDIRI4
LTI4 $878
line 1374
;1374:}
LABELV $877
endproc CG_ExecuteNewServerCommands 12 4
import Cmd_SpawnVehicle_f
bss
export voiceChatBuffer
align 4
LABELV voiceChatBuffer
skip 9984
export voiceChatLists
align 4
LABELV voiceChatLists
skip 2263616
import CG_LoadClientInfo
import CG_SetLightstyle
import CG_RunLightStyles
import CG_ClearLightStyles
import g2WeaponInstances
import CG_CheckPlayerG2Weapons
import CG_CopyG2WeaponInstance
import CG_ShutDownG2Weapons
import CG_InitG2Weapons
import CG_CreateBBRefEnts
import CG_SetGhoul2Info
import CG_Init_CGents
import CG_Init_CG
import trap_G2API_SetNewOrigin
import trap_G2API_SetSurfaceOnOff
import trap_G2API_SetRootSurface
import trap_G2API_SetBoneAnim
import trap_G2API_GetGLAName
import trap_G2API_SetBoneAngles
import trap_G2API_CleanGhoul2Models
import trap_G2API_SetBoltInfo
import trap_G2API_AddBolt
import trap_G2API_RemoveGhoul2Model
import trap_G2API_HasGhoul2ModelOnIndex
import trap_G2API_DuplicateGhoul2Instance
import trap_G2API_CopySpecificGhoul2Model
import trap_G2API_CopyGhoul2Instance
import trap_G2API_GiveMeVectorFromMatrix
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 trap_G2API_CollisionDetect
import FX_ForceDrained
import FX_TieLaserAltFireThink
import FX_TieLaserWeaponHitPlayer
import FX_TieLaserWeaponHitWall
import FX_TieLaserProjectileThink
import FX_BlasterWeaponHitPlayer
import FX_BlasterWeaponHitWall
import FX_BlasterAltFireThink
import FX_BlasterProjectileThink
import FX_BryarAltHitPlayer
import FX_BryarHitPlayer
import FX_BryarAltHitWall
import FX_BryarHitWall
import CG_Spark
import FX_TurretHitPlayer
import FX_TurretHitWall
import FX_TurretProjectileThink
import CG_NewParticleArea
import initparticles
import CG_GetStripEdString
import CG_ParticleExplosion
import CG_ParticleMisc
import CG_ParticleDust
import CG_ParticleSparks
import CG_ParticleBulletDebris
import CG_ParticleSnowFlurry
import CG_AddParticleShrapnel
import CG_ParticleSmoke
import CG_ParticleSnow
import CG_AddParticles
import CG_ClearParticles
import trap_ROFF_Purge_Ent
import trap_ROFF_Play
import trap_ROFF_Cache
import trap_ROFF_UpdateEntities
import trap_ROFF_Clean
import trap_CG_RegisterSharedMemory
import trap_SP_GetStringTextString
import trap_SP_Print
import trap_FX_AddSprite
import trap_FX_AddPrimitive
import trap_FX_AddBezier
import trap_FX_AddPoly
import trap_FX_AdjustTime
import trap_FX_FreeSystem
import trap_FX_InitSystem
import trap_FX_AddScheduledEffects
import trap_FX_PlayBoltedEffectID
import trap_FX_PlayEntityEffectID
import trap_FX_PlayEffectID
import trap_FX_PlaySimpleEffectID
import trap_FX_PlayEntityEffect
import trap_FX_PlayEffect
import trap_FX_PlaySimpleEffect
import trap_FX_RegisterEffect
import trap_R_inPVS
import trap_GetEntityToken
import trap_getCameraInfo
import trap_startCamera
import trap_loadCamera
import trap_SnapVector
import trap_CIN_SetExtents
import trap_CIN_DrawCinematic
import trap_CIN_RunCinematic
import trap_CIN_StopCinematic
import trap_CIN_PlayCinematic
import BG_CycleForce
import BG_ProperForceIndex
import BG_CycleInven
import trap_Key_GetKey
import trap_Key_SetCatcher
import trap_Key_GetCatcher
import trap_Key_IsDown
import trap_MemoryRemaining
import testPrintFloat
import testPrintInt
import trap_OpenUIMenu
import trap_SetClientTurnExtent
import trap_SetClientForceAngle
import trap_SetUserCmdValue
import trap_GetUserCmd
import trap_GetCurrentCmdNumber
import trap_GetServerCommand
import trap_GetSnapshot
import trap_GetCurrentSnapshotNumber
import trap_GetGameState
import trap_GetGlconfig
import trap_FX_AddLine
import trap_R_GetBModelVerts
import trap_R_SetLightStyle
import trap_R_GetLightStyle
import trap_R_RemapShader
import trap_R_DrawRotatePic2
import trap_R_DrawRotatePic
import trap_R_LerpTag
import trap_R_ModelBounds
import trap_R_DrawStretchPic
import trap_R_SetColor
import trap_R_RenderScene
import trap_R_LightForPoint
import trap_R_AddLightToScene
import trap_R_AddPolysToScene
import trap_R_AddPolyToScene
import trap_R_AddRefEntityToScene
import trap_R_ClearScene
import trap_AnyLanguage_ReadCharFromString
import trap_Language_UsesSpaces
import trap_Language_IsAsian
import trap_R_Font_DrawString
import trap_R_Font_HeightPixels
import trap_R_Font_StrLenChars
import trap_R_Font_StrLenPixels
import trap_R_RegisterFont
import trap_R_RegisterShaderNoMip
import trap_R_RegisterShader
import trap_R_RegisterSkin
import trap_R_RegisterModel
import trap_R_LoadWorldMap
import trap_S_StopBackgroundTrack
import trap_S_StartBackgroundTrack
import trap_S_RegisterSound
import trap_S_Respatialize
import trap_S_UpdateEntityPosition
import trap_S_AddRealLoopingSound
import trap_S_AddLoopingSound
import trap_S_ClearLoopingSounds
import trap_S_StartLocalSound
import trap_S_StopLoopingSound
import trap_S_StartSound
import trap_S_MuteSound
import trap_CM_MarkFragments
import trap_CM_TransformedBoxTrace
import trap_CM_BoxTrace
import trap_CM_TransformedPointContents
import trap_CM_PointContents
import trap_CM_TempBoxModel
import trap_CM_InlineModel
import trap_CM_NumInlineModels
import trap_CM_LoadMap
import trap_UpdateScreen
import trap_SendClientCommand
import trap_AddCommand
import trap_SendConsoleCommand
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_Cvar_VariableStringBuffer
import trap_Cvar_Set
import trap_Cvar_Update
import trap_Cvar_Register
import trap_Milliseconds
import trap_Error
import trap_Print
import CG_SagaObjectiveCompleted
import CG_SagaRoundOver
import CG_InitSagaMode
import CG_CheckChangedPredictableEvents
import CG_TransitionPlayerState
import CG_Respawn
import CG_IsMindTricked
import CG_InitConsoleCommands
import CG_ConsoleCommand
import CG_DrawOldTourneyScoreboard
import CG_DrawOldScoreboard
import CG_DrawInformation
import CG_LoadingClient
import CG_LoadingItem
import CG_LoadingString
import CG_ProcessSnapshots
import CG_InitGlass
import CG_TestLine
import CG_SurfaceExplosion
import CG_MakeExplosion
import CG_Bleed
import CG_ScorePlum
import CG_CreateDebris
import CG_GlassShatter
import CG_BubbleTrail
import CG_SmokePuff
import CG_AddLocalEntities
import CG_AllocLocalEntity
import CG_InitLocalEntities
import CG_ImpactMark
import CG_AddMarks
import CG_InitMarkPolys
import CG_OutOfAmmoChange
import CG_DrawIconBackground
import CG_DrawWeaponSelect
import CG_AddPlayerWeapon
import CG_AddViewWeapon
import CG_MissileHitPlayer
import CG_MissileHitWall
import CG_FireWeapon
import CG_RegisterItemVisuals
import CG_RegisterWeapon
import CG_Weapon_f
import CG_PrevWeapon_f
import CG_NextWeapon_f
import CG_GetClientWeaponMuzzleBoltPoint
import TurretClientRun
import ScaleModelAxis
import CG_PositionRotatedEntityOnTag
import CG_PositionEntityOnTag
import CG_AdjustPositionForMover
import CG_Beam
import CG_ManualEntityRender
import CG_AddPacketEntities
import CG_SetEntitySoundPosition
import CG_ReattachLimb
import CG_PainEvent
import CG_EntityEvent
import CG_PlaceString
import CG_CheckEvents
import CG_LoadDeferredPlayers
import CG_PredictPlayerState
import CG_Trace
import CG_PointContents
import CG_BuildSolidList
import CG_PlayerShieldHit
import CG_CustomSound
import CG_NewClientInfo
import CG_AddRefEntityWithPowerups
import CG_ResetPlayerEntity
import CG_Player
import CG_StatusHandle
import CG_OtherTeamHasFlag
import CG_YourTeamHasFlag
import CG_GameTypeString
import CG_CheckOrderPending
import CG_Text_PaintChar
import CG_Draw3DModel
import CG_GetKillerText
import CG_GetGameStatusText
import CG_GetTeamColor
import CG_InitTeamChat
import CG_SetPrintString
import CG_ShowResponseHead
import CG_DeferMenuScript
import CG_RunMenuScript
import CG_OwnerDrawVisible
import CG_GetValue
import CG_SelectNextPlayer
import CG_SelectPrevPlayer
import CG_Text_Height
import CG_Text_Width
import CG_Text_Paint
import CG_OwnerDraw
import CG_DrawTeamBackground
import CG_DrawFlagModel
import CG_DrawActive
import CG_DrawHead
import CG_CenterPrint
import CG_AddLagometerSnapshotInfo
import CG_AddLagometerFrameInfo
import teamChat2
import teamChat1
import systemChat
import drawTeamOverlayModificationCount
import numSortedTeamPlayers
import sortedTeamPlayers
import CG_DrawTopBottom
import CG_DrawSides
import CG_DrawRect
import UI_DrawScaledProportionalString
import UI_DrawProportionalString
import CG_GetColorForHealth
import CG_ColorForHealth
import CG_TileClear
import CG_TeamColor
import CG_FadeColor
import CG_DrawStrlen
import CG_DrawSmallStringColor
import CG_DrawSmallString
import CG_DrawBigStringColor
import CG_DrawBigString
import CG_DrawStringExt
import CG_DrawNumField
import CG_DrawString
import CG_DrawRotatePic2
import CG_DrawRotatePic
import CG_DrawPic
import CG_FillRect
import CG_TestModelAnimate_f
import CG_TestModelSetAnglespost_f
import CG_TestModelSetAnglespre_f
import CG_ListModelBones_f
import CG_ListModelSurfaces_f
import CG_TestModelSurfaceOnOff_f
import CG_TestG2Model_f
import CG_DrawActiveFrame
import CG_AddBufferedSound
import CG_ZoomUp_f
import CG_ZoomDown_f
import CG_TestModelPrevSkin_f
import CG_TestModelNextSkin_f
import CG_TestModelPrevFrame_f
import CG_TestModelNextFrame_f
import CG_TestGun_f
import CG_TestModel_f
import CG_PrevForcePower_f
import CG_NextForcePower_f
import CG_PrevInventory_f
import CG_NextInventory_f
import CG_BuildSpectatorString
import CG_SetScoreSelection
import CG_RankRunFrame
import CG_EventHandling
import CG_MouseEvent
import CG_KeyEvent
import CG_LoadMenus
import CG_LastAttacker
import CG_CrosshairPlayer
import CG_UpdateCvars
import CG_StartMusic
import CG_Error
import CG_Printf
import CG_Argv
import CG_ConfigString
import cg_followCamTransition
import cg_followCam
import cg_roll
import cg_throttle
import cg_debugBB
import ui_myteam
import cg_recordSPDemoName
import cg_recordSPDemo
import cg_singlePlayerActive
import cg_enableBreath
import cg_enableDust
import cg_singlePlayer
import cg_currentSelectedPlayerName
import cg_currentSelectedPlayer
import cg_blueTeamName
import cg_redTeamName
import cg_trueLightning
import cg_noProjectileTrail
import cg_noTaunt
import cg_bigFont
import cg_smallFont
import cg_cameraMode
import cg_timescale
import cg_timescaleFadeSpeed
import cg_timescaleFadeEnd
import cg_cameraOrbitDelay
import cg_cameraOrbit
import pmove_msec
import pmove_fixed
import cg_smoothClients
import cg_hudFiles
import cg_scorePlum
import cg_noVoiceText
import cg_noVoiceChats
import cg_teamChatsOnly
import cg_drawFriend
import cg_deferPlayers
import cg_predictItems
import cg_blood
import cg_paused
import cg_buildScript
import cg_forceModel
import cg_stats
import cg_teamChatHeight
import cg_teamChatTime
import cg_synchronousClients
import cg_drawEnemyInfo
import cg_lagometer
import cg_stereoSeparation
import cg_thirdPersonHorzOffset
import cg_thirdPersonAlpha
import cg_thirdPersonTargetDamp
import cg_thirdPersonCameraDamp
import cg_thirdPersonVertOffset
import cg_thirdPersonPitchOffset
import cg_thirdPersonAngle
import cg_thirdPersonRange
import cg_thirdPerson
import cg_dismember
import cg_animBlend
import cg_auraShell
import cg_speedTrail
import cg_duelHeadAngles
import cg_saberTrail
import cg_saberContact
import cg_saberDynamicMarkTime
import cg_saberDynamicMarks
import cg_fpls
import cg_saberModelTraceEffect
import cg_oldPainSounds
import cg_swingAngles
import cg_zoomFov
import cg_fov
import cg_simpleItems
import cg_ignore
import cg_autoswitch
import cg_tracerLength
import cg_tracerWidth
import cg_tracerChance
import cg_viewsize
import cg_drawGun
import cg_gun_z
import cg_gun_y
import cg_gun_x
import cg_gun_frame
import cg_addMarks
import cg_footsteps
import cg_showmiss
import cg_noPlayerAnims
import cg_nopredict
import cg_errorDecay
import cg_debugEvents
import cg_debugPosition
import cg_debugAnim
import cg_animSpeed
import cg_draw2D
import cg_drawStatus
import cg_crosshairHealth
import cg_crosshairSize
import cg_crosshairY
import cg_crosshairX
import cg_teamOverlayUserinfo
import cg_drawTeamOverlay
import cg_drawRewards
import cg_dynamicCrosshair
import cg_drawScores
import cg_drawCrosshairNames
import cg_drawCrosshair
import cg_drawAmmoWarning
import cg_drawIcons
import cg_draw3dIcons
import cg_drawSnapshot
import cg_drawFPS
import cg_drawTimer
import cg_shadows
import cg_bobroll
import cg_bobpitch
import cg_bobup
import cg_runroll
import cg_runpitch
import cg_centertime
import cg_vehicleTemplates
import cg_vehicles
import VehicleInfo_GetNameForMovementType
import VehicleInfo_GetBitForMovementType
import VehicleInfo_GetNameForWeapon
import VehicleInfo_GetIndexForWeapon
import VehicleInfo_GetBitForWeapon
import VehicleInfo_GetBitForVehicleType
import Vehicle_CopyVehicle
import Vehicle_InitVehicle
import cg_markPolys
import cg_items
import cg_weapons
import cg_entities
import cg
import cgs
import CGCam_SetMusicMult
import CGCam_Shake
import cgScreenEffects
import ammoTicPos
import forceTicPos
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 Com_Printf
import Com_Error
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 $876
byte 1 85
byte 1 110
byte 1 107
byte 1 110
byte 1 111
byte 1 119
byte 1 110
byte 1 32
byte 1 99
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 32
byte 1 103
byte 1 97
byte 1 109
byte 1 101
byte 1 32
byte 1 99
byte 1 111
byte 1 109
byte 1 109
byte 1 97
byte 1 110
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $875
byte 1 118
byte 1 101
byte 1 104
byte 1 105
byte 1 99
byte 1 108
byte 1 101
byte 1 83
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 67
byte 1 71
byte 1 0
align 1
LABELV $871
byte 1 99
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 76
byte 1 101
byte 1 118
byte 1 101
byte 1 108
byte 1 83
byte 1 104
byte 1 111
byte 1 116
byte 1 0
align 1
LABELV $868
byte 1 108
byte 1 111
byte 1 97
byte 1 100
byte 1 100
byte 1 101
byte 1 102
byte 1 101
byte 1 114
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $863
byte 1 114
byte 1 101
byte 1 109
byte 1 97
byte 1 112
byte 1 83
byte 1 104
byte 1 97
byte 1 100
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $860
byte 1 109
byte 1 97
byte 1 112
byte 1 95
byte 1 114
byte 1 101
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 0
align 1
LABELV $857
byte 1 116
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 0
align 1
LABELV $854
byte 1 115
byte 1 99
byte 1 111
byte 1 114
byte 1 101
byte 1 115
byte 1 0
align 1
LABELV $851
byte 1 118
byte 1 116
byte 1 101
byte 1 108
byte 1 108
byte 1 0
align 1
LABELV $848
byte 1 118
byte 1 116
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $845
byte 1 118
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $840
byte 1 116
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $832
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $829
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $826
byte 1 99
byte 1 115
byte 1 0
align 1
LABELV $823
byte 1 99
byte 1 112
byte 1 0
align 1
LABELV $808
byte 1 107
byte 1 103
byte 1 50
byte 1 0
align 1
LABELV $803
byte 1 117
byte 1 105
byte 1 95
byte 1 109
byte 1 121
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 0
align 1
LABELV $802
byte 1 117
byte 1 105
byte 1 95
byte 1 114
byte 1 97
byte 1 110
byte 1 107
byte 1 67
byte 1 104
byte 1 97
byte 1 110
byte 1 103
byte 1 101
byte 1 0
align 1
LABELV $799
byte 1 110
byte 1 102
byte 1 114
byte 1 0
align 1
LABELV $796
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 34
byte 1 37
byte 1 115
byte 1 34
byte 1 0
align 1
LABELV $791
byte 1 32
byte 1 34
byte 1 37
byte 1 115
byte 1 34
byte 1 0
align 1
LABELV $790
byte 1 115
byte 1 112
byte 1 100
byte 1 0
align 1
LABELV $741
byte 1 112
byte 1 114
byte 1 97
byte 1 105
byte 1 115
byte 1 101
byte 1 0
align 1
LABELV $740
byte 1 107
byte 1 105
byte 1 108
byte 1 108
byte 1 95
byte 1 103
byte 1 97
byte 1 117
byte 1 110
byte 1 116
byte 1 108
byte 1 101
byte 1 116
byte 1 0
align 1
LABELV $739
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 95
byte 1 105
byte 1 110
byte 1 115
byte 1 117
byte 1 108
byte 1 116
byte 1 0
align 1
LABELV $738
byte 1 116
byte 1 97
byte 1 117
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $737
byte 1 107
byte 1 105
byte 1 108
byte 1 108
byte 1 95
byte 1 105
byte 1 110
byte 1 115
byte 1 117
byte 1 108
byte 1 116
byte 1 0
align 1
LABELV $730
byte 1 37
byte 1 115
byte 1 58
byte 1 32
byte 1 37
byte 1 99
byte 1 37
byte 1 99
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $727
byte 1 40
byte 1 37
byte 1 115
byte 1 41
byte 1 58
byte 1 32
byte 1 37
byte 1 99
byte 1 37
byte 1 99
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $722
byte 1 91
byte 1 37
byte 1 115
byte 1 93
byte 1 58
byte 1 32
byte 1 37
byte 1 99
byte 1 37
byte 1 99
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $667
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $619
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 32
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 32
byte 1 109
byte 1 101
byte 1 109
byte 1 111
byte 1 114
byte 1 121
byte 1 32
byte 1 115
byte 1 105
byte 1 122
byte 1 101
byte 1 32
byte 1 61
byte 1 32
byte 1 37
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $617
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 109
byte 1 97
byte 1 108
byte 1 101
byte 1 53
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $615
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 109
byte 1 97
byte 1 108
byte 1 101
byte 1 52
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $613
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 109
byte 1 97
byte 1 108
byte 1 101
byte 1 51
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $611
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 109
byte 1 97
byte 1 108
byte 1 101
byte 1 50
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $609
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 109
byte 1 97
byte 1 108
byte 1 101
byte 1 49
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $607
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 102
byte 1 101
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 51
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $605
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 102
byte 1 101
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 50
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $604
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 102
byte 1 101
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 49
byte 1 46
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 0
align 1
LABELV $595
byte 1 125
byte 1 0
align 1
LABELV $586
byte 1 94
byte 1 49
byte 1 101
byte 1 120
byte 1 112
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 32
byte 1 123
byte 1 32
byte 1 102
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 105
byte 1 110
byte 1 32
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 32
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 32
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 $585
byte 1 123
byte 1 0
align 1
LABELV $576
byte 1 94
byte 1 49
byte 1 101
byte 1 120
byte 1 112
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 32
byte 1 103
byte 1 101
byte 1 110
byte 1 100
byte 1 101
byte 1 114
byte 1 32
byte 1 110
byte 1 111
byte 1 116
byte 1 32
byte 1 102
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 32
byte 1 105
byte 1 110
byte 1 32
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 32
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 32
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 $575
byte 1 110
byte 1 101
byte 1 117
byte 1 116
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $572
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $569
byte 1 102
byte 1 101
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $559
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $558
byte 1 94
byte 1 49
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 32
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 32
byte 1 102
byte 1 105
byte 1 108
byte 1 101
byte 1 32
byte 1 116
byte 1 111
byte 1 111
byte 1 32
byte 1 108
byte 1 97
byte 1 114
byte 1 103
byte 1 101
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 105
byte 1 115
byte 1 32
byte 1 37
byte 1 105
byte 1 44
byte 1 32
byte 1 109
byte 1 97
byte 1 120
byte 1 32
byte 1 97
byte 1 108
byte 1 108
byte 1 111
byte 1 119
byte 1 101
byte 1 100
byte 1 32
byte 1 105
byte 1 115
byte 1 32
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $555
byte 1 94
byte 1 49
byte 1 118
byte 1 111
byte 1 105
byte 1 99
byte 1 101
byte 1 32
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 32
byte 1 102
byte 1 105
byte 1 108
byte 1 101
byte 1 32
byte 1 110
byte 1 111
byte 1 116
byte 1 32
byte 1 102
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $548
byte 1 48
byte 1 0
align 1
LABELV $547
byte 1 99
byte 1 103
byte 1 95
byte 1 116
byte 1 104
byte 1 105
byte 1 114
byte 1 100
byte 1 80
byte 1 101
byte 1 114
byte 1 115
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $545
byte 1 115
byte 1 101
byte 1 116
byte 1 32
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 99
byte 1 108
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 115
byte 1 32
byte 1 49
byte 1 32
byte 1 59
byte 1 32
byte 1 114
byte 1 101
byte 1 99
byte 1 111
byte 1 114
byte 1 100
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 10
byte 1 0
align 1
LABELV $538
byte 1 117
byte 1 105
byte 1 95
byte 1 109
byte 1 97
byte 1 116
byte 1 99
byte 1 104
byte 1 83
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 84
byte 1 105
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $534
byte 1 66
byte 1 69
byte 1 71
byte 1 73
byte 1 78
byte 1 95
byte 1 68
byte 1 85
byte 1 69
byte 1 76
byte 1 0
align 1
LABELV $533
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 $522
byte 1 67
byte 1 71
byte 1 95
byte 1 77
byte 1 97
byte 1 112
byte 1 82
byte 1 101
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 10
byte 1 0
align 1
LABELV $326
byte 1 64
byte 1 0
align 1
LABELV $323
byte 1 58
byte 1 0
align 1
LABELV $320
byte 1 61
byte 1 0
align 1
LABELV $287
byte 1 98
byte 1 111
byte 1 116
byte 1 95
byte 1 109
byte 1 105
byte 1 110
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 115
byte 1 0
align 1
LABELV $286
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
byte 1 95
byte 1 98
byte 1 111
byte 1 116
byte 1 109
byte 1 105
byte 1 110
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 115
byte 1 0
align 1
LABELV $285
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 $284
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
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 $283
byte 1 115
byte 1 118
byte 1 95
byte 1 104
byte 1 111
byte 1 115
byte 1 116
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $282
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
byte 1 95
byte 1 104
byte 1 111
byte 1 115
byte 1 116
byte 1 110
byte 1 97
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $280
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
byte 1 95
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 $278
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
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 $276
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
byte 1 95
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 $274
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
byte 1 95
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 $272
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
byte 1 95
byte 1 100
byte 1 117
byte 1 101
byte 1 108
byte 1 108
byte 1 105
byte 1 109
byte 1 105
byte 1 116
byte 1 0
align 1
LABELV $270
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
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 $268
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
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 $265
byte 1 103
byte 1 95
byte 1 98
byte 1 108
byte 1 117
byte 1 101
byte 1 84
byte 1 101
byte 1 97
byte 1 109
byte 1 0
align 1
LABELV $261
byte 1 103
byte 1 95
byte 1 114
byte 1 101
byte 1 100
byte 1 84
byte 1 101
byte 1 97
byte 1 109
byte 1 0
align 1
LABELV $259
byte 1 109
byte 1 97
byte 1 112
byte 1 115
byte 1 47
byte 1 37
byte 1 115
byte 1 46
byte 1 98
byte 1 115
byte 1 112
byte 1 0
align 1
LABELV $256
byte 1 117
byte 1 105
byte 1 95
byte 1 97
byte 1 98
byte 1 111
byte 1 117
byte 1 116
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 $255
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 $254
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 $252
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 $250
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 $248
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 $246
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 $244
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 115
byte 1 0
align 1
LABELV $242
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 $240
byte 1 102
byte 1 100
byte 1 105
byte 1 115
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $238
byte 1 119
byte 1 100
byte 1 105
byte 1 115
byte 1 97
byte 1 98
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $236
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 $234
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 $231
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $230
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 $141
byte 1 102
byte 1 111
byte 1 108
byte 1 108
byte 1 111
byte 1 119
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 99
byte 1 97
byte 1 114
byte 1 114
byte 1 105
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $140
byte 1 114
byte 1 101
byte 1 116
byte 1 117
byte 1 114
byte 1 110
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 0
align 1
LABELV $139
byte 1 102
byte 1 111
byte 1 108
byte 1 108
byte 1 111
byte 1 119
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $138
byte 1 99
byte 1 97
byte 1 109
byte 1 112
byte 1 0
align 1
LABELV $137
byte 1 112
byte 1 97
byte 1 116
byte 1 114
byte 1 111
byte 1 108
byte 1 0
align 1
LABELV $136
byte 1 100
byte 1 101
byte 1 102
byte 1 101
byte 1 110
byte 1 100
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 0
align 1
LABELV $135
byte 1 100
byte 1 101
byte 1 102
byte 1 101
byte 1 110
byte 1 100
byte 1 0
align 1
LABELV $134
byte 1 111
byte 1 102
byte 1 102
byte 1 101
byte 1 110
byte 1 115
byte 1 101
byte 1 0
align 1
LABELV $133
byte 1 103
byte 1 101
byte 1 116
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 0
