reaction/ta_ui/vm/q_shared.asm

7908 lines
89 KiB
NASM
Raw Normal View History

2002-01-08 05:45:06 +00:00
export Com_Clamp
code
proc Com_Clamp 0 0
file "../../game/q_shared.c"
line 23
;1://-----------------------------------------------------------------------------
;2://
;3:// $Id$
;4://
;5://-----------------------------------------------------------------------------
;6://
;7:// $Log$
;7:// Revision 1.1 2002/01/08 05:46:24 blaze
;7:// Initial revision
;7://
;8:// Revision 1.4 2001/12/31 16:28:42 jbravo
;9:// I made a Booboo with the Log tag.
;10://
;11://
;12://-----------------------------------------------------------------------------
;13:// Copyright (C) 1999-2000 Id Software, Inc.
;14:
;15://
;16:
;17:// q_shared.c -- stateless support routines that are included in each code dll
;18:
;19:#include "q_shared.h"
;20:
;21:
;22:
;23:float Com_Clamp( float min, float max, float value ) {
line 25
;24:
;25: if ( value < min ) {
ADDRFP4 8
INDIRF4
ADDRFP4 0
INDIRF4
GEF4 $23
line 27
;26:
;27: return min;
ADDRFP4 0
INDIRF4
RETF4
ADDRGP4 $22
JUMPV
LABELV $23
line 31
;28:
;29: }
;30:
;31: if ( value > max ) {
ADDRFP4 8
INDIRF4
ADDRFP4 4
INDIRF4
LEF4 $25
line 33
;32:
;33: return max;
ADDRFP4 4
INDIRF4
RETF4
ADDRGP4 $22
JUMPV
LABELV $25
line 37
;34:
;35: }
;36:
;37: return value;
ADDRFP4 8
INDIRF4
RETF4
LABELV $22
endproc Com_Clamp 0 0
export COM_SkipPath
proc COM_SkipPath 4 0
line 57
;38:
;39:}
;40:
;41:
;42:
;43:
;44:
;45:/*
;46:
;47:============
;48:
;49:COM_SkipPath
;50:
;51:============
;52:
;53:*/
;54:
;55:char *COM_SkipPath (char *pathname)
;56:
;57:{
line 63
;58:
;59: char *last;
;60:
;61:
;62:
;63: last = pathname;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRGP4 $29
JUMPV
LABELV $28
line 67
;64:
;65: while (*pathname)
;66:
;67: {
line 69
;68:
;69: if (*pathname=='/')
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 47
NEI4 $31
line 71
;70:
;71: last = pathname+1;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
LABELV $31
line 73
;72:
;73: pathname++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 75
;74:
;75: }
LABELV $29
line 65
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $28
line 77
;76:
;77: return last;
ADDRLP4 0
INDIRP4
RETP4
LABELV $27
endproc COM_SkipPath 4 0
export COM_StripExtension
proc COM_StripExtension 12 0
line 93
;78:
;79:}
;80:
;81:
;82:
;83:/*
;84:
;85:============
;86:
;87:COM_StripExtension
;88:
;89:============
;90:
;91:*/
;92:
;93:void COM_StripExtension( const char *in, char *out ) {
ADDRGP4 $35
JUMPV
LABELV $34
line 95
;94:
;95: while ( *in && *in != '.' ) {
line 97
;96:
;97: *out++ = *in++;
ADDRLP4 0
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 8
CNSTI4 1
ASGNI4
ADDRFP4 4
ADDRLP4 0
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
ASGNP4
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 4
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI1
ASGNI1
line 99
;98:
;99: }
LABELV $35
line 95
ADDRLP4 0
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $37
ADDRLP4 0
INDIRI4
CNSTI4 46
NEI4 $34
LABELV $37
line 101
;100:
;101: *out = 0;
ADDRFP4 4
INDIRP4
CNSTI1 0
ASGNI1
line 103
;102:
;103:}
LABELV $33
endproc COM_StripExtension 12 0
export COM_DefaultExtension
proc COM_DefaultExtension 76 20
line 119
;104:
;105:
;106:
;107:
;108:
;109:/*
;110:
;111:==================
;112:
;113:COM_DefaultExtension
;114:
;115:==================
;116:
;117:*/
;118:
;119:void COM_DefaultExtension (char *path, int maxSize, const char *extension ) {
line 135
;120:
;121: char oldPath[MAX_QPATH];
;122:
;123: char *src;
;124:
;125:
;126:
;127://
;128:
;129:// if path doesn't have a .EXT, append extension
;130:
;131:// (extension should include the .)
;132:
;133://
;134:
;135: src = path + strlen(path) - 1;
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 68
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 68
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI4 -1
ADDP4
ASGNP4
ADDRGP4 $40
JUMPV
LABELV $39
line 139
;136:
;137:
;138:
;139: while (*src != '/' && src != path) {
line 141
;140:
;141: if ( *src == '.' ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 46
NEI4 $42
line 143
;142:
;143: return; // it has an extension
ADDRGP4 $38
JUMPV
LABELV $42
line 147
;144:
;145: }
;146:
;147: src--;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 -1
ADDP4
ASGNP4
line 149
;148:
;149: }
LABELV $40
line 139
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 47
EQI4 $44
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRFP4 0
INDIRP4
CVPU4 4
NEU4 $39
LABELV $44
line 153
;150:
;151:
;152:
;153: Q_strncpyz( oldPath, path, sizeof( oldPath ) );
ADDRLP4 4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 155
;154:
;155: Com_sprintf( path, maxSize, "%s%s", oldPath, extension );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 $45
ARGP4
ADDRLP4 4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 157
;156:
;157:}
LABELV $38
endproc COM_DefaultExtension 76 20
export ShortSwap
proc ShortSwap 2 0
ADDRFP4 0
ADDRFP4 0
INDIRI4
CVII2 4
ASGNI2
line 221
;158:
;159:
;160:
;161:/*
;162:
;163:============================================================================
;164:
;165:
;166:
;167: BYTE ORDER FUNCTIONS
;168:
;169:
;170:
;171:============================================================================
;172:
;173:*/
;174:
;175:/*
;176:
;177:// can't just use function pointers, or dll linkage can
;178:
;179:// mess up when qcommon is included in multiple places
;180:
;181:static short (*_BigShort) (short l);
;182:
;183:static short (*_LittleShort) (short l);
;184:
;185:static int (*_BigLong) (int l);
;186:
;187:static int (*_LittleLong) (int l);
;188:
;189:static qint64 (*_BigLong64) (qint64 l);
;190:
;191:static qint64 (*_LittleLong64) (qint64 l);
;192:
;193:static float (*_BigFloat) (const float *l);
;194:
;195:static float (*_LittleFloat) (const float *l);
;196:
;197:
;198:
;199:short BigShort(short l){return _BigShort(l);}
;200:
;201:short LittleShort(short l) {return _LittleShort(l);}
;202:
;203:int BigLong (int l) {return _BigLong(l);}
;204:
;205:int LittleLong (int l) {return _LittleLong(l);}
;206:
;207:qint64 BigLong64 (qint64 l) {return _BigLong64(l);}
;208:
;209:qint64 LittleLong64 (qint64 l) {return _LittleLong64(l);}
;210:
;211:float BigFloat (const float *l) {return _BigFloat(l);}
;212:
;213:float LittleFloat (const float *l) {return _LittleFloat(l);}
;214:
;215:*/
;216:
;217:
;218:
;219:short ShortSwap (short l)
;220:
;221:{
line 227
;222:
;223: byte b1,b2;
;224:
;225:
;226:
;227: b1 = l&255;
ADDRLP4 0
ADDRFP4 0
INDIRI2
CVII4 2
CNSTI4 255
BANDI4
CVIU4 4
CVUU1 4
ASGNU1
line 229
;228:
;229: b2 = (l>>8)&255;
ADDRLP4 1
ADDRFP4 0
INDIRI2
CVII4 2
CNSTI4 8
RSHI4
CNSTI4 255
BANDI4
CVIU4 4
CVUU1 4
ASGNU1
line 233
;230:
;231:
;232:
;233: return (b1<<8) + b2;
ADDRLP4 0
INDIRU1
CVUI4 1
CNSTI4 8
LSHI4
ADDRLP4 1
INDIRU1
CVUI4 1
ADDI4
CVII2 4
CVII4 2
RETI4
LABELV $46
endproc ShortSwap 2 0
export ShortNoSwap
proc ShortNoSwap 0 0
ADDRFP4 0
ADDRFP4 0
INDIRI4
CVII2 4
ASGNI2
line 241
;234:
;235:}
;236:
;237:
;238:
;239:short ShortNoSwap (short l)
;240:
;241:{
line 243
;242:
;243: return l;
ADDRFP4 0
INDIRI2
CVII4 2
RETI4
LABELV $47
endproc ShortNoSwap 0 0
export LongSwap
proc LongSwap 4 0
line 251
;244:
;245:}
;246:
;247:
;248:
;249:int LongSwap (int l)
;250:
;251:{
line 257
;252:
;253: byte b1,b2,b3,b4;
;254:
;255:
;256:
;257: b1 = l&255;
ADDRLP4 0
ADDRFP4 0
INDIRI4
CNSTI4 255
BANDI4
CVIU4 4
CVUU1 4
ASGNU1
line 259
;258:
;259: b2 = (l>>8)&255;
ADDRLP4 1
ADDRFP4 0
INDIRI4
CNSTI4 8
RSHI4
CNSTI4 255
BANDI4
CVIU4 4
CVUU1 4
ASGNU1
line 261
;260:
;261: b3 = (l>>16)&255;
ADDRLP4 2
ADDRFP4 0
INDIRI4
CNSTI4 16
RSHI4
CNSTI4 255
BANDI4
CVIU4 4
CVUU1 4
ASGNU1
line 263
;262:
;263: b4 = (l>>24)&255;
ADDRLP4 3
ADDRFP4 0
INDIRI4
CNSTI4 24
RSHI4
CNSTI4 255
BANDI4
CVIU4 4
CVUU1 4
ASGNU1
line 267
;264:
;265:
;266:
;267: return ((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4;
ADDRLP4 0
INDIRU1
CVUI4 1
CNSTI4 24
LSHI4
ADDRLP4 1
INDIRU1
CVUI4 1
CNSTI4 16
LSHI4
ADDI4
ADDRLP4 2
INDIRU1
CVUI4 1
CNSTI4 8
LSHI4
ADDI4
ADDRLP4 3
INDIRU1
CVUI4 1
ADDI4
RETI4
LABELV $48
endproc LongSwap 4 0
export LongNoSwap
proc LongNoSwap 0 0
line 275
;268:
;269:}
;270:
;271:
;272:
;273:int LongNoSwap (int l)
;274:
;275:{
line 277
;276:
;277: return l;
ADDRFP4 0
INDIRI4
RETI4
LABELV $49
endproc LongNoSwap 0 0
export Long64Swap
proc Long64Swap 8 0
line 285
;278:
;279:}
;280:
;281:
;282:
;283:qint64 Long64Swap (qint64 ll)
;284:
;285:{
line 291
;286:
;287: qint64 result;
;288:
;289:
;290:
;291: result.b0 = ll.b7;
ADDRLP4 0
ADDRFP4 4
INDIRP4
CNSTI4 7
ADDP4
INDIRU1
ASGNU1
line 293
;292:
;293: result.b1 = ll.b6;
ADDRLP4 0+1
ADDRFP4 4
INDIRP4
CNSTI4 6
ADDP4
INDIRU1
ASGNU1
line 295
;294:
;295: result.b2 = ll.b5;
ADDRLP4 0+2
ADDRFP4 4
INDIRP4
CNSTI4 5
ADDP4
INDIRU1
ASGNU1
line 297
;296:
;297: result.b3 = ll.b4;
ADDRLP4 0+3
ADDRFP4 4
INDIRP4
CNSTI4 4
ADDP4
INDIRU1
ASGNU1
line 299
;298:
;299: result.b4 = ll.b3;
ADDRLP4 0+4
ADDRFP4 4
INDIRP4
CNSTI4 3
ADDP4
INDIRU1
ASGNU1
line 301
;300:
;301: result.b5 = ll.b2;
ADDRLP4 0+5
ADDRFP4 4
INDIRP4
CNSTI4 2
ADDP4
INDIRU1
ASGNU1
line 303
;302:
;303: result.b6 = ll.b1;
ADDRLP4 0+6
ADDRFP4 4
INDIRP4
CNSTI4 1
ADDP4
INDIRU1
ASGNU1
line 305
;304:
;305: result.b7 = ll.b0;
ADDRLP4 0+7
ADDRFP4 4
INDIRP4
INDIRU1
ASGNU1
line 309
;306:
;307:
;308:
;309: return result;
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRB
ASGNB 8
LABELV $50
endproc Long64Swap 8 0
export Long64NoSwap
proc Long64NoSwap 0 0
line 317
;310:
;311:}
;312:
;313:
;314:
;315:qint64 Long64NoSwap (qint64 ll)
;316:
;317:{
line 319
;318:
;319: return ll;
ADDRFP4 0
INDIRP4
ADDRFP4 4
INDIRP4
INDIRB
ASGNB 8
LABELV $59
endproc Long64NoSwap 0 0
export FloatSwap
proc FloatSwap 12 4
line 335
;320:
;321:}
;322:
;323:
;324:
;325:typedef union {
;326:
;327: float f;
;328:
;329: unsigned int i;
;330:
;331:} _FloatByteUnion;
;332:
;333:
;334:
;335:float FloatSwap (const float *f) {
line 343
;336:
;337: const _FloatByteUnion *in;
;338:
;339: _FloatByteUnion out;
;340:
;341:
;342:
;343: in = (_FloatByteUnion *)f;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
line 345
;344:
;345: out.i = LongSwap(in->i);
ADDRLP4 0
INDIRP4
INDIRU4
CVUI4 4
ARGI4
ADDRLP4 8
ADDRGP4 LongSwap
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 8
INDIRI4
CVIU4 4
ASGNU4
line 349
;346:
;347:
;348:
;349: return out.f;
ADDRLP4 4
INDIRF4
RETF4
LABELV $62
endproc FloatSwap 12 4
export FloatNoSwap
proc FloatNoSwap 0 0
line 357
;350:
;351:}
;352:
;353:
;354:
;355:float FloatNoSwap (const float *f)
;356:
;357:{
line 359
;358:
;359: return *f;
ADDRFP4 0
INDIRP4
INDIRF4
RETF4
LABELV $63
endproc FloatNoSwap 0 0
export COM_BeginParseSession
proc COM_BeginParseSession 0 16
line 465
;360:
;361:}
;362:
;363:
;364:
;365:/*
;366:
;367:================
;368:
;369:Swap_Init
;370:
;371:================
;372:
;373:*/
;374:
;375:/*
;376:
;377:void Swap_Init (void)
;378:
;379:{
;380:
;381: byte swaptest[2] = {1,0};
;382:
;383:
;384:
;385:// set the byte swapping variables in a portable manner
;386:
;387: if ( *(short *)swaptest == 1)
;388:
;389: {
;390:
;391: _BigShort = ShortSwap;
;392:
;393: _LittleShort = ShortNoSwap;
;394:
;395: _BigLong = LongSwap;
;396:
;397: _LittleLong = LongNoSwap;
;398:
;399: _BigLong64 = Long64Swap;
;400:
;401: _LittleLong64 = Long64NoSwap;
;402:
;403: _BigFloat = FloatSwap;
;404:
;405: _LittleFloat = FloatNoSwap;
;406:
;407: }
;408:
;409: else
;410:
;411: {
;412:
;413: _BigShort = ShortNoSwap;
;414:
;415: _LittleShort = ShortSwap;
;416:
;417: _BigLong = LongNoSwap;
;418:
;419: _LittleLong = LongSwap;
;420:
;421: _BigLong64 = Long64NoSwap;
;422:
;423: _LittleLong64 = Long64Swap;
;424:
;425: _BigFloat = FloatNoSwap;
;426:
;427: _LittleFloat = FloatSwap;
;428:
;429: }
;430:
;431:
;432:
;433:}
;434:
;435:*/
;436:
;437:
;438:
;439:/*
;440:
;441:============================================================================
;442:
;443:
;444:
;445:PARSING
;446:
;447:
;448:
;449:============================================================================
;450:
;451:*/
;452:
;453:
;454:
;455:static char com_token[MAX_TOKEN_CHARS];
;456:
;457:static char com_parsename[MAX_TOKEN_CHARS];
;458:
;459:static int com_lines;
;460:
;461:
;462:
;463:void COM_BeginParseSession( const char *name )
;464:
;465:{
line 467
;466:
;467: com_lines = 0;
ADDRGP4 com_lines
CNSTI4 0
ASGNI4
line 469
;468:
;469: Com_sprintf(com_parsename, sizeof(com_parsename), "%s", name);
ADDRGP4 com_parsename
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $65
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 471
;470:
;471:}
LABELV $64
endproc COM_BeginParseSession 0 16
export COM_GetCurrentParseLine
proc COM_GetCurrentParseLine 0 0
line 477
;472:
;473:
;474:
;475:int COM_GetCurrentParseLine( void )
;476:
;477:{
line 479
;478:
;479: return com_lines;
ADDRGP4 com_lines
INDIRI4
RETI4
LABELV $66
endproc COM_GetCurrentParseLine 0 0
export COM_Parse
proc COM_Parse 4 8
line 487
;480:
;481:}
;482:
;483:
;484:
;485:char *COM_Parse( char **data_p )
;486:
;487:{
line 489
;488:
;489: return COM_ParseExt( data_p, qtrue );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 0
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
RETP4
LABELV $67
endproc COM_Parse 4 8
bss
align 1
LABELV $69
skip 4096
export COM_ParseError
code
proc COM_ParseError 4 16
line 497
;490:
;491:}
;492:
;493:
;494:
;495:void COM_ParseError( char *format, ... )
;496:
;497:{
line 505
;498:
;499: va_list argptr;
;500:
;501: static char string[4096];
;502:
;503:
;504:
;505: va_start (argptr, format);
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 507
;506:
;507: vsprintf (string, format, argptr);
ADDRGP4 $69
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 509
;508:
;509: va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 513
;510:
;511:
;512:
;513: Com_Printf("ERROR: %s, line %d: %s\n", com_parsename, com_lines, string);
ADDRGP4 $71
ARGP4
ADDRGP4 com_parsename
ARGP4
ADDRGP4 com_lines
INDIRI4
ARGI4
ADDRGP4 $69
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 515
;514:
;515:}
LABELV $68
endproc COM_ParseError 4 16
bss
align 1
LABELV $73
skip 4096
export COM_ParseWarning
code
proc COM_ParseWarning 4 16
line 521
;516:
;517:
;518:
;519:void COM_ParseWarning( char *format, ... )
;520:
;521:{
line 529
;522:
;523: va_list argptr;
;524:
;525: static char string[4096];
;526:
;527:
;528:
;529: va_start (argptr, format);
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 531
;530:
;531: vsprintf (string, format, argptr);
ADDRGP4 $73
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 533
;532:
;533: va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 537
;534:
;535:
;536:
;537: Com_Printf("WARNING: %s, line %d: %s\n", com_parsename, com_lines, string);
ADDRGP4 $75
ARGP4
ADDRGP4 com_parsename
ARGP4
ADDRGP4 com_lines
INDIRI4
ARGI4
ADDRGP4 $73
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 539
;538:
;539:}
LABELV $72
endproc COM_ParseWarning 4 16
proc SkipWhitespace 8 0
line 567
;540:
;541:
;542:
;543:/*
;544:
;545:==============
;546:
;547:COM_Parse
;548:
;549:
;550:
;551:Parse a token out of a string
;552:
;553:Will never return NULL, just empty strings
;554:
;555:
;556:
;557:If "allowLineBreaks" is qtrue then an empty
;558:
;559:string will be returned if the next token is
;560:
;561:a newline.
;562:
;563:==============
;564:
;565:*/
;566:
;567:static char *SkipWhitespace( char *data, qboolean *hasNewLines ) {
ADDRGP4 $78
JUMPV
LABELV $77
line 573
;568:
;569: int c;
;570:
;571:
;572:
;573: while( (c = *data) <= ' ') {
line 575
;574:
;575: if( !c ) {
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $80
line 577
;576:
;577: return NULL;
CNSTP4 0
RETP4
ADDRGP4 $76
JUMPV
LABELV $80
line 581
;578:
;579: }
;580:
;581: if( c == '\n' ) {
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $82
line 583
;582:
;583: com_lines++;
ADDRLP4 4
ADDRGP4 com_lines
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 585
;584:
;585: *hasNewLines = qtrue;
ADDRFP4 4
INDIRP4
CNSTI4 1
ASGNI4
line 587
;586:
;587: }
LABELV $82
line 589
;588:
;589: data++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 591
;590:
;591: }
LABELV $78
line 573
ADDRLP4 4
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 32
LEI4 $77
line 595
;592:
;593:
;594:
;595: return data;
ADDRFP4 0
INDIRP4
RETP4
LABELV $76
endproc SkipWhitespace 8 0
export COM_Compress
proc COM_Compress 48 0
line 601
;596:
;597:}
;598:
;599:
;600:
;601:int COM_Compress( char *data_p ) {
line 607
;602:
;603: char *in, *out;
;604:
;605: int c;
;606:
;607: qboolean newline = qfalse, whitespace = qfalse;
ADDRLP4 12
CNSTI4 0
ASGNI4
ADDRLP4 16
CNSTI4 0
ASGNI4
line 611
;608:
;609:
;610:
;611: in = out = data_p;
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 20
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 20
INDIRP4
ASGNP4
line 613
;612:
;613: if (in) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $85
ADDRGP4 $88
JUMPV
LABELV $87
line 615
;614:
;615: while ((c = *in) != 0) {
line 619
;616:
;617: // skip double slash comments
;618:
;619: if ( c == '/' && in[1] == '/' ) {
ADDRLP4 24
CNSTI4 47
ASGNI4
ADDRLP4 4
INDIRI4
ADDRLP4 24
INDIRI4
NEI4 $90
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ADDRLP4 24
INDIRI4
NEI4 $90
ADDRGP4 $93
JUMPV
LABELV $92
line 621
;620:
;621: while (*in && *in != '\n') {
line 623
;622:
;623: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 625
;624:
;625: }
LABELV $93
line 621
ADDRLP4 28
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
EQI4 $95
ADDRLP4 28
INDIRI4
CNSTI4 10
NEI4 $92
LABELV $95
line 629
;626:
;627: // skip /* */ comments
;628:
;629: } else if ( c == '/' && in[1] == '*' ) {
ADDRGP4 $91
JUMPV
LABELV $90
ADDRLP4 4
INDIRI4
CNSTI4 47
NEI4 $96
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 42
NEI4 $96
ADDRGP4 $99
JUMPV
LABELV $98
line 633
;630:
;631: while ( *in && ( *in != '*' || in[1] != '/' ) )
;632:
;633: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
LABELV $99
line 631
ADDRLP4 32
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $101
ADDRLP4 32
INDIRI4
CNSTI4 42
NEI4 $98
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 47
NEI4 $98
LABELV $101
line 635
;634:
;635: if ( *in )
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $97
line 637
;636:
;637: in += 2;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 2
ADDP4
ASGNP4
line 641
;638:
;639: // record when we hit a newline
;640:
;641: } else if ( c == '\n' || c == '\r' ) {
ADDRGP4 $97
JUMPV
LABELV $96
ADDRLP4 4
INDIRI4
CNSTI4 10
EQI4 $106
ADDRLP4 4
INDIRI4
CNSTI4 13
NEI4 $104
LABELV $106
line 643
;642:
;643: newline = qtrue;
ADDRLP4 12
CNSTI4 1
ASGNI4
line 645
;644:
;645: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 649
;646:
;647: // record when we hit whitespace
;648:
;649: } else if ( c == ' ' || c == '\t') {
ADDRGP4 $105
JUMPV
LABELV $104
ADDRLP4 4
INDIRI4
CNSTI4 32
EQI4 $109
ADDRLP4 4
INDIRI4
CNSTI4 9
NEI4 $107
LABELV $109
line 651
;650:
;651: whitespace = qtrue;
ADDRLP4 16
CNSTI4 1
ASGNI4
line 653
;652:
;653: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 657
;654:
;655: // an actual token
;656:
;657: } else {
ADDRGP4 $108
JUMPV
LABELV $107
line 661
;658:
;659: // if we have a pending newline, emit it (and it counts as whitespace)
;660:
;661: if (newline) {
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $110
line 663
;662:
;663: *out++ = '\n';
ADDRLP4 36
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 36
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI1 10
ASGNI1
line 665
;664:
;665: newline = qfalse;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 667
;666:
;667: whitespace = qfalse;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 669
;668:
;669: } if (whitespace) {
LABELV $110
ADDRLP4 16
INDIRI4
CNSTI4 0
EQI4 $112
line 671
;670:
;671: *out++ = ' ';
ADDRLP4 36
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 36
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI1 32
ASGNI1
line 673
;672:
;673: whitespace = qfalse;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 675
;674:
;675: }
LABELV $112
line 681
;676:
;677:
;678:
;679: // copy quoted strings unmolested
;680:
;681: if (c == '"') {
ADDRLP4 4
INDIRI4
CNSTI4 34
NEI4 $114
line 683
;682:
;683: *out++ = c;
ADDRLP4 36
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 36
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 685
;684:
;685: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRGP4 $117
JUMPV
LABELV $116
line 687
;686:
;687: while (1) {
line 689
;688:
;689: c = *in;
ADDRLP4 4
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 691
;690:
;691: if (c && c != '"') {
ADDRLP4 4
INDIRI4
CNSTI4 0
EQI4 $118
ADDRLP4 4
INDIRI4
CNSTI4 34
EQI4 $118
line 693
;692:
;693: *out++ = c;
ADDRLP4 44
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 44
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 44
INDIRP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 695
;694:
;695: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 697
;696:
;697: } else {
line 699
;698:
;699: break;
LABELV $120
line 703
;700:
;701: }
;702:
;703: }
LABELV $117
line 687
ADDRGP4 $116
JUMPV
LABELV $118
line 705
;704:
;705: if (c == '"') {
ADDRLP4 4
INDIRI4
CNSTI4 34
NEI4 $115
line 707
;706:
;707: *out++ = c;
ADDRLP4 40
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 40
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 709
;708:
;709: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 711
;710:
;711: }
line 713
;712:
;713: } else {
ADDRGP4 $115
JUMPV
LABELV $114
line 715
;714:
;715: *out = c;
ADDRLP4 8
INDIRP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 717
;716:
;717: out++;
ADDRLP4 8
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 719
;718:
;719: in++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 721
;720:
;721: }
LABELV $115
line 723
;722:
;723: }
LABELV $108
LABELV $105
LABELV $97
LABELV $91
line 725
;724:
;725: }
LABELV $88
line 615
ADDRLP4 24
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 4
ADDRLP4 24
INDIRI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 0
NEI4 $87
line 727
;726:
;727: }
LABELV $85
line 729
;728:
;729: *out = 0;
ADDRLP4 8
INDIRP4
CNSTI1 0
ASGNI1
line 731
;730:
;731: return out - data_p;
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRFP4 0
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
RETI4
LABELV $84
endproc COM_Compress 48 0
export COM_ParseExt
proc COM_ParseExt 36 8
line 739
;732:
;733:}
;734:
;735:
;736:
;737:char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
;738:
;739:{
line 741
;740:
;741: int c = 0, len;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 743
;742:
;743: qboolean hasNewLines = qfalse;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 749
;744:
;745: char *data;
;746:
;747:
;748:
;749: data = *data_p;
ADDRLP4 0
ADDRFP4 0
INDIRP4
INDIRP4
ASGNP4
line 751
;750:
;751: len = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 753
;752:
;753: com_token[0] = 0;
ADDRGP4 com_token
CNSTI1 0
ASGNI1
line 759
;754:
;755:
;756:
;757: // make sure incoming data is valid
;758:
;759: if ( !data )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $127
line 761
;760:
;761: {
line 763
;762:
;763: *data_p = NULL;
ADDRFP4 0
INDIRP4
CNSTP4 0
ASGNP4
line 765
;764:
;765: return com_token;
ADDRGP4 com_token
RETP4
ADDRGP4 $123
JUMPV
LABELV $126
line 773
;766:
;767: }
;768:
;769:
;770:
;771: while ( 1 )
;772:
;773: {
line 777
;774:
;775: // skip whitespace
;776:
;777: data = SkipWhitespace( data, &hasNewLines );
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 12
ARGP4
ADDRLP4 16
ADDRGP4 SkipWhitespace
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16
INDIRP4
ASGNP4
line 779
;778:
;779: if ( !data )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $129
line 781
;780:
;781: {
line 783
;782:
;783: *data_p = NULL;
ADDRFP4 0
INDIRP4
CNSTP4 0
ASGNP4
line 785
;784:
;785: return com_token;
ADDRGP4 com_token
RETP4
ADDRGP4 $123
JUMPV
LABELV $129
line 789
;786:
;787: }
;788:
;789: if ( hasNewLines && !allowLineBreaks )
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $131
ADDRFP4 4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $131
line 791
;790:
;791: {
line 793
;792:
;793: *data_p = data;
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
ASGNP4
line 795
;794:
;795: return com_token;
ADDRGP4 com_token
RETP4
ADDRGP4 $123
JUMPV
LABELV $131
line 801
;796:
;797: }
;798:
;799:
;800:
;801: c = *data;
ADDRLP4 4
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 807
;802:
;803:
;804:
;805: // skip double slash comments
;806:
;807: if ( c == '/' && data[1] == '/' )
ADDRLP4 24
CNSTI4 47
ASGNI4
ADDRLP4 4
INDIRI4
ADDRLP4 24
INDIRI4
NEI4 $133
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ADDRLP4 24
INDIRI4
NEI4 $133
line 809
;808:
;809: {
line 811
;810:
;811: data += 2;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 2
ADDP4
ASGNP4
ADDRGP4 $136
JUMPV
LABELV $135
line 813
;812:
;813: while (*data && *data != '\n') {
line 815
;814:
;815: data++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 817
;816:
;817: }
LABELV $136
line 813
ADDRLP4 28
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
EQI4 $138
ADDRLP4 28
INDIRI4
CNSTI4 10
NEI4 $135
LABELV $138
line 819
;818:
;819: }
ADDRGP4 $134
JUMPV
LABELV $133
line 823
;820:
;821: // skip /* */ comments
;822:
;823: else if ( c=='/' && data[1] == '*' )
ADDRLP4 4
INDIRI4
CNSTI4 47
NEI4 $128
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 42
NEI4 $128
line 825
;824:
;825: {
line 827
;826:
;827: data += 2;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 2
ADDP4
ASGNP4
ADDRGP4 $142
JUMPV
LABELV $141
line 831
;828:
;829: while ( *data && ( *data != '*' || data[1] != '/' ) )
;830:
;831: {
line 833
;832:
;833: data++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 835
;834:
;835: }
LABELV $142
line 829
ADDRLP4 32
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $144
ADDRLP4 32
INDIRI4
CNSTI4 42
NEI4 $141
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 47
NEI4 $141
LABELV $144
line 837
;836:
;837: if ( *data )
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $140
line 839
;838:
;839: {
line 841
;840:
;841: data += 2;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 2
ADDP4
ASGNP4
line 843
;842:
;843: }
line 845
;844:
;845: }
line 849
;846:
;847: else
;848:
;849: {
line 851
;850:
;851: break;
LABELV $140
LABELV $134
line 855
;852:
;853: }
;854:
;855: }
LABELV $127
line 771
ADDRGP4 $126
JUMPV
LABELV $128
line 861
;856:
;857:
;858:
;859: // handle quoted strings
;860:
;861: if (c == '\"')
ADDRLP4 4
INDIRI4
CNSTI4 34
NEI4 $147
line 863
;862:
;863: {
line 865
;864:
;865: data++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRGP4 $150
JUMPV
LABELV $149
line 869
;866:
;867: while (1)
;868:
;869: {
line 871
;870:
;871: c = *data++;
ADDRLP4 16
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 16
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 4
ADDRLP4 16
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 873
;872:
;873: if (c=='\"' || !c)
ADDRLP4 4
INDIRI4
CNSTI4 34
EQI4 $154
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $152
LABELV $154
line 875
;874:
;875: {
line 877
;876:
;877: com_token[len] = 0;
ADDRLP4 8
INDIRI4
ADDRGP4 com_token
ADDP4
CNSTI1 0
ASGNI1
line 879
;878:
;879: *data_p = ( char * ) data;
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
ASGNP4
line 881
;880:
;881: return com_token;
ADDRGP4 com_token
RETP4
ADDRGP4 $123
JUMPV
LABELV $152
line 885
;882:
;883: }
;884:
;885: if (len < MAX_TOKEN_CHARS)
ADDRLP4 8
INDIRI4
CNSTI4 1024
GEI4 $155
line 887
;886:
;887: {
line 889
;888:
;889: com_token[len] = c;
ADDRLP4 8
INDIRI4
ADDRGP4 com_token
ADDP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 891
;890:
;891: len++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 893
;892:
;893: }
LABELV $155
line 895
;894:
;895: }
LABELV $150
line 867
ADDRGP4 $149
JUMPV
line 897
;896:
;897: }
LABELV $147
LABELV $157
line 905
;898:
;899:
;900:
;901: // parse a regular word
;902:
;903: do
;904:
;905: {
line 907
;906:
;907: if (len < MAX_TOKEN_CHARS)
ADDRLP4 8
INDIRI4
CNSTI4 1024
GEI4 $160
line 909
;908:
;909: {
line 911
;910:
;911: com_token[len] = c;
ADDRLP4 8
INDIRI4
ADDRGP4 com_token
ADDP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 913
;912:
;913: len++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 915
;914:
;915: }
LABELV $160
line 917
;916:
;917: data++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 919
;918:
;919: c = *data;
ADDRLP4 4
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 921
;920:
;921: if ( c == '\n' )
ADDRLP4 4
INDIRI4
CNSTI4 10
NEI4 $162
line 923
;922:
;923: com_lines++;
ADDRLP4 16
ADDRGP4 com_lines
ASGNP4
ADDRLP4 16
INDIRP4
ADDRLP4 16
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $162
line 925
;924:
;925: } while (c>32);
LABELV $158
ADDRLP4 4
INDIRI4
CNSTI4 32
GTI4 $157
line 929
;926:
;927:
;928:
;929: if (len == MAX_TOKEN_CHARS)
ADDRLP4 8
INDIRI4
CNSTI4 1024
NEI4 $164
line 931
;930:
;931: {
line 935
;932:
;933:// Com_Printf ("Token exceeded %i chars, discarded.\n", MAX_TOKEN_CHARS);
;934:
;935: len = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 937
;936:
;937: }
LABELV $164
line 939
;938:
;939: com_token[len] = 0;
ADDRLP4 8
INDIRI4
ADDRGP4 com_token
ADDP4
CNSTI1 0
ASGNI1
line 943
;940:
;941:
;942:
;943: *data_p = ( char * ) data;
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
ASGNP4
line 945
;944:
;945: return com_token;
ADDRGP4 com_token
RETP4
LABELV $123
endproc COM_ParseExt 36 8
export COM_MatchToken
proc COM_MatchToken 12 16
line 1073
;946:
;947:}
;948:
;949:
;950:
;951:
;952:
;953:#if 0
;954:
;955:// no longer used
;956:
;957:/*
;958:
;959:===============
;960:
;961:COM_ParseInfos
;962:
;963:===============
;964:
;965:*/
;966:
;967:int COM_ParseInfos( char *buf, int max, char infos[][MAX_INFO_STRING] ) {
;968:
;969: char *token;
;970:
;971: int count;
;972:
;973: char key[MAX_TOKEN_CHARS];
;974:
;975:
;976:
;977: count = 0;
;978:
;979:
;980:
;981: while ( 1 ) {
;982:
;983: token = COM_Parse( &buf );
;984:
;985: if ( !token[0] ) {
;986:
;987: break;
;988:
;989: }
;990:
;991: if ( strcmp( token, "{" ) ) {
;992:
;993: Com_Printf( "Missing { in info file\n" );
;994:
;995: break;
;996:
;997: }
;998:
;999:
;1000:
;1001: if ( count == max ) {
;1002:
;1003: Com_Printf( "Max infos exceeded\n" );
;1004:
;1005: break;
;1006:
;1007: }
;1008:
;1009:
;1010:
;1011: infos[count][0] = 0;
;1012:
;1013: while ( 1 ) {
;1014:
;1015: token = COM_ParseExt( &buf, qtrue );
;1016:
;1017: if ( !token[0] ) {
;1018:
;1019: Com_Printf( "Unexpected end of info file\n" );
;1020:
;1021: break;
;1022:
;1023: }
;1024:
;1025: if ( !strcmp( token, "}" ) ) {
;1026:
;1027: break;
;1028:
;1029: }
;1030:
;1031: Q_strncpyz( key, token, sizeof( key ) );
;1032:
;1033:
;1034:
;1035: token = COM_ParseExt( &buf, qfalse );
;1036:
;1037: if ( !token[0] ) {
;1038:
;1039: strcpy( token, "<NULL>" );
;1040:
;1041: }
;1042:
;1043: Info_SetValueForKey( infos[count], key, token );
;1044:
;1045: }
;1046:
;1047: count++;
;1048:
;1049: }
;1050:
;1051:
;1052:
;1053: return count;
;1054:
;1055:}
;1056:
;1057:#endif
;1058:
;1059:
;1060:
;1061:
;1062:
;1063:/*
;1064:
;1065:==================
;1066:
;1067:COM_MatchToken
;1068:
;1069:==================
;1070:
;1071:*/
;1072:
;1073:void COM_MatchToken( char **buf_p, char *match ) {
line 1079
;1074:
;1075: char *token;
;1076:
;1077:
;1078:
;1079: token = COM_Parse( buf_p );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 COM_Parse
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 1081
;1080:
;1081: if ( strcmp( token, match ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $167
line 1083
;1082:
;1083: Com_Error( ERR_DROP, "MatchToken: %s != %s", token, match );
CNSTI4 1
ARGI4
ADDRGP4 $169
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1085
;1084:
;1085: }
LABELV $167
line 1087
;1086:
;1087:}
LABELV $166
endproc COM_MatchToken 12 16
export SkipBracedSection
proc SkipBracedSection 12 8
line 1111
;1088:
;1089:
;1090:
;1091:
;1092:
;1093:/*
;1094:
;1095:=================
;1096:
;1097:SkipBracedSection
;1098:
;1099:
;1100:
;1101:The next token should be an open brace.
;1102:
;1103:Skips until a matching close brace is found.
;1104:
;1105:Internal brace depths are properly skipped.
;1106:
;1107:=================
;1108:
;1109:*/
;1110:
;1111:void SkipBracedSection (char **program) {
line 1119
;1112:
;1113: char *token;
;1114:
;1115: int depth;
;1116:
;1117:
;1118:
;1119: depth = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
LABELV $171
line 1121
;1120:
;1121: do {
line 1123
;1122:
;1123: token = COM_ParseExt( program, qtrue );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 8
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
ASGNP4
line 1125
;1124:
;1125: if( token[1] == 0 ) {
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $174
line 1127
;1126:
;1127: if( token[0] == '{' ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 123
NEI4 $176
line 1129
;1128:
;1129: depth++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1131
;1130:
;1131: }
ADDRGP4 $177
JUMPV
LABELV $176
line 1133
;1132:
;1133: else if( token[0] == '}' ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 125
NEI4 $178
line 1135
;1134:
;1135: depth--;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 1137
;1136:
;1137: }
LABELV $178
LABELV $177
line 1139
;1138:
;1139: }
LABELV $174
line 1141
;1140:
;1141: } while( depth && *program );
LABELV $172
ADDRLP4 4
INDIRI4
CNSTI4 0
EQI4 $180
ADDRFP4 0
INDIRP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $171
LABELV $180
line 1143
;1142:
;1143:}
LABELV $170
endproc SkipBracedSection 12 8
export SkipRestOfLine
proc SkipRestOfLine 16 0
line 1157
;1144:
;1145:
;1146:
;1147:/*
;1148:
;1149:=================
;1150:
;1151:SkipRestOfLine
;1152:
;1153:=================
;1154:
;1155:*/
;1156:
;1157:void SkipRestOfLine ( char **data ) {
line 1165
;1158:
;1159: char *p;
;1160:
;1161: int c;
;1162:
;1163:
;1164:
;1165: p = *data;
ADDRLP4 4
ADDRFP4 0
INDIRP4
INDIRP4
ASGNP4
ADDRGP4 $183
JUMPV
LABELV $182
line 1167
;1166:
;1167: while ( (c = *p++) != 0 ) {
line 1169
;1168:
;1169: if ( c == '\n' ) {
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $185
line 1171
;1170:
;1171: com_lines++;
ADDRLP4 8
ADDRGP4 com_lines
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1173
;1172:
;1173: break;
ADDRGP4 $184
JUMPV
LABELV $185
line 1177
;1174:
;1175: }
;1176:
;1177: }
LABELV $183
line 1167
ADDRLP4 8
ADDRLP4 4
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 12
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 0
ADDRLP4 12
INDIRI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $182
LABELV $184
line 1181
;1178:
;1179:
;1180:
;1181: *data = p;
ADDRFP4 0
INDIRP4
ADDRLP4 4
INDIRP4
ASGNP4
line 1183
;1182:
;1183:}
LABELV $181
endproc SkipRestOfLine 16 0
export Parse1DMatrix
proc Parse1DMatrix 16 8
line 1189
;1184:
;1185:
;1186:
;1187:
;1188:
;1189:void Parse1DMatrix (char **buf_p, int x, float *m) {
line 1197
;1190:
;1191: char *token;
;1192:
;1193: int i;
;1194:
;1195:
;1196:
;1197: COM_MatchToken( buf_p, "(" );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $188
ARGP4
ADDRGP4 COM_MatchToken
CALLV
pop
line 1201
;1198:
;1199:
;1200:
;1201: for (i = 0 ; i < x ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $192
JUMPV
LABELV $189
line 1203
;1202:
;1203: token = COM_Parse(buf_p);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 COM_Parse
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 8
INDIRP4
ASGNP4
line 1205
;1204:
;1205: m[i] = atof(token);
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRFP4 8
INDIRP4
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
line 1207
;1206:
;1207: }
LABELV $190
line 1201
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $192
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRI4
LTI4 $189
line 1211
;1208:
;1209:
;1210:
;1211: COM_MatchToken( buf_p, ")" );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $193
ARGP4
ADDRGP4 COM_MatchToken
CALLV
pop
line 1213
;1212:
;1213:}
LABELV $187
endproc Parse1DMatrix 16 8
export Parse2DMatrix
proc Parse2DMatrix 8 12
line 1217
;1214:
;1215:
;1216:
;1217:void Parse2DMatrix (char **buf_p, int y, int x, float *m) {
line 1223
;1218:
;1219: int i;
;1220:
;1221:
;1222:
;1223: COM_MatchToken( buf_p, "(" );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $188
ARGP4
ADDRGP4 COM_MatchToken
CALLV
pop
line 1227
;1224:
;1225:
;1226:
;1227: for (i = 0 ; i < y ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $198
JUMPV
LABELV $195
line 1229
;1228:
;1229: Parse1DMatrix (buf_p, x, m + i * x);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
MULI4
CNSTI4 2
LSHI4
ADDRFP4 12
INDIRP4
ADDP4
ARGP4
ADDRGP4 Parse1DMatrix
CALLV
pop
line 1231
;1230:
;1231: }
LABELV $196
line 1227
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $198
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRI4
LTI4 $195
line 1235
;1232:
;1233:
;1234:
;1235: COM_MatchToken( buf_p, ")" );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $193
ARGP4
ADDRGP4 COM_MatchToken
CALLV
pop
line 1237
;1236:
;1237:}
LABELV $194
endproc Parse2DMatrix 8 12
export Parse3DMatrix
proc Parse3DMatrix 12 16
line 1241
;1238:
;1239:
;1240:
;1241:void Parse3DMatrix (char **buf_p, int z, int y, int x, float *m) {
line 1247
;1242:
;1243: int i;
;1244:
;1245:
;1246:
;1247: COM_MatchToken( buf_p, "(" );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $188
ARGP4
ADDRGP4 COM_MatchToken
CALLV
pop
line 1251
;1248:
;1249:
;1250:
;1251: for (i = 0 ; i < z ; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $203
JUMPV
LABELV $200
line 1253
;1252:
;1253: Parse2DMatrix (buf_p, y, x, m + i * x*y);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 8
ADDRFP4 12
INDIRI4
ASGNI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
MULI4
ADDRLP4 4
INDIRI4
MULI4
CNSTI4 2
LSHI4
ADDRFP4 16
INDIRP4
ADDP4
ARGP4
ADDRGP4 Parse2DMatrix
CALLV
pop
line 1255
;1254:
;1255: }
LABELV $201
line 1251
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $203
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRI4
LTI4 $200
line 1259
;1256:
;1257:
;1258:
;1259: COM_MatchToken( buf_p, ")" );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $193
ARGP4
ADDRGP4 COM_MatchToken
CALLV
pop
line 1261
;1260:
;1261:}
LABELV $199
endproc Parse3DMatrix 12 16
export Q_isprint
proc Q_isprint 4 0
line 1285
;1262:
;1263:
;1264:
;1265:
;1266:
;1267:/*
;1268:
;1269:============================================================================
;1270:
;1271:
;1272:
;1273: LIBRARY REPLACEMENT FUNCTIONS
;1274:
;1275:
;1276:
;1277:============================================================================
;1278:
;1279:*/
;1280:
;1281:
;1282:
;1283:int Q_isprint( int c )
;1284:
;1285:{
line 1287
;1286:
;1287: if ( c >= 0x20 && c <= 0x7E )
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $205
ADDRLP4 0
INDIRI4
CNSTI4 126
GTI4 $205
line 1289
;1288:
;1289: return ( 1 );
CNSTI4 1
RETI4
ADDRGP4 $204
JUMPV
LABELV $205
line 1291
;1290:
;1291: return ( 0 );
CNSTI4 0
RETI4
LABELV $204
endproc Q_isprint 4 0
export Q_islower
proc Q_islower 4 0
line 1299
;1292:
;1293:}
;1294:
;1295:
;1296:
;1297:int Q_islower( int c )
;1298:
;1299:{
line 1301
;1300:
;1301: if (c >= 'a' && c <= 'z')
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 97
LTI4 $208
ADDRLP4 0
INDIRI4
CNSTI4 122
GTI4 $208
line 1303
;1302:
;1303: return ( 1 );
CNSTI4 1
RETI4
ADDRGP4 $207
JUMPV
LABELV $208
line 1305
;1304:
;1305: return ( 0 );
CNSTI4 0
RETI4
LABELV $207
endproc Q_islower 4 0
export Q_isupper
proc Q_isupper 4 0
line 1313
;1306:
;1307:}
;1308:
;1309:
;1310:
;1311:int Q_isupper( int c )
;1312:
;1313:{
line 1315
;1314:
;1315: if (c >= 'A' && c <= 'Z')
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 65
LTI4 $211
ADDRLP4 0
INDIRI4
CNSTI4 90
GTI4 $211
line 1317
;1316:
;1317: return ( 1 );
CNSTI4 1
RETI4
ADDRGP4 $210
JUMPV
LABELV $211
line 1319
;1318:
;1319: return ( 0 );
CNSTI4 0
RETI4
LABELV $210
endproc Q_isupper 4 0
export Q_isalpha
proc Q_isalpha 8 0
line 1327
;1320:
;1321:}
;1322:
;1323:
;1324:
;1325:int Q_isalpha( int c )
;1326:
;1327:{
line 1329
;1328:
;1329: if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 97
LTI4 $217
ADDRLP4 0
INDIRI4
CNSTI4 122
LEI4 $216
LABELV $217
ADDRLP4 4
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 65
LTI4 $214
ADDRLP4 4
INDIRI4
CNSTI4 90
GTI4 $214
LABELV $216
line 1331
;1330:
;1331: return ( 1 );
CNSTI4 1
RETI4
ADDRGP4 $213
JUMPV
LABELV $214
line 1333
;1332:
;1333: return ( 0 );
CNSTI4 0
RETI4
LABELV $213
endproc Q_isalpha 8 0
export Q_strrchr
proc Q_strrchr 12 0
line 1341
;1334:
;1335:}
;1336:
;1337:
;1338:
;1339:char* Q_strrchr( const char* string, int c )
;1340:
;1341:{
line 1343
;1342:
;1343: char cc = c;
ADDRLP4 4
ADDRFP4 4
INDIRI4
CVII1 4
ASGNI1
line 1347
;1344:
;1345: char *s;
;1346:
;1347: char *sp=(char *)0;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 1351
;1348:
;1349:
;1350:
;1351: s = (char*)string;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRGP4 $220
JUMPV
LABELV $219
line 1357
;1352:
;1353:
;1354:
;1355: while (*s)
;1356:
;1357: {
line 1359
;1358:
;1359: if (*s == cc)
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 4
INDIRI1
CVII4 1
NEI4 $222
line 1361
;1360:
;1361: sp = s;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
LABELV $222
line 1363
;1362:
;1363: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1365
;1364:
;1365: }
LABELV $220
line 1355
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $219
line 1367
;1366:
;1367: if (cc == 0)
ADDRLP4 4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $224
line 1369
;1368:
;1369: sp = s;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
LABELV $224
line 1373
;1370:
;1371:
;1372:
;1373: return sp;
ADDRLP4 8
INDIRP4
RETP4
LABELV $218
endproc Q_strrchr 12 0
export Q_strncpyz
proc Q_strncpyz 0 12
line 1393
;1374:
;1375:}
;1376:
;1377:
;1378:
;1379:/*
;1380:
;1381:=============
;1382:
;1383:Q_strncpyz
;1384:
;1385:
;1386:
;1387:Safe strncpy that ensures a trailing zero
;1388:
;1389:=============
;1390:
;1391:*/
;1392:
;1393:void Q_strncpyz( char *dest, const char *src, int destsize ) {
line 1397
;1394:
;1395: // bk001129 - also NULL dest
;1396:
;1397: if ( !dest ) {
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $227
line 1399
;1398:
;1399: Com_Error( ERR_FATAL, "Q_strncpyz: NULL dest" );
CNSTI4 0
ARGI4
ADDRGP4 $229
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1401
;1400:
;1401: }
LABELV $227
line 1403
;1402:
;1403: if ( !src ) {
ADDRFP4 4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $230
line 1405
;1404:
;1405: Com_Error( ERR_FATAL, "Q_strncpyz: NULL src" );
CNSTI4 0
ARGI4
ADDRGP4 $232
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1407
;1406:
;1407: }
LABELV $230
line 1409
;1408:
;1409: if ( destsize < 1 ) {
ADDRFP4 8
INDIRI4
CNSTI4 1
GEI4 $233
line 1411
;1410:
;1411: Com_Error(ERR_FATAL,"Q_strncpyz: destsize < 1" );
CNSTI4 0
ARGI4
ADDRGP4 $235
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1413
;1412:
;1413: }
LABELV $233
line 1417
;1414:
;1415:
;1416:
;1417: strncpy( dest, src, destsize-1 );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRFP4 8
INDIRI4
CNSTI4 1
SUBI4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 1419
;1418:
;1419: dest[destsize-1] = 0;
ADDRFP4 8
INDIRI4
CNSTI4 1
SUBI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1421
;1420:
;1421:}
LABELV $226
endproc Q_strncpyz 0 12
export Q_stricmpn
proc Q_stricmpn 32 0
line 1425
;1422:
;1423:
;1424:
;1425:int Q_stricmpn (const char *s1, const char *s2, int n) {
line 1433
;1426:
;1427: int c1, c2;
;1428:
;1429:
;1430:
;1431: // bk001129 - moved in 1.17 fix not in id codebase
;1432:
;1433: if ( s1 == NULL ) {
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $237
line 1435
;1434:
;1435: if ( s2 == NULL )
ADDRFP4 4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $239
line 1437
;1436:
;1437: return 0;
CNSTI4 0
RETI4
ADDRGP4 $236
JUMPV
LABELV $239
line 1441
;1438:
;1439: else
;1440:
;1441: return -1;
CNSTI4 -1
RETI4
ADDRGP4 $236
JUMPV
LABELV $237
line 1445
;1442:
;1443: }
;1444:
;1445: else if ( s2==NULL )
ADDRFP4 4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $241
line 1447
;1446:
;1447: return 1;
CNSTI4 1
RETI4
ADDRGP4 $236
JUMPV
LABELV $241
LABELV $243
line 1455
;1448:
;1449:
;1450:
;1451:
;1452:
;1453:
;1454:
;1455: do {
line 1457
;1456:
;1457: c1 = *s1++;
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 1459
;1458:
;1459: c2 = *s2++;
ADDRLP4 12
ADDRFP4 4
INDIRP4
ASGNP4
ADDRFP4 4
ADDRLP4 12
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 4
ADDRLP4 12
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 1463
;1460:
;1461:
;1462:
;1463: if (!n--) {
ADDRLP4 16
ADDRFP4 8
INDIRI4
ASGNI4
ADDRFP4 8
ADDRLP4 16
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $246
line 1465
;1464:
;1465: return 0; // strings are equal until end point
CNSTI4 0
RETI4
ADDRGP4 $236
JUMPV
LABELV $246
line 1471
;1466:
;1467: }
;1468:
;1469:
;1470:
;1471: if (c1 != c2) {
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $248
line 1473
;1472:
;1473: if (c1 >= 'a' && c1 <= 'z') {
ADDRLP4 0
INDIRI4
CNSTI4 97
LTI4 $250
ADDRLP4 0
INDIRI4
CNSTI4 122
GTI4 $250
line 1475
;1474:
;1475: c1 -= ('a' - 'A');
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 32
SUBI4
ASGNI4
line 1477
;1476:
;1477: }
LABELV $250
line 1479
;1478:
;1479: if (c2 >= 'a' && c2 <= 'z') {
ADDRLP4 4
INDIRI4
CNSTI4 97
LTI4 $252
ADDRLP4 4
INDIRI4
CNSTI4 122
GTI4 $252
line 1481
;1480:
;1481: c2 -= ('a' - 'A');
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 32
SUBI4
ASGNI4
line 1483
;1482:
;1483: }
LABELV $252
line 1485
;1484:
;1485: if (c1 != c2) {
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $254
line 1487
;1486:
;1487: return c1 < c2 ? -1 : 1;
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $257
ADDRLP4 28
CNSTI4 -1
ASGNI4
ADDRGP4 $258
JUMPV
LABELV $257
ADDRLP4 28
CNSTI4 1
ASGNI4
LABELV $258
ADDRLP4 28
INDIRI4
RETI4
ADDRGP4 $236
JUMPV
LABELV $254
line 1491
;1488:
;1489: }
;1490:
;1491: }
LABELV $248
line 1493
;1492:
;1493: } while (c1);
LABELV $244
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $243
line 1497
;1494:
;1495:
;1496:
;1497: return 0; // strings are equal
CNSTI4 0
RETI4
LABELV $236
endproc Q_stricmpn 32 0
export Q_strncmp
proc Q_strncmp 24 0
line 1503
;1498:
;1499:}
;1500:
;1501:
;1502:
;1503:int Q_strncmp (const char *s1, const char *s2, int n) {
LABELV $260
line 1509
;1504:
;1505: int c1, c2;
;1506:
;1507:
;1508:
;1509: do {
line 1511
;1510:
;1511: c1 = *s1++;
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 1513
;1512:
;1513: c2 = *s2++;
ADDRLP4 12
ADDRFP4 4
INDIRP4
ASGNP4
ADDRFP4 4
ADDRLP4 12
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 4
ADDRLP4 12
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 1517
;1514:
;1515:
;1516:
;1517: if (!n--) {
ADDRLP4 16
ADDRFP4 8
INDIRI4
ASGNI4
ADDRFP4 8
ADDRLP4 16
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $263
line 1519
;1518:
;1519: return 0; // strings are equal until end point
CNSTI4 0
RETI4
ADDRGP4 $259
JUMPV
LABELV $263
line 1525
;1520:
;1521: }
;1522:
;1523:
;1524:
;1525: if (c1 != c2) {
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $265
line 1527
;1526:
;1527: return c1 < c2 ? -1 : 1;
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $268
ADDRLP4 20
CNSTI4 -1
ASGNI4
ADDRGP4 $269
JUMPV
LABELV $268
ADDRLP4 20
CNSTI4 1
ASGNI4
LABELV $269
ADDRLP4 20
INDIRI4
RETI4
ADDRGP4 $259
JUMPV
LABELV $265
line 1531
;1528:
;1529: }
;1530:
;1531: } while (c1);
LABELV $261
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $260
line 1535
;1532:
;1533:
;1534:
;1535: return 0; // strings are equal
CNSTI4 0
RETI4
LABELV $259
endproc Q_strncmp 24 0
export Q_stricmp
proc Q_stricmp 12 12
line 1541
;1536:
;1537:}
;1538:
;1539:
;1540:
;1541:int Q_stricmp (const char *s1, const char *s2) {
line 1543
;1542:
;1543: return (s1 && s2) ? Q_stricmpn (s1, s2, 99999) : -1;
ADDRLP4 4
CNSTU4 0
ASGNU4
ADDRFP4 0
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRU4
EQU4 $272
ADDRFP4 4
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRU4
EQU4 $272
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 99999
ARGI4
ADDRLP4 8
ADDRGP4 Q_stricmpn
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 8
INDIRI4
ASGNI4
ADDRGP4 $273
JUMPV
LABELV $272
ADDRLP4 0
CNSTI4 -1
ASGNI4
LABELV $273
ADDRLP4 0
INDIRI4
RETI4
LABELV $270
endproc Q_stricmp 12 12
export Q_strlwr
proc Q_strlwr 12 4
line 1551
;1544:
;1545:}
;1546:
;1547:
;1548:
;1549:
;1550:
;1551:char *Q_strlwr( char *s1 ) {
line 1557
;1552:
;1553: char *s;
;1554:
;1555:
;1556:
;1557: s = s1;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRGP4 $276
JUMPV
LABELV $275
line 1559
;1558:
;1559: while ( *s ) {
line 1561
;1560:
;1561: *s = tolower(*s);
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ARGI4
ADDRLP4 8
ADDRGP4 tolower
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 8
INDIRI4
CVII1 4
ASGNI1
line 1563
;1562:
;1563: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1565
;1564:
;1565: }
LABELV $276
line 1559
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $275
line 1567
;1566:
;1567: return s1;
ADDRFP4 0
INDIRP4
RETP4
LABELV $274
endproc Q_strlwr 12 4
export Q_strupr
proc Q_strupr 12 4
line 1573
;1568:
;1569:}
;1570:
;1571:
;1572:
;1573:char *Q_strupr( char *s1 ) {
line 1579
;1574:
;1575: char *s;
;1576:
;1577:
;1578:
;1579: s = s1;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRGP4 $280
JUMPV
LABELV $279
line 1581
;1580:
;1581: while ( *s ) {
line 1583
;1582:
;1583: *s = toupper(*s);
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ARGI4
ADDRLP4 8
ADDRGP4 toupper
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 8
INDIRI4
CVII1 4
ASGNI1
line 1585
;1584:
;1585: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1587
;1586:
;1587: }
LABELV $280
line 1581
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $279
line 1589
;1588:
;1589: return s1;
ADDRFP4 0
INDIRP4
RETP4
LABELV $278
endproc Q_strupr 12 4
export Q_strcat
proc Q_strcat 12 12
line 1599
;1590:
;1591:}
;1592:
;1593:
;1594:
;1595:
;1596:
;1597:// never goes past bounds or leaves without a terminating 0
;1598:
;1599:void Q_strcat( char *dest, int size, const char *src ) {
line 1605
;1600:
;1601: int l1;
;1602:
;1603:
;1604:
;1605: l1 = strlen( dest );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
line 1607
;1606:
;1607: if ( l1 >= size ) {
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRI4
LTI4 $283
line 1609
;1608:
;1609: Com_Error( ERR_FATAL, "Q_strcat: already overflowed" );
CNSTI4 0
ARGI4
ADDRGP4 $285
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1611
;1610:
;1611: }
LABELV $283
line 1613
;1612:
;1613: Q_strncpyz( dest + l1, src, size - l1 );
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ADDRLP4 0
INDIRI4
SUBI4
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1615
;1614:
;1615:}
LABELV $282
endproc Q_strcat 12 12
export Q_PrintStrlen
proc Q_PrintStrlen 20 0
line 1621
;1616:
;1617:
;1618:
;1619:
;1620:
;1621:int Q_PrintStrlen( const char *string ) {
line 1629
;1622:
;1623: int len;
;1624:
;1625: const char *p;
;1626:
;1627:
;1628:
;1629: if( !string ) {
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $287
line 1631
;1630:
;1631: return 0;
CNSTI4 0
RETI4
ADDRGP4 $286
JUMPV
LABELV $287
line 1637
;1632:
;1633: }
;1634:
;1635:
;1636:
;1637: len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1639
;1638:
;1639: p = string;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRGP4 $290
JUMPV
LABELV $289
line 1641
;1640:
;1641: while( *p ) {
line 1643
;1642:
;1643: if( Q_IsColorString( p ) ) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $292
ADDRLP4 12
CNSTI4 94
ASGNI4
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 12
INDIRI4
NEI4 $292
ADDRLP4 16
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
EQI4 $292
ADDRLP4 16
INDIRI4
ADDRLP4 12
INDIRI4
EQI4 $292
line 1645
;1644:
;1645: p += 2;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 2
ADDP4
ASGNP4
line 1647
;1646:
;1647: continue;
ADDRGP4 $290
JUMPV
LABELV $292
line 1651
;1648:
;1649: }
;1650:
;1651: p++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1653
;1652:
;1653: len++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1655
;1654:
;1655: }
LABELV $290
line 1641
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $289
line 1659
;1656:
;1657:
;1658:
;1659: return len;
ADDRLP4 4
INDIRI4
RETI4
LABELV $286
endproc Q_PrintStrlen 20 0
export Q_CleanStr
proc Q_CleanStr 32 0
line 1667
;1660:
;1661:}
;1662:
;1663:
;1664:
;1665:
;1666:
;1667:char *Q_CleanStr( char *string ) {
line 1677
;1668:
;1669: char* d;
;1670:
;1671: char* s;
;1672:
;1673: int c;
;1674:
;1675:
;1676:
;1677: s = string;
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
line 1679
;1678:
;1679: d = string;
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRGP4 $296
JUMPV
LABELV $295
line 1681
;1680:
;1681: while ((c = *s) != 0 ) {
line 1683
;1682:
;1683: if ( Q_IsColorString( s ) ) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $298
ADDRLP4 16
CNSTI4 94
ASGNI4
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 16
INDIRI4
NEI4 $298
ADDRLP4 20
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $298
ADDRLP4 20
INDIRI4
ADDRLP4 16
INDIRI4
EQI4 $298
line 1685
;1684:
;1685: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1687
;1686:
;1687: }
ADDRGP4 $299
JUMPV
LABELV $298
line 1689
;1688:
;1689: else if ( c >= 0x20 && c <= 0x7E ) {
ADDRLP4 4
INDIRI4
CNSTI4 32
LTI4 $300
ADDRLP4 4
INDIRI4
CNSTI4 126
GTI4 $300
line 1691
;1690:
;1691: *d++ = c;
ADDRLP4 28
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 8
ADDRLP4 28
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 4
INDIRI4
CVII1 4
ASGNI1
line 1693
;1692:
;1693: }
LABELV $300
LABELV $299
line 1695
;1694:
;1695: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1697
;1696:
;1697: }
LABELV $296
line 1681
ADDRLP4 12
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 4
ADDRLP4 12
INDIRI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $295
line 1699
;1698:
;1699: *d = '\0';
ADDRLP4 8
INDIRP4
CNSTI1 0
ASGNI1
line 1703
;1700:
;1701:
;1702:
;1703: return string;
ADDRFP4 0
INDIRP4
RETP4
LABELV $294
endproc Q_CleanStr 32 0
export Com_sprintf
proc Com_sprintf 32012 12
line 1711
;1704:
;1705:}
;1706:
;1707:
;1708:
;1709:
;1710:
;1711:void QDECL Com_sprintf( char *dest, int size, const char *fmt, ...) {
line 1721
;1712:
;1713: int len;
;1714:
;1715: va_list argptr;
;1716:
;1717: char bigbuffer[32000]; // big, but small enough to fit in PPC stack
;1718:
;1719:
;1720:
;1721: va_start (argptr,fmt);
ADDRLP4 4
ADDRFP4 8+4
ASGNP4
line 1723
;1722:
;1723: len = vsprintf (bigbuffer,fmt,argptr);
ADDRLP4 8
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 32008
ADDRGP4 vsprintf
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 32008
INDIRI4
ASGNI4
line 1725
;1724:
;1725: va_end (argptr);
ADDRLP4 4
CNSTP4 0
ASGNP4
line 1727
;1726:
;1727: if ( len >= sizeof( bigbuffer ) ) {
ADDRLP4 0
INDIRI4
CVIU4 4
CNSTU4 32000
LTU4 $304
line 1729
;1728:
;1729: Com_Error( ERR_FATAL, "Com_sprintf: overflowed bigbuffer" );
CNSTI4 0
ARGI4
ADDRGP4 $306
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1731
;1730:
;1731: }
LABELV $304
line 1733
;1732:
;1733: if (len >= size) {
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRI4
LTI4 $307
line 1735
;1734:
;1735: Com_Printf ("Com_sprintf: overflow of %i in %i\n", len, size);
ADDRGP4 $309
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 Com_Printf
CALLV
pop
line 1747
;1736:
;1737:#ifdef _DEBUG
;1738:
;1739: __asm {
;1740:
;1741: int 3;
;1742:
;1743: }
;1744:
;1745:#endif
;1746:
;1747: }
LABELV $307
line 1749
;1748:
;1749: Q_strncpyz (dest, bigbuffer, size );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1751
;1750:
;1751:}
LABELV $302
endproc Com_sprintf 32012 12
bss
align 1
LABELV $311
skip 64000
data
align 4
LABELV $312
byte 4 0
export va
code
proc va 12 12
line 1775
;1752:
;1753:
;1754:
;1755:
;1756:
;1757:/*
;1758:
;1759:============
;1760:
;1761:va
;1762:
;1763:
;1764:
;1765:does a varargs printf into a temp buffer, so I don't need to have
;1766:
;1767:varargs versions of all text functions.
;1768:
;1769:FIXME: make this buffer size safe someday
;1770:
;1771:============
;1772:
;1773:*/
;1774:
;1775:char * QDECL va( char *format, ... ) {
line 1787
;1776:
;1777: va_list argptr;
;1778:
;1779: static char string[2][32000]; // in case va is called by nested functions
;1780:
;1781: static int index = 0;
;1782:
;1783: char *buf;
;1784:
;1785:
;1786:
;1787: buf = string[index & 1];
ADDRLP4 4
CNSTI4 32000
ADDRGP4 $312
INDIRI4
CNSTI4 1
BANDI4
MULI4
ADDRGP4 $311
ADDP4
ASGNP4
line 1789
;1788:
;1789: index++;
ADDRLP4 8
ADDRGP4 $312
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1793
;1790:
;1791:
;1792:
;1793: va_start (argptr, format);
ADDRLP4 0
ADDRFP4 0+4
ASGNP4
line 1795
;1794:
;1795: vsprintf (buf, format,argptr);
ADDRLP4 4
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 vsprintf
CALLI4
pop
line 1797
;1796:
;1797: va_end (argptr);
ADDRLP4 0
CNSTP4 0
ASGNP4
line 1801
;1798:
;1799:
;1800:
;1801: return buf;
ADDRLP4 4
INDIRP4
RETP4
LABELV $310
endproc va 12 12
bss
align 1
LABELV $315
skip 16384
data
align 4
LABELV $316
byte 4 0
export Info_ValueForKey
code
proc Info_ValueForKey 8220 8
line 1843
;1802:
;1803:}
;1804:
;1805:
;1806:
;1807:
;1808:
;1809:/*
;1810:
;1811:=====================================================================
;1812:
;1813:
;1814:
;1815: INFO STRINGS
;1816:
;1817:
;1818:
;1819:=====================================================================
;1820:
;1821:*/
;1822:
;1823:
;1824:
;1825:/*
;1826:
;1827:===============
;1828:
;1829:Info_ValueForKey
;1830:
;1831:
;1832:
;1833:Searches the string for the given
;1834:
;1835:key and returns the associated value, or an empty string.
;1836:
;1837:FIXME: overflow check?
;1838:
;1839:===============
;1840:
;1841:*/
;1842:
;1843:char *Info_ValueForKey( const char *s, const char *key ) {
line 1857
;1844:
;1845: char pkey[BIG_INFO_KEY];
;1846:
;1847: static char value[2][BIG_INFO_VALUE]; // use two buffers so compares
;1848:
;1849: // work without stomping on each other
;1850:
;1851: static int valueindex = 0;
;1852:
;1853: char *o;
;1854:
;1855:
;1856:
;1857: if ( !s || !key ) {
ADDRLP4 8196
CNSTU4 0
ASGNU4
ADDRFP4 0
INDIRP4
CVPU4 4
ADDRLP4 8196
INDIRU4
EQU4 $319
ADDRFP4 4
INDIRP4
CVPU4 4
ADDRLP4 8196
INDIRU4
NEU4 $317
LABELV $319
line 1859
;1858:
;1859: return "";
ADDRGP4 $320
RETP4
ADDRGP4 $314
JUMPV
LABELV $317
line 1865
;1860:
;1861: }
;1862:
;1863:
;1864:
;1865: if ( strlen( s ) >= BIG_INFO_STRING ) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8200
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 8200
INDIRI4
CNSTI4 8192
LTI4 $321
line 1867
;1866:
;1867: Com_Error( ERR_DROP, "Info_ValueForKey: oversize infostring" );
CNSTI4 1
ARGI4
ADDRGP4 $323
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 1869
;1868:
;1869: }
LABELV $321
line 1873
;1870:
;1871:
;1872:
;1873: valueindex ^= 1;
ADDRLP4 8204
ADDRGP4 $316
ASGNP4
ADDRLP4 8204
INDIRP4
ADDRLP4 8204
INDIRP4
INDIRI4
CNSTI4 1
BXORI4
ASGNI4
line 1875
;1874:
;1875: if (*s == '\\')
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $327
line 1877
;1876:
;1877: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRGP4 $327
JUMPV
LABELV $326
line 1881
;1878:
;1879: while (1)
;1880:
;1881: {
line 1883
;1882:
;1883: o = pkey;
ADDRLP4 0
ADDRLP4 4
ASGNP4
ADDRGP4 $330
JUMPV
LABELV $329
line 1887
;1884:
;1885: while (*s != '\\')
;1886:
;1887: {
line 1889
;1888:
;1889: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $332
line 1891
;1890:
;1891: return "";
ADDRGP4 $320
RETP4
ADDRGP4 $314
JUMPV
LABELV $332
line 1893
;1892:
;1893: *o++ = *s++;
ADDRLP4 8208
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 8216
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 8208
INDIRP4
ADDRLP4 8216
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8212
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 8212
INDIRP4
ADDRLP4 8216
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8208
INDIRP4
ADDRLP4 8212
INDIRP4
INDIRI1
ASGNI1
line 1895
;1894:
;1895: }
LABELV $330
line 1885
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $329
line 1897
;1896:
;1897: *o = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 1899
;1898:
;1899: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1903
;1900:
;1901:
;1902:
;1903: o = value[valueindex];
ADDRLP4 0
ADDRGP4 $316
INDIRI4
CNSTI4 13
LSHI4
ADDRGP4 $315
ADDP4
ASGNP4
ADDRGP4 $335
JUMPV
LABELV $334
line 1909
;1904:
;1905:
;1906:
;1907: while (*s != '\\' && *s)
;1908:
;1909: {
line 1911
;1910:
;1911: *o++ = *s++;
ADDRLP4 8208
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 8216
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 8208
INDIRP4
ADDRLP4 8216
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8212
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 8212
INDIRP4
ADDRLP4 8216
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8208
INDIRP4
ADDRLP4 8212
INDIRP4
INDIRI1
ASGNI1
line 1913
;1912:
;1913: }
LABELV $335
line 1907
ADDRLP4 8208
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 8208
INDIRI4
CNSTI4 92
EQI4 $337
ADDRLP4 8208
INDIRI4
CNSTI4 0
NEI4 $334
LABELV $337
line 1915
;1914:
;1915: *o = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 1919
;1916:
;1917:
;1918:
;1919: if (!Q_stricmp (key, pkey) )
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 8212
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 8212
INDIRI4
CNSTI4 0
NEI4 $338
line 1921
;1920:
;1921: return value[valueindex];
ADDRGP4 $316
INDIRI4
CNSTI4 13
LSHI4
ADDRGP4 $315
ADDP4
RETP4
ADDRGP4 $314
JUMPV
LABELV $338
line 1925
;1922:
;1923:
;1924:
;1925: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $340
line 1927
;1926:
;1927: break;
ADDRGP4 $328
JUMPV
LABELV $340
line 1929
;1928:
;1929: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1931
;1930:
;1931: }
LABELV $327
line 1879
ADDRGP4 $326
JUMPV
LABELV $328
line 1935
;1932:
;1933:
;1934:
;1935: return "";
ADDRGP4 $320
RETP4
LABELV $314
endproc Info_ValueForKey 8220 8
export Info_NextPair
proc Info_NextPair 20 0
line 1957
;1936:
;1937:}
;1938:
;1939:
;1940:
;1941:
;1942:
;1943:/*
;1944:
;1945:===================
;1946:
;1947:Info_NextPair
;1948:
;1949:
;1950:
;1951:Used to itterate through all the key/value pairs in an info string
;1952:
;1953:===================
;1954:
;1955:*/
;1956:
;1957:void Info_NextPair( const char **head, char *key, char *value ) {
line 1965
;1958:
;1959: char *o;
;1960:
;1961: const char *s;
;1962:
;1963:
;1964:
;1965: s = *head;
ADDRLP4 0
ADDRFP4 0
INDIRP4
INDIRP4
ASGNP4
line 1969
;1966:
;1967:
;1968:
;1969: if ( *s == '\\' ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $343
line 1971
;1970:
;1971: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 1973
;1972:
;1973: }
LABELV $343
line 1975
;1974:
;1975: key[0] = 0;
ADDRFP4 4
INDIRP4
CNSTI1 0
ASGNI1
line 1977
;1976:
;1977: value[0] = 0;
ADDRFP4 8
INDIRP4
CNSTI1 0
ASGNI1
line 1981
;1978:
;1979:
;1980:
;1981: o = key;
ADDRLP4 4
ADDRFP4 4
INDIRP4
ASGNP4
ADDRGP4 $346
JUMPV
LABELV $345
line 1983
;1982:
;1983: while ( *s != '\\' ) {
line 1985
;1984:
;1985: if ( !*s ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $348
line 1987
;1986:
;1987: *o = 0;
ADDRLP4 4
INDIRP4
CNSTI1 0
ASGNI1
line 1989
;1988:
;1989: *head = s;
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
ASGNP4
line 1991
;1990:
;1991: return;
ADDRGP4 $342
JUMPV
LABELV $348
line 1995
;1992:
;1993: }
;1994:
;1995: *o++ = *s++;
ADDRLP4 8
ADDRLP4 4
INDIRP4
ASGNP4
ADDRLP4 16
CNSTI4 1
ASGNI4
ADDRLP4 4
ADDRLP4 8
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
ASGNP4
ADDRLP4 12
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 12
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 12
INDIRP4
INDIRI1
ASGNI1
line 1997
;1996:
;1997: }
LABELV $346
line 1983
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $345
line 1999
;1998:
;1999: *o = 0;
ADDRLP4 4
INDIRP4
CNSTI1 0
ASGNI1
line 2001
;2000:
;2001: s++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 2005
;2002:
;2003:
;2004:
;2005: o = value;
ADDRLP4 4
ADDRFP4 8
INDIRP4
ASGNP4
ADDRGP4 $351
JUMPV
LABELV $350
line 2007
;2006:
;2007: while ( *s != '\\' && *s ) {
line 2009
;2008:
;2009: *o++ = *s++;
ADDRLP4 8
ADDRLP4 4
INDIRP4
ASGNP4
ADDRLP4 16
CNSTI4 1
ASGNI4
ADDRLP4 4
ADDRLP4 8
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
ASGNP4
ADDRLP4 12
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 12
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 12
INDIRP4
INDIRI1
ASGNI1
line 2011
;2010:
;2011: }
LABELV $351
line 2007
ADDRLP4 8
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 92
EQI4 $353
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $350
LABELV $353
line 2013
;2012:
;2013: *o = 0;
ADDRLP4 4
INDIRP4
CNSTI1 0
ASGNI1
line 2017
;2014:
;2015:
;2016:
;2017: *head = s;
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
ASGNP4
line 2019
;2018:
;2019:}
LABELV $342
endproc Info_NextPair 20 0
export Info_RemoveKey
proc Info_RemoveKey 2076 8
line 2035
;2020:
;2021:
;2022:
;2023:
;2024:
;2025:/*
;2026:
;2027:===================
;2028:
;2029:Info_RemoveKey
;2030:
;2031:===================
;2032:
;2033:*/
;2034:
;2035:void Info_RemoveKey( char *s, const char *key ) {
line 2047
;2036:
;2037: char *start;
;2038:
;2039: char pkey[MAX_INFO_KEY];
;2040:
;2041: char value[MAX_INFO_VALUE];
;2042:
;2043: char *o;
;2044:
;2045:
;2046:
;2047: if ( strlen( s ) >= MAX_INFO_STRING ) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 2056
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 2056
INDIRI4
CNSTI4 1024
LTI4 $355
line 2049
;2048:
;2049: Com_Error( ERR_DROP, "Info_RemoveKey: oversize infostring" );
CNSTI4 1
ARGI4
ADDRGP4 $357
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 2051
;2050:
;2051: }
LABELV $355
line 2055
;2052:
;2053:
;2054:
;2055: if (strchr (key, '\\')) {
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 92
ARGI4
ADDRLP4 2060
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 2060
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $361
line 2057
;2056:
;2057: return;
ADDRGP4 $354
JUMPV
LABELV $360
line 2065
;2058:
;2059: }
;2060:
;2061:
;2062:
;2063: while (1)
;2064:
;2065: {
line 2067
;2066:
;2067: start = s;
ADDRLP4 1028
ADDRFP4 0
INDIRP4
ASGNP4
line 2069
;2068:
;2069: if (*s == '\\')
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $363
line 2071
;2070:
;2071: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
LABELV $363
line 2073
;2072:
;2073: o = pkey;
ADDRLP4 0
ADDRLP4 4
ASGNP4
ADDRGP4 $366
JUMPV
LABELV $365
line 2077
;2074:
;2075: while (*s != '\\')
;2076:
;2077: {
line 2079
;2078:
;2079: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $368
line 2081
;2080:
;2081: return;
ADDRGP4 $354
JUMPV
LABELV $368
line 2083
;2082:
;2083: *o++ = *s++;
ADDRLP4 2064
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 2072
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 2064
INDIRP4
ADDRLP4 2072
INDIRI4
ADDP4
ASGNP4
ADDRLP4 2068
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 2068
INDIRP4
ADDRLP4 2072
INDIRI4
ADDP4
ASGNP4
ADDRLP4 2064
INDIRP4
ADDRLP4 2068
INDIRP4
INDIRI1
ASGNI1
line 2085
;2084:
;2085: }
LABELV $366
line 2075
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $365
line 2087
;2086:
;2087: *o = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 2089
;2088:
;2089: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 2093
;2090:
;2091:
;2092:
;2093: o = value;
ADDRLP4 0
ADDRLP4 1032
ASGNP4
ADDRGP4 $371
JUMPV
LABELV $370
line 2097
;2094:
;2095: while (*s != '\\' && *s)
;2096:
;2097: {
line 2099
;2098:
;2099: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $373
line 2101
;2100:
;2101: return;
ADDRGP4 $354
JUMPV
LABELV $373
line 2103
;2102:
;2103: *o++ = *s++;
ADDRLP4 2064
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 2072
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 2064
INDIRP4
ADDRLP4 2072
INDIRI4
ADDP4
ASGNP4
ADDRLP4 2068
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 2068
INDIRP4
ADDRLP4 2072
INDIRI4
ADDP4
ASGNP4
ADDRLP4 2064
INDIRP4
ADDRLP4 2068
INDIRP4
INDIRI1
ASGNI1
line 2105
;2104:
;2105: }
LABELV $371
line 2095
ADDRLP4 2064
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 2064
INDIRI4
CNSTI4 92
EQI4 $375
ADDRLP4 2064
INDIRI4
CNSTI4 0
NEI4 $370
LABELV $375
line 2107
;2106:
;2107: *o = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 2111
;2108:
;2109:
;2110:
;2111: if (!strcmp (key, pkey) )
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 2068
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 2068
INDIRI4
CNSTI4 0
NEI4 $376
line 2113
;2112:
;2113: {
line 2115
;2114:
;2115: strcpy (start, s); // remove this part
ADDRLP4 1028
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 2117
;2116:
;2117: return;
ADDRGP4 $354
JUMPV
LABELV $376
line 2123
;2118:
;2119: }
;2120:
;2121:
;2122:
;2123: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $378
line 2125
;2124:
;2125: return;
ADDRGP4 $354
JUMPV
LABELV $378
line 2127
;2126:
;2127: }
LABELV $361
line 2063
ADDRGP4 $360
JUMPV
line 2131
;2128:
;2129:
;2130:
;2131:}
LABELV $354
endproc Info_RemoveKey 2076 8
export Info_RemoveKey_Big
proc Info_RemoveKey_Big 16412 8
line 2145
;2132:
;2133:
;2134:
;2135:/*
;2136:
;2137:===================
;2138:
;2139:Info_RemoveKey_Big
;2140:
;2141:===================
;2142:
;2143:*/
;2144:
;2145:void Info_RemoveKey_Big( char *s, const char *key ) {
line 2157
;2146:
;2147: char *start;
;2148:
;2149: char pkey[BIG_INFO_KEY];
;2150:
;2151: char value[BIG_INFO_VALUE];
;2152:
;2153: char *o;
;2154:
;2155:
;2156:
;2157: if ( strlen( s ) >= BIG_INFO_STRING ) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16392
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 16392
INDIRI4
CNSTI4 8192
LTI4 $381
line 2159
;2158:
;2159: Com_Error( ERR_DROP, "Info_RemoveKey_Big: oversize infostring" );
CNSTI4 1
ARGI4
ADDRGP4 $383
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 2161
;2160:
;2161: }
LABELV $381
line 2165
;2162:
;2163:
;2164:
;2165: if (strchr (key, '\\')) {
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 92
ARGI4
ADDRLP4 16396
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 16396
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $387
line 2167
;2166:
;2167: return;
ADDRGP4 $380
JUMPV
LABELV $386
line 2175
;2168:
;2169: }
;2170:
;2171:
;2172:
;2173: while (1)
;2174:
;2175: {
line 2177
;2176:
;2177: start = s;
ADDRLP4 8196
ADDRFP4 0
INDIRP4
ASGNP4
line 2179
;2178:
;2179: if (*s == '\\')
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $389
line 2181
;2180:
;2181: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
LABELV $389
line 2183
;2182:
;2183: o = pkey;
ADDRLP4 0
ADDRLP4 4
ASGNP4
ADDRGP4 $392
JUMPV
LABELV $391
line 2187
;2184:
;2185: while (*s != '\\')
;2186:
;2187: {
line 2189
;2188:
;2189: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $394
line 2191
;2190:
;2191: return;
ADDRGP4 $380
JUMPV
LABELV $394
line 2193
;2192:
;2193: *o++ = *s++;
ADDRLP4 16400
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 16408
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 16400
INDIRP4
ADDRLP4 16408
INDIRI4
ADDP4
ASGNP4
ADDRLP4 16404
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 16404
INDIRP4
ADDRLP4 16408
INDIRI4
ADDP4
ASGNP4
ADDRLP4 16400
INDIRP4
ADDRLP4 16404
INDIRP4
INDIRI1
ASGNI1
line 2195
;2194:
;2195: }
LABELV $392
line 2185
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 92
NEI4 $391
line 2197
;2196:
;2197: *o = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 2199
;2198:
;2199: s++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 2203
;2200:
;2201:
;2202:
;2203: o = value;
ADDRLP4 0
ADDRLP4 8200
ASGNP4
ADDRGP4 $397
JUMPV
LABELV $396
line 2207
;2204:
;2205: while (*s != '\\' && *s)
;2206:
;2207: {
line 2209
;2208:
;2209: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $399
line 2211
;2210:
;2211: return;
ADDRGP4 $380
JUMPV
LABELV $399
line 2213
;2212:
;2213: *o++ = *s++;
ADDRLP4 16400
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 16408
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 16400
INDIRP4
ADDRLP4 16408
INDIRI4
ADDP4
ASGNP4
ADDRLP4 16404
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 16404
INDIRP4
ADDRLP4 16408
INDIRI4
ADDP4
ASGNP4
ADDRLP4 16400
INDIRP4
ADDRLP4 16404
INDIRP4
INDIRI1
ASGNI1
line 2215
;2214:
;2215: }
LABELV $397
line 2205
ADDRLP4 16400
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 16400
INDIRI4
CNSTI4 92
EQI4 $401
ADDRLP4 16400
INDIRI4
CNSTI4 0
NEI4 $396
LABELV $401
line 2217
;2216:
;2217: *o = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 2221
;2218:
;2219:
;2220:
;2221: if (!strcmp (key, pkey) )
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 16404
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 16404
INDIRI4
CNSTI4 0
NEI4 $402
line 2223
;2222:
;2223: {
line 2225
;2224:
;2225: strcpy (start, s); // remove this part
ADDRLP4 8196
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 2227
;2226:
;2227: return;
ADDRGP4 $380
JUMPV
LABELV $402
line 2233
;2228:
;2229: }
;2230:
;2231:
;2232:
;2233: if (!*s)
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $404
line 2235
;2234:
;2235: return;
ADDRGP4 $380
JUMPV
LABELV $404
line 2237
;2236:
;2237: }
LABELV $387
line 2173
ADDRGP4 $386
JUMPV
line 2241
;2238:
;2239:
;2240:
;2241:}
LABELV $380
endproc Info_RemoveKey_Big 16412 8
export Info_Validate
proc Info_Validate 8 8
line 2267
;2242:
;2243:
;2244:
;2245:
;2246:
;2247:
;2248:
;2249:
;2250:
;2251:/*
;2252:
;2253:==================
;2254:
;2255:Info_Validate
;2256:
;2257:
;2258:
;2259:Some characters are illegal in info strings because they
;2260:
;2261:can mess up the server's parsing
;2262:
;2263:==================
;2264:
;2265:*/
;2266:
;2267:qboolean Info_Validate( const char *s ) {
line 2269
;2268:
;2269: if ( strchr( s, '\"' ) ) {
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 34
ARGI4
ADDRLP4 0
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $407
line 2271
;2270:
;2271: return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $406
JUMPV
LABELV $407
line 2275
;2272:
;2273: }
;2274:
;2275: if ( strchr( s, ';' ) ) {
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 59
ARGI4
ADDRLP4 4
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $409
line 2277
;2276:
;2277: return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $406
JUMPV
LABELV $409
line 2281
;2278:
;2279: }
;2280:
;2281: return qtrue;
CNSTI4 1
RETI4
LABELV $406
endproc Info_Validate 8 8
export Info_SetValueForKey
proc Info_SetValueForKey 1068 20
line 2301
;2282:
;2283:}
;2284:
;2285:
;2286:
;2287:/*
;2288:
;2289:==================
;2290:
;2291:Info_SetValueForKey
;2292:
;2293:
;2294:
;2295:Changes or adds a key/value pair
;2296:
;2297:==================
;2298:
;2299:*/
;2300:
;2301:void Info_SetValueForKey( char *s, const char *key, const char *value ) {
line 2307
;2302:
;2303: char newi[MAX_INFO_STRING];
;2304:
;2305:
;2306:
;2307: if ( strlen( s ) >= MAX_INFO_STRING ) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1024
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 1024
INDIRI4
CNSTI4 1024
LTI4 $412
line 2309
;2308:
;2309: Com_Error( ERR_DROP, "Info_SetValueForKey: oversize infostring" );
CNSTI4 1
ARGI4
ADDRGP4 $414
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 2311
;2310:
;2311: }
LABELV $412
line 2315
;2312:
;2313:
;2314:
;2315: if (strchr (key, '\\') || strchr (value, '\\'))
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 92
ARGI4
ADDRLP4 1028
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 1028
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $417
ADDRFP4 8
INDIRP4
ARGP4
CNSTI4 92
ARGI4
ADDRLP4 1032
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 1032
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $415
LABELV $417
line 2317
;2316:
;2317: {
line 2319
;2318:
;2319: Com_Printf ("Can't use keys or values with a \\\n");
ADDRGP4 $418
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2321
;2320:
;2321: return;
ADDRGP4 $411
JUMPV
LABELV $415
line 2327
;2322:
;2323: }
;2324:
;2325:
;2326:
;2327: if (strchr (key, ';') || strchr (value, ';'))
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 59
ARGI4
ADDRLP4 1036
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 1036
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $421
ADDRFP4 8
INDIRP4
ARGP4
CNSTI4 59
ARGI4
ADDRLP4 1040
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 1040
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $419
LABELV $421
line 2329
;2328:
;2329: {
line 2331
;2330:
;2331: Com_Printf ("Can't use keys or values with a semicolon\n");
ADDRGP4 $422
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2333
;2332:
;2333: return;
ADDRGP4 $411
JUMPV
LABELV $419
line 2339
;2334:
;2335: }
;2336:
;2337:
;2338:
;2339: if (strchr (key, '\"') || strchr (value, '\"'))
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 34
ARGI4
ADDRLP4 1044
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 1044
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $425
ADDRFP4 8
INDIRP4
ARGP4
CNSTI4 34
ARGI4
ADDRLP4 1048
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 1048
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $423
LABELV $425
line 2341
;2340:
;2341: {
line 2343
;2342:
;2343: Com_Printf ("Can't use keys or values with a \"\n");
ADDRGP4 $426
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2345
;2344:
;2345: return;
ADDRGP4 $411
JUMPV
LABELV $423
line 2351
;2346:
;2347: }
;2348:
;2349:
;2350:
;2351: Info_RemoveKey (s, key);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 Info_RemoveKey
CALLV
pop
line 2353
;2352:
;2353: if (!value || !strlen(value))
ADDRLP4 1052
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 1052
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $429
ADDRLP4 1052
INDIRP4
ARGP4
ADDRLP4 1056
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 1056
INDIRI4
CNSTI4 0
NEI4 $427
LABELV $429
line 2355
;2354:
;2355: return;
ADDRGP4 $411
JUMPV
LABELV $427
line 2359
;2356:
;2357:
;2358:
;2359: Com_sprintf (newi, sizeof(newi), "\\%s\\%s", key, value);
ADDRLP4 0
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $430
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 2363
;2360:
;2361:
;2362:
;2363: if (strlen(newi) + strlen(s) > MAX_INFO_STRING)
ADDRLP4 0
ARGP4
ADDRLP4 1060
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1064
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 1060
INDIRI4
ADDRLP4 1064
INDIRI4
ADDI4
CNSTI4 1024
LEI4 $431
line 2365
;2364:
;2365: {
line 2367
;2366:
;2367: Com_Printf ("Info string length exceeded\n");
ADDRGP4 $433
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2369
;2368:
;2369: return;
ADDRGP4 $411
JUMPV
LABELV $431
line 2375
;2370:
;2371: }
;2372:
;2373:
;2374:
;2375: strcat (newi, s);
ADDRLP4 0
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 strcat
CALLP4
pop
line 2377
;2376:
;2377: strcpy (s, newi);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 2379
;2378:
;2379:}
LABELV $411
endproc Info_SetValueForKey 1068 20
export Info_SetValueForKey_Big
proc Info_SetValueForKey_Big 8236 20
line 2397
;2380:
;2381:
;2382:
;2383:/*
;2384:
;2385:==================
;2386:
;2387:Info_SetValueForKey_Big
;2388:
;2389:
;2390:
;2391:Changes or adds a key/value pair
;2392:
;2393:==================
;2394:
;2395:*/
;2396:
;2397:void Info_SetValueForKey_Big( char *s, const char *key, const char *value ) {
line 2403
;2398:
;2399: char newi[BIG_INFO_STRING];
;2400:
;2401:
;2402:
;2403: if ( strlen( s ) >= BIG_INFO_STRING ) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8192
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 8192
INDIRI4
CNSTI4 8192
LTI4 $435
line 2405
;2404:
;2405: Com_Error( ERR_DROP, "Info_SetValueForKey: oversize infostring" );
CNSTI4 1
ARGI4
ADDRGP4 $414
ARGP4
ADDRGP4 Com_Error
CALLV
pop
line 2407
;2406:
;2407: }
LABELV $435
line 2411
;2408:
;2409:
;2410:
;2411: if (strchr (key, '\\') || strchr (value, '\\'))
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 92
ARGI4
ADDRLP4 8196
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 8196
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $439
ADDRFP4 8
INDIRP4
ARGP4
CNSTI4 92
ARGI4
ADDRLP4 8200
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 8200
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $437
LABELV $439
line 2413
;2412:
;2413: {
line 2415
;2414:
;2415: Com_Printf ("Can't use keys or values with a \\\n");
ADDRGP4 $418
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2417
;2416:
;2417: return;
ADDRGP4 $434
JUMPV
LABELV $437
line 2423
;2418:
;2419: }
;2420:
;2421:
;2422:
;2423: if (strchr (key, ';') || strchr (value, ';'))
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 59
ARGI4
ADDRLP4 8204
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 8204
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $442
ADDRFP4 8
INDIRP4
ARGP4
CNSTI4 59
ARGI4
ADDRLP4 8208
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 8208
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $440
LABELV $442
line 2425
;2424:
;2425: {
line 2427
;2426:
;2427: Com_Printf ("Can't use keys or values with a semicolon\n");
ADDRGP4 $422
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2429
;2428:
;2429: return;
ADDRGP4 $434
JUMPV
LABELV $440
line 2435
;2430:
;2431: }
;2432:
;2433:
;2434:
;2435: if (strchr (key, '\"') || strchr (value, '\"'))
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 34
ARGI4
ADDRLP4 8212
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 8212
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $445
ADDRFP4 8
INDIRP4
ARGP4
CNSTI4 34
ARGI4
ADDRLP4 8216
ADDRGP4 strchr
CALLP4
ASGNP4
ADDRLP4 8216
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $443
LABELV $445
line 2437
;2436:
;2437: {
line 2439
;2438:
;2439: Com_Printf ("Can't use keys or values with a \"\n");
ADDRGP4 $426
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2441
;2440:
;2441: return;
ADDRGP4 $434
JUMPV
LABELV $443
line 2447
;2442:
;2443: }
;2444:
;2445:
;2446:
;2447: Info_RemoveKey_Big (s, key);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 Info_RemoveKey_Big
CALLV
pop
line 2449
;2448:
;2449: if (!value || !strlen(value))
ADDRLP4 8220
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 8220
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $448
ADDRLP4 8220
INDIRP4
ARGP4
ADDRLP4 8224
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 8224
INDIRI4
CNSTI4 0
NEI4 $446
LABELV $448
line 2451
;2450:
;2451: return;
ADDRGP4 $434
JUMPV
LABELV $446
line 2455
;2452:
;2453:
;2454:
;2455: Com_sprintf (newi, sizeof(newi), "\\%s\\%s", key, value);
ADDRLP4 0
ARGP4
CNSTI4 8192
ARGI4
ADDRGP4 $430
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 2459
;2456:
;2457:
;2458:
;2459: if (strlen(newi) + strlen(s) > BIG_INFO_STRING)
ADDRLP4 0
ARGP4
ADDRLP4 8228
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8232
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 8228
INDIRI4
ADDRLP4 8232
INDIRI4
ADDI4
CNSTI4 8192
LEI4 $449
line 2461
;2460:
;2461: {
line 2463
;2462:
;2463: Com_Printf ("BIG Info string length exceeded\n");
ADDRGP4 $451
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 2465
;2464:
;2465: return;
ADDRGP4 $434
JUMPV
LABELV $449
line 2471
;2466:
;2467: }
;2468:
;2469:
;2470:
;2471: strcat (s, newi);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 strcat
CALLP4
pop
line 2473
;2472:
;2473:}
LABELV $434
endproc Info_SetValueForKey_Big 8236 20
bss
align 4
LABELV com_lines
skip 4
align 1
LABELV com_parsename
skip 1024
align 1
LABELV com_token
skip 1024
import Com_Printf
import Com_Error
import Info_RemoveKey_big
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 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 $451
byte 1 66
byte 1 73
byte 1 71
byte 1 32
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 32
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 110
byte 1 103
byte 1 32
byte 1 108
byte 1 101
byte 1 110
byte 1 103
byte 1 116
byte 1 104
byte 1 32
byte 1 101
byte 1 120
byte 1 99
byte 1 101
byte 1 101
byte 1 100
byte 1 101
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $433
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 32
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 110
byte 1 103
byte 1 32
byte 1 108
byte 1 101
byte 1 110
byte 1 103
byte 1 116
byte 1 104
byte 1 32
byte 1 101
byte 1 120
byte 1 99
byte 1 101
byte 1 101
byte 1 100
byte 1 101
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $430
byte 1 92
byte 1 37
byte 1 115
byte 1 92
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $426
byte 1 67
byte 1 97
byte 1 110
byte 1 39
byte 1 116
byte 1 32
byte 1 117
byte 1 115
byte 1 101
byte 1 32
byte 1 107
byte 1 101
byte 1 121
byte 1 115
byte 1 32
byte 1 111
byte 1 114
byte 1 32
byte 1 118
byte 1 97
byte 1 108
byte 1 117
byte 1 101
byte 1 115
byte 1 32
byte 1 119
byte 1 105
byte 1 116
byte 1 104
byte 1 32
byte 1 97
byte 1 32
byte 1 34
byte 1 10
byte 1 0
align 1
LABELV $422
byte 1 67
byte 1 97
byte 1 110
byte 1 39
byte 1 116
byte 1 32
byte 1 117
byte 1 115
byte 1 101
byte 1 32
byte 1 107
byte 1 101
byte 1 121
byte 1 115
byte 1 32
byte 1 111
byte 1 114
byte 1 32
byte 1 118
byte 1 97
byte 1 108
byte 1 117
byte 1 101
byte 1 115
byte 1 32
byte 1 119
byte 1 105
byte 1 116
byte 1 104
byte 1 32
byte 1 97
byte 1 32
byte 1 115
byte 1 101
byte 1 109
byte 1 105
byte 1 99
byte 1 111
byte 1 108
byte 1 111
byte 1 110
byte 1 10
byte 1 0
align 1
LABELV $418
byte 1 67
byte 1 97
byte 1 110
byte 1 39
byte 1 116
byte 1 32
byte 1 117
byte 1 115
byte 1 101
byte 1 32
byte 1 107
byte 1 101
byte 1 121
byte 1 115
byte 1 32
byte 1 111
byte 1 114
byte 1 32
byte 1 118
byte 1 97
byte 1 108
byte 1 117
byte 1 101
byte 1 115
byte 1 32
byte 1 119
byte 1 105
byte 1 116
byte 1 104
byte 1 32
byte 1 97
byte 1 32
byte 1 92
byte 1 10
byte 1 0
align 1
LABELV $414
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 95
byte 1 83
byte 1 101
byte 1 116
byte 1 86
byte 1 97
byte 1 108
byte 1 117
byte 1 101
byte 1 70
byte 1 111
byte 1 114
byte 1 75
byte 1 101
byte 1 121
byte 1 58
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 115
byte 1 105
byte 1 122
byte 1 101
byte 1 32
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 110
byte 1 103
byte 1 0
align 1
LABELV $383
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 95
byte 1 82
byte 1 101
byte 1 109
byte 1 111
byte 1 118
byte 1 101
byte 1 75
byte 1 101
byte 1 121
byte 1 95
byte 1 66
byte 1 105
byte 1 103
byte 1 58
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 115
byte 1 105
byte 1 122
byte 1 101
byte 1 32
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 110
byte 1 103
byte 1 0
align 1
LABELV $357
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 95
byte 1 82
byte 1 101
byte 1 109
byte 1 111
byte 1 118
byte 1 101
byte 1 75
byte 1 101
byte 1 121
byte 1 58
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 115
byte 1 105
byte 1 122
byte 1 101
byte 1 32
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 110
byte 1 103
byte 1 0
align 1
LABELV $323
byte 1 73
byte 1 110
byte 1 102
byte 1 111
byte 1 95
byte 1 86
byte 1 97
byte 1 108
byte 1 117
byte 1 101
byte 1 70
byte 1 111
byte 1 114
byte 1 75
byte 1 101
byte 1 121
byte 1 58
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 115
byte 1 105
byte 1 122
byte 1 101
byte 1 32
byte 1 105
byte 1 110
byte 1 102
byte 1 111
byte 1 115
byte 1 116
byte 1 114
byte 1 105
byte 1 110
byte 1 103
byte 1 0
align 1
LABELV $320
byte 1 0
align 1
LABELV $309
byte 1 67
byte 1 111
byte 1 109
byte 1 95
byte 1 115
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 102
byte 1 58
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 102
byte 1 108
byte 1 111
byte 1 119
byte 1 32
byte 1 111
byte 1 102
byte 1 32
byte 1 37
byte 1 105
byte 1 32
byte 1 105
byte 1 110
byte 1 32
byte 1 37
byte 1 105
byte 1 10
byte 1 0
align 1
LABELV $306
byte 1 67
byte 1 111
byte 1 109
byte 1 95
byte 1 115
byte 1 112
byte 1 114
byte 1 105
byte 1 110
byte 1 116
byte 1 102
byte 1 58
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 102
byte 1 108
byte 1 111
byte 1 119
byte 1 101
byte 1 100
byte 1 32
byte 1 98
byte 1 105
byte 1 103
byte 1 98
byte 1 117
byte 1 102
byte 1 102
byte 1 101
byte 1 114
byte 1 0
align 1
LABELV $285
byte 1 81
byte 1 95
byte 1 115
byte 1 116
byte 1 114
byte 1 99
byte 1 97
byte 1 116
byte 1 58
byte 1 32
byte 1 97
byte 1 108
byte 1 114
byte 1 101
byte 1 97
byte 1 100
byte 1 121
byte 1 32
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 102
byte 1 108
byte 1 111
byte 1 119
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $235
byte 1 81
byte 1 95
byte 1 115
byte 1 116
byte 1 114
byte 1 110
byte 1 99
byte 1 112
byte 1 121
byte 1 122
byte 1 58
byte 1 32
byte 1 100
byte 1 101
byte 1 115
byte 1 116
byte 1 115
byte 1 105
byte 1 122
byte 1 101
byte 1 32
byte 1 60
byte 1 32
byte 1 49
byte 1 0
align 1
LABELV $232
byte 1 81
byte 1 95
byte 1 115
byte 1 116
byte 1 114
byte 1 110
byte 1 99
byte 1 112
byte 1 121
byte 1 122
byte 1 58
byte 1 32
byte 1 78
byte 1 85
byte 1 76
byte 1 76
byte 1 32
byte 1 115
byte 1 114
byte 1 99
byte 1 0
align 1
LABELV $229
byte 1 81
byte 1 95
byte 1 115
byte 1 116
byte 1 114
byte 1 110
byte 1 99
byte 1 112
byte 1 121
byte 1 122
byte 1 58
byte 1 32
byte 1 78
byte 1 85
byte 1 76
byte 1 76
byte 1 32
byte 1 100
byte 1 101
byte 1 115
byte 1 116
byte 1 0
align 1
LABELV $193
byte 1 41
byte 1 0
align 1
LABELV $188
byte 1 40
byte 1 0
align 1
LABELV $169
byte 1 77
byte 1 97
byte 1 116
byte 1 99
byte 1 104
byte 1 84
byte 1 111
byte 1 107
byte 1 101
byte 1 110
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 33
byte 1 61
byte 1 32
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $75
byte 1 87
byte 1 65
byte 1 82
byte 1 78
byte 1 73
byte 1 78
byte 1 71
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 44
byte 1 32
byte 1 108
byte 1 105
byte 1 110
byte 1 101
byte 1 32
byte 1 37
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $71
byte 1 69
byte 1 82
byte 1 82
byte 1 79
byte 1 82
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 44
byte 1 32
byte 1 108
byte 1 105
byte 1 110
byte 1 101
byte 1 32
byte 1 37
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $65
byte 1 37
byte 1 115
byte 1 0
align 1
LABELV $45
byte 1 37
byte 1 115
byte 1 37
byte 1 115
byte 1 0