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_ParseScores 212 12
file "../cg_servercmds.c"
line 47
;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) {
;31:	int i;
;32:	for (i = 0; i < numValidOrders; i++) {
;33:		if (Q_stricmp(p, validOrders[i].order) == 0) {
;34:			return validOrders[i].taskNum;
;35:		}
;36:	}
;37:	return -1;
;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 $82
line 52
;52:		cg.numScores = MAX_CLIENTS;
ADDRGP4 cg+110464
CNSTI4 64
ASGNI4
line 53
;53:	}
LABELV $82
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 $94
JUMPV
LABELV $91
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 $125
ADDRLP4 200
INDIRI4
ADDRGP4 cg+110480
ADDP4
INDIRI4
CNSTI4 64
LTI4 $121
LABELV $125
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 $121
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 $92
line 59
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $94
ADDRLP4 0
INDIRI4
ADDRGP4 cg+110464
INDIRI4
LTI4 $91
line 88
;84:#ifdef MISSIONPACK
;85:	CG_SetScoreSelection(NULL);
;86:#endif
;87:
;88:}
LABELV $80
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 $144
JUMPV
LABELV $141
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 $142
line 102
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $144
ADDRLP4 0
INDIRI4
ADDRGP4 numSortedTeamPlayers
INDIRI4
LTI4 $141
line 113
;113:}
LABELV $140
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 $157
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 $158
ARGP4
ADDRGP4 cgs+31456
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $157
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 $161
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 $163
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 $165
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 $167
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 $169
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 $171
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 $172
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 $175
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 $177
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 $177
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 $181
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 $181
ARGP4
ADDRGP4 cgs+31612
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 143
;143:}
LABELV $155
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 $186
ADDRGP4 cg+124656
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $186
line 161
;160:
;161:	} else if ( warmup > 0 && cg.warmup <= 0 ) {
ADDRGP4 $187
JUMPV
LABELV $186
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $189
ADDRGP4 cg+124656
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $189
line 167
;162:#ifdef MISSIONPACK
;163:		if (cgs.gametype >= GT_CTF && cgs.gametype <= GT_HARVESTER) {
;164:			trap_S_StartLocalSound( cgs.media.countPrepareTeamSound, CHAN_ANNOUNCER );
;165:		} else
;166:#endif
;167:		{
line 168
;168:			trap_S_StartLocalSound( cgs.media.countPrepareSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+972
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 169
;169:		}
line 170
;170:	}
LABELV $189
LABELV $187
line 172
;171:
;172:	cg.warmup = warmup;
ADDRGP4 cg+124656
ADDRLP4 0
INDIRI4
ASGNI4
line 173
;173:}
LABELV $184
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 $199
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:	}
LABELV $199
line 199
;193:#ifdef MISSIONPACK
;194:	else if( cgs.gametype == GT_1FCTF ) {
;195:		s = CG_ConfigString( CS_FLAGSTATUS );
;196:		cgs.flagStatus = s[0] - '0';
;197:	}
;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 $195
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 $207
JUMPV
LABELV $206
line 215
;215:	while (o && *o) {
line 216
;216:		n = strstr(o, "=");
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $209
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 $208
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $208
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 $212
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 $208
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $208
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 $214
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 $215
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 $211
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 $211
line 239
;238:		}
;239:	}
LABELV $207
line 215
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $218
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $206
LABELV $218
LABELV $208
line 240
;240:}
LABELV $205
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 $220
line 263
;263:		CG_StartMusic();
ADDRGP4 CG_StartMusic
CALLV
pop
line 264
;264:	} else if ( num == CS_SERVERINFO ) {
ADDRGP4 $221
JUMPV
LABELV $220
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $222
line 265
;265:		CG_ParseServerinfo();
ADDRGP4 CG_ParseServerinfo
CALLV
pop
line 266
;266:	} else if ( num == CS_WARMUP ) {
ADDRGP4 $223
JUMPV
LABELV $222
ADDRLP4 0
INDIRI4
CNSTI4 5
NEI4 $224
line 267
;267:		CG_ParseWarmup();
ADDRGP4 CG_ParseWarmup
CALLV
pop
line 268
;268:	} else if ( num == CS_SCORES1 ) {
ADDRGP4 $225
JUMPV
LABELV $224
ADDRLP4 0
INDIRI4
CNSTI4 6
NEI4 $226
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 $227
JUMPV
LABELV $226
ADDRLP4 0
INDIRI4
CNSTI4 7
NEI4 $229
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 $230
JUMPV
LABELV $229
ADDRLP4 0
INDIRI4
CNSTI4 21
NEI4 $232
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 $233
JUMPV
LABELV $232
ADDRLP4 0
INDIRI4
CNSTI4 8
NEI4 $235
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 $236
JUMPV
LABELV $235
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $239
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 $240
JUMPV
LABELV $239
ADDRLP4 0
INDIRI4
CNSTI4 11
NEI4 $243
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 $244
JUMPV
LABELV $243
ADDRLP4 0
INDIRI4
CNSTI4 9
NEI4 $247
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 288
;285:#ifdef MISSIONPACK
;286:		trap_S_StartLocalSound( cgs.media.voteNow, CHAN_ANNOUNCER );
;287:#endif //MISSIONPACK
;288:	} else if ( num >= CS_TEAMVOTE_TIME && num <= CS_TEAMVOTE_TIME + 1) {
ADDRGP4 $248
JUMPV
LABELV $247
ADDRLP4 0
INDIRI4
CNSTI4 12
LTI4 $251
ADDRLP4 0
INDIRI4
CNSTI4 13
GTI4 $251
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 $252
JUMPV
LABELV $251
ADDRLP4 0
INDIRI4
CNSTI4 16
LTI4 $257
ADDRLP4 0
INDIRI4
CNSTI4 17
GTI4 $257
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 $258
JUMPV
LABELV $257
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $263
ADDRLP4 0
INDIRI4
CNSTI4 19
GTI4 $263
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 $264
JUMPV
LABELV $263
ADDRLP4 0
INDIRI4
CNSTI4 14
LTI4 $269
ADDRLP4 0
INDIRI4
CNSTI4 15
GTI4 $269
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 302
;299:#ifdef MISSIONPACK
;300:		trap_S_StartLocalSound( cgs.media.voteNow, CHAN_ANNOUNCER );
;301:#endif
;302:	} else if ( num == CS_INTERMISSION ) {
ADDRGP4 $270
JUMPV
LABELV $269
ADDRLP4 0
INDIRI4
CNSTI4 22
NEI4 $274
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 $275
JUMPV
LABELV $274
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $277
ADDRLP4 0
INDIRI4
CNSTI4 288
GEI4 $277
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 $278
JUMPV
LABELV $277
ADDRLP4 0
INDIRI4
CNSTI4 288
LTI4 $281
ADDRLP4 0
INDIRI4
CNSTI4 544
GEI4 $281
line 307
;307:		if ( str[0] != '*' ) {	// player specific sounds don't register here
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 42
EQI4 $282
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 $282
JUMPV
LABELV $281
ADDRLP4 0
INDIRI4
CNSTI4 544
LTI4 $287
ADDRLP4 0
INDIRI4
CNSTI4 608
GEI4 $287
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 $288
JUMPV
LABELV $287
ADDRLP4 0
INDIRI4
CNSTI4 23
NEI4 $289
line 314
;314:		if( cgs.gametype == GT_CTF ) {
ADDRGP4 cgs+31456
INDIRI4
CNSTI4 4
NEI4 $290
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:		}
line 324
;319:#ifdef MISSIONPACK
;320:		else if( cgs.gametype == GT_1FCTF ) {
;321:			cgs.flagStatus = str[0] - '0';
;322:		}
;323:#endif
;324:	}
ADDRGP4 $290
JUMPV
LABELV $289
line 325
;325:	else if ( num == CS_SHADERSTATE ) {
ADDRLP4 0
INDIRI4
CNSTI4 24
NEI4 $296
line 326
;326:		CG_ShaderStateChanged();
ADDRGP4 CG_ShaderStateChanged
CALLV
pop
line 327
;327:	}
LABELV $296
LABELV $290
LABELV $288
LABELV $282
LABELV $278
LABELV $275
LABELV $270
LABELV $264
LABELV $258
LABELV $252
LABELV $248
LABELV $244
LABELV $240
LABELV $236
LABELV $233
LABELV $230
LABELV $227
LABELV $225
LABELV $223
LABELV $221
line 329
;328:		
;329:}
LABELV $219
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 $299
line 345
;345:		chatHeight = cg_teamChatHeight.integer;
ADDRLP4 12
ADDRGP4 cg_teamChatHeight+12
INDIRI4
ASGNI4
line 346
;346:	} else {
ADDRGP4 $300
JUMPV
LABELV $299
line 347
;347:		chatHeight = TEAMCHAT_HEIGHT;
ADDRLP4 12
CNSTI4 8
ASGNI4
line 348
;348:	}
LABELV $300
line 350
;349:
;350:	if (chatHeight <= 0 || cg_teamChatTime.integer <= 0) {
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $306
ADDRGP4 cg_teamChatTime+12
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $303
LABELV $306
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 $298
JUMPV
LABELV $303
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 $312
JUMPV
LABELV $311
line 364
;364:	while (*str) {
line 365
;365:		if (len > TEAMCHAT_WIDTH - 1) {
ADDRLP4 4
INDIRI4
CNSTI4 79
LEI4 $314
line 366
;366:			if (ls) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $316
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 $316
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 $314
line 384
;383:
;384:		if ( Q_IsColorString( str ) ) {
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $324
ADDRLP4 28
CNSTI4 94
ASGNI4
ADDRLP4 24
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 28
INDIRI4
NEI4 $324
ADDRLP4 32
ADDRLP4 24
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $324
ADDRLP4 32
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $324
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 $312
JUMPV
LABELV $324
line 390
;389:		}
;390:		if (*str == ' ') {
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $326
line 391
;391:			ls = p;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 392
;392:		}
LABELV $326
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 $312
line 364
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $311
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 $332
line 402
;402:		cgs.teamLastChatPos = cgs.teamChatPos - chatHeight;
ADDRGP4 cgs+152248
ADDRGP4 cgs+152244
INDIRI4
ADDRLP4 12
INDIRI4
SUBI4
ASGNI4
LABELV $332
line 403
;403:}
LABELV $298
endproc CG_AddToTeamChat 60 0
proc CG_MapRestart 0 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 $339
line 418
;418:		CG_Printf( "CG_MapRestart\n" );
ADDRGP4 $342
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 419
;419:	}
LABELV $339
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 $348
line 444
;444:		trap_S_StartLocalSound( cgs.media.countFightSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+152340+968
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 445
;445:		CG_CenterPrint( "FIGHT!", 120, GIANTCHAR_WIDTH*2 );
ADDRGP4 $353
ARGP4
CNSTI4 120
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 446
;446:	}
LABELV $348
line 455
;447:#ifdef MISSIONPACK
;448:	if (cg_singlePlayerActive.integer) {
;449:		trap_Cvar_Set("ui_matchStartTime", va("%i", cg.time));
;450:		if (cg_recordSPDemo.integer && cg_recordSPDemoName.string && *cg_recordSPDemoName.string) {
;451:			trap_SendConsoleCommand(va("set g_synchronousclients 1 ; record %s \n", cg_recordSPDemoName.string));
;452:		}
;453:	}
;454:#endif
;455:	trap_Cvar_Set("cg_thirdPerson", "0");
ADDRGP4 $354
ARGP4
ADDRGP4 $355
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 456
;456:}
LABELV $338
endproc CG_MapRestart 0 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 $357
line 507
;507:		compress = qfalse;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 508
;508:	}
LABELV $357
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 $360
line 512
;512:		trap_Print( va( S_COLOR_RED "voice chat file not found: %s\n", filename ) );
ADDRGP4 $362
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 $356
JUMPV
LABELV $360
line 515
;514:	}
;515:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 24
INDIRI4
CNSTI4 16384
LTI4 $363
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 $365
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 $356
JUMPV
LABELV $363
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 $366
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 $370
JUMPV
LABELV $367
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 $368
line 530
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $370
ADDRLP4 20
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $367
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 $373
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $371
LABELV $373
line 535
;535:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $356
JUMPV
LABELV $371
line 537
;536:	}
;537:	if (!Q_stricmp(token, "female")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $376
ARGP4
ADDRLP4 16432
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16432
INDIRI4
CNSTI4 0
NEI4 $374
line 538
;538:		voiceChatList->gender = GENDER_FEMALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 1
ASGNI4
line 539
;539:	}
ADDRGP4 $375
JUMPV
LABELV $374
line 540
;540:	else if (!Q_stricmp(token, "male")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $379
ARGP4
ADDRLP4 16436
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16436
INDIRI4
CNSTI4 0
NEI4 $377
line 541
;541:		voiceChatList->gender = GENDER_MALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 0
ASGNI4
line 542
;542:	}
ADDRGP4 $378
JUMPV
LABELV $377
line 543
;543:	else if (!Q_stricmp(token, "neuter")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $382
ARGP4
ADDRLP4 16440
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16440
INDIRI4
CNSTI4 0
NEI4 $380
line 544
;544:		voiceChatList->gender = GENDER_NEUTER;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 2
ASGNI4
line 545
;545:	}
ADDRGP4 $381
JUMPV
LABELV $380
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 $383
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 $356
JUMPV
LABELV $381
LABELV $378
LABELV $375
line 551
;549:	}
;550:
;551:	voiceChatList->numVoiceChats = 0;
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
CNSTI4 0
ASGNI4
ADDRGP4 $385
JUMPV
LABELV $384
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 $389
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $387
LABELV $389
line 555
;555:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $356
JUMPV
LABELV $387
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 $366
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 $392
ARGP4
ADDRLP4 16456
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16456
INDIRI4
CNSTI4 0
EQI4 $390
line 560
;560:			trap_Print( va( S_COLOR_RED "expected { found %s in voice chat file: %s\n", token, filename ) );
ADDRGP4 $393
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 $356
JUMPV
LABELV $390
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 $395
JUMPV
LABELV $394
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 $399
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $397
LABELV $399
line 567
;567:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $356
JUMPV
LABELV $397
line 569
;568:			}
;569:			if (!Q_stricmp(token, "}"))
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $402
ARGP4
ADDRLP4 16468
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16468
INDIRI4
CNSTI4 0
NEI4 $400
line 570
;570:				break;
ADDRGP4 $396
JUMPV
LABELV $400
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 $405
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $403
LABELV $405
line 575
;575:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $356
JUMPV
LABELV $403
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 $366
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 $406
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 $406
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 $408
line 582
;582:				break;
ADDRGP4 $396
JUMPV
LABELV $408
line 583
;583:		}
LABELV $395
line 564
ADDRGP4 $394
JUMPV
LABELV $396
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 $410
line 586
;586:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $356
JUMPV
LABELV $410
line 587
;587:	}
LABELV $385
line 552
ADDRGP4 $384
JUMPV
line 588
;588:	return qtrue;
CNSTI4 1
RETI4
LABELV $356
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 $413
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 $414
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 $416
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 $418
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 $420
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 $422
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 $424
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 $426
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 $428
ARGP4
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
SUBI4
ARGI4
ADDRGP4 CG_Printf
CALLV
pop
line 609
;609:}
LABELV $412
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 $430
line 626
;625:		//trap_Print( va( "voice chat file not found: %s\n", filename ) );
;626:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $429
JUMPV
LABELV $430
line 628
;627:	}
;628:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 8
INDIRI4
CNSTI4 16384
LTI4 $432
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 $365
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 $429
JUMPV
LABELV $432
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 $436
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $434
LABELV $436
line 643
;643:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $429
JUMPV
LABELV $434
line 646
;644:	}
;645:
;646:	for ( i = 0; i < MAX_VOICEFILES; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $437
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 $441
line 648
;648:			return i;
ADDRLP4 0
INDIRI4
RETI4
ADDRGP4 $429
JUMPV
LABELV $441
line 650
;649:		}
;650:	}
LABELV $438
line 646
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 8
LTI4 $437
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 $429
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 $447
JUMPV
LABELV $444
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 $448
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 $443
JUMPV
LABELV $448
line 673
;672:		}
;673:	}
LABELV $445
line 666
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $447
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
LTI4 $444
line 674
;674:	return qfalse;
CNSTI4 0
RETI4
LABELV $443
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 $453
ADDRLP4 152
INDIRI4
CNSTI4 64
LTI4 $451
LABELV $453
line 688
;688:		clientNum = 0;
ADDRFP4 0
CNSTI4 0
ASGNI4
line 689
;689:	}
LABELV $451
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 $455
line 693
;693:		if ( k == 0 ) {
ADDRLP4 144
INDIRI4
CNSTI4 0
NEI4 $459
line 694
;694:			if (ci->headModelName[0] == '*') {
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
INDIRI1
CVII4 1
CNSTI4 42
NEI4 $461
line 695
;695:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName+1, ci->headSkinName );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $463
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 289
ADDP4
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 352
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 696
;696:			}
ADDRGP4 $460
JUMPV
LABELV $461
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 $463
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 $460
JUMPV
LABELV $459
line 701
;701:		else {
line 702
;702:			if (ci->headModelName[0] == '*') {
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
INDIRI1
CVII4 1
CNSTI4 42
NEI4 $464
line 703
;703:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName+1 );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $366
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 289
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 704
;704:			}
ADDRGP4 $465
JUMPV
LABELV $464
line 705
;705:			else {
line 706
;706:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName );
ADDRLP4 8
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $366
ARGP4
ADDRLP4 148
INDIRP4
CNSTI4 288
ADDP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 707
;707:			}
LABELV $465
line 708
;708:		}
LABELV $460
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 $466
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 $470
line 712
;712:				break;
ADDRGP4 $468
JUMPV
LABELV $470
line 714
;713:			}
;714:		}
LABELV $467
line 710
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 64
LTI4 $466
LABELV $468
line 715
;715:		if (i < MAX_HEADMODELS) {
ADDRLP4 0
INDIRI4
CNSTI4 64
GEI4 $472
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 $450
JUMPV
LABELV $472
line 719
;717:		}
;718:		// find a <headmodelname>.vc file
;719:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $475
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 $479
line 721
;721:				Com_sprintf(filename, sizeof(filename), "scripts/%s.vc", headModelName);
ADDRLP4 76
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $481
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 $482
line 724
;724:					break;
ADDRGP4 $477
JUMPV
LABELV $482
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 $366
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 $450
JUMPV
LABELV $479
line 730
;729:			}
;730:		}
LABELV $476
line 719
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 64
LTI4 $475
LABELV $477
line 731
;731:	}
LABELV $456
line 692
ADDRLP4 144
ADDRLP4 144
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 144
INDIRI4
CNSTI4 2
LTI4 $455
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 $486
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 $490
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 $494
line 737
;737:				if (voiceChatLists[i].gender == gender) {
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists+64
ADDP4
INDIRI4
ADDRLP4 140
INDIRI4
NEI4 $496
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 $499
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 $503
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 $366
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 $501
JUMPV
LABELV $503
line 746
;745:						}
;746:					}
LABELV $500
line 739
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 64
LTI4 $499
LABELV $501
line 747
;747:					return &voiceChatLists[i];
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
RETP4
ADDRGP4 $450
JUMPV
LABELV $496
line 749
;748:				}
;749:			}
LABELV $494
line 750
;750:		}
LABELV $491
line 735
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 8
LTI4 $490
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 $506
line 753
;753:			break;
ADDRGP4 $488
JUMPV
LABELV $506
line 754
;754:		gender = GENDER_MALE;
ADDRLP4 140
CNSTI4 0
ASGNI4
line 755
;755:	}
LABELV $487
line 733
ADDRLP4 144
ADDRLP4 144
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 144
INDIRI4
CNSTI4 2
LTI4 $486
LABELV $488
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 $508
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 $512
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 $366
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 $510
JUMPV
LABELV $512
line 764
;763:		}
;764:	}
LABELV $509
line 757
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 64
LTI4 $508
LABELV $510
line 766
;765:	// just return the first voice chat list
;766:	return &voiceChatLists[0];
ADDRGP4 voiceChatLists
RETP4
LABELV $450
endproc CG_VoiceChatListForClient 164 20
export CG_PlayVoiceChat
proc CG_PlayVoiceChat 0 0
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 814
;788:#ifdef MISSIONPACK
;789:	// if we are going into the intermission, don't start any voices
;790:	if ( cg.intermissionStarted ) {
;791:		return;
;792:	}
;793:
;794:	if ( !cg_noVoiceChats.integer ) {
;795:		trap_S_StartLocalSound( vchat->snd, CHAN_VOICE);
;796:		if (vchat->clientNum != cg.snap->ps.clientNum) {
;797:			int orderTask = CG_ValidOrder(vchat->cmd);
;798:			if (orderTask > 0) {
;799:				cgs.acceptOrderTime = cg.time + 5000;
;800:				Q_strncpyz(cgs.acceptVoice, vchat->cmd, sizeof(cgs.acceptVoice));
;801:				cgs.acceptTask = orderTask;
;802:				cgs.acceptLeader = vchat->clientNum;
;803:			}
;804:			// see if this was an order
;805:			CG_ShowResponseHead();
;806:		}
;807:	}
;808:	if (!vchat->voiceOnly && !cg_noVoiceText.integer) {
;809:		CG_AddToTeamChat( vchat->message );
;810:		CG_Printf( "%s\n", vchat->message );
;811:	}
;812:	voiceChatBuffer[cg.voiceChatBufferOut].snd = 0;
;813:#endif
;814:}
LABELV $515
endproc CG_PlayVoiceChat 0 0
export CG_PlayBufferedVoiceChats
proc CG_PlayBufferedVoiceChats 0 0
line 821
;815:
;816:/*
;817:=====================
;818:CG_PlayBufferedVoieChats
;819:=====================
;820:*/
;821:void CG_PlayBufferedVoiceChats( void ) {
line 833
;822:#ifdef MISSIONPACK
;823:	if ( cg.voiceChatTime < cg.time ) {
;824:		if (cg.voiceChatBufferOut != cg.voiceChatBufferIn && voiceChatBuffer[cg.voiceChatBufferOut].snd) {
;825:			//
;826:			CG_PlayVoiceChat(&voiceChatBuffer[cg.voiceChatBufferOut]);
;827:			//
;828:			cg.voiceChatBufferOut = (cg.voiceChatBufferOut + 1) % MAX_VOICECHATBUFFER;
;829:			cg.voiceChatTime = cg.time + 1000;
;830:		}
;831:	}
;832:#endif
;833:}
LABELV $516
endproc CG_PlayBufferedVoiceChats 0 0
export CG_AddBufferedVoiceChat
proc CG_AddBufferedVoiceChat 0 0
line 840
;834:
;835:/*
;836:=====================
;837:CG_AddBufferedVoiceChat
;838:=====================
;839:*/
;840:void CG_AddBufferedVoiceChat( bufferedVoiceChat_t *vchat ) {
line 854
;841:#ifdef MISSIONPACK
;842:	// if we are going into the intermission, don't start any voices
;843:	if ( cg.intermissionStarted ) {
;844:		return;
;845:	}
;846:
;847:	memcpy(&voiceChatBuffer[cg.voiceChatBufferIn], vchat, sizeof(bufferedVoiceChat_t));
;848:	cg.voiceChatBufferIn = (cg.voiceChatBufferIn + 1) % MAX_VOICECHATBUFFER;
;849:	if (cg.voiceChatBufferIn == cg.voiceChatBufferOut) {
;850:		CG_PlayVoiceChat( &voiceChatBuffer[cg.voiceChatBufferOut] );
;851:		cg.voiceChatBufferOut++;
;852:	}
;853:#endif
;854:}
LABELV $517
endproc CG_AddBufferedVoiceChat 0 0
export CG_VoiceChatLocal
proc CG_VoiceChatLocal 0 0
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 903
;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 ) {
;871:		return;
;872:	}
;873:
;874:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
;875:		clientNum = 0;
;876:	}
;877:	ci = &cgs.clientinfo[ clientNum ];
;878:
;879:	cgs.currentVoiceClient = clientNum;
;880:
;881:	voiceChatList = CG_VoiceChatListForClient( clientNum );
;882:
;883:	if ( CG_GetVoiceChat( voiceChatList, cmd, &snd, &chat ) ) {
;884:		//
;885:		if ( mode == SAY_TEAM || !cg_teamChatsOnly.integer ) {
;886:			vchat.clientNum = clientNum;
;887:			vchat.snd = snd;
;888:			vchat.voiceOnly = voiceOnly;
;889:			Q_strncpyz(vchat.cmd, cmd, sizeof(vchat.cmd));
;890:			if ( mode == SAY_TELL ) {
;891:				Com_sprintf(vchat.message, sizeof(vchat.message), "[%s]: %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
;892:			}
;893:			else if ( mode == SAY_TEAM ) {
;894:				Com_sprintf(vchat.message, sizeof(vchat.message), "(%s): %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
;895:			}
;896:			else {
;897:				Com_sprintf(vchat.message, sizeof(vchat.message), "%s: %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
;898:			}
;899:			CG_AddBufferedVoiceChat(&vchat);
;900:		}
;901:	}
;902:#endif
;903:}
LABELV $518
endproc CG_VoiceChatLocal 0 0
export CG_VoiceChat
proc CG_VoiceChat 0 0
line 910
;904:
;905:/*
;906:=================
;907:CG_VoiceChat
;908:=================
;909:*/
;910:void CG_VoiceChat( int mode ) {
line 931
;911:#ifdef MISSIONPACK
;912:	const char *cmd;
;913:	int clientNum, color;
;914:	qboolean voiceOnly;
;915:
;916:	voiceOnly = atoi(CG_Argv(1));
;917:	clientNum = atoi(CG_Argv(2));
;918:	color = atoi(CG_Argv(3));
;919:	cmd = CG_Argv(4);
;920:
;921:	if (cg_noTaunt.integer != 0) {
;922:		if (!strcmp(cmd, VOICECHAT_KILLINSULT)  || !strcmp(cmd, VOICECHAT_TAUNT) || \
;923:			!strcmp(cmd, VOICECHAT_DEATHINSULT) || !strcmp(cmd, VOICECHAT_KILLGAUNTLET) || \
;924:			!strcmp(cmd, VOICECHAT_PRAISE)) {
;925:			return;
;926:		}
;927:	}
;928:
;929:	CG_VoiceChatLocal( mode, voiceOnly, clientNum, color, cmd );
;930:#endif
;931:}
LABELV $519
endproc CG_VoiceChat 0 0
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 $524
JUMPV
LABELV $521
line 943
;943:		if (text[i] == '\x19')
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 25
NEI4 $525
line 944
;944:			continue;
ADDRGP4 $522
JUMPV
LABELV $525
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 $522
line 942
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $524
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $521
line 947
;947:	text[l] = '\0';
ADDRLP4 4
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 948
;948:}
LABELV $520
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 $528
line 966
;965:		// server claimed the command
;966:		return;
ADDRGP4 $527
JUMPV
LABELV $528
line 969
;967:	}
;968:
;969:	if ( !strcmp( cmd, "cp" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $532
ARGP4
ADDRLP4 160
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 160
INDIRI4
CNSTI4 0
NEI4 $530
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 144
ARGI4
CNSTI4 16
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 971
;971:		return;
ADDRGP4 $527
JUMPV
LABELV $530
line 974
;972:	}
;973:
;974:	if ( !strcmp( cmd, "cs" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $535
ARGP4
ADDRLP4 164
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 164
INDIRI4
CNSTI4 0
NEI4 $533
line 975
;975:		CG_ConfigStringModified();
ADDRGP4 CG_ConfigStringModified
CALLV
pop
line 976
;976:		return;
ADDRGP4 $527
JUMPV
LABELV $533
line 979
;977:	}
;978:
;979:	if ( !strcmp( cmd, "print" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $538
ARGP4
ADDRLP4 168
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 168
INDIRI4
CNSTI4 0
NEI4 $536
line 980
;980:		CG_Printf( "%s", CG_Argv(1) );
CNSTI4 1
ARGI4
ADDRLP4 172
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRGP4 $366
ARGP4
ADDRLP4 172
INDIRP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 990
;981:#ifdef MISSIONPACK
;982:		cmd = CG_Argv(1);			// yes, this is obviously a hack, but so is the way we hear about
;983:									// votes passing or failing
;984:		if ( !Q_stricmpn( cmd, "vote failed", 11 ) || !Q_stricmpn( cmd, "team vote failed", 16 )) {
;985:			trap_S_StartLocalSound( cgs.media.voteFailed, CHAN_ANNOUNCER );
;986:		} else if ( !Q_stricmpn( cmd, "vote passed", 11 ) || !Q_stricmpn( cmd, "team vote passed", 16 ) ) {
;987:			trap_S_StartLocalSound( cgs.media.votePassed, CHAN_ANNOUNCER );
;988:		}
;989:#endif
;990:		return;
ADDRGP4 $527
JUMPV
LABELV $536
line 993
;991:	}
;992:
;993:	if ( !strcmp( cmd, "chat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $541
ARGP4
ADDRLP4 172
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 172
INDIRI4
CNSTI4 0
NEI4 $539
line 994
;994:		if ( !cg_teamChatsOnly.integer ) {
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $527
line 995
;995:			trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+152340+728
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 $547
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 999
;999:		}
line 1000
;1000:		return;
ADDRGP4 $527
JUMPV
LABELV $539
line 1003
;1001:	}
;1002:
;1003:	if ( !strcmp( cmd, "tchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $550
ARGP4
ADDRLP4 176
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 176
INDIRI4
CNSTI4 0
NEI4 $548
line 1004
;1004:		trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+152340+728
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 $547
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1009
;1009:		return;
ADDRGP4 $527
JUMPV
LABELV $548
line 1011
;1010:	}
;1011:	if ( !strcmp( cmd, "vchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $555
ARGP4
ADDRLP4 180
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 0
NEI4 $553
line 1012
;1012:		CG_VoiceChat( SAY_ALL );
CNSTI4 0
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1013
;1013:		return;
ADDRGP4 $527
JUMPV
LABELV $553
line 1016
;1014:	}
;1015:
;1016:	if ( !strcmp( cmd, "vtchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $558
ARGP4
ADDRLP4 184
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 184
INDIRI4
CNSTI4 0
NEI4 $556
line 1017
;1017:		CG_VoiceChat( SAY_TEAM );
CNSTI4 1
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1018
;1018:		return;
ADDRGP4 $527
JUMPV
LABELV $556
line 1021
;1019:	}
;1020:
;1021:	if ( !strcmp( cmd, "vtell" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $561
ARGP4
ADDRLP4 188
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 188
INDIRI4
CNSTI4 0
NEI4 $559
line 1022
;1022:		CG_VoiceChat( SAY_TELL );
CNSTI4 2
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1023
;1023:		return;
ADDRGP4 $527
JUMPV
LABELV $559
line 1026
;1024:	}
;1025:
;1026:	if ( !strcmp( cmd, "scores" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $564
ARGP4
ADDRLP4 192
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 192
INDIRI4
CNSTI4 0
NEI4 $562
line 1027
;1027:		CG_ParseScores();
ADDRGP4 CG_ParseScores
CALLV
pop
line 1028
;1028:		return;
ADDRGP4 $527
JUMPV
LABELV $562
line 1031
;1029:	}
;1030:
;1031:	if ( !strcmp( cmd, "tinfo" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $567
ARGP4
ADDRLP4 196
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 196
INDIRI4
CNSTI4 0
NEI4 $565
line 1032
;1032:		CG_ParseTeamInfo();
ADDRGP4 CG_ParseTeamInfo
CALLV
pop
line 1033
;1033:		return;
ADDRGP4 $527
JUMPV
LABELV $565
line 1036
;1034:	}
;1035:
;1036:	if ( !strcmp( cmd, "map_restart" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $570
ARGP4
ADDRLP4 200
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 200
INDIRI4
CNSTI4 0
NEI4 $568
line 1037
;1037:		CG_MapRestart();
ADDRGP4 CG_MapRestart
CALLV
pop
line 1038
;1038:		return;
ADDRGP4 $527
JUMPV
LABELV $568
line 1041
;1039:	}
;1040:
;1041:  if ( Q_stricmp (cmd, "remapShader") == 0 ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $573
ARGP4
ADDRLP4 204
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 204
INDIRI4
CNSTI4 0
NEI4 $571
line 1042
;1042:		if (trap_Argc() == 4) {
ADDRLP4 208
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 208
INDIRI4
CNSTI4 4
NEI4 $574
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 $574
line 1045
;1045:	}
LABELV $571
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 $578
ARGP4
ADDRLP4 208
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 208
INDIRI4
CNSTI4 0
NEI4 $576
line 1049
;1049:		CG_LoadDeferredPlayers();
ADDRGP4 CG_LoadDeferredPlayers
CALLV
pop
line 1050
;1050:		return;
ADDRGP4 $527
JUMPV
LABELV $576
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 $581
ARGP4
ADDRLP4 212
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 212
INDIRI4
CNSTI4 0
NEI4 $579
line 1056
;1056:		cg.levelShot = qtrue;
ADDRGP4 cg+12
CNSTI4 1
ASGNI4
line 1057
;1057:		return;
ADDRGP4 $527
JUMPV
LABELV $579
line 1060
;1058:	}
;1059:
;1060:	CG_Printf( "Unknown client game command: %s\n", cmd );
ADDRGP4 $583
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1061
;1061:}
LABELV $527
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 $586
JUMPV
LABELV $585
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 $589
line 1075
;1075:			CG_ServerCommand();
ADDRGP4 CG_ServerCommand
CALLV
pop
line 1076
;1076:		}
LABELV $589
line 1077
;1077:	}
LABELV $586
line 1073
ADDRGP4 cgs+31444
INDIRI4
ADDRFP4 0
INDIRI4
LTI4 $585
line 1078
;1078:}
LABELV $584
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_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_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 $583
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 $581
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 $578
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 $573
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 $570
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 $567
byte 1 116
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 0
align 1
LABELV $564
byte 1 115
byte 1 99
byte 1 111
byte 1 114
byte 1 101
byte 1 115
byte 1 0
align 1
LABELV $561
byte 1 118
byte 1 116
byte 1 101
byte 1 108
byte 1 108
byte 1 0
align 1
LABELV $558
byte 1 118
byte 1 116
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $555
byte 1 118
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $550
byte 1 116
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $547
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $541
byte 1 99
byte 1 104
byte 1 97
byte 1 116
byte 1 0
align 1
LABELV $538
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $535
byte 1 99
byte 1 115
byte 1 0
align 1
LABELV $532
byte 1 99
byte 1 112
byte 1 0
align 1
LABELV $481
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 $463
byte 1 37
byte 1 115
byte 1 47
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $428
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 $426
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 $424
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 $422
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 $420
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 $418
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 $416
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 $414
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 $413
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 $402
byte 1 125
byte 1 0
align 1
LABELV $393
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 $392
byte 1 123
byte 1 0
align 1
LABELV $383
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 $382
byte 1 110
byte 1 101
byte 1 117
byte 1 116
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $379
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $376
byte 1 102
byte 1 101
byte 1 109
byte 1 97
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $366
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $365
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 $362
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 $355
byte 1 48
byte 1 0
align 1
LABELV $354
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 $353
byte 1 70
byte 1 73
byte 1 71
byte 1 72
byte 1 84
byte 1 33
byte 1 0
align 1
LABELV $342
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 $215
byte 1 64
byte 1 0
align 1
LABELV $212
byte 1 58
byte 1 0
align 1
LABELV $209
byte 1 61
byte 1 0
align 1
LABELV $181
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 $177
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 $175
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 $172
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 $171
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 $169
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 $167
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 $165
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 $163
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 $161
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 $158
byte 1 37
byte 1 105
byte 1 0
align 1
LABELV $157
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
