lit
align 4
LABELV validOrders
address $71
byte 4 1
address $72
byte 4 1
address $73
byte 4 2
address $74
byte 4 2
address $75
byte 4 3
address $76
byte 4 7
address $77
byte 4 4
address $78
byte 4 5
address $79
byte 4 6
align 4
LABELV numValidOrders
byte 4 9
code
proc CG_ValidOrder 8 8
file "debug-x86-Linux-2.3/TA/cgame/cgame/cg_servercmds.c"
line 30
;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" // bk001205 - for Q3_ui as well
;9:
;10:typedef struct {
;11:	const char *order;
;12:	int taskNum;
;13:} orderTask_t;
;14:
;15:static const orderTask_t validOrders[] = {
;16:	{ VOICECHAT_GETFLAG,						TEAMTASK_OFFENSE },
;17:	{ VOICECHAT_OFFENSE,						TEAMTASK_OFFENSE },
;18:	{ VOICECHAT_DEFEND,							TEAMTASK_DEFENSE },
;19:	{ VOICECHAT_DEFENDFLAG,					TEAMTASK_DEFENSE },
;20:	{ VOICECHAT_PATROL,							TEAMTASK_PATROL },
;21:	{ VOICECHAT_CAMP,								TEAMTASK_CAMP },
;22:	{ VOICECHAT_FOLLOWME,						TEAMTASK_FOLLOW },
;23:	{ VOICECHAT_RETURNFLAG,					TEAMTASK_RETRIEVE },
;24:	{ VOICECHAT_FOLLOWFLAGCARRIER,	TEAMTASK_ESCORT }
;25:};
;26:
;27:static const int numValidOrders = sizeof(validOrders) / sizeof(orderTask_t);
;28:
;29:#ifdef MISSIONPACK // bk001204
;30:static int CG_ValidOrder(const char *p) {
line 32
;31:	int i;
;32:	for (i = 0; i < numValidOrders; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $84
JUMPV
LABELV $81
line 33
;33:		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 $85
line 34
;34:			return validOrders[i].taskNum;
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ADDRGP4 validOrders+4
ADDP4
INDIRI4
RETI4
ADDRGP4 $80
JUMPV
LABELV $85
line 36
;35:		}
;36:	}
LABELV $82
line 32
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $84
ADDRLP4 0
INDIRI4
ADDRGP4 numValidOrders
INDIRI4
LTI4 $81
line 37
;37:	return -1;
CNSTI4 -1
RETI4
LABELV $80
endproc CG_ValidOrder 8 8
proc CG_ParseScores 212 12
line 47
;38:}
;39:#endif
;40:
;41:/*
;42:=================
;43:CG_ParseScores
;44:
;45:=================
;46:*/
;47:static void CG_ParseScores( void ) {
line 50
;48:	int		i, powerups;
;49:
;50:	cg.numScores = 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 cg+110464
ADDRLP4 12
INDIRI4
ASGNI4
line 51
;51:	if ( cg.numScores > MAX_CLIENTS ) {
ADDRGP4 cg+110464
INDIRI4
CNSTI4 64
LEI4 $90
line 52
;52:		cg.numScores = MAX_CLIENTS;
ADDRGP4 cg+110464
CNSTI4 64
ASGNI4
line 53
;53:	}
LABELV $90
line 55
;54:
;55:	cg.teamScores[0] = atoi( CG_Argv( 2 ) );
CNSTI4 2
ARGI4
ADDRLP4 16
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+110472
ADDRLP4 20
INDIRI4
ASGNI4
line 56
;56:	cg.teamScores[1] = atoi( CG_Argv( 3 ) );
CNSTI4 3
ARGI4
ADDRLP4 24
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+110472+4
ADDRLP4 28
INDIRI4
ASGNI4
line 58
;57:
;58:	memset( cg.scores, 0, sizeof( cg.scores ) );
ADDRGP4 cg+110480
ARGP4
CNSTI4 0
ARGI4
CNSTI4 3840
ARGI4
ADDRGP4 memset
CALLP4
pop
line 59
;59:	for ( i = 0 ; i < cg.numScores ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $102
JUMPV
LABELV $99
line 61
;60:		//
;61:		cg.scores[i].client = atoi( CG_Argv( i * 14 + 4 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 4
ADDI4
ARGI4
ADDRLP4 36
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 36
INDIRP4
ARGP4
ADDRLP4 40
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 62
;62:		cg.scores[i].score = atoi( CG_Argv( i * 14 + 5 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 5
ADDI4
ARGI4
ADDRLP4 48
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+4
ADDP4
ADDRLP4 52
INDIRI4
ASGNI4
line 63
;63:		cg.scores[i].ping = atoi( CG_Argv( i * 14 + 6 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 6
ADDI4
ARGI4
ADDRLP4 60
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 60
INDIRP4
ARGP4
ADDRLP4 64
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+8
ADDP4
ADDRLP4 64
INDIRI4
ASGNI4
line 64
;64:		cg.scores[i].time = atoi( CG_Argv( i * 14 + 7 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 7
ADDI4
ARGI4
ADDRLP4 72
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 72
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+12
ADDP4
ADDRLP4 76
INDIRI4
ASGNI4
line 65
;65:		cg.scores[i].scoreFlags = atoi( CG_Argv( i * 14 + 8 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 8
ADDI4
ARGI4
ADDRLP4 84
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+16
ADDP4
ADDRLP4 88
INDIRI4
ASGNI4
line 66
;66:		powerups = atoi( CG_Argv( i * 14 + 9 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 9
ADDI4
ARGI4
ADDRLP4 92
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 92
INDIRP4
ARGP4
ADDRLP4 96
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 96
INDIRI4
ASGNI4
line 67
;67:		cg.scores[i].accuracy = atoi(CG_Argv(i * 14 + 10));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 10
ADDI4
ARGI4
ADDRLP4 104
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 104
INDIRP4
ARGP4
ADDRLP4 108
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+24
ADDP4
ADDRLP4 108
INDIRI4
ASGNI4
line 68
;68:		cg.scores[i].impressiveCount = atoi(CG_Argv(i * 14 + 11));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 11
ADDI4
ARGI4
ADDRLP4 116
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 116
INDIRP4
ARGP4
ADDRLP4 120
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+28
ADDP4
ADDRLP4 120
INDIRI4
ASGNI4
line 69
;69:		cg.scores[i].excellentCount = atoi(CG_Argv(i * 14 + 12));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 12
ADDI4
ARGI4
ADDRLP4 128
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 128
INDIRP4
ARGP4
ADDRLP4 132
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+32
ADDP4
ADDRLP4 132
INDIRI4
ASGNI4
line 70
;70:		cg.scores[i].guantletCount = atoi(CG_Argv(i * 14 + 13));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 13
ADDI4
ARGI4
ADDRLP4 140
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 140
INDIRP4
ARGP4
ADDRLP4 144
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+36
ADDP4
ADDRLP4 144
INDIRI4
ASGNI4
line 71
;71:		cg.scores[i].defendCount = atoi(CG_Argv(i * 14 + 14));
ADDRLP4 148
CNSTI4 14
ASGNI4
ADDRLP4 148
INDIRI4
ADDRLP4 0
INDIRI4
MULI4
ADDRLP4 148
INDIRI4
ADDI4
ARGI4
ADDRLP4 156
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 156
INDIRP4
ARGP4
ADDRLP4 160
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+40
ADDP4
ADDRLP4 160
INDIRI4
ASGNI4
line 72
;72:		cg.scores[i].assistCount = atoi(CG_Argv(i * 14 + 15));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 15
ADDI4
ARGI4
ADDRLP4 168
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 168
INDIRP4
ARGP4
ADDRLP4 172
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+44
ADDP4
ADDRLP4 172
INDIRI4
ASGNI4
line 73
;73:		cg.scores[i].perfect = atoi(CG_Argv(i * 14 + 16));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 16
ADDI4
ARGI4
ADDRLP4 180
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 180
INDIRP4
ARGP4
ADDRLP4 184
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+52
ADDP4
ADDRLP4 184
INDIRI4
ASGNI4
line 74
;74:		cg.scores[i].captures = atoi(CG_Argv(i * 14 + 17));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 17
ADDI4
ARGI4
ADDRLP4 192
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 192
INDIRP4
ARGP4
ADDRLP4 196
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480+48
ADDP4
ADDRLP4 196
INDIRI4
ASGNI4
line 76
;75:
;76:		if ( cg.scores[i].client < 0 || cg.scores[i].client >= MAX_CLIENTS ) {
ADDRLP4 200
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 200
INDIRI4
ADDRGP4 cg+110480
ADDP4
INDIRI4
CNSTI4 0
LTI4 $133
ADDRLP4 200
INDIRI4
ADDRGP4 cg+110480
ADDP4
INDIRI4
CNSTI4 64
LTI4 $129
LABELV $133
line 77
;77:			cg.scores[i].client = 0;
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480
ADDP4
CNSTI4 0
ASGNI4
line 78
;78:		}
LABELV $129
line 79
;79:		cgs.clientinfo[ cg.scores[i].client ].score = cg.scores[i].score;
ADDRLP4 204
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
CNSTI4 1708
ADDRLP4 204
INDIRI4
ADDRGP4 cg+110480
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+40972+100
ADDP4
ADDRLP4 204
INDIRI4
ADDRGP4 cg+110480+4
ADDP4
INDIRI4
ASGNI4
line 80
;80:		cgs.clientinfo[ cg.scores[i].client ].powerups = powerups;
CNSTI4 1708
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+110480
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+40972+140
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 82
;81:
;82:		cg.scores[i].team = cgs.clientinfo[cg.scores[i].client].team;
ADDRLP4 208
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 208
INDIRI4
ADDRGP4 cg+110480+56
ADDP4
CNSTI4 1708
ADDRLP4 208
INDIRI4
ADDRGP4 cg+110480
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+40972+68
ADDP4
INDIRI4
ASGNI4
line 83
;83:	}
LABELV $100
line 59
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $102
ADDRLP4 0
INDIRI4
ADDRGP4 cg+110464
INDIRI4
LTI4 $99
line 85
;84:#ifdef MISSIONPACK
;85:	CG_SetScoreSelection(NULL);
CNSTP4 0
ARGP4
ADDRGP4 CG_SetScoreSelection
CALLV
pop
line 88
;86:#endif
;87:
;88:}
LABELV $88
endproc CG_ParseScores 212 12
proc CG_ParseTeamInfo 68 4
line 96
;89:
;90:/*
;91:=================
;92:CG_ParseTeamInfo
;93:
;94:=================
;95:*/
;96:static void CG_ParseTeamInfo( void ) {
line 100
;97:	int		i;
;98:	int		client;
;99:
;100:	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 102
;101:
;102:	for ( i = 0 ; i < numSortedTeamPlayers ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $152
JUMPV
LABELV $149
line 103
;103:		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 105
;104:
;105:		sortedTeamPlayers[i] = client;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 sortedTeamPlayers
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 107
;106:
;107:		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 1708
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+40972+104
ADDP4
ADDRLP4 28
INDIRI4
ASGNI4
line 108
;108:		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 1708
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+40972+108
ADDP4
ADDRLP4 36
INDIRI4
ASGNI4
line 109
;109:		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 1708
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+40972+112
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 110
;110:		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 1708
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+40972+116
ADDP4
ADDRLP4 56
INDIRI4
ASGNI4
line 111
;111:		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 1708
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+40972+140
ADDP4
ADDRLP4 64
INDIRI4
ASGNI4
line 112
;112:	}
LABELV $150
line 102
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $152
ADDRLP4 0
INDIRI4
ADDRGP4 numSortedTeamPlayers
INDIRI4
LTI4 $149
line 113
;113:}
LABELV $148
endproc CG_ParseTeamInfo 68 4
export CG_ParseServerinfo
proc CG_ParseServerinfo 84 16
line 124
;114:
;115:
;116:/*
;117:================
;118:CG_ParseServerinfo
;119:
;120:This is called explicitly when the gamestate is first received,
;121:and whenever the server updates any serverinfo flagged cvars
;122:================
;123:*/
;124:void CG_ParseServerinfo( void ) {
line 128
;125:	const char	*info;
;126:	char	*mapname;
;127:
;128:	info = CG_ConfigString( CS_SERVERINFO );
CNSTI4 0
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
ASGNP4
line 129
;129:	cgs.gametype = atoi( Info_ValueForKey( info, "g_gametype" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $165
ARGP4
ADDRLP4 12
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31456
ADDRLP4 16
INDIRI4
ASGNI4
line 130
;130:	trap_Cvar_Set("g_gametype", va("%i", cgs.gametype));
ADDRGP4 $166
ARGP4
ADDRGP4 cgs+31456
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $165
ARGP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 131
;131:	cgs.dmflags = atoi( Info_ValueForKey( info, "dmflags" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $169
ARGP4
ADDRLP4 24
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31460
ADDRLP4 28
INDIRI4
ASGNI4
line 132
;132:	cgs.teamflags = atoi( Info_ValueForKey( info, "teamflags" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $171
ARGP4
ADDRLP4 32
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31464
ADDRLP4 36
INDIRI4
ASGNI4
line 133
;133:	cgs.fraglimit = atoi( Info_ValueForKey( info, "fraglimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $173
ARGP4
ADDRLP4 40
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31468
ADDRLP4 44
INDIRI4
ASGNI4
line 134
;134:	cgs.capturelimit = atoi( Info_ValueForKey( info, "capturelimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $175
ARGP4
ADDRLP4 48
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31472
ADDRLP4 52
INDIRI4
ASGNI4
line 135
;135:	cgs.timelimit = atoi( Info_ValueForKey( info, "timelimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $177
ARGP4
ADDRLP4 56
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 56
INDIRP4
ARGP4
ADDRLP4 60
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31476
ADDRLP4 60
INDIRI4
ASGNI4
line 136
;136:	cgs.maxclients = atoi( Info_ValueForKey( info, "sv_maxclients" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $179
ARGP4
ADDRLP4 64
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 64
INDIRP4
ARGP4
ADDRLP4 68
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31480
ADDRLP4 68
INDIRI4
ASGNI4
line 137
;137:	mapname = Info_ValueForKey( info, "mapname" );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $180
ARGP4
ADDRLP4 72
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 72
INDIRP4
ASGNP4
line 138
;138:	Com_sprintf( cgs.mapname, sizeof( cgs.mapname ), "maps/%s.bsp", mapname );
ADDRGP4 cgs+31484
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $183
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 139
;139:	Q_strncpyz( cgs.redTeam, Info_ValueForKey( info, "g_redTeam" ), sizeof(cgs.redTeam) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $185
ARGP4
ADDRLP4 76
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 cgs+31548
ARGP4
ADDRLP4 76
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 140
;140:	trap_Cvar_Set("g_redTeam", cgs.redTeam);
ADDRGP4 $185
ARGP4
ADDRGP4 cgs+31548
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 141
;141:	Q_strncpyz( cgs.blueTeam, Info_ValueForKey( info, "g_blueTeam" ), sizeof(cgs.blueTeam) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $189
ARGP4
ADDRLP4 80
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 cgs+31612
ARGP4
ADDRLP4 80
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 142
;142:	trap_Cvar_Set("g_blueTeam", cgs.blueTeam);
ADDRGP4 $189
ARGP4
ADDRGP4 cgs+31612
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 143
;143:}
LABELV $163
endproc CG_ParseServerinfo 84 16
proc CG_ParseWarmup 24 8
line 150
;144:
;145:/*
;146:==================
;147:CG_ParseWarmup
;148:==================
;149:*/
;150:static void CG_ParseWarmup( void ) {
line 154
;151:	const char	*info;
;152:	int			warmup;
;153:
;154:	info = CG_ConfigString( CS_WARMUP );
CNSTI4 5
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 8
INDIRP4
ASGNP4
line 156
;155:
;156:	warmup = atoi( info );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 12
INDIRI4
ASGNI4
line 157
;157:	cg.warmupCount = -1;
ADDRGP4 cg+124660
CNSTI4 -1
ASGNI4
line 159
;158:
;159:	if ( warmup == 0 && cg.warmup ) {
ADDRLP4 16
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 16
INDIRI4
NEI4 $194
ADDRGP4 cg+124656
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $194
line 161
;160:
;161:	} else if ( warmup > 0 && cg.warmup <= 0 ) {
ADDRGP4 $195
JUMPV
LABELV $194
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $197
ADDRGP4 cg+124656
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $197
line 163
;162:#ifdef MISSIONPACK
;163:		if (cgs.gametype >= GT_CTF && cgs.gametype <= GT_HARVESTER) {
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 4
LTI4 $200
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 7
GTI4 $200
line 164
;164:			trap_S_StartLocalSound( cgs.media.countPrepareTeamSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1200
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 165
;165:		} else
ADDRGP4 $201
JUMPV
LABELV $200
line 167
;166:#endif
;167:		{
line 168
;168:			trap_S_StartLocalSound( cgs.media.countPrepareSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1152
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 169
;169:		}
LABELV $201
line 170
;170:	}
LABELV $197
LABELV $195
line 172
;171:
;172:	cg.warmup = warmup;
ADDRGP4 cg+124656
ADDRLP4 0
INDIRI4
ASGNI4
line 173
;173:}
LABELV $192
endproc CG_ParseWarmup 24 8
export CG_SetConfigValues
proc CG_SetConfigValues 36 4
line 182
;174:
;175:/*
;176:================
;177:CG_SetConfigValues
;178:
;179:Called on load to set the initial values from configure strings
;180:================
;181:*/
;182:void CG_SetConfigValues( void ) {
line 185
;183:	const char *s;
;184:
;185:	cgs.scores1 = atoi( CG_ConfigString( CS_SCORES1 ) );
CNSTI4 6
ARGI4
ADDRLP4 4
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+34800
ADDRLP4 8
INDIRI4
ASGNI4
line 186
;186:	cgs.scores2 = atoi( CG_ConfigString( CS_SCORES2 ) );
CNSTI4 7
ARGI4
ADDRLP4 12
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+34804
ADDRLP4 16
INDIRI4
ASGNI4
line 187
;187:	cgs.levelStartTime = atoi( CG_ConfigString( CS_LEVEL_START_TIME ) );
CNSTI4 21
ARGI4
ADDRLP4 20
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+34796
ADDRLP4 24
INDIRI4
ASGNI4
line 188
;188:	if( cgs.gametype == GT_CTF ) {
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 4
NEI4 $213
line 189
;189:		s = CG_ConfigString( CS_FLAGSTATUS );
CNSTI4 23
ARGI4
ADDRLP4 28
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 28
INDIRP4
ASGNP4
line 190
;190:		cgs.redflag = s[0] - '0';
ADDRGP4 cgs+34808
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 191
;191:		cgs.blueflag = s[1] - '0';
ADDRGP4 cgs+34812
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 192
;192:	}
ADDRGP4 $214
JUMPV
LABELV $213
line 194
;193:#ifdef MISSIONPACK
;194:	else if( cgs.gametype == GT_1FCTF ) {
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 5
NEI4 $218
line 195
;195:		s = CG_ConfigString( CS_FLAGSTATUS );
CNSTI4 23
ARGI4
ADDRLP4 28
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 28
INDIRP4
ASGNP4
line 196
;196:		cgs.flagStatus = s[0] - '0';
ADDRGP4 cgs+34816
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 197
;197:	}
LABELV $218
LABELV $214
line 199
;198:#endif
;199:	cg.warmup = atoi( CG_ConfigString( CS_WARMUP ) );
CNSTI4 5
ARGI4
ADDRLP4 28
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+124656
ADDRLP4 32
INDIRI4
ASGNI4
line 200
;200:}
LABELV $209
endproc CG_SetConfigValues 36 4
export CG_ShaderStateChanged
proc CG_ShaderStateChanged 188 12
line 207
;201:
;202:/*
;203:=====================
;204:CG_ShaderStateChanged
;205:=====================
;206:*/
;207:void CG_ShaderStateChanged(void) {
line 214
;208:	char originalShader[MAX_QPATH];
;209:	char newShader[MAX_QPATH];
;210:	char timeOffset[16];
;211:	const char *o;
;212:	char *n,*t;
;213:
;214:	o = CG_ConfigString( CS_SHADERSTATE );
CNSTI4 24
ARGI4
ADDRLP4 156
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 156
INDIRP4
ASGNP4
ADDRGP4 $225
JUMPV
LABELV $224
line 215
;215:	while (o && *o) {
line 216
;216:		n = strstr(o, "=");
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $227
ARGP4
ADDRLP4 160
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 160
INDIRP4
ASGNP4
line 217
;217:		if (n && *n) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $226
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $226
line 218
;218:			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 219
;219:			originalShader[n-o] = 0;
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 0
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 12
ADDP4
CNSTI1 0
ASGNI1
line 220
;220:			n++;
ADDRLP4 4
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 221
;221:			t = strstr(n, ":");
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 $230
ARGP4
ADDRLP4 172
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 172
INDIRP4
ASGNP4
line 222
;222:			if (t && *t) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $226
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $226
line 223
;223:				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 224
;224:				newShader[t-n] = 0;
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 76
ADDP4
CNSTI1 0
ASGNI1
line 225
;225:			} else {
line 226
;226:				break;
LABELV $232
line 228
;227:			}
;228:			t++;
ADDRLP4 8
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 229
;229:			o = strstr(t, "@");
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 $233
ARGP4
ADDRLP4 180
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 180
INDIRP4
ASGNP4
line 230
;230:			if (o) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $229
line 231
;231:				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 232
;232:				timeOffset[o-t] = 0;
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 140
ADDP4
CNSTI1 0
ASGNI1
line 233
;233:				o++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 234
;234:				trap_R_RemapShader( originalShader, newShader, timeOffset );
ADDRLP4 12
ARGP4
ADDRLP4 76
ARGP4
ADDRLP4 140
ARGP4
ADDRGP4 trap_R_RemapShader
CALLV
pop
line 235
;235:			}
line 236
;236:		} else {
line 237
;237:			break;
LABELV $229
line 239
;238:		}
;239:	}
LABELV $225
line 215
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $236
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $224
LABELV $236
LABELV $226
line 240
;240:}
LABELV $223
endproc CG_ShaderStateChanged 188 12
proc CG_ConfigStringModified 48 12
line 248
;241:
;242:/*
;243:================
;244:CG_ConfigStringModified
;245:
;246:================
;247:*/
;248:static void CG_ConfigStringModified( void ) {
line 252
;249:	const char	*str;
;250:	int		num;
;251:
;252:	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 256
;253:
;254:	// get the gamestate from the client system, which will have the
;255:	// new configstring already integrated
;256:	trap_GetGameState( &cgs.gameState );
ADDRGP4 cgs
ARGP4
ADDRGP4 trap_GetGameState
CALLV
pop
line 259
;257:
;258:	// look up the individual string that was modified
;259:	str = CG_ConfigString( num );
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 16
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 16
INDIRP4
ASGNP4
line 262
;260:
;261:	// do something with it if necessary
;262:	if ( num == CS_MUSIC ) {
ADDRLP4 0
INDIRI4
CNSTI4 2
NEI4 $238
line 263
;263:		CG_StartMusic();
ADDRGP4 CG_StartMusic
CALLV
pop
line 264
;264:	} else if ( num == CS_SERVERINFO ) {
ADDRGP4 $239
JUMPV
LABELV $238
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $240
line 265
;265:		CG_ParseServerinfo();
ADDRGP4 CG_ParseServerinfo
CALLV
pop
line 266
;266:	} else if ( num == CS_WARMUP ) {
ADDRGP4 $241
JUMPV
LABELV $240
ADDRLP4 0
INDIRI4
CNSTI4 5
NEI4 $242
line 267
;267:		CG_ParseWarmup();
ADDRGP4 CG_ParseWarmup
CALLV
pop
line 268
;268:	} else if ( num == CS_SCORES1 ) {
ADDRGP4 $243
JUMPV
LABELV $242
ADDRLP4 0
INDIRI4
CNSTI4 6
NEI4 $244
line 269
;269:		cgs.scores1 = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+34800
ADDRLP4 20
INDIRI4
ASGNI4
line 270
;270:	} else if ( num == CS_SCORES2 ) {
ADDRGP4 $245
JUMPV
LABELV $244
ADDRLP4 0
INDIRI4
CNSTI4 7
NEI4 $247
line 271
;271:		cgs.scores2 = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+34804
ADDRLP4 20
INDIRI4
ASGNI4
line 272
;272:	} else if ( num == CS_LEVEL_START_TIME ) {
ADDRGP4 $248
JUMPV
LABELV $247
ADDRLP4 0
INDIRI4
CNSTI4 21
NEI4 $250
line 273
;273:		cgs.levelStartTime = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+34796
ADDRLP4 20
INDIRI4
ASGNI4
line 274
;274:	} else if ( num == CS_VOTE_TIME ) {
ADDRGP4 $251
JUMPV
LABELV $250
ADDRLP4 0
INDIRI4
CNSTI4 8
NEI4 $253
line 275
;275:		cgs.voteTime = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31676
ADDRLP4 20
INDIRI4
ASGNI4
line 276
;276:		cgs.voteModified = qtrue;
ADDRGP4 cgs+31688
CNSTI4 1
ASGNI4
line 277
;277:	} else if ( num == CS_VOTE_YES ) {
ADDRGP4 $254
JUMPV
LABELV $253
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $257
line 278
;278:		cgs.voteYes = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31680
ADDRLP4 20
INDIRI4
ASGNI4
line 279
;279:		cgs.voteModified = qtrue;
ADDRGP4 cgs+31688
CNSTI4 1
ASGNI4
line 280
;280:	} else if ( num == CS_VOTE_NO ) {
ADDRGP4 $258
JUMPV
LABELV $257
ADDRLP4 0
INDIRI4
CNSTI4 11
NEI4 $261
line 281
;281:		cgs.voteNo = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+31684
ADDRLP4 20
INDIRI4
ASGNI4
line 282
;282:		cgs.voteModified = qtrue;
ADDRGP4 cgs+31688
CNSTI4 1
ASGNI4
line 283
;283:	} else if ( num == CS_VOTE_STRING ) {
ADDRGP4 $262
JUMPV
LABELV $261
ADDRLP4 0
INDIRI4
CNSTI4 9
NEI4 $265
line 284
;284:		Q_strncpyz( cgs.voteString, str, sizeof( cgs.voteString ) );
ADDRGP4 cgs+31692
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 286
;285:#ifdef MISSIONPACK
;286:		trap_S_StartLocalSound( cgs.media.voteNow, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1012
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 288
;287:#endif //MISSIONPACK
;288:	} else if ( num >= CS_TEAMVOTE_TIME && num <= CS_TEAMVOTE_TIME + 1) {
ADDRGP4 $266
JUMPV
LABELV $265
ADDRLP4 0
INDIRI4
CNSTI4 12
LTI4 $271
ADDRLP4 0
INDIRI4
CNSTI4 13
GTI4 $271
line 289
;289:		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+32716-48
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
line 290
;290:		cgs.teamVoteModified[num-CS_TEAMVOTE_TIME] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+32740-48
ADDP4
CNSTI4 1
ASGNI4
line 291
;291:	} else if ( num >= CS_TEAMVOTE_YES && num <= CS_TEAMVOTE_YES + 1) {
ADDRGP4 $272
JUMPV
LABELV $271
ADDRLP4 0
INDIRI4
CNSTI4 16
LTI4 $277
ADDRLP4 0
INDIRI4
CNSTI4 17
GTI4 $277
line 292
;292:		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+32724-64
ADDP4
ADDRLP4 28
INDIRI4
ASGNI4
line 293
;293:		cgs.teamVoteModified[num-CS_TEAMVOTE_YES] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+32740-64
ADDP4
CNSTI4 1
ASGNI4
line 294
;294:	} else if ( num >= CS_TEAMVOTE_NO && num <= CS_TEAMVOTE_NO + 1) {
ADDRGP4 $278
JUMPV
LABELV $277
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $283
ADDRLP4 0
INDIRI4
CNSTI4 19
GTI4 $283
line 295
;295:		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+32732-72
ADDP4
ADDRLP4 32
INDIRI4
ASGNI4
line 296
;296:		cgs.teamVoteModified[num-CS_TEAMVOTE_NO] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+32740-72
ADDP4
CNSTI4 1
ASGNI4
line 297
;297:	} else if ( num >= CS_TEAMVOTE_STRING && num <= CS_TEAMVOTE_STRING + 1) {
ADDRGP4 $284
JUMPV
LABELV $283
ADDRLP4 0
INDIRI4
CNSTI4 14
LTI4 $289
ADDRLP4 0
INDIRI4
CNSTI4 15
GTI4 $289
line 298
;298:		Q_strncpyz( cgs.teamVoteString[num-CS_TEAMVOTE_STRING], str, sizeof( cgs.teamVoteString ) );
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 cgs+32748-14336
ADDP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 2048
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 300
;299:#ifdef MISSIONPACK
;300:		trap_S_StartLocalSound( cgs.media.voteNow, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1012
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 302
;301:#endif
;302:	} else if ( num == CS_INTERMISSION ) {
ADDRGP4 $290
JUMPV
LABELV $289
ADDRLP4 0
INDIRI4
CNSTI4 22
NEI4 $296
line 303
;303:		cg.intermissionStarted = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+24
ADDRLP4 36
INDIRI4
ASGNI4
line 304
;304:	} else if ( num >= CS_MODELS && num < CS_MODELS+MAX_MODELS ) {
ADDRGP4 $297
JUMPV
LABELV $296
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $299
ADDRLP4 0
INDIRI4
CNSTI4 288
GEI4 $299
line 305
;305:		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+34824-128
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 306
;306:	} else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_MODELS ) {
ADDRGP4 $300
JUMPV
LABELV $299
ADDRLP4 0
INDIRI4
CNSTI4 288
LTI4 $303
ADDRLP4 0
INDIRI4
CNSTI4 544
GEI4 $303
line 307
;307:		if ( str[0] != '*' ) {	// player specific sounds don't register here
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 42
EQI4 $304
line 308
;308:			cgs.gameSounds[ num-CS_SOUNDS] = trap_S_RegisterSound( str, qfalse );
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 44
ADDRGP4 trap_S_RegisterSound
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+35848-1152
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 309
;309:		}
line 310
;310:	} else if ( num >= CS_PLAYERS && num < CS_PLAYERS+MAX_CLIENTS ) {
ADDRGP4 $304
JUMPV
LABELV $303
ADDRLP4 0
INDIRI4
CNSTI4 544
LTI4 $309
ADDRLP4 0
INDIRI4
CNSTI4 608
GEI4 $309
line 311
;311:		CG_NewClientInfo( num - CS_PLAYERS );
ADDRLP4 0
INDIRI4
CNSTI4 544
SUBI4
ARGI4
ADDRGP4 CG_NewClientInfo
CALLV
pop
line 312
;312:		CG_BuildSpectatorString();
ADDRGP4 CG_BuildSpectatorString
CALLV
pop
line 313
;313:	} else if ( num == CS_FLAGSTATUS ) {
ADDRGP4 $310
JUMPV
LABELV $309
ADDRLP4 0
INDIRI4
CNSTI4 23
NEI4 $311
line 314
;314:		if( cgs.gametype == GT_CTF ) {
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 4
NEI4 $313
line 316
;315:			// format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped
;316:			cgs.redflag = str[0] - '0';
ADDRGP4 cgs+34808
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 317
;317:			cgs.blueflag = str[1] - '0';
ADDRGP4 cgs+34812
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 318
;318:		}
ADDRGP4 $312
JUMPV
LABELV $313
line 320
;319:#ifdef MISSIONPACK
;320:		else if( cgs.gametype == GT_1FCTF ) {
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 5
NEI4 $312
line 321
;321:			cgs.flagStatus = str[0] - '0';
ADDRGP4 cgs+34816
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 322
;322:		}
line 324
;323:#endif
;324:	}
ADDRGP4 $312
JUMPV
LABELV $311
line 325
;325:	else if ( num == CS_SHADERSTATE ) {
ADDRLP4 0
INDIRI4
CNSTI4 24
NEI4 $322
line 326
;326:		CG_ShaderStateChanged();
ADDRGP4 CG_ShaderStateChanged
CALLV
pop
line 327
;327:	}
LABELV $322
LABELV $312
LABELV $310
LABELV $304
LABELV $300
LABELV $297
LABELV $290
LABELV $284
LABELV $278
LABELV $272
LABELV $266
LABELV $262
LABELV $258
LABELV $254
LABELV $251
LABELV $248
LABELV $245
LABELV $243
LABELV $241
LABELV $239
line 329
;328:		
;329:}
LABELV $237
endproc CG_ConfigStringModified 48 12
proc CG_AddToTeamChat 60 0
line 338
;330:
;331:
;332:/*
;333:=======================
;334:CG_AddToTeamChat
;335:
;336:=======================
;337:*/
;338:static void CG_AddToTeamChat( const char *str ) {
line 344
;339:	int len;
;340:	char *p, *ls;
;341:	int lastcolor;
;342:	int chatHeight;
;343:
;344:	if (cg_teamChatHeight.integer < TEAMCHAT_HEIGHT) {
ADDRGP4 cg_teamChatHeight+12
INDIRI4
CNSTI4 8
GEI4 $325
line 345
;345:		chatHeight = cg_teamChatHeight.integer;
ADDRLP4 12
ADDRGP4 cg_teamChatHeight+12
INDIRI4
ASGNI4
line 346
;346:	} else {
ADDRGP4 $326
JUMPV
LABELV $325
line 347
;347:		chatHeight = TEAMCHAT_HEIGHT;
ADDRLP4 12
CNSTI4 8
ASGNI4
line 348
;348:	}
LABELV $326
line 350
;349:
;350:	if (chatHeight <= 0 || cg_teamChatTime.integer <= 0) {
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $332
ADDRGP4 cg_teamChatTime+12
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $329
LABELV $332
line 352
;351:		// team chat disabled, dump into normal chat
;352:		cgs.teamChatPos = cgs.teamLastChatPos = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRGP4 cgs+152248
ADDRLP4 24
INDIRI4
ASGNI4
ADDRGP4 cgs+152244
ADDRLP4 24
INDIRI4
ASGNI4
line 353
;353:		return;
ADDRGP4 $324
JUMPV
LABELV $329
line 356
;354:	}
;355:
;356:	len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 358
;357:
;358:	p = cgs.teamChatMsgs[cgs.teamChatPos % chatHeight];
ADDRLP4 0
CNSTI4 241
ADDRGP4 cgs+152244
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
MULI4
ADDRGP4 cgs+150284
ADDP4
ASGNP4
line 359
;359:	*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 361
;360:
;361:	lastcolor = '7';
ADDRLP4 16
CNSTI4 55
ASGNI4
line 363
;362:
;363:	ls = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
ADDRGP4 $338
JUMPV
LABELV $337
line 364
;364:	while (*str) {
line 365
;365:		if (len > TEAMCHAT_WIDTH - 1) {
ADDRLP4 4
INDIRI4
CNSTI4 79
LEI4 $340
line 366
;366:			if (ls) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $342
line 367
;367:				str -= (p - ls);
ADDRFP4 0
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
SUBP4
ASGNP4
line 368
;368:				str++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 369
;369:				p -= (p - ls);
ADDRLP4 0
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
SUBP4
ASGNP4
line 370
;370:			}
LABELV $342
line 371
;371:			*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 373
;372:
;373:			cgs.teamChatMsgTimes[cgs.teamChatPos % chatHeight] = cg.time;
ADDRGP4 cgs+152244
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+152212
ADDP4
ADDRGP4 cg+107604
INDIRI4
ASGNI4
line 375
;374:
;375:			cgs.teamChatPos++;
ADDRLP4 24
ADDRGP4 cgs+152244
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 376
;376:			p = cgs.teamChatMsgs[cgs.teamChatPos % chatHeight];
ADDRLP4 0
CNSTI4 241
ADDRGP4 cgs+152244
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
MULI4
ADDRGP4 cgs+150284
ADDP4
ASGNP4
line 377
;377:			*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 378
;378:			*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 379
;379:			*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 380
;380:			len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 381
;381:			ls = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 382
;382:		}
LABELV $340
line 384
;383:
;384:		if ( Q_IsColorString( str ) ) {
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $350
ADDRLP4 28
CNSTI4 94
ASGNI4
ADDRLP4 24
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 28
INDIRI4
NEI4 $350
ADDRLP4 32
ADDRLP4 24
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $350
ADDRLP4 32
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $350
line 385
;385:			*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 386
;386:			lastcolor = *str;
ADDRLP4 16
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 387
;387:			*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 388
;388:			continue;
ADDRGP4 $338
JUMPV
LABELV $350
line 390
;389:		}
;390:		if (*str == ' ') {
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $352
line 391
;391:			ls = p;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 392
;392:		}
LABELV $352
line 393
;393:		*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 394
;394:		len++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 395
;395:	}
LABELV $338
line 364
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $337
line 396
;396:	*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 398
;397:
;398:	cgs.teamChatMsgTimes[cgs.teamChatPos % chatHeight] = cg.time;
ADDRGP4 cgs+152244
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+152212
ADDP4
ADDRGP4 cg+107604
INDIRI4
ASGNI4
line 399
;399:	cgs.teamChatPos++;
ADDRLP4 24
ADDRGP4 cgs+152244
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 401
;400:
;401:	if (cgs.teamChatPos - cgs.teamLastChatPos > chatHeight)
ADDRGP4 cgs+152244
INDIRI4
ADDRGP4 cgs+152248
INDIRI4
SUBI4
ADDRLP4 12
INDIRI4
LEI4 $358
line 402
;402:		cgs.teamLastChatPos = cgs.teamChatPos - chatHeight;
ADDRGP4 cgs+152248
ADDRGP4 cgs+152244
INDIRI4
ADDRLP4 12
INDIRI4
SUBI4
ASGNI4
LABELV $358
line 403
;403:}
LABELV $324
endproc CG_AddToTeamChat 60 0
proc CG_MapRestart 12 12
line 416
;404:
;405:/*
;406:===============
;407:CG_MapRestart
;408:
;409:The server has issued a map_restart, so the next snapshot
;410:is completely new and should not be interpolated to.
;411:
;412:A tournement restart will clear everything, but doesn't
;413:require a reload of all the media
;414:===============
;415:*/
;416:static void CG_MapRestart( void ) {
line 417
;417:	if ( cg_showmiss.integer ) {
ADDRGP4 cg_showmiss+12
INDIRI4
CNSTI4 0
EQI4 $365
line 418
;418:		CG_Printf( "CG_MapRestart\n" );
ADDRGP4 $368
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 419
;419:	}
LABELV $365
line 421
;420:
;421:	CG_InitLocalEntities();
ADDRGP4 CG_InitLocalEntities
CALLV
pop
line 422
;422:	CG_InitMarkPolys();
ADDRGP4 CG_InitMarkPolys
CALLV
pop
line 423
;423:	CG_ClearParticles ();
ADDRGP4 CG_ClearParticles
CALLV
pop
line 426
;424:
;425:	// make sure the "3 frags left" warnings play again
;426:	cg.fraglimitWarnings = 0;
ADDRGP4 cg+107620
CNSTI4 0
ASGNI4
line 428
;427:
;428:	cg.timelimitWarnings = 0;
ADDRGP4 cg+107616
CNSTI4 0
ASGNI4
line 430
;429:
;430:	cg.intermissionStarted = qfalse;
ADDRGP4 cg+24
CNSTI4 0
ASGNI4
line 432
;431:
;432:	cgs.voteTime = 0;
ADDRGP4 cgs+31676
CNSTI4 0
ASGNI4
line 434
;433:
;434:	cg.mapRestart = qtrue;
ADDRGP4 cg+107624
CNSTI4 1
ASGNI4
line 436
;435:
;436:	CG_StartMusic();
ADDRGP4 CG_StartMusic
CALLV
pop
line 438
;437:
;438:	trap_S_ClearLoopingSounds(qtrue);
CNSTI4 1
ARGI4
ADDRGP4 trap_S_ClearLoopingSounds
CALLV
pop
line 443
;439:
;440:	// we really should clear more parts of cg here and stop sounds
;441:
;442:	// play the "fight" sound if this is a restart without warmup
;443:	if ( cg.warmup == 0 /* && cgs.gametype == GT_TOURNAMENT */) {
ADDRGP4 cg+124656
INDIRI4
CNSTI4 0
NEI4 $374
line 444
;444:		trap_S_StartLocalSound( cgs.media.countFightSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1148
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 445
;445:		CG_CenterPrint( "FIGHT!", 120, GIANTCHAR_WIDTH*2 );
ADDRGP4 $379
ARGP4
CNSTI4 120
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 446
;446:	}
LABELV $374
line 448
;447:#ifdef MISSIONPACK
;448:	if (cg_singlePlayerActive.integer) {
ADDRGP4 cg_singlePlayerActive+12
INDIRI4
CNSTI4 0
EQI4 $380
line 449
;449:		trap_Cvar_Set("ui_matchStartTime", va("%i", cg.time));
ADDRGP4 $166
ARGP4
ADDRGP4 cg+107604
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $383
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 450
;450:		if (cg_recordSPDemo.integer && cg_recordSPDemoName.string && *cg_recordSPDemoName.string) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 cg_recordSPDemo+12
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $385
ADDRGP4 cg_recordSPDemoName+16
CVPU4 4
CNSTU4 0
EQU4 $385
ADDRGP4 cg_recordSPDemoName+16
INDIRI1
CVII4 1
ADDRLP4 4
INDIRI4
EQI4 $385
line 451
;451:			trap_SendConsoleCommand(va("set g_synchronousclients 1 ; record %s \n", cg_recordSPDemoName.string));
ADDRGP4 $390
ARGP4
ADDRGP4 cg_recordSPDemoName+16
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 452
;452:		}
LABELV $385
line 453
;453:	}
LABELV $380
line 455
;454:#endif
;455:	trap_Cvar_Set("cg_thirdPerson", "0");
ADDRGP4 $392
ARGP4
ADDRGP4 $393
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 456
;456:}
LABELV $364
endproc CG_MapRestart 12 12
export CG_ParseVoiceChats
proc CG_ParseVoiceChats 16508 16
line 495
;457:
;458:#define MAX_VOICEFILESIZE	16384
;459:#define MAX_VOICEFILES		8
;460:#define MAX_VOICECHATS		64
;461:#define MAX_VOICESOUNDS		64
;462:#define MAX_CHATSIZE		64
;463:#define MAX_HEADMODELS		64
;464:
;465:typedef struct voiceChat_s
;466:{
;467:	char id[64];
;468:	int numSounds;
;469:	sfxHandle_t sounds[MAX_VOICESOUNDS];
;470:	char chats[MAX_VOICESOUNDS][MAX_CHATSIZE];
;471:} voiceChat_t;
;472:
;473:typedef struct voiceChatList_s
;474:{
;475:	char name[64];
;476:	int gender;
;477:	int numVoiceChats;
;478:	voiceChat_t voiceChats[MAX_VOICECHATS];
;479:} voiceChatList_t;
;480:
;481:typedef struct headModelVoiceChat_s
;482:{
;483:	char headmodel[64];
;484:	int voiceChatNum;
;485:} headModelVoiceChat_t;
;486:
;487:voiceChatList_t voiceChatLists[MAX_VOICEFILES];
;488:headModelVoiceChat_t headModelVoiceChat[MAX_HEADMODELS];
;489:
;490:/*
;491:=================
;492:CG_ParseVoiceChats
;493:=================
;494:*/
;495:int CG_ParseVoiceChats( const char *filename, voiceChatList_t *voiceChatList, int maxVoiceChats ) {
line 505
;496:	int	len, i;
;497:	fileHandle_t f;
;498:	char buf[MAX_VOICEFILESIZE];
;499:	char **p, *ptr;
;500:	char *token;
;501:	voiceChat_t *voiceChats;
;502:	qboolean compress;
;503:	sfxHandle_t sound;
;504:
;505:	compress = qtrue;
ADDRLP4 16
CNSTI4 1
ASGNI4
line 506
;506:	if (cg_buildScript.integer) {
ADDRGP4 cg_buildScript+12
INDIRI4
CNSTI4 0
EQI4 $395
line 507
;507:		compress = qfalse;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 508
;508:	}
LABELV $395
line 510
;509:
;510:	len = trap_FS_FOpenFile( filename, &f, FS_READ );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 28
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16420
ADDRGP4 trap_FS_FOpenFile
CALLI4
ASGNI4
ADDRLP4 24
ADDRLP4 16420
INDIRI4
ASGNI4
line 511
;511:	if ( !f ) {
ADDRLP4 28
INDIRI4
CNSTI4 0
NEI4 $398
line 512
;512:		trap_Print( va( S_COLOR_RED "voice chat file not found: %s\n", filename ) );
ADDRGP4 $400
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16424
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16424
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 513
;513:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $394
JUMPV
LABELV $398
line 515
;514:	}
;515:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 24
INDIRI4
CNSTI4 16384
LTI4 $401
line 516
;516:		trap_Print( va( S_COLOR_RED "voice chat file too large: %s is %i, max allowed is %i", filename, len, MAX_VOICEFILESIZE ) );
ADDRGP4 $403
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 24
INDIRI4
ARGI4
CNSTI4 16384
ARGI4
ADDRLP4 16424
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16424
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 517
;517:		trap_FS_FCloseFile( f );
ADDRLP4 28
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 518
;518:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $394
JUMPV
LABELV $401
line 521
;519:	}
;520:
;521:	trap_FS_Read( buf, len, f );
ADDRLP4 32
ARGP4
ADDRLP4 24
INDIRI4
ARGI4
ADDRLP4 28
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 522
;522:	buf[len] = 0;
ADDRLP4 24
INDIRI4
ADDRLP4 32
ADDP4
CNSTI1 0
ASGNI1
line 523
;523:	trap_FS_FCloseFile( f );
ADDRLP4 28
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 525
;524:
;525:	ptr = buf;
ADDRLP4 16416
ADDRLP4 32
ASGNP4
line 526
;526:	p = &ptr;
ADDRLP4 12
ADDRLP4 16416
ASGNP4
line 528
;527:
;528:	Com_sprintf(voiceChatList->name, sizeof(voiceChatList->name), "%s", filename);
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $404
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 529
;529:	voiceChats = voiceChatList->voiceChats;
ADDRLP4 4
ADDRFP4 4
INDIRP4
CNSTI4 72
ADDP4
ASGNP4
line 530
;530:	for ( i = 0; i < maxVoiceChats; i++ ) {
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRGP4 $408
JUMPV
LABELV $405
line 531
;531:		voiceChats[i].id[0] = 0;
CNSTI4 4420
ADDRLP4 20
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 532
;532:	}
LABELV $406
line 530
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $408
ADDRLP4 20
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $405
line 533
;533:	token = COM_ParseExt(p, qtrue);
ADDRLP4 12
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16424
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16424
INDIRP4
ASGNP4
line 534
;534:	if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $411
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $409
LABELV $411
line 535
;535:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $394
JUMPV
LABELV $409
line 537
;536:	}
;537:	if (!Q_stricmp(token, "female")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $414
ARGP4
ADDRLP4 16432
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16432
INDIRI4
CNSTI4 0
NEI4 $412
line 538
;538:		voiceChatList->gender = GENDER_FEMALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 1
ASGNI4
line 539
;539:	}
ADDRGP4 $413
JUMPV
LABELV $412
line 540
;540:	else if (!Q_stricmp(token, "male")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $417
ARGP4
ADDRLP4 16436
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16436
INDIRI4
CNSTI4 0
NEI4 $415
line 541
;541:		voiceChatList->gender = GENDER_MALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 0
ASGNI4
line 542
;542:	}
ADDRGP4 $416
JUMPV
LABELV $415
line 543
;543:	else if (!Q_stricmp(token, "neuter")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $420
ARGP4
ADDRLP4 16440
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16440
INDIRI4
CNSTI4 0
NEI4 $418
line 544
;544:		voiceChatList->gender = GENDER_NEUTER;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 2
ASGNI4
line 545
;545:	}
ADDRGP4 $419
JUMPV
LABELV $418
line 546
;546:	else {
line 547
;547:		trap_Print( va( S_COLOR_RED "expected gender not found in voice chat file: %s\n", filename ) );
ADDRGP4 $421
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16444
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16444
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 548
;548:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $394
JUMPV
LABELV $419
LABELV $416
LABELV $413
line 551
;549:	}
;550:
;551:	voiceChatList->numVoiceChats = 0;
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
CNSTI4 0
ASGNI4
ADDRGP4 $423
JUMPV
LABELV $422
line 552
;552:	while ( 1 ) {
line 553
;553:		token = COM_ParseExt(p, qtrue);
ADDRLP4 12
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16444
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16444
INDIRP4
ASGNP4
line 554
;554:		if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $427
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $425
LABELV $427
line 555
;555:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $394
JUMPV
LABELV $425
line 557
;556:		}
;557:		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 $404
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 558
;558:		token = COM_ParseExt(p, qtrue);
ADDRLP4 12
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16452
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16452
INDIRP4
ASGNP4
line 559
;559:		if (Q_stricmp(token, "{")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $430
ARGP4
ADDRLP4 16456
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16456
INDIRI4
CNSTI4 0
EQI4 $428
line 560
;560:			trap_Print( va( S_COLOR_RED "expected { found %s in voice chat file: %s\n", token, filename ) );
ADDRGP4 $431
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16460
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16460
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 561
;561:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $394
JUMPV
LABELV $428
line 563
;562:		}
;563:		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 $433
JUMPV
LABELV $432
line 564
;564:		while(1) {
line 565
;565:			token = COM_ParseExt(p, qtrue);
ADDRLP4 12
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16460
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16460
INDIRP4
ASGNP4
line 566
;566:			if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $437
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $435
LABELV $437
line 567
;567:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $394
JUMPV
LABELV $435
line 569
;568:			}
;569:			if (!Q_stricmp(token, "}"))
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $440
ARGP4
ADDRLP4 16468
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16468
INDIRI4
CNSTI4 0
NEI4 $438
line 570
;570:				break;
ADDRGP4 $434
JUMPV
LABELV $438
line 571
;571:			sound = trap_S_RegisterSound( token, compress );
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 16472
ADDRGP4 trap_S_RegisterSound
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 16472
INDIRI4
ASGNI4
line 572
;572:			voiceChats[voiceChatList->numVoiceChats].sounds[voiceChats[voiceChatList->numVoiceChats].numSounds] = sound;
ADDRLP4 16476
CNSTI4 68
ASGNI4
ADDRLP4 16480
CNSTI4 4420
ADDRFP4 4
INDIRP4
ADDRLP4 16476
INDIRI4
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ASGNP4
ADDRLP4 16480
INDIRP4
CNSTI4 64
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 16480
INDIRP4
ADDRLP4 16476
INDIRI4
ADDP4
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
line 573
;573:			token = COM_ParseExt(p, qtrue);
ADDRLP4 12
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16484
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16484
INDIRP4
ASGNP4
line 574
;574:			if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $443
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $441
LABELV $443
line 575
;575:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $394
JUMPV
LABELV $441
line 577
;576:			}
;577:			Com_sprintf(voiceChats[voiceChatList->numVoiceChats].chats[
ADDRLP4 16492
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ASGNP4
ADDRLP4 16496
CNSTI4 64
ASGNI4
ADDRLP4 16492
INDIRP4
ADDRLP4 16496
INDIRI4
ADDP4
INDIRI4
CNSTI4 6
LSHI4
ADDRLP4 16492
INDIRP4
CNSTI4 324
ADDP4
ADDP4
ARGP4
ADDRLP4 16496
INDIRI4
ARGI4
ADDRGP4 $404
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 579
;578:							voiceChats[voiceChatList->numVoiceChats].numSounds], MAX_CHATSIZE, "%s", token);
;579:			if (sound)
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $444
line 580
;580:				voiceChats[voiceChatList->numVoiceChats].numSounds++;
ADDRLP4 16500
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI4 64
ADDP4
ASGNP4
ADDRLP4 16500
INDIRP4
ADDRLP4 16500
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $444
line 581
;581:			if (voiceChats[voiceChatList->numVoiceChats].numSounds >= MAX_VOICESOUNDS)
ADDRLP4 16504
CNSTI4 64
ASGNI4
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ADDRLP4 16504
INDIRI4
ADDP4
INDIRI4
ADDRLP4 16504
INDIRI4
LTI4 $446
line 582
;582:				break;
ADDRGP4 $434
JUMPV
LABELV $446
line 583
;583:		}
LABELV $433
line 564
ADDRGP4 $432
JUMPV
LABELV $434
line 584
;584:		voiceChatList->numVoiceChats++;
ADDRLP4 16460
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
ASGNP4
ADDRLP4 16460
INDIRP4
ADDRLP4 16460
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 585
;585:		if (voiceChatList->numVoiceChats >= maxVoiceChats)
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $448
line 586
;586:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $394
JUMPV
LABELV $448
line 587
;587:	}
LABELV $423
line 552
ADDRGP4 $422
JUMPV
line 588
;588:	return qtrue;
CNSTI4 1
RETI4
LABELV $394
endproc CG_ParseVoiceChats 16508 16
export CG_LoadVoiceChats
proc CG_LoadVoiceChats 12 12
line 596
;589:}
;590:
;591:/*
;592:=================
;593:CG_LoadVoiceChats
;594:=================
;595:*/
;596:void CG_LoadVoiceChats( void ) {
line 599
;597:	int size;
;598:
;599:	size = trap_MemoryRemaining();
ADDRLP4 4
ADDRGP4 trap_MemoryRemaining
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
line 600
;600:	CG_ParseVoiceChats( "scripts/female1.voice", &voiceChatLists[0], MAX_VOICECHATS );
ADDRGP4 $451
ARGP4
ADDRGP4 voiceChatLists
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 601
;601:	CG_ParseVoiceChats( "scripts/female2.voice", &voiceChatLists[1], MAX_VOICECHATS );
ADDRGP4 $452
ARGP4
ADDRGP4 voiceChatLists+282952
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 602
;602:	CG_ParseVoiceChats( "scripts/female3.voice", &voiceChatLists[2], MAX_VOICECHATS );
ADDRGP4 $454
ARGP4
ADDRGP4 voiceChatLists+565904
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 603
;603:	CG_ParseVoiceChats( "scripts/male1.voice", &voiceChatLists[3], MAX_VOICECHATS );
ADDRGP4 $456
ARGP4
ADDRGP4 voiceChatLists+848856
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 604
;604:	CG_ParseVoiceChats( "scripts/male2.voice", &voiceChatLists[4], MAX_VOICECHATS );
ADDRGP4 $458
ARGP4
ADDRGP4 voiceChatLists+1131808
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 605
;605:	CG_ParseVoiceChats( "scripts/male3.voice", &voiceChatLists[5], MAX_VOICECHATS );
ADDRGP4 $460
ARGP4
ADDRGP4 voiceChatLists+1414760
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 606
;606:	CG_ParseVoiceChats( "scripts/male4.voice", &voiceChatLists[6], MAX_VOICECHATS );
ADDRGP4 $462
ARGP4
ADDRGP4 voiceChatLists+1697712
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 607
;607:	CG_ParseVoiceChats( "scripts/male5.voice", &voiceChatLists[7], MAX_VOICECHATS );
ADDRGP4 $464
ARGP4
ADDRGP4 voiceChatLists+1980664
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 608
;608:	CG_Printf("voice chat memory size = %d\n", size - trap_MemoryRemaining());
ADDRLP4 8
ADDRGP4 trap_MemoryRemaining
CALLI4
ASGNI4
ADDRGP4 $466
ARGP4
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
SUBI4
ARGI4
ADDRGP4 CG_Printf
CALLV
pop
line 609
;609:}
LABELV $450
endproc CG_LoadVoiceChats 12 12
export CG_HeadModelVoiceChats
proc CG_HeadModelVoiceChats 16424 16
line 616
;610:
;611:/*
;612:=================
;613:CG_HeadModelVoiceChats
;614:=================
;615:*/
;616:int CG_HeadModelVoiceChats( char *filename ) {
line 623
;617:	int	len, i;
;618:	fileHandle_t f;
;619:	char buf[MAX_VOICEFILESIZE];
;620:	char **p, *ptr;
;621:	char *token;
;622:
;623:	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 624
;624:	if ( !f ) {
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $468
line 626
;625:		//trap_Print( va( "voice chat file not found: %s\n", filename ) );
;626:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $467
JUMPV
LABELV $468
line 628
;627:	}
;628:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 8
INDIRI4
CNSTI4 16384
LTI4 $470
line 629
;629:		trap_Print( va( S_COLOR_RED "voice chat file too large: %s is %i, max allowed is %i", filename, len, MAX_VOICEFILESIZE ) );
ADDRGP4 $403
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 630
;630:		trap_FS_FCloseFile( f );
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 631
;631:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $467
JUMPV
LABELV $470
line 634
;632:	}
;633:
;634:	trap_FS_Read( buf, len, f );
ADDRLP4 16
ARGP4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 635
;635:	buf[len] = 0;
ADDRLP4 8
INDIRI4
ADDRLP4 16
ADDP4
CNSTI1 0
ASGNI1
line 636
;636:	trap_FS_FCloseFile( f );
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 638
;637:
;638:	ptr = buf;
ADDRLP4 16404
ADDRLP4 16
ASGNP4
line 639
;639:	p = &ptr;
ADDRLP4 16400
ADDRLP4 16404
ASGNP4
line 641
;640:
;641:	token = COM_ParseExt(p, qtrue);
ADDRLP4 16400
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16412
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 16412
INDIRP4
ASGNP4
line 642
;642:	if (!token || token[0] == 0) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $474
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $472
LABELV $474
line 643
;643:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $467
JUMPV
LABELV $472
line 646
;644:	}
;645:
;646:	for ( i = 0; i < MAX_VOICEFILES; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $475
line 647
;647:		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 $479
line 648
;648:			return i;
ADDRLP4 0
INDIRI4
RETI4
ADDRGP4 $467
JUMPV
LABELV $479
line 650
;649:		}
;650:	}
LABELV $476
line 646
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 8
LTI4 $475
line 654
;651:
;652:	//FIXME: maybe try to load the .voice file which name is stored in token?
;653:
;654:	return -1;
CNSTI4 -1
RETI4
LABELV $467
endproc CG_HeadModelVoiceChats 16424 16
export CG_GetVoiceChat
proc CG_GetVoiceChat 16 8
line 663
;655:}
;656:
;657:
;658:/*
;659:=================
;660:CG_GetVoiceChat
;661:=================
;662:*/
;663:int CG_GetVoiceChat( voiceChatList_t *voiceChatList, const char *id, sfxHandle_t *snd, char **chat) {
line 666
;664:	int i, rnd;
;665:
;666:	for ( i = 0; i < voiceChatList->numVoiceChats; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $485
JUMPV
LABELV $482
line 667
;667:		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 $486
line 668
;668:			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 669
;669:			*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 670
;670:			*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 671
;671:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $481
JUMPV
LABELV $486
line 673
;672:		}
;673:	}
LABELV $483
line 666
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $485
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
LTI4 $482
line 674
;674:	return qfalse;
CNSTI4 0
RETI4
LABELV $481
endproc CG_GetVoiceChat 16 8
export CG_VoiceChatListForClient
proc CG_VoiceChatListForClient 164 20
line 682
;675:}
;676:
;677:/*
;678:=================
;679:CG_VoiceChatListForClient
;680:=================
;681:*/
;682:voiceChatList_t *CG_VoiceChatListForClient( int clientNum ) {
line 687
;683:	clientInfo_t *ci;
;684:	int voiceChatNum, i, j, k, gender;
;685:	char filename[MAX_QPATH], headModelName[MAX_QPATH];
;686:
;687:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
ADDRLP4 152
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 152
INDIRI4
CNSTI4 0
LTI4 $491
ADDRLP4 152
INDIRI4
CNSTI4 64
LTI4 $489
LABELV $491
line 688
;688:		clientNum = 0;
ADDRFP4 0
CNSTI4 0
ASGNI4
line 689
;689:	}
LABELV $489
line 690
;690:	ci = &cgs.clientinfo[ clientNum ];
ADDRLP4 148
CNSTI4 1708
ADDRFP4 0
INDIRI4
MULI4
ADDRGP4 cgs+40972
ADDP4
ASGNP4
line 692
;691:
;692:	for ( k = 0; k < 2; k++ ) {
ADDRLP4 144
CNSTI4 0
ASGNI4
LABELV $493
line 693
;693:		if ( k == 0 ) {
ADDRLP4 144
INDIRI4
CNSTI4 0
NEI4 $497
line 694
;694:			if (ci->headModelName[0] == '*') {
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
INDIRI1
CVII4 1
CNSTI4 42
NEI4 $499
line 695
;695:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName+1, ci->headSkinName );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $501
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 289
ADDP4
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 352
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 696
;696:			}
ADDRGP4 $498
JUMPV
LABELV $499
line 697
;697:			else {
line 698
;698:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName, ci->headSkinName );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $501
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 352
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 699
;699:			}
line 700
;700:		}
ADDRGP4 $498
JUMPV
LABELV $497
line 701
;701:		else {
line 702
;702:			if (ci->headModelName[0] == '*') {
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
INDIRI1
CVII4 1
CNSTI4 42
NEI4 $502
line 703
;703:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName+1 );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $404
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 289
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 704
;704:			}
ADDRGP4 $503
JUMPV
LABELV $502
line 705
;705:			else {
line 706
;706:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $404
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 707
;707:			}
LABELV $503
line 708
;708:		}
LABELV $498
line 710
;709:		// find the voice file for the head model the client uses
;710:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $504
line 711
;711:			if (!Q_stricmp(headModelVoiceChat[i].headmodel, headModelName)) {
CNSTI4 68
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
ADDRLP4 8
ARGP4
ADDRLP4 156
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 156
INDIRI4
CNSTI4 0
NEI4 $508
line 712
;712:				break;
ADDRGP4 $506
JUMPV
LABELV $508
line 714
;713:			}
;714:		}
LABELV $505
line 710
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 64
LTI4 $504
LABELV $506
line 715
;715:		if (i < MAX_HEADMODELS) {
ADDRLP4 0
INDIRI4
CNSTI4 64
GEI4 $510
line 716
;716:			return &voiceChatLists[headModelVoiceChat[i].voiceChatNum];
CNSTI4 282952
CNSTI4 68
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat+64
ADDP4
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
RETP4
ADDRGP4 $488
JUMPV
LABELV $510
line 719
;717:		}
;718:		// find a <headmodelname>.vc file
;719:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $513
line 720
;720:			if (!strlen(headModelVoiceChat[i].headmodel)) {
CNSTI4 68
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
ADDRLP4 156
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 156
INDIRI4
CNSTI4 0
NEI4 $517
line 721
;721:				Com_sprintf(filename, sizeof(filename), "scripts/%s.vc", headModelName);
ADDRLP4 76
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $519
ARGP4
ADDRLP4 8
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 722
;722:				voiceChatNum = CG_HeadModelVoiceChats(filename);
ADDRLP4 76
ARGP4
ADDRLP4 160
ADDRGP4 CG_HeadModelVoiceChats
CALLI4
ASGNI4
ADDRLP4 72
ADDRLP4 160
INDIRI4
ASGNI4
line 723
;723:				if (voiceChatNum == -1)
ADDRLP4 72
INDIRI4
CNSTI4 -1
NEI4 $520
line 724
;724:					break;
ADDRGP4 $515
JUMPV
LABELV $520
line 725
;725:				Com_sprintf(headModelVoiceChat[i].headmodel, sizeof ( headModelVoiceChat[i].headmodel ),
CNSTI4 68
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $404
ARGP4
ADDRLP4 8
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 727
;726:							"%s", headModelName);
;727:				headModelVoiceChat[i].voiceChatNum = voiceChatNum;
CNSTI4 68
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat+64
ADDP4
ADDRLP4 72
INDIRI4
ASGNI4
line 728
;728:				return &voiceChatLists[headModelVoiceChat[i].voiceChatNum];
CNSTI4 282952
CNSTI4 68
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat+64
ADDP4
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
RETP4
ADDRGP4 $488
JUMPV
LABELV $517
line 730
;729:			}
;730:		}
LABELV $514
line 719
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 64
LTI4 $513
LABELV $515
line 731
;731:	}
LABELV $494
line 692
ADDRLP4 144
ADDRLP4 144
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 144
INDIRI4
CNSTI4 2
LTI4 $493
line 732
;732:	gender = ci->gender;
ADDRLP4 140
ADDRLP4 148
INDIRP4
CNSTI4 512
ADDP4
INDIRI4
ASGNI4
line 733
;733:	for (k = 0; k < 2; k++) {
ADDRLP4 144
CNSTI4 0
ASGNI4
LABELV $524
line 735
;734:		// just pick the first with the right gender
;735:		for ( i = 0; i < MAX_VOICEFILES; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $528
line 736
;736:			if (strlen(voiceChatLists[i].name)) {
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
ARGP4
ADDRLP4 156
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 156
INDIRI4
CNSTI4 0
EQI4 $532
line 737
;737:				if (voiceChatLists[i].gender == gender) {
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists+64
ADDP4
INDIRI4
ADDRLP4 140
INDIRI4
NEI4 $534
line 739
;738:					// store this head model with voice chat for future reference
;739:					for ( j = 0; j < MAX_HEADMODELS; j++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
LABELV $537
line 740
;740:						if (!strlen(headModelVoiceChat[j].headmodel)) {
CNSTI4 68
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
ADDRLP4 160
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 160
INDIRI4
CNSTI4 0
NEI4 $541
line 741
;741:							Com_sprintf(headModelVoiceChat[j].headmodel, sizeof ( headModelVoiceChat[j].headmodel ),
CNSTI4 68
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $404
ARGP4
ADDRLP4 8
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 743
;742:									"%s", headModelName);
;743:							headModelVoiceChat[j].voiceChatNum = i;
CNSTI4 68
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat+64
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 744
;744:							break;
ADDRGP4 $539
JUMPV
LABELV $541
line 746
;745:						}
;746:					}
LABELV $538
line 739
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 64
LTI4 $537
LABELV $539
line 747
;747:					return &voiceChatLists[i];
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
RETP4
ADDRGP4 $488
JUMPV
LABELV $534
line 749
;748:				}
;749:			}
LABELV $532
line 750
;750:		}
LABELV $529
line 735
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 8
LTI4 $528
line 752
;751:		// fall back to male gender because we don't have neuter in the mission pack
;752:		if (gender == GENDER_MALE)
ADDRLP4 140
INDIRI4
CNSTI4 0
NEI4 $544
line 753
;753:			break;
ADDRGP4 $526
JUMPV
LABELV $544
line 754
;754:		gender = GENDER_MALE;
ADDRLP4 140
CNSTI4 0
ASGNI4
line 755
;755:	}
LABELV $525
line 733
ADDRLP4 144
ADDRLP4 144
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 144
INDIRI4
CNSTI4 2
LTI4 $524
LABELV $526
line 757
;756:	// store this head model with voice chat for future reference
;757:	for ( j = 0; j < MAX_HEADMODELS; j++ ) {
ADDRLP4 4
CNSTI4 0
ASGNI4
LABELV $546
line 758
;758:		if (!strlen(headModelVoiceChat[j].headmodel)) {
CNSTI4 68
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
ADDRLP4 156
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 156
INDIRI4
CNSTI4 0
NEI4 $550
line 759
;759:			Com_sprintf(headModelVoiceChat[j].headmodel, sizeof ( headModelVoiceChat[j].headmodel ),
CNSTI4 68
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat
ADDP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $404
ARGP4
ADDRLP4 8
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 761
;760:					"%s", headModelName);
;761:			headModelVoiceChat[j].voiceChatNum = 0;
CNSTI4 68
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 headModelVoiceChat+64
ADDP4
CNSTI4 0
ASGNI4
line 762
;762:			break;
ADDRGP4 $548
JUMPV
LABELV $550
line 764
;763:		}
;764:	}
LABELV $547
line 757
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 64
LTI4 $546
LABELV $548
line 766
;765:	// just return the first voice chat list
;766:	return &voiceChatLists[0];
ADDRGP4 voiceChatLists
RETP4
LABELV $488
endproc CG_VoiceChatListForClient 164 20
export CG_PlayVoiceChat
proc CG_PlayVoiceChat 8 12
line 787
;767:}
;768:
;769:#define MAX_VOICECHATBUFFER		32
;770:
;771:typedef struct bufferedVoiceChat_s
;772:{
;773:	int clientNum;
;774:	sfxHandle_t snd;
;775:	int voiceOnly;
;776:	char cmd[MAX_SAY_TEXT];
;777:	char message[MAX_SAY_TEXT];
;778:} bufferedVoiceChat_t;
;779:
;780:bufferedVoiceChat_t voiceChatBuffer[MAX_VOICECHATBUFFER];
;781:
;782:/*
;783:=================
;784:CG_PlayVoiceChat
;785:=================
;786:*/
;787:void CG_PlayVoiceChat( bufferedVoiceChat_t *vchat ) {
line 790
;788:#ifdef MISSIONPACK
;789:	// if we are going into the intermission, don't start any voices
;790:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $554
line 791
;791:		return;
ADDRGP4 $553
JUMPV
LABELV $554
line 794
;792:	}
;793:
;794:	if ( !cg_noVoiceChats.integer ) {
ADDRGP4 cg_noVoiceChats+12
INDIRI4
CNSTI4 0
NEI4 $557
line 795
;795:		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 796
;796:		if (vchat->clientNum != cg.snap->ps.clientNum) {
ADDRFP4 0
INDIRP4
INDIRI4
ADDRGP4 cg+36
INDIRP4
CNSTI4 184
ADDP4
INDIRI4
EQI4 $560
line 797
;797:			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 798
;798:			if (orderTask > 0) {
ADDRLP4 0
INDIRI4
CNSTI4 0
LEI4 $563
line 799
;799:				cgs.acceptOrderTime = cg.time + 5000;
ADDRGP4 cgs+152296
ADDRGP4 cg+107604
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 800
;800:				Q_strncpyz(cgs.acceptVoice, vchat->cmd, sizeof(cgs.acceptVoice));
ADDRGP4 cgs+152308
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 12
ADDP4
ARGP4
CNSTI4 32
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 801
;801:				cgs.acceptTask = orderTask;
ADDRGP4 cgs+152300
ADDRLP4 0
INDIRI4
ASGNI4
line 802
;802:				cgs.acceptLeader = vchat->clientNum;
ADDRGP4 cgs+152304
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 803
;803:			}
LABELV $563
line 805
;804:			// see if this was an order
;805:			CG_ShowResponseHead();
ADDRGP4 CG_ShowResponseHead
CALLV
pop
line 806
;806:		}
LABELV $560
line 807
;807:	}
LABELV $557
line 808
;808:	if (!vchat->voiceOnly && !cg_noVoiceText.integer) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $571
ADDRGP4 cg_noVoiceText+12
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $571
line 809
;809:		CG_AddToTeamChat( vchat->message );
ADDRFP4 0
INDIRP4
CNSTI4 162
ADDP4
ARGP4
ADDRGP4 CG_AddToTeamChat
CALLV
pop
line 810
;810:		CG_Printf( "%s\n", vchat->message );
ADDRGP4 $574
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 162
ADDP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 811
;811:	}
LABELV $571
line 812
;812:	voiceChatBuffer[cg.voiceChatBufferOut].snd = 0;
CNSTI4 312
ADDRGP4 cg+124652
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer+4
ADDP4
CNSTI4 0
ASGNI4
line 814
;813:#endif
;814:}
LABELV $553
endproc CG_PlayVoiceChat 8 12
export CG_PlayBufferedVoiceChats
proc CG_PlayBufferedVoiceChats 0 4
line 821
;815:
;816:/*
;817:=====================
;818:CG_PlayBufferedVoieChats
;819:=====================
;820:*/
;821:void CG_PlayBufferedVoiceChats( void ) {
line 823
;822:#ifdef MISSIONPACK
;823:	if ( cg.voiceChatTime < cg.time ) {
ADDRGP4 cg+124644
INDIRI4
ADDRGP4 cg+107604
INDIRI4
GEI4 $578
line 824
;824:		if (cg.voiceChatBufferOut != cg.voiceChatBufferIn && voiceChatBuffer[cg.voiceChatBufferOut].snd) {
ADDRGP4 cg+124652
INDIRI4
ADDRGP4 cg+124648
INDIRI4
EQI4 $582
CNSTI4 312
ADDRGP4 cg+124652
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer+4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $582
line 826
;825:			//
;826:			CG_PlayVoiceChat(&voiceChatBuffer[cg.voiceChatBufferOut]);
CNSTI4 312
ADDRGP4 cg+124652
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRGP4 CG_PlayVoiceChat
CALLV
pop
line 828
;827:			//
;828:			cg.voiceChatBufferOut = (cg.voiceChatBufferOut + 1) % MAX_VOICECHATBUFFER;
ADDRGP4 cg+124652
ADDRGP4 cg+124652
INDIRI4
CNSTI4 1
ADDI4
CNSTI4 32
MODI4
ASGNI4
line 829
;829:			cg.voiceChatTime = cg.time + 1000;
ADDRGP4 cg+124644
ADDRGP4 cg+107604
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 830
;830:		}
LABELV $582
line 831
;831:	}
LABELV $578
line 833
;832:#endif
;833:}
LABELV $577
endproc CG_PlayBufferedVoiceChats 0 4
export CG_AddBufferedVoiceChat
proc CG_AddBufferedVoiceChat 8 12
line 840
;834:
;835:/*
;836:=====================
;837:CG_AddBufferedVoiceChat
;838:=====================
;839:*/
;840:void CG_AddBufferedVoiceChat( bufferedVoiceChat_t *vchat ) {
line 843
;841:#ifdef MISSIONPACK
;842:	// if we are going into the intermission, don't start any voices
;843:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $594
line 844
;844:		return;
ADDRGP4 $593
JUMPV
LABELV $594
line 847
;845:	}
;846:
;847:	memcpy(&voiceChatBuffer[cg.voiceChatBufferIn], vchat, sizeof(bufferedVoiceChat_t));
ADDRLP4 0
CNSTI4 312
ASGNI4
ADDRLP4 0
INDIRI4
ADDRGP4 cg+124648
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 memcpy
CALLP4
pop
line 848
;848:	cg.voiceChatBufferIn = (cg.voiceChatBufferIn + 1) % MAX_VOICECHATBUFFER;
ADDRGP4 cg+124648
ADDRGP4 cg+124648
INDIRI4
CNSTI4 1
ADDI4
CNSTI4 32
MODI4
ASGNI4
line 849
;849:	if (cg.voiceChatBufferIn == cg.voiceChatBufferOut) {
ADDRGP4 cg+124648
INDIRI4
ADDRGP4 cg+124652
INDIRI4
NEI4 $600
line 850
;850:		CG_PlayVoiceChat( &voiceChatBuffer[cg.voiceChatBufferOut] );
CNSTI4 312
ADDRGP4 cg+124652
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRGP4 CG_PlayVoiceChat
CALLV
pop
line 851
;851:		cg.voiceChatBufferOut++;
ADDRLP4 4
ADDRGP4 cg+124652
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 852
;852:	}
LABELV $600
line 854
;853:#endif
;854:}
LABELV $593
endproc CG_AddBufferedVoiceChat 8 12
export CG_VoiceChatLocal
proc CG_VoiceChatLocal 340 28
line 861
;855:
;856:/*
;857:=================
;858:CG_VoiceChatLocal
;859:=================
;860:*/
;861:void CG_VoiceChatLocal( int mode, qboolean voiceOnly, int clientNum, int color, const char *cmd ) {
line 870
;862:#ifdef MISSIONPACK
;863:	char *chat;
;864:	voiceChatList_t *voiceChatList;
;865:	clientInfo_t *ci;
;866:	sfxHandle_t snd;
;867:	bufferedVoiceChat_t vchat;
;868:
;869:	// if we are going into the intermission, don't start any voices
;870:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $607
line 871
;871:		return;
ADDRGP4 $606
JUMPV
LABELV $607
line 874
;872:	}
;873:
;874:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
ADDRLP4 328
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 328
INDIRI4
CNSTI4 0
LTI4 $612
ADDRLP4 328
INDIRI4
CNSTI4 64
LTI4 $610
LABELV $612
line 875
;875:		clientNum = 0;
ADDRFP4 8
CNSTI4 0
ASGNI4
line 876
;876:	}
LABELV $610
line 877
;877:	ci = &cgs.clientinfo[ clientNum ];
ADDRLP4 320
CNSTI4 1708
ADDRFP4 8
INDIRI4
MULI4
ADDRGP4 cgs+40972
ADDP4
ASGNP4
line 879
;878:
;879:	cgs.currentVoiceClient = clientNum;
ADDRGP4 cgs+152292
ADDRFP4 8
INDIRI4
ASGNI4
line 881
;880:
;881:	voiceChatList = CG_VoiceChatListForClient( clientNum );
ADDRFP4 8
INDIRI4
ARGI4
ADDRLP4 332
ADDRGP4 CG_VoiceChatListForClient
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 332
INDIRP4
ASGNP4
line 883
;882:
;883:	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 $615
line 885
;884:		//
;885:		if ( mode == SAY_TEAM || !cg_teamChatsOnly.integer ) {
ADDRFP4 0
INDIRI4
CNSTI4 1
EQI4 $620
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $617
LABELV $620
line 886
;886:			vchat.clientNum = clientNum;
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
line 887
;887:			vchat.snd = snd;
ADDRLP4 4+4
ADDRLP4 324
INDIRI4
ASGNI4
line 888
;888:			vchat.voiceOnly = voiceOnly;
ADDRLP4 4+8
ADDRFP4 4
INDIRI4
ASGNI4
line 889
;889:			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 890
;890:			if ( mode == SAY_TELL ) {
ADDRFP4 0
INDIRI4
CNSTI4 2
NEI4 $625
line 891
;891:				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 $629
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 892
;892:			}
ADDRGP4 $626
JUMPV
LABELV $625
line 893
;893:			else if ( mode == SAY_TEAM ) {
ADDRFP4 0
INDIRI4
CNSTI4 1
NEI4 $630
line 894
;894:				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 $634
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 895
;895:			}
ADDRGP4 $631
JUMPV
LABELV $630
line 896
;896:			else {
line 897
;897:				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 $637
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 898
;898:			}
LABELV $631
LABELV $626
line 899
;899:			CG_AddBufferedVoiceChat(&vchat);
ADDRLP4 4
ARGP4
ADDRGP4 CG_AddBufferedVoiceChat
CALLV
pop
line 900
;900:		}
LABELV $617
line 901
;901:	}
LABELV $615
line 903
;902:#endif
;903:}
LABELV $606
endproc CG_VoiceChatLocal 340 28
export CG_VoiceChat
proc CG_VoiceChat 64 20
line 910
;904:
;905:/*
;906:=================
;907:CG_VoiceChat
;908:=================
;909:*/
;910:void CG_VoiceChat( int mode ) {
line 916
;911:#ifdef MISSIONPACK
;912:	const char *cmd;
;913:	int clientNum, color;
;914:	qboolean voiceOnly;
;915:
;916:	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 917
;917:	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 918
;918:	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 919
;919:	cmd = CG_Argv(4);
CNSTI4 4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 40
INDIRP4
ASGNP4
line 921
;920:
;921:	if (cg_noTaunt.integer != 0) {
ADDRGP4 cg_noTaunt+12
INDIRI4
CNSTI4 0
EQI4 $639
line 922
;922:		if (!strcmp(cmd, VOICECHAT_KILLINSULT)  || !strcmp(cmd, VOICECHAT_TAUNT) || \
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $644
ARGP4
ADDRLP4 44
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 44
INDIRI4
CNSTI4 0
EQI4 $652
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $645
ARGP4
ADDRLP4 48
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
EQI4 $652
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $646
ARGP4
ADDRLP4 52
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 52
INDIRI4
CNSTI4 0
EQI4 $652
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $647
ARGP4
ADDRLP4 56
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 0
EQI4 $652
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $648
ARGP4
ADDRLP4 60
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 60
INDIRI4
CNSTI4 0
NEI4 $642
LABELV $652
line 925
;923:			!strcmp(cmd, VOICECHAT_DEATHINSULT) || !strcmp(cmd, VOICECHAT_KILLGAUNTLET) || \
;924:			!strcmp(cmd, VOICECHAT_PRAISE)) {
;925:			return;
ADDRGP4 $638
JUMPV
LABELV $642
line 927
;926:		}
;927:	}
LABELV $639
line 929
;928:
;929:	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 931
;930:#endif
;931:}
LABELV $638
endproc CG_VoiceChat 64 20
proc CG_RemoveChatEscapeChar 16 0
line 938
;932:
;933:/*
;934:=================
;935:CG_RemoveChatEscapeChar
;936:=================
;937:*/
;938:static void CG_RemoveChatEscapeChar( char *text ) {
line 941
;939:	int i, l;
;940:
;941:	l = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 942
;942:	for ( i = 0; text[i]; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $657
JUMPV
LABELV $654
line 943
;943:		if (text[i] == '\x19')
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 25
NEI4 $658
line 944
;944:			continue;
ADDRGP4 $655
JUMPV
LABELV $658
line 945
;945:		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 946
;946:	}
LABELV $655
line 942
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $657
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $654
line 947
;947:	text[l] = '\0';
ADDRLP4 4
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 948
;948:}
LABELV $653
endproc CG_RemoveChatEscapeChar 16 0
proc CG_ServerCommand 224 12
line 958
;949:
;950:/*
;951:=================
;952:CG_ServerCommand
;953:
;954:The string has been tokenized and can be retrieved with
;955:Cmd_Argc() / Cmd_Argv()
;956:=================
;957:*/
;958:static void CG_ServerCommand( void ) {
line 962
;959:	const char	*cmd;
;960:	char		text[MAX_SAY_TEXT];
;961:
;962:	cmd = CG_Argv(0);
CNSTI4 0
ARGI4
ADDRLP4 156
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 156
INDIRP4
ASGNP4
line 964
;963:
;964:	if ( !cmd[0] ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $661
line 966
;965:		// server claimed the command
;966:		return;
ADDRGP4 $660
JUMPV
LABELV $661
line 969
;967:	}
;968:
;969:	if ( !strcmp( cmd, "cp" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $665
ARGP4
ADDRLP4 160
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 160
INDIRI4
CNSTI4 0
NEI4 $663
line 970
;970:		CG_CenterPrint( CG_Argv(1), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH );
CNSTI4 1
ARGI4
ADDRLP4 164
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 164
INDIRP4
ARGP4
CNSTI4 143
ARGI4
CNSTI4 16
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 971
;971:		return;
ADDRGP4 $660
JUMPV
LABELV $663
line 974
;972:	}
;973:
;974:	if ( !strcmp( cmd, "cs" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $668
ARGP4
ADDRLP4 164
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 164
INDIRI4
CNSTI4 0
NEI4 $666
line 975
;975:		CG_ConfigStringModified();
ADDRGP4 CG_ConfigStringModified
CALLV
pop
line 976
;976:		return;
ADDRGP4 $660
JUMPV
LABELV $666
line 979
;977:	}
;978:
;979:	if ( !strcmp( cmd, "print" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $671
ARGP4
ADDRLP4 168
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 168
INDIRI4
CNSTI4 0
NEI4 $669
line 980
;980:		CG_Printf( "%s", CG_Argv(1) );
CNSTI4 1
ARGI4
ADDRLP4 172
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRGP4 $404
ARGP4
ADDRLP4 172
INDIRP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 982
;981:#ifdef MISSIONPACK
;982:		cmd = CG_Argv(1);			// yes, this is obviously a hack, but so is the way we hear about
CNSTI4 1
ARGI4
ADDRLP4 176
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 176
INDIRP4
ASGNP4
line 984
;983:									// votes passing or failing
;984:		if ( !Q_stricmpn( cmd, "vote failed", 11 ) || !Q_stricmpn( cmd, "team vote failed", 16 )) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $674
ARGP4
CNSTI4 11
ARGI4
ADDRLP4 180
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 0
EQI4 $676
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $675
ARGP4
CNSTI4 16
ARGI4
ADDRLP4 184
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 184
INDIRI4
CNSTI4 0
NEI4 $672
LABELV $676
line 985
;985:			trap_S_StartLocalSound( cgs.media.voteFailed, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1020
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 986
;986:		} else if ( !Q_stricmpn( cmd, "vote passed", 11 ) || !Q_stricmpn( cmd, "team vote passed", 16 ) ) {
ADDRGP4 $660
JUMPV
LABELV $672
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $681
ARGP4
CNSTI4 11
ARGI4
ADDRLP4 188
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 188
INDIRI4
CNSTI4 0
EQI4 $683
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $682
ARGP4
CNSTI4 16
ARGI4
ADDRLP4 192
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 192
INDIRI4
CNSTI4 0
NEI4 $660
LABELV $683
line 987
;987:			trap_S_StartLocalSound( cgs.media.votePassed, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+1016
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 988
;988:		}
line 990
;989:#endif
;990:		return;
ADDRGP4 $660
JUMPV
LABELV $669
line 993
;991:	}
;992:
;993:	if ( !strcmp( cmd, "chat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $688
ARGP4
ADDRLP4 172
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 172
INDIRI4
CNSTI4 0
NEI4 $686
line 994
;994:		if ( !cg_teamChatsOnly.integer ) {
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $660
line 995
;995:			trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+152340+908
INDIRI4
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 996
;996:			Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CNSTI4 1
ARGI4
ADDRLP4 176
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 4
ARGP4
ADDRLP4 176
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 997
;997:			CG_RemoveChatEscapeChar( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_RemoveChatEscapeChar
CALLV
pop
line 998
;998:			CG_Printf( "%s\n", text );
ADDRGP4 $574
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 999
;999:		}
line 1000
;1000:		return;
ADDRGP4 $660
JUMPV
LABELV $686
line 1003
;1001:	}
;1002:
;1003:	if ( !strcmp( cmd, "tchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $696
ARGP4
ADDRLP4 176
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 176
INDIRI4
CNSTI4 0
NEI4 $694
line 1004
;1004:		trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+152340+908
INDIRI4
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 1005
;1005:		Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CNSTI4 1
ARGI4
ADDRLP4 180
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 4
ARGP4
ADDRLP4 180
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1006
;1006:		CG_RemoveChatEscapeChar( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_RemoveChatEscapeChar
CALLV
pop
line 1007
;1007:		CG_AddToTeamChat( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_AddToTeamChat
CALLV
pop
line 1008
;1008:		CG_Printf( "%s\n", text );
ADDRGP4 $574
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1009
;1009:		return;
ADDRGP4 $660
JUMPV
LABELV $694
line 1011
;1010:	}
;1011:	if ( !strcmp( cmd, "vchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $701
ARGP4
ADDRLP4 180
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 0
NEI4 $699
line 1012
;1012:		CG_VoiceChat( SAY_ALL );
CNSTI4 0
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1013
;1013:		return;
ADDRGP4 $660
JUMPV
LABELV $699
line 1016
;1014:	}
;1015:
;1016:	if ( !strcmp( cmd, "vtchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $704
ARGP4
ADDRLP4 184
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 184
INDIRI4
CNSTI4 0
NEI4 $702
line 1017
;1017:		CG_VoiceChat( SAY_TEAM );
CNSTI4 1
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1018
;1018:		return;
ADDRGP4 $660
JUMPV
LABELV $702
line 1021
;1019:	}
;1020:
;1021:	if ( !strcmp( cmd, "vtell" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $707
ARGP4
ADDRLP4 188
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 188
INDIRI4
CNSTI4 0
NEI4 $705
line 1022
;1022:		CG_VoiceChat( SAY_TELL );
CNSTI4 2
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1023
;1023:		return;
ADDRGP4 $660
JUMPV
LABELV $705
line 1026
;1024:	}
;1025:
;1026:	if ( !strcmp( cmd, "scores" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $710
ARGP4
ADDRLP4 192
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 192
INDIRI4
CNSTI4 0
NEI4 $708
line 1027
;1027:		CG_ParseScores();
ADDRGP4 CG_ParseScores
CALLV
pop
line 1028
;1028:		return;
ADDRGP4 $660
JUMPV
LABELV $708
line 1031
;1029:	}
;1030:
;1031:	if ( !strcmp( cmd, "tinfo" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $713
ARGP4
ADDRLP4 196
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 196
INDIRI4
CNSTI4 0
NEI4 $711
line 1032
;1032:		CG_ParseTeamInfo();
ADDRGP4 CG_ParseTeamInfo
CALLV
pop
line 1033
;1033:		return;
ADDRGP4 $660
JUMPV
LABELV $711
line 1036
;1034:	}
;1035:
;1036:	if ( !strcmp( cmd, "map_restart" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $716
ARGP4
ADDRLP4 200
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 200
INDIRI4
CNSTI4 0
NEI4 $714
line 1037
;1037:		CG_MapRestart();
ADDRGP4 CG_MapRestart
CALLV
pop
line 1038
;1038:		return;
ADDRGP4 $660
JUMPV
LABELV $714
line 1041
;1039:	}
;1040:
;1041:  if ( Q_stricmp (cmd, "remapShader") == 0 ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $719
ARGP4
ADDRLP4 204
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 204
INDIRI4
CNSTI4 0
NEI4 $717
line 1042
;1042:		if (trap_Argc() == 4) {
ADDRLP4 208
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 208
INDIRI4
CNSTI4 4
NEI4 $720
line 1043
;1043:			trap_R_RemapShader(CG_Argv(1), CG_Argv(2), CG_Argv(3));
CNSTI4 1
ARGI4
ADDRLP4 212
ADDRGP4 CG_Argv
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 216
ADDRGP4 CG_Argv
CALLP4
ASGNP4
CNSTI4 3
ARGI4
ADDRLP4 220
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 212
INDIRP4
ARGP4
ADDRLP4 216
INDIRP4
ARGP4
ADDRLP4 220
INDIRP4
ARGP4
ADDRGP4 trap_R_RemapShader
CALLV
pop
line 1044
;1044:		}
LABELV $720
line 1045
;1045:	}
LABELV $717
line 1048
;1046:
;1047:	// loaddeferred can be both a servercmd and a consolecmd
;1048:	if ( !strcmp( cmd, "loaddefered" ) ) {	// FIXME: spelled wrong, but not changing for demo
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $724
ARGP4
ADDRLP4 208
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 208
INDIRI4
CNSTI4 0
NEI4 $722
line 1049
;1049:		CG_LoadDeferredPlayers();
ADDRGP4 CG_LoadDeferredPlayers
CALLV
pop
line 1050
;1050:		return;
ADDRGP4 $660
JUMPV
LABELV $722
line 1055
;1051:	}
;1052:
;1053:	// clientLevelShot is sent before taking a special screenshot for
;1054:	// the menu system during development
;1055:	if ( !strcmp( cmd, "clientLevelShot" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $727
ARGP4
ADDRLP4 212
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 212
INDIRI4
CNSTI4 0
NEI4 $725
line 1056
;1056:		cg.levelShot = qtrue;
ADDRGP4 cg+12
CNSTI4 1
ASGNI4
line 1057
;1057:		return;
ADDRGP4 $660
JUMPV
LABELV $725
line 1060
;1058:	}
;1059:
;1060:	CG_Printf( "Unknown client game command: %s\n", cmd );
ADDRGP4 $729
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1061
;1061:}
LABELV $660
endproc CG_ServerCommand 224 12
export CG_ExecuteNewServerCommands
proc CG_ExecuteNewServerCommands 12 4
line 1072
;1062:
;1063:
;1064:/*
;1065:====================
;1066:CG_ExecuteNewServerCommands
;1067:
;1068:Execute all of the server commands that were received along
;1069:with this this snapshot.
;1070:====================
;1071:*/
;1072:void CG_ExecuteNewServerCommands( int latestSequence ) {
ADDRGP4 $732
JUMPV
LABELV $731
line 1073
;1073:	while ( cgs.serverCommandSequence < latestSequence ) {
line 1074
;1074:		if ( trap_GetServerCommand( ++cgs.serverCommandSequence ) ) {
ADDRLP4 0
ADDRGP4 cgs+31444
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 $735
line 1075
;1075:			CG_ServerCommand();
ADDRGP4 CG_ServerCommand
CALLV
pop
line 1076
;1076:		}
LABELV $735
line 1077
;1077:	}
LABELV $732
line 1073
ADDRGP4 cgs+31444
INDIRI4
ADDRFP4 0
INDIRI4
LTI4 $731
line 1078
;1078:}
LABELV $730
endproc CG_ExecuteNewServerCommands 12 4
bss
export voiceChatBuffer
align 4
LABELV voiceChatBuffer
skip 9984
export headModelVoiceChat
align 4
LABELV headModelVoiceChat
skip 4352
export voiceChatLists
align 4
LABELV voiceChatLists
skip 2263616
import CG_NewParticleArea
import initparticles
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_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 trap_Key_GetKey
import trap_Key_SetCatcher
import trap_Key_GetCatcher
import trap_Key_IsDown
import trap_R_RegisterFont
import trap_MemoryRemaining
import testPrintFloat
import testPrintInt
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_R_RemapShader
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_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_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_Seek
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_CheckChangedPredictableEvents
import CG_TransitionPlayerState
import CG_Respawn
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_MakeExplosion
import CG_Bleed
import CG_BigExplode
import CG_GibPlayer
import CG_ScorePlum
import CG_LightningBoltBeam
import CG_InvulnerabilityJuiced
import CG_InvulnerabilityImpact
import CG_ObeliskPain
import CG_ObeliskExplode
import CG_KamikazeEffect
import CG_SpawnEffect
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_DrawWeaponSelect
import CG_AddPlayerWeapon
import CG_AddViewWeapon
import CG_GrappleTrail
import CG_RailTrail
import CG_Bullet
import CG_ShotgunFire
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_PositionRotatedEntityOnTag
import CG_PositionEntityOnTag
import CG_AdjustPositionForMover
import CG_Beam
import CG_AddPacketEntities
import CG_SetEntitySoundPosition
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_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_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_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_DrawString
import CG_DrawPic
import CG_FillRect
import CG_AdjustFrom640
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_BuildSpectatorString
import CG_GetSelectedScore
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_obeliskRespawnDelay
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_oldPlasma
import cg_oldRocket
import cg_oldRail
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_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_drawAttacker
import cg_lagometer
import cg_stereoSeparation
import cg_thirdPerson
import cg_thirdPersonAngle
import cg_thirdPersonRange
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_brassTime
import cg_addMarks
import cg_footsteps
import cg_showmiss
import cg_noPlayerAnims
import cg_nopredict
import cg_errorDecay
import cg_railTrailTime
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_drawCrosshairNames
import cg_drawCrosshair
import cg_drawAmmoWarning
import cg_drawIcons
import cg_draw3dIcons
import cg_drawSnapshot
import cg_drawFPS
import cg_drawTimer
import cg_gibs
import cg_shadows
import cg_swingSpeed
import cg_bobroll
import cg_bobpitch
import cg_bobup
import cg_runroll
import cg_runpitch
import cg_centertime
import cg_markPolys
import cg_items
import cg_weapons
import cg_entities
import cg
import cgs
import BG_PlayerTouchesItem
import BG_PlayerStateToEntityStateExtraPolate
import BG_PlayerStateToEntityState
import BG_TouchJumpPad
import BG_AddPredictableEventToPlayerstate
import BG_EvaluateTrajectoryDelta
import BG_EvaluateTrajectory
import BG_CanItemBeGrabbed
import BG_FindItemForHoldable
import BG_FindItemForPowerup
import BG_FindItemForWeapon
import BG_FindItem
import bg_numItems
import bg_itemlist
import Pmove
import PM_UpdateViewAngles
import 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_ParseWarning
import COM_ParseError
import COM_Compress
import COM_ParseExt
import COM_Parse
import COM_GetCurrentParseLine
import COM_BeginParseSession
import COM_DefaultExtension
import COM_StripExtension
import COM_SkipPath
import Com_Clamp
import PerpendicularVector
import AngleVectors
import MatrixMultiply
import MakeNormalVectors
import RotateAroundDirection
import RotatePointAroundVector
import ProjectPointOnPlane
import PlaneFromPoints
import AngleDelta
import AngleNormalize180
import AngleNormalize360
import AnglesSubtract
import AngleSubtract
import LerpAngle
import AngleMod
import BoxOnPlaneSide
import SetPlaneSignbits
import AxisCopy
import AxisClear
import AnglesToAxis
import vectoangles
import Q_crandom
import Q_random
import Q_rand
import Q_acos
import Q_log2
import VectorRotate
import Vector4Scale
import VectorNormalize2
import VectorNormalize
import CrossProduct
import VectorInverse
import VectorNormalizeFast
import DistanceSquared
import Distance
import VectorLengthSquared
import VectorLength
import VectorCompare
import AddPointToBounds
import ClearBounds
import RadiusFromBounds
import NormalizeColor
import ColorBytes4
import ColorBytes3
import _VectorMA
import _VectorScale
import _VectorCopy
import _VectorAdd
import _VectorSubtract
import _DotProduct
import ByteToDir
import DirToByte
import ClampShort
import ClampChar
import Q_rsqrt
import Q_fabs
import axisDefault
import vec3_origin
import g_color_table
import colorDkGrey
import colorMdGrey
import colorLtGrey
import colorWhite
import colorCyan
import colorMagenta
import colorYellow
import colorBlue
import colorGreen
import colorRed
import colorBlack
import bytedirs
import Com_Memcpy
import Com_Memset
import Hunk_Alloc
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 $729
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 $727
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 $724
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 $719
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 $716
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 $713
byte 1 116
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 0
align 1
LABELV $710
byte 1 115
byte 1 99
byte 1 111
byte 1 114
byte 1 101
byte 1 115
byte 1 0
align 1
LABELV $707
byte 1 118
byte 1 116
byte 1 101
byte 1 108
byte 1 108
byte 1 0
align 1
LABELV $704
byte 1 118
byte 1 116
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $701
byte 1 118
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $696
byte 1 116
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $688
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $682
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 32
byte 1 118
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 112
byte 1 97
byte 1 115
byte 1 115
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $681
byte 1 118
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 112
byte 1 97
byte 1 115
byte 1 115
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $675
byte 1 116
byte 1 101
byte 1 97
byte 1 109
byte 1 32
byte 1 118
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 102
byte 1 97
byte 1 105
byte 1 108
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $674
byte 1 118
byte 1 111
byte 1 116
byte 1 101
byte 1 32
byte 1 102
byte 1 97
byte 1 105
byte 1 108
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $671
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $668
byte 1 99
byte 1 115
byte 1 0
align 1
LABELV $665
byte 1 99
byte 1 112
byte 1 0
align 1
LABELV $648
byte 1 112
byte 1 114
byte 1 97
byte 1 105
byte 1 115
byte 1 101
byte 1 0
align 1
LABELV $647
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 $646
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 $645
byte 1 116
byte 1 97
byte 1 117
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $644
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 $637
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 $634
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 $629
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 $574
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $519
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 37
byte 1 115
byte 1 46
byte 1 118
byte 1 99
byte 1 0
align 1
LABELV $501
byte 1 37
byte 1 115
byte 1 47
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $466
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 $464
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 $462
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 $460
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 $458
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 $456
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 $454
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 $452
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 $451
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 $440
byte 1 125
byte 1 0
align 1
LABELV $431
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 $430
byte 1 123
byte 1 0
align 1
LABELV $421
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 $420
byte 1 110
byte 1 101
byte 1 117
byte 1 116
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $417
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $414
byte 1 102
byte 1 101
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $404
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $403
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 $400
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 $393
byte 1 48
byte 1 0
align 1
LABELV $392
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 $390
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 $383
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 $379
byte 1 70
byte 1 73
byte 1 71
byte 1 72
byte 1 84
byte 1 33
byte 1 0
align 1
LABELV $368
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 $233
byte 1 64
byte 1 0
align 1
LABELV $230
byte 1 58
byte 1 0
align 1
LABELV $227
byte 1 61
byte 1 0
align 1
LABELV $189
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 $185
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 $183
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 $180
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 $179
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 $177
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 $175
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 $173
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 $171
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 $169
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 $166
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $165
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 $79
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 $78
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 $77
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 $76
byte 1 99
byte 1 97
byte 1 109
byte 1 112
byte 1 0
align 1
LABELV $75
byte 1 112
byte 1 97
byte 1 116
byte 1 114
byte 1 111
byte 1 108
byte 1 0
align 1
LABELV $74
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 $73
byte 1 100
byte 1 101
byte 1 102
byte 1 101
byte 1 110
byte 1 100
byte 1 0
align 1
LABELV $72
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 $71
byte 1 103
byte 1 101
byte 1 116
byte 1 102
byte 1 108
byte 1 97
byte 1 103
byte 1 0
