jedioutcast/CODE-mp/game/vm/ai_wpnav.asm
2013-04-04 15:49:50 -05:00

20600 lines
265 KiB
NASM

data
export gWPRenderTime
align 4
LABELV gWPRenderTime
byte 4 0
export gDeactivated
align 4
LABELV gDeactivated
byte 4 0
export gBotEdit
align 4
LABELV gBotEdit
byte 4 0
export gWPRenderedFrame
align 4
LABELV gWPRenderedFrame
byte 4 0
export gWPNum
align 4
LABELV gWPNum
byte 4 0
export gLastPrintedIndex
align 4
LABELV gLastPrintedIndex
byte 4 -1
export gLevelFlags
align 4
LABELV gLevelFlags
byte 4 0
export GetFlagStr
code
proc GetFlagStr 12 8
file "../ai_wpnav.c"
line 20
;1:#include "g_local.h"
;2:#include "q_shared.h"
;3:#include "botlib.h"
;4:#include "ai_main.h"
;5:
;6:float gWPRenderTime = 0;
;7:float gDeactivated = 0;
;8:float gBotEdit = 0;
;9:int gWPRenderedFrame = 0;
;10:wpobject_t *gWPArray[MAX_WPARRAY_SIZE];
;11:int gWPNum = 0;
;12:int gLastPrintedIndex = -1;
;13:
;14:nodeobject_t nodetable[MAX_NODETABLE_SIZE];
;15:int nodenum; //so we can connect broken trails
;16:
;17:int gLevelFlags = 0;
;18:
;19:char *GetFlagStr( int flags )
;20:{
line 24
;21: char *flagstr;
;22: int i;
;23:
;24: flagstr = (char *)B_TempAlloc(128);
CNSTI4 128
ARGI4
ADDRLP4 8
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 8
INDIRP4
ASGNP4
line 25
;25: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 27
;26:
;27: if (!flags)
ADDRFP4 0
INDIRI4
CNSTI4 0
NEI4 $82
line 28
;28: {
line 29
;29: strcpy(flagstr, "none\0");
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 $84
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 30
;30: goto fend;
ADDRGP4 $85
JUMPV
LABELV $82
line 33
;31: }
;32:
;33: if (flags & WPFLAG_JUMP)
ADDRFP4 0
INDIRI4
CNSTI4 16
BANDI4
CNSTI4 0
EQI4 $86
line 34
;34: {
line 35
;35: flagstr[i] = 'j';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 106
ASGNI1
line 36
;36: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 37
;37: }
LABELV $86
line 39
;38:
;39: if (flags & WPFLAG_DUCK)
ADDRFP4 0
INDIRI4
CNSTI4 32
BANDI4
CNSTI4 0
EQI4 $88
line 40
;40: {
line 41
;41: flagstr[i] = 'd';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 100
ASGNI1
line 42
;42: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 43
;43: }
LABELV $88
line 45
;44:
;45: if (flags & WPFLAG_SNIPEORCAMPSTAND)
ADDRFP4 0
INDIRI4
CNSTI4 2048
BANDI4
CNSTI4 0
EQI4 $90
line 46
;46: {
line 47
;47: flagstr[i] = 'c';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 99
ASGNI1
line 48
;48: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 49
;49: }
LABELV $90
line 51
;50:
;51: if (flags & WPFLAG_WAITFORFUNC)
ADDRFP4 0
INDIRI4
CNSTI4 4096
BANDI4
CNSTI4 0
EQI4 $92
line 52
;52: {
line 53
;53: flagstr[i] = 'f';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 102
ASGNI1
line 54
;54: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 55
;55: }
LABELV $92
line 57
;56:
;57: if (flags & WPFLAG_SNIPEORCAMP)
ADDRFP4 0
INDIRI4
CNSTI4 8192
BANDI4
CNSTI4 0
EQI4 $94
line 58
;58: {
line 59
;59: flagstr[i] = 's';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 115
ASGNI1
line 60
;60: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 61
;61: }
LABELV $94
line 63
;62:
;63: if (flags & WPFLAG_ONEWAY_FWD)
ADDRFP4 0
INDIRI4
CNSTI4 16384
BANDI4
CNSTI4 0
EQI4 $96
line 64
;64: {
line 65
;65: flagstr[i] = 'x';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 120
ASGNI1
line 66
;66: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 67
;67: }
LABELV $96
line 69
;68:
;69: if (flags & WPFLAG_ONEWAY_BACK)
ADDRFP4 0
INDIRI4
CNSTI4 32768
BANDI4
CNSTI4 0
EQI4 $98
line 70
;70: {
line 71
;71: flagstr[i] = 'y';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 121
ASGNI1
line 72
;72: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 73
;73: }
LABELV $98
line 75
;74:
;75: if (flags & WPFLAG_GOALPOINT)
ADDRFP4 0
INDIRI4
CNSTI4 65536
BANDI4
CNSTI4 0
EQI4 $100
line 76
;76: {
line 77
;77: flagstr[i] = 'g';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 103
ASGNI1
line 78
;78: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 79
;79: }
LABELV $100
line 81
;80:
;81: if (flags & WPFLAG_NOVIS)
ADDRFP4 0
INDIRI4
CNSTI4 1024
BANDI4
CNSTI4 0
EQI4 $102
line 82
;82: {
line 83
;83: flagstr[i] = 'n';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 110
ASGNI1
line 84
;84: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 85
;85: }
LABELV $102
line 87
;86:
;87: if (flags & WPFLAG_NOMOVEFUNC)
ADDRFP4 0
INDIRI4
CNSTI4 2097152
BANDI4
CNSTI4 0
EQI4 $104
line 88
;88: {
line 89
;89: flagstr[i] = 'm';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 109
ASGNI1
line 90
;90: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 91
;91: }
LABELV $104
line 93
;92:
;93: if (flags & WPFLAG_RED_FLAG)
ADDRFP4 0
INDIRI4
CNSTI4 131072
BANDI4
CNSTI4 0
EQI4 $106
line 94
;94: {
line 95
;95: if (i)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $108
line 96
;96: {
line 97
;97: flagstr[i] = ' ';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 32
ASGNI1
line 98
;98: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 99
;99: }
LABELV $108
line 100
;100: flagstr[i] = 'r';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 114
ASGNI1
line 101
;101: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 102
;102: flagstr[i] = 'e';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 101
ASGNI1
line 103
;103: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 104
;104: flagstr[i] = 'd';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 100
ASGNI1
line 105
;105: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 106
;106: flagstr[i] = ' ';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 32
ASGNI1
line 107
;107: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 108
;108: flagstr[i] = 'f';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 102
ASGNI1
line 109
;109: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 110
;110: flagstr[i] = 'l';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 108
ASGNI1
line 111
;111: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 112
;112: flagstr[i] = 'a';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 97
ASGNI1
line 113
;113: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 114
;114: flagstr[i] = 'g';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 103
ASGNI1
line 115
;115: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 116
;116: }
LABELV $106
line 118
;117:
;118: if (flags & WPFLAG_BLUE_FLAG)
ADDRFP4 0
INDIRI4
CNSTI4 262144
BANDI4
CNSTI4 0
EQI4 $110
line 119
;119: {
line 120
;120: if (i)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $112
line 121
;121: {
line 122
;122: flagstr[i] = ' ';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 32
ASGNI1
line 123
;123: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 124
;124: }
LABELV $112
line 125
;125: flagstr[i] = 'b';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 98
ASGNI1
line 126
;126: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 127
;127: flagstr[i] = 'l';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 108
ASGNI1
line 128
;128: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 129
;129: flagstr[i] = 'u';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 117
ASGNI1
line 130
;130: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 131
;131: flagstr[i] = 'e';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 101
ASGNI1
line 132
;132: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 133
;133: flagstr[i] = ' ';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 32
ASGNI1
line 134
;134: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 135
;135: flagstr[i] = 'f';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 102
ASGNI1
line 136
;136: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 137
;137: flagstr[i] = 'l';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 108
ASGNI1
line 138
;138: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 139
;139: flagstr[i] = 'a';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 97
ASGNI1
line 140
;140: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 141
;141: flagstr[i] = 'g';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 103
ASGNI1
line 142
;142: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 143
;143: }
LABELV $110
line 145
;144:
;145: if (flags & WPFLAG_SAGA_IMPERIALOBJ)
ADDRFP4 0
INDIRI4
CNSTI4 1048576
BANDI4
CNSTI4 0
EQI4 $114
line 146
;146: {
line 147
;147: if (i)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $116
line 148
;148: {
line 149
;149: flagstr[i] = ' ';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 32
ASGNI1
line 150
;150: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 151
;151: }
LABELV $116
line 152
;152: flagstr[i] = 's';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 115
ASGNI1
line 153
;153: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 154
;154: flagstr[i] = 'a';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 97
ASGNI1
line 155
;155: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 156
;156: flagstr[i] = 'g';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 103
ASGNI1
line 157
;157: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 158
;158: flagstr[i] = 'a';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 97
ASGNI1
line 159
;159: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 160
;160: flagstr[i] = '_';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 95
ASGNI1
line 161
;161: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 162
;162: flagstr[i] = 'i';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 105
ASGNI1
line 163
;163: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 164
;164: flagstr[i] = 'm';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 109
ASGNI1
line 165
;165: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 166
;166: flagstr[i] = 'p';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 112
ASGNI1
line 167
;167: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 168
;168: }
LABELV $114
line 170
;169:
;170: if (flags & WPFLAG_SAGA_REBELOBJ)
ADDRFP4 0
INDIRI4
CNSTI4 524288
BANDI4
CNSTI4 0
EQI4 $118
line 171
;171: {
line 172
;172: if (i)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $120
line 173
;173: {
line 174
;174: flagstr[i] = ' ';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 32
ASGNI1
line 175
;175: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 176
;176: }
LABELV $120
line 177
;177: flagstr[i] = 's';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 115
ASGNI1
line 178
;178: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 179
;179: flagstr[i] = 'a';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 97
ASGNI1
line 180
;180: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 181
;181: flagstr[i] = 'g';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 103
ASGNI1
line 182
;182: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 183
;183: flagstr[i] = 'a';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 97
ASGNI1
line 184
;184: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 185
;185: flagstr[i] = '_';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 95
ASGNI1
line 186
;186: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 187
;187: flagstr[i] = 'r';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 114
ASGNI1
line 188
;188: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 189
;189: flagstr[i] = 'e';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 101
ASGNI1
line 190
;190: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 191
;191: flagstr[i] = 'b';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 98
ASGNI1
line 192
;192: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 193
;193: }
LABELV $118
line 195
;194:
;195: flagstr[i] = '\0';
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 197
;196:
;197: if (i == 0)
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $122
line 198
;198: {
line 199
;199: strcpy(flagstr, "unknown\0");
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 $124
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 200
;200: }
LABELV $122
LABELV $85
line 203
;201:
;202:fend:
;203: return flagstr;
ADDRLP4 4
INDIRP4
RETP4
LABELV $81
endproc GetFlagStr 12 8
export G_TestLine
proc G_TestLine 12 8
line 207
;204:}
;205:
;206:void G_TestLine(vec3_t start, vec3_t end, int color, int time)
;207:{
line 210
;208: gentity_t *te;
;209:
;210: te = G_TempEntity( start, EV_TESTLINE );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 99
ARGI4
ADDRLP4 4
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 211
;211: VectorCopy(start, te->s.origin);
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 212
;212: VectorCopy(end, te->s.origin2);
ADDRLP4 0
INDIRP4
CNSTI4 104
ADDP4
ADDRFP4 4
INDIRP4
INDIRB
ASGNB 12
line 213
;213: te->s.time2 = time;
ADDRLP4 0
INDIRP4
CNSTI4 88
ADDP4
ADDRFP4 12
INDIRI4
ASGNI4
line 214
;214: te->s.weapon = color;
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
ADDRFP4 8
INDIRI4
ASGNI4
line 215
;215: te->r.svFlags |= SVF_BROADCAST;
ADDRLP4 8
ADDRLP4 0
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 216
;216:}
LABELV $125
endproc G_TestLine 12 8
export BotWaypointRender
proc BotWaypointRender 88 32
line 219
;217:
;218:void BotWaypointRender(void)
;219:{
line 231
;220: int i, n;
;221: int inc_checker;
;222: int bestindex;
;223: int gotbestindex;
;224: float bestdist;
;225: float checkdist;
;226: gentity_t *plum;
;227: gentity_t *viewent;
;228: char *flagstr;
;229: vec3_t a;
;230:
;231: if (!gBotEdit)
ADDRGP4 gBotEdit
INDIRF4
CNSTF4 0
NEF4 $127
line 232
;232: {
line 233
;233: return;
ADDRGP4 $126
JUMPV
LABELV $127
line 236
;234: }
;235:
;236: bestindex = 0;
ADDRLP4 36
CNSTI4 0
ASGNI4
line 238
;237:
;238: if (gWPRenderTime > level.time)
ADDRGP4 gWPRenderTime
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LEF4 $129
line 239
;239: {
line 240
;240: goto checkprint;
ADDRGP4 $132
JUMPV
LABELV $129
line 243
;241: }
;242:
;243: gWPRenderTime = level.time + 100;
ADDRGP4 gWPRenderTime
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
CVIF4 4
ASGNF4
line 245
;244:
;245: i = gWPRenderedFrame;
ADDRLP4 0
ADDRGP4 gWPRenderedFrame
INDIRI4
ASGNI4
line 246
;246: inc_checker = gWPRenderedFrame;
ADDRLP4 32
ADDRGP4 gWPRenderedFrame
INDIRI4
ASGNI4
ADDRGP4 $135
JUMPV
LABELV $134
line 249
;247:
;248: while (i < gWPNum)
;249: {
line 250
;250: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 52
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $137
ADDRLP4 52
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $137
line 251
;251: {
line 252
;252: plum = G_TempEntity( gWPArray[i]->origin, EV_SCOREPLUM );
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
CNSTI4 86
ARGI4
ADDRLP4 56
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 24
ADDRLP4 56
INDIRP4
ASGNP4
line 253
;253: plum->r.svFlags |= SVF_BROADCAST;
ADDRLP4 60
ADDRLP4 24
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 60
INDIRP4
ADDRLP4 60
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 254
;254: plum->s.time = i;
ADDRLP4 24
INDIRP4
CNSTI4 84
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 256
;255:
;256: n = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $140
JUMPV
LABELV $139
line 259
;257:
;258: while (n < gWPArray[i]->neighbornum)
;259: {
line 260
;260: if (gWPArray[i]->neighbors[n].forceJumpTo && gWPArray[gWPArray[i]->neighbors[n].num])
ADDRLP4 64
CNSTI4 2
ASGNI4
ADDRLP4 68
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 72
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
ADDRLP4 64
INDIRI4
LSHI4
ADDRLP4 68
INDIRP4
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
ASGNP4
ADDRLP4 72
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $142
ADDRLP4 72
INDIRP4
INDIRI4
ADDRLP4 64
INDIRI4
LSHI4
ADDRLP4 68
INDIRP4
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $142
line 261
;261: {
line 262
;262: G_TestLine(gWPArray[i]->origin, gWPArray[gWPArray[i]->neighbors[n].num]->origin, 0x0000ff, 5000);
ADDRLP4 76
CNSTI4 2
ASGNI4
ADDRLP4 80
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 84
ADDRLP4 0
INDIRI4
ADDRLP4 76
INDIRI4
LSHI4
ADDRLP4 80
INDIRP4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 84
INDIRP4
CNSTI4 44
ADDP4
ADDP4
INDIRI4
ADDRLP4 76
INDIRI4
LSHI4
ADDRLP4 80
INDIRP4
ADDP4
INDIRP4
ARGP4
CNSTI4 255
ARGI4
CNSTI4 5000
ARGI4
ADDRGP4 G_TestLine
CALLV
pop
line 263
;263: }
LABELV $142
line 264
;264: n++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 265
;265: }
LABELV $140
line 258
ADDRLP4 4
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
LTI4 $139
line 267
;266:
;267: gWPRenderedFrame++;
ADDRLP4 64
ADDRGP4 gWPRenderedFrame
ASGNP4
ADDRLP4 64
INDIRP4
ADDRLP4 64
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 268
;268: }
ADDRGP4 $138
JUMPV
LABELV $137
line 270
;269: else
;270: {
line 271
;271: gWPRenderedFrame = 0;
ADDRGP4 gWPRenderedFrame
CNSTI4 0
ASGNI4
line 272
;272: break;
ADDRGP4 $136
JUMPV
LABELV $138
line 275
;273: }
;274:
;275: if ((i - inc_checker) > 4)
ADDRLP4 0
INDIRI4
ADDRLP4 32
INDIRI4
SUBI4
CNSTI4 4
LEI4 $144
line 276
;276: {
line 277
;277: break; //don't render too many at once
ADDRGP4 $136
JUMPV
LABELV $144
line 279
;278: }
;279: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 280
;280: }
LABELV $135
line 248
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $134
LABELV $136
line 282
;281:
;282: if (i >= gWPNum)
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $146
line 283
;283: {
line 284
;284: gWPRenderTime = level.time + 1500; //wait a bit after we finish doing the whole trail
ADDRGP4 gWPRenderTime
ADDRGP4 level+32
INDIRI4
CNSTI4 1500
ADDI4
CVIF4 4
ASGNF4
line 285
;285: gWPRenderedFrame = 0;
ADDRGP4 gWPRenderedFrame
CNSTI4 0
ASGNI4
line 286
;286: }
LABELV $146
LABELV $132
line 290
;287:
;288:checkprint:
;289:
;290: if (!bot_wp_info.value)
ADDRGP4 bot_wp_info+8
INDIRF4
CNSTF4 0
NEF4 $149
line 291
;291: {
line 292
;292: return;
ADDRGP4 $126
JUMPV
LABELV $149
line 295
;293: }
;294:
;295: viewent = &g_entities[0]; //only show info to the first client
ADDRLP4 20
ADDRGP4 g_entities
ASGNP4
line 297
;296:
;297: if (!viewent || !viewent->client)
ADDRLP4 56
CNSTU4 0
ASGNU4
ADDRLP4 20
INDIRP4
CVPU4 4
ADDRLP4 56
INDIRU4
EQU4 $154
ADDRLP4 20
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 56
INDIRU4
NEU4 $152
LABELV $154
line 298
;298: { //client isn't in the game yet?
line 299
;299: return;
ADDRGP4 $126
JUMPV
LABELV $152
line 302
;300: }
;301:
;302: bestdist = 256; //max distance for showing point info
ADDRLP4 40
CNSTF4 1132462080
ASGNF4
line 303
;303: gotbestindex = 0;
ADDRLP4 44
CNSTI4 0
ASGNI4
line 305
;304:
;305: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $156
JUMPV
LABELV $155
line 308
;306:
;307: while (i < gWPNum)
;308: {
line 309
;309: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 60
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $158
ADDRLP4 60
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $158
line 310
;310: {
line 311
;311: VectorSubtract(viewent->client->ps.origin, gWPArray[i]->origin, a);
ADDRLP4 64
ADDRLP4 20
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 68
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 8
ADDRLP4 64
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 68
INDIRP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 64
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 68
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+8
ADDRLP4 20
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 313
;312:
;313: checkdist = VectorLength(a);
ADDRLP4 8
ARGP4
ADDRLP4 72
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 28
ADDRLP4 72
INDIRF4
ASGNF4
line 315
;314:
;315: if (checkdist < bestdist)
ADDRLP4 28
INDIRF4
ADDRLP4 40
INDIRF4
GEF4 $162
line 316
;316: {
line 317
;317: bestdist = checkdist;
ADDRLP4 40
ADDRLP4 28
INDIRF4
ASGNF4
line 318
;318: bestindex = i;
ADDRLP4 36
ADDRLP4 0
INDIRI4
ASGNI4
line 319
;319: gotbestindex = 1;
ADDRLP4 44
CNSTI4 1
ASGNI4
line 320
;320: }
LABELV $162
line 321
;321: }
LABELV $158
line 322
;322: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 323
;323: }
LABELV $156
line 307
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $155
line 325
;324:
;325: if (gotbestindex && bestindex != gLastPrintedIndex)
ADDRLP4 44
INDIRI4
CNSTI4 0
EQI4 $164
ADDRLP4 36
INDIRI4
ADDRGP4 gLastPrintedIndex
INDIRI4
EQI4 $164
line 326
;326: {
line 327
;327: flagstr = GetFlagStr(gWPArray[bestindex]->flags);
ADDRLP4 36
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
ARGI4
ADDRLP4 60
ADDRGP4 GetFlagStr
CALLP4
ASGNP4
ADDRLP4 48
ADDRLP4 60
INDIRP4
ASGNP4
line 328
;328: gLastPrintedIndex = bestindex;
ADDRGP4 gLastPrintedIndex
ADDRLP4 36
INDIRI4
ASGNI4
line 329
;329: G_Printf(S_COLOR_YELLOW "Waypoint %i\nFlags - %i (%s) (w%f)\nOrigin - (%i %i %i)\n", (int)(gWPArray[bestindex]->index), (int)(gWPArray[bestindex]->flags), flagstr, gWPArray[bestindex]->weight, (int)(gWPArray[bestindex]->origin[0]), (int)(gWPArray[bestindex]->origin[1]), (int)(gWPArray[bestindex]->origin[2]));
ADDRGP4 $166
ARGP4
ADDRLP4 64
ADDRLP4 36
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 64
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ARGI4
ADDRLP4 64
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
ARGI4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 64
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ARGF4
ADDRLP4 64
INDIRP4
INDIRF4
CVFI4 4
ARGI4
ADDRLP4 64
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
CVFI4 4
ARGI4
ADDRLP4 64
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
CVFI4 4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 331
;330: //GetFlagStr allocates 128 bytes for this, if it's changed then obviously this must be as well
;331: B_TempFree(128); //flagstr
CNSTI4 128
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 333
;332:
;333: plum = G_TempEntity( gWPArray[bestindex]->origin, EV_SCOREPLUM );
ADDRLP4 36
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
CNSTI4 86
ARGI4
ADDRLP4 68
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 24
ADDRLP4 68
INDIRP4
ASGNP4
line 334
;334: plum->r.svFlags |= SVF_BROADCAST;
ADDRLP4 72
ADDRLP4 24
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 72
INDIRP4
ADDRLP4 72
INDIRP4
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 335
;335: plum->s.time = bestindex; //render it once
ADDRLP4 24
INDIRP4
CNSTI4 84
ADDP4
ADDRLP4 36
INDIRI4
ASGNI4
line 336
;336: }
ADDRGP4 $165
JUMPV
LABELV $164
line 337
;337: else if (!gotbestindex)
ADDRLP4 44
INDIRI4
CNSTI4 0
NEI4 $167
line 338
;338: {
line 339
;339: gLastPrintedIndex = -1;
ADDRGP4 gLastPrintedIndex
CNSTI4 -1
ASGNI4
line 340
;340: }
LABELV $167
LABELV $165
line 341
;341:}
LABELV $126
endproc BotWaypointRender 88 32
export TransferWPData
proc TransferWPData 84 4
line 344
;342:
;343:void TransferWPData(int from, int to)
;344:{
line 345
;345: if (!gWPArray[to])
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $170
line 346
;346: {
line 347
;347: gWPArray[to] = (wpobject_t *)B_Alloc(sizeof(wpobject_t));
CNSTI4 300
ARGI4
ADDRLP4 0
ADDRGP4 B_Alloc
CALLP4
ASGNP4
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
line 348
;348: }
LABELV $170
line 350
;349:
;350: if (!gWPArray[to])
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $172
line 351
;351: {
line 352
;352: G_Printf(S_COLOR_RED "FATAL ERROR: Could not allocated memory for waypoint\n");
ADDRGP4 $174
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 353
;353: }
LABELV $172
line 355
;354:
;355: gWPArray[to]->flags = gWPArray[from]->flags;
ADDRLP4 0
CNSTI4 2
ASGNI4
ADDRLP4 4
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 8
CNSTI4 28
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
ADDRFP4 0
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 356
;356: gWPArray[to]->weight = gWPArray[from]->weight;
ADDRLP4 12
CNSTI4 2
ASGNI4
ADDRLP4 16
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 20
CNSTI4 20
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 12
INDIRI4
LSHI4
ADDRLP4 16
INDIRP4
ADDP4
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
ADDRFP4 0
INDIRI4
ADDRLP4 12
INDIRI4
LSHI4
ADDRLP4 16
INDIRP4
ADDP4
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRF4
ASGNF4
line 357
;357: gWPArray[to]->associated_entity = gWPArray[from]->associated_entity;
ADDRLP4 24
CNSTI4 2
ASGNI4
ADDRLP4 28
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 32
CNSTI4 32
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 24
INDIRI4
LSHI4
ADDRLP4 28
INDIRP4
ADDP4
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
ADDRFP4 0
INDIRI4
ADDRLP4 24
INDIRI4
LSHI4
ADDRLP4 28
INDIRP4
ADDP4
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 358
;358: gWPArray[to]->disttonext = gWPArray[from]->disttonext;
ADDRLP4 36
CNSTI4 2
ASGNI4
ADDRLP4 40
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 44
CNSTI4 24
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 36
INDIRI4
LSHI4
ADDRLP4 40
INDIRP4
ADDP4
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ADDRFP4 0
INDIRI4
ADDRLP4 36
INDIRI4
LSHI4
ADDRLP4 40
INDIRP4
ADDP4
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
INDIRF4
ASGNF4
line 359
;359: gWPArray[to]->forceJumpTo = gWPArray[from]->forceJumpTo;
ADDRLP4 48
CNSTI4 2
ASGNI4
ADDRLP4 52
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 56
CNSTI4 36
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 48
INDIRI4
LSHI4
ADDRLP4 52
INDIRP4
ADDP4
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
ADDRFP4 0
INDIRI4
ADDRLP4 48
INDIRI4
LSHI4
ADDRLP4 52
INDIRP4
ADDP4
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 360
;360: gWPArray[to]->index = to;
ADDRLP4 60
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 60
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 60
INDIRI4
ASGNI4
line 361
;361: gWPArray[to]->inuse = gWPArray[from]->inuse;
ADDRLP4 64
CNSTI4 2
ASGNI4
ADDRLP4 68
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 72
CNSTI4 12
ASGNI4
ADDRFP4 4
INDIRI4
ADDRLP4 64
INDIRI4
LSHI4
ADDRLP4 68
INDIRP4
ADDP4
INDIRP4
ADDRLP4 72
INDIRI4
ADDP4
ADDRFP4 0
INDIRI4
ADDRLP4 64
INDIRI4
LSHI4
ADDRLP4 68
INDIRP4
ADDP4
INDIRP4
ADDRLP4 72
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 362
;362: VectorCopy(gWPArray[from]->origin, gWPArray[to]->origin);
ADDRLP4 76
CNSTI4 2
ASGNI4
ADDRLP4 80
ADDRGP4 gWPArray
ASGNP4
ADDRFP4 4
INDIRI4
ADDRLP4 76
INDIRI4
LSHI4
ADDRLP4 80
INDIRP4
ADDP4
INDIRP4
ADDRFP4 0
INDIRI4
ADDRLP4 76
INDIRI4
LSHI4
ADDRLP4 80
INDIRP4
ADDP4
INDIRP4
INDIRB
ASGNB 12
line 363
;363:}
LABELV $169
endproc TransferWPData 84 4
export CreateNewWP
proc CreateNewWP 8 8
line 366
;364:
;365:void CreateNewWP(vec3_t origin, int flags)
;366:{
line 367
;367: if (gWPNum >= MAX_WPARRAY_SIZE)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 4096
LTI4 $176
line 368
;368: {
line 369
;369: G_Printf(S_COLOR_YELLOW "Warning: Waypoint limit hit (%i)\n", MAX_WPARRAY_SIZE);
ADDRGP4 $178
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 370
;370: return;
ADDRGP4 $175
JUMPV
LABELV $176
line 373
;371: }
;372:
;373: if (!gWPArray[gWPNum])
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $179
line 374
;374: {
line 375
;375: gWPArray[gWPNum] = (wpobject_t *)B_Alloc(sizeof(wpobject_t));
CNSTI4 300
ARGI4
ADDRLP4 0
ADDRGP4 B_Alloc
CALLP4
ASGNP4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
line 376
;376: }
LABELV $179
line 378
;377:
;378: if (!gWPArray[gWPNum])
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $181
line 379
;379: {
line 380
;380: G_Printf(S_COLOR_RED "ERROR: Could not allocated memory for waypoint\n");
ADDRGP4 $183
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 381
;381: }
LABELV $181
line 383
;382:
;383: gWPArray[gWPNum]->flags = flags;
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ADDRFP4 4
INDIRI4
ASGNI4
line 384
;384: gWPArray[gWPNum]->weight = 0; //calculated elsewhere
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 20
ADDP4
CNSTF4 0
ASGNF4
line 385
;385: gWPArray[gWPNum]->associated_entity = ENTITYNUM_NONE; //set elsewhere
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTI4 1023
ASGNI4
line 386
;386: gWPArray[gWPNum]->forceJumpTo = 0;
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 0
ASGNI4
line 387
;387: gWPArray[gWPNum]->disttonext = 0; //calculated elsewhere
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 24
ADDP4
CNSTF4 0
ASGNF4
line 388
;388: gWPArray[gWPNum]->index = gWPNum;
ADDRLP4 0
ADDRGP4 gWPNum
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 389
;389: gWPArray[gWPNum]->inuse = 1;
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 1
ASGNI4
line 390
;390: VectorCopy(origin, gWPArray[gWPNum]->origin);
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 391
;391: gWPNum++;
ADDRLP4 4
ADDRGP4 gWPNum
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 392
;392:}
LABELV $175
endproc CreateNewWP 8 8
export CreateNewWP_FromObject
proc CreateNewWP_FromObject 52 4
line 395
;393:
;394:void CreateNewWP_FromObject(wpobject_t *wp)
;395:{
line 398
;396: int i;
;397:
;398: if (gWPNum >= MAX_WPARRAY_SIZE)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 4096
LTI4 $185
line 399
;399: {
line 400
;400: return;
ADDRGP4 $184
JUMPV
LABELV $185
line 403
;401: }
;402:
;403: if (!gWPArray[gWPNum])
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $187
line 404
;404: {
line 405
;405: gWPArray[gWPNum] = (wpobject_t *)B_Alloc(sizeof(wpobject_t));
CNSTI4 300
ARGI4
ADDRLP4 4
ADDRGP4 B_Alloc
CALLP4
ASGNP4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 406
;406: }
LABELV $187
line 408
;407:
;408: if (!gWPArray[gWPNum])
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $189
line 409
;409: {
line 410
;410: G_Printf(S_COLOR_RED "ERROR: Could not allocated memory for waypoint\n");
ADDRGP4 $183
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 411
;411: }
LABELV $189
line 413
;412:
;413: gWPArray[gWPNum]->flags = wp->flags;
ADDRLP4 4
CNSTI4 28
ASGNI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 4
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 4
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 414
;414: gWPArray[gWPNum]->weight = wp->weight;
ADDRLP4 8
CNSTI4 20
ASGNI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
INDIRF4
ASGNF4
line 415
;415: gWPArray[gWPNum]->associated_entity = wp->associated_entity;
ADDRLP4 12
CNSTI4 32
ASGNI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 12
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 12
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 416
;416: gWPArray[gWPNum]->disttonext = wp->disttonext;
ADDRLP4 16
CNSTI4 24
ASGNI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRF4
ASGNF4
line 417
;417: gWPArray[gWPNum]->forceJumpTo = wp->forceJumpTo;
ADDRLP4 20
CNSTI4 36
ASGNI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 418
;418: gWPArray[gWPNum]->index = gWPNum;
ADDRLP4 24
ADDRGP4 gWPNum
INDIRI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
line 419
;419: gWPArray[gWPNum]->inuse = 1;
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 1
ASGNI4
line 420
;420: VectorCopy(wp->origin, gWPArray[gWPNum]->origin);
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 421
;421: gWPArray[gWPNum]->neighbornum = wp->neighbornum;
ADDRLP4 28
CNSTI4 40
ASGNI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 423
;422:
;423: i = wp->neighbornum;
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
ASGNI4
ADDRGP4 $192
JUMPV
LABELV $191
line 426
;424:
;425: while (i >= 0)
;426: {
line 427
;427: gWPArray[gWPNum]->neighbors[i].num = wp->neighbors[i].num;
ADDRLP4 32
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ASGNI4
ADDRLP4 36
CNSTI4 44
ASGNI4
ADDRLP4 32
INDIRI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
ADDP4
ADDRLP4 32
INDIRI4
ADDRFP4 0
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
ADDP4
INDIRI4
ASGNI4
line 428
;428: gWPArray[gWPNum]->neighbors[i].forceJumpTo = wp->neighbors[i].forceJumpTo;
ADDRLP4 40
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ASGNI4
ADDRLP4 44
CNSTI4 44
ASGNI4
ADDRLP4 48
CNSTI4 4
ASGNI4
ADDRLP4 40
INDIRI4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ADDP4
ADDRLP4 48
INDIRI4
ADDP4
ADDRLP4 40
INDIRI4
ADDRFP4 0
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ADDP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 430
;429:
;430: i--;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 431
;431: }
LABELV $192
line 425
ADDRLP4 0
INDIRI4
CNSTI4 0
GEI4 $191
line 433
;432:
;433: if (gWPArray[gWPNum]->flags & WPFLAG_RED_FLAG)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
CNSTI4 131072
BANDI4
CNSTI4 0
EQI4 $194
line 434
;434: {
line 435
;435: flagRed = gWPArray[gWPNum];
ADDRGP4 flagRed
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 436
;436: oFlagRed = flagRed;
ADDRGP4 oFlagRed
ADDRGP4 flagRed
INDIRP4
ASGNP4
line 437
;437: }
ADDRGP4 $195
JUMPV
LABELV $194
line 438
;438: else if (gWPArray[gWPNum]->flags & WPFLAG_BLUE_FLAG)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
CNSTI4 262144
BANDI4
CNSTI4 0
EQI4 $196
line 439
;439: {
line 440
;440: flagBlue = gWPArray[gWPNum];
ADDRGP4 flagBlue
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 441
;441: oFlagBlue = flagBlue;
ADDRGP4 oFlagBlue
ADDRGP4 flagBlue
INDIRP4
ASGNP4
line 442
;442: }
LABELV $196
LABELV $195
line 444
;443:
;444: gWPNum++;
ADDRLP4 32
ADDRGP4 gWPNum
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 32
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 445
;445:}
LABELV $184
endproc CreateNewWP_FromObject 52 4
export RemoveWP
proc RemoveWP 8 12
line 448
;446:
;447:void RemoveWP(void)
;448:{
line 449
;449: if (gWPNum <= 0)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 0
GTI4 $199
line 450
;450: {
line 451
;451: return;
ADDRGP4 $198
JUMPV
LABELV $199
line 454
;452: }
;453:
;454: gWPNum--;
ADDRLP4 0
ADDRGP4 gWPNum
ASGNP4
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 456
;455:
;456: if (!gWPArray[gWPNum] || !gWPArray[gWPNum]->inuse)
ADDRLP4 4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $203
ADDRLP4 4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
NEI4 $201
LABELV $203
line 457
;457: {
line 458
;458: return;
ADDRGP4 $198
JUMPV
LABELV $201
line 462
;459: }
;460:
;461: //B_Free((wpobject_t *)gWPArray[gWPNum]);
;462: if (gWPArray[gWPNum])
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $204
line 463
;463: {
line 464
;464: memset( gWPArray[gWPNum], 0, sizeof(gWPArray[gWPNum]) );
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
CNSTI4 0
ARGI4
CNSTI4 4
ARGI4
ADDRGP4 memset
CALLP4
pop
line 465
;465: }
LABELV $204
line 469
;466:
;467: //gWPArray[gWPNum] = NULL;
;468:
;469: if (gWPArray[gWPNum])
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $206
line 470
;470: {
line 471
;471: gWPArray[gWPNum]->inuse = 0;
ADDRGP4 gWPNum
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 0
ASGNI4
line 472
;472: }
LABELV $206
line 473
;473:}
LABELV $198
endproc RemoveWP 8 12
export RemoveWP_InTrail
proc RemoveWP_InTrail 28 12
line 476
;474:
;475:void RemoveWP_InTrail(int afterindex)
;476:{
line 482
;477: int foundindex;
;478: int foundanindex;
;479: int didchange;
;480: int i;
;481:
;482: foundindex = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 483
;483: foundanindex = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 484
;484: didchange = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 485
;485: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 487
;486:
;487: if (afterindex < 0 || afterindex >= gWPNum)
ADDRLP4 16
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
LTI4 $211
ADDRLP4 16
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $214
LABELV $211
line 488
;488: {
line 489
;489: G_Printf(S_COLOR_YELLOW "Waypoint number %i does not exist\n", afterindex);
ADDRGP4 $212
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 490
;490: return;
ADDRGP4 $208
JUMPV
LABELV $213
line 494
;491: }
;492:
;493: while (i < gWPNum)
;494: {
line 495
;495: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == afterindex)
ADDRLP4 20
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $216
ADDRLP4 20
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $216
ADDRLP4 20
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRFP4 0
INDIRI4
NEI4 $216
line 496
;496: {
line 497
;497: foundindex = i;
ADDRLP4 4
ADDRLP4 0
INDIRI4
ASGNI4
line 498
;498: foundanindex = 1;
ADDRLP4 12
CNSTI4 1
ASGNI4
line 499
;499: break;
ADDRGP4 $215
JUMPV
LABELV $216
line 502
;500: }
;501:
;502: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 503
;503: }
LABELV $214
line 493
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $213
LABELV $215
line 505
;504:
;505: if (!foundanindex)
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $218
line 506
;506: {
line 507
;507: G_Printf(S_COLOR_YELLOW "Waypoint index %i should exist, but does not (?)\n", afterindex);
ADDRGP4 $220
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 508
;508: return;
ADDRGP4 $208
JUMPV
LABELV $218
line 511
;509: }
;510:
;511: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $222
JUMPV
LABELV $221
line 514
;512:
;513: while (i <= gWPNum)
;514: {
line 515
;515: if (gWPArray[i] && gWPArray[i]->index == foundindex)
ADDRLP4 20
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $224
ADDRLP4 20
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
NEI4 $224
line 516
;516: {
line 520
;517: //B_Free(gWPArray[i]);
;518:
;519: //Keep reusing the memory
;520: memset( gWPArray[i], 0, sizeof(gWPArray[i]) );
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
CNSTI4 0
ARGI4
CNSTI4 4
ARGI4
ADDRGP4 memset
CALLP4
pop
line 523
;521:
;522: //gWPArray[i] = NULL;
;523: gWPArray[i]->inuse = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 0
ASGNI4
line 524
;524: didchange = 1;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 525
;525: }
ADDRGP4 $225
JUMPV
LABELV $224
line 526
;526: else if (gWPArray[i] && didchange)
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $226
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $226
line 527
;527: {
line 528
;528: TransferWPData(i, i-1);
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
CNSTI4 1
SUBI4
ARGI4
ADDRGP4 TransferWPData
CALLV
pop
line 532
;529: //B_Free(gWPArray[i]);
;530:
;531: //Keep reusing the memory
;532: memset( gWPArray[i], 0, sizeof(gWPArray[i]) );
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
CNSTI4 0
ARGI4
CNSTI4 4
ARGI4
ADDRGP4 memset
CALLP4
pop
line 535
;533:
;534: //gWPArray[i] = NULL;
;535: gWPArray[i]->inuse = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 0
ASGNI4
line 536
;536: }
LABELV $226
LABELV $225
line 538
;537:
;538: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 539
;539: }
LABELV $222
line 513
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LEI4 $221
line 540
;540: gWPNum--;
ADDRLP4 20
ADDRGP4 gWPNum
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 541
;541:}
LABELV $208
endproc RemoveWP_InTrail 28 12
export CreateNewWP_InTrail
proc CreateNewWP_InTrail 32 8
line 544
;542:
;543:int CreateNewWP_InTrail(vec3_t origin, int flags, int afterindex)
;544:{
line 549
;545: int foundindex;
;546: int foundanindex;
;547: int i;
;548:
;549: foundindex = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 550
;550: foundanindex = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 551
;551: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 553
;552:
;553: if (gWPNum >= MAX_WPARRAY_SIZE)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 4096
LTI4 $229
line 554
;554: {
line 555
;555: G_Printf(S_COLOR_YELLOW "Warning: Waypoint limit hit (%i)\n", MAX_WPARRAY_SIZE);
ADDRGP4 $178
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 556
;556: return 0;
CNSTI4 0
RETI4
ADDRGP4 $228
JUMPV
LABELV $229
line 559
;557: }
;558:
;559: if (afterindex < 0 || afterindex >= gWPNum)
ADDRLP4 12
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
LTI4 $233
ADDRLP4 12
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $235
LABELV $233
line 560
;560: {
line 561
;561: G_Printf(S_COLOR_YELLOW "Waypoint number %i does not exist\n", afterindex);
ADDRGP4 $212
ARGP4
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 562
;562: return 0;
CNSTI4 0
RETI4
ADDRGP4 $228
JUMPV
LABELV $234
line 566
;563: }
;564:
;565: while (i < gWPNum)
;566: {
line 567
;567: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == afterindex)
ADDRLP4 16
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $237
ADDRLP4 16
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $237
ADDRLP4 16
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRFP4 8
INDIRI4
NEI4 $237
line 568
;568: {
line 569
;569: foundindex = i;
ADDRLP4 4
ADDRLP4 0
INDIRI4
ASGNI4
line 570
;570: foundanindex = 1;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 571
;571: break;
ADDRGP4 $236
JUMPV
LABELV $237
line 574
;572: }
;573:
;574: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 575
;575: }
LABELV $235
line 565
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $234
LABELV $236
line 577
;576:
;577: if (!foundanindex)
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $239
line 578
;578: {
line 579
;579: G_Printf(S_COLOR_YELLOW "Waypoint index %i should exist, but does not (?)\n", afterindex);
ADDRGP4 $220
ARGP4
ADDRFP4 8
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 580
;580: return 0;
CNSTI4 0
RETI4
ADDRGP4 $228
JUMPV
LABELV $239
line 583
;581: }
;582:
;583: i = gWPNum;
ADDRLP4 0
ADDRGP4 gWPNum
INDIRI4
ASGNI4
ADDRGP4 $242
JUMPV
LABELV $241
line 586
;584:
;585: while (i >= 0)
;586: {
line 587
;587: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index != foundindex)
ADDRLP4 16
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $244
ADDRLP4 16
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $244
ADDRLP4 16
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $244
line 588
;588: {
line 589
;589: TransferWPData(i, i+1);
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ARGI4
ADDRGP4 TransferWPData
CALLV
pop
line 590
;590: }
ADDRGP4 $245
JUMPV
LABELV $244
line 591
;591: else if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == foundindex)
ADDRLP4 20
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $246
ADDRLP4 20
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $246
ADDRLP4 20
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
NEI4 $246
line 592
;592: {
line 593
;593: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 595
;594:
;595: if (!gWPArray[i])
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $248
line 596
;596: {
line 597
;597: gWPArray[i] = (wpobject_t *)B_Alloc(sizeof(wpobject_t));
CNSTI4 300
ARGI4
ADDRLP4 24
ADDRGP4 B_Alloc
CALLP4
ASGNP4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ADDRLP4 24
INDIRP4
ASGNP4
line 598
;598: }
LABELV $248
line 600
;599:
;600: gWPArray[i]->flags = flags;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ADDRFP4 4
INDIRI4
ASGNI4
line 601
;601: gWPArray[i]->weight = 0; //calculated elsewhere
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 20
ADDP4
CNSTF4 0
ASGNF4
line 602
;602: gWPArray[i]->associated_entity = ENTITYNUM_NONE; //set elsewhere
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 32
ADDP4
CNSTI4 1023
ASGNI4
line 603
;603: gWPArray[i]->disttonext = 0; //calculated elsewhere
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 24
ADDP4
CNSTF4 0
ASGNF4
line 604
;604: gWPArray[i]->forceJumpTo = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 0
ASGNI4
line 605
;605: gWPArray[i]->index = i;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 606
;606: gWPArray[i]->inuse = 1;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 1
ASGNI4
line 607
;607: VectorCopy(origin, gWPArray[i]->origin);
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 608
;608: gWPNum++;
ADDRLP4 28
ADDRGP4 gWPNum
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 609
;609: break;
ADDRGP4 $243
JUMPV
LABELV $246
LABELV $245
line 612
;610: }
;611:
;612: i--;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 613
;613: }
LABELV $242
line 585
ADDRLP4 0
INDIRI4
CNSTI4 0
GEI4 $241
LABELV $243
line 615
;614:
;615: return 1;
CNSTI4 1
RETI4
LABELV $228
endproc CreateNewWP_InTrail 32 8
export TeleportToWP
proc TeleportToWP 28 8
line 619
;616:}
;617:
;618:void TeleportToWP(gentity_t *pl, int afterindex)
;619:{
line 624
;620: int foundindex;
;621: int foundanindex;
;622: int i;
;623:
;624: if (!pl || !pl->client)
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
CNSTU4 0
ASGNU4
ADDRLP4 12
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $253
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
NEU4 $251
LABELV $253
line 625
;625: {
line 626
;626: return;
ADDRGP4 $250
JUMPV
LABELV $251
line 629
;627: }
;628:
;629: foundindex = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 630
;630: foundanindex = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 631
;631: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 633
;632:
;633: if (afterindex < 0 || afterindex >= gWPNum)
ADDRLP4 20
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
LTI4 $256
ADDRLP4 20
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $258
LABELV $256
line 634
;634: {
line 635
;635: G_Printf(S_COLOR_YELLOW "Waypoint number %i does not exist\n", afterindex);
ADDRGP4 $212
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 636
;636: return;
ADDRGP4 $250
JUMPV
LABELV $257
line 640
;637: }
;638:
;639: while (i < gWPNum)
;640: {
line 641
;641: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->index == afterindex)
ADDRLP4 24
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $260
ADDRLP4 24
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $260
ADDRLP4 24
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRFP4 4
INDIRI4
NEI4 $260
line 642
;642: {
line 643
;643: foundindex = i;
ADDRLP4 4
ADDRLP4 0
INDIRI4
ASGNI4
line 644
;644: foundanindex = 1;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 645
;645: break;
ADDRGP4 $259
JUMPV
LABELV $260
line 648
;646: }
;647:
;648: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 649
;649: }
LABELV $258
line 639
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $257
LABELV $259
line 651
;650:
;651: if (!foundanindex)
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $262
line 652
;652: {
line 653
;653: G_Printf(S_COLOR_YELLOW "Waypoint index %i should exist, but does not (?)\n", afterindex);
ADDRGP4 $220
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 654
;654: return;
ADDRGP4 $250
JUMPV
LABELV $262
line 657
;655: }
;656:
;657: VectorCopy(gWPArray[foundindex]->origin, pl->client->ps.origin);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
INDIRB
ASGNB 12
line 659
;658:
;659: return;
LABELV $250
endproc TeleportToWP 28 8
export WPFlagsModify
proc WPFlagsModify 12 8
line 663
;660:}
;661:
;662:void WPFlagsModify(int wpnum, int flags)
;663:{
line 664
;664: if (wpnum < 0 || wpnum >= gWPNum || !gWPArray[wpnum] || !gWPArray[wpnum]->inuse)
ADDRLP4 0
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
LTI4 $269
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
GEI4 $269
ADDRLP4 8
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $269
ADDRLP4 8
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ADDRLP4 4
INDIRI4
NEI4 $265
LABELV $269
line 665
;665: {
line 666
;666: G_Printf(S_COLOR_YELLOW "WPFlagsModify: Waypoint %i does not exist\n", wpnum);
ADDRGP4 $270
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 667
;667: return;
ADDRGP4 $264
JUMPV
LABELV $265
line 670
;668: }
;669:
;670: gWPArray[wpnum]->flags = flags;
ADDRFP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ADDRFP4 4
INDIRI4
ASGNI4
line 671
;671:}
LABELV $264
endproc WPFlagsModify 12 8
export NotWithinRange
proc NotWithinRange 16 0
line 674
;672:
;673:int NotWithinRange(int base, int extent)
;674:{
line 675
;675: if (extent > base && base+5 >= extent)
ADDRLP4 0
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 4
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
LEI4 $272
ADDRLP4 4
INDIRI4
CNSTI4 5
ADDI4
ADDRLP4 0
INDIRI4
LTI4 $272
line 676
;676: {
line 677
;677: return 0;
CNSTI4 0
RETI4
ADDRGP4 $271
JUMPV
LABELV $272
line 680
;678: }
;679:
;680: if (extent < base && base-5 <= extent)
ADDRLP4 8
ADDRFP4 4
INDIRI4
ASGNI4
ADDRLP4 12
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRI4
GEI4 $274
ADDRLP4 12
INDIRI4
CNSTI4 5
SUBI4
ADDRLP4 8
INDIRI4
GTI4 $274
line 681
;681: {
line 682
;682: return 0;
CNSTI4 0
RETI4
ADDRGP4 $271
JUMPV
LABELV $274
line 685
;683: }
;684:
;685: return 1;
CNSTI4 1
RETI4
LABELV $271
endproc NotWithinRange 16 0
export NodeHere
proc NodeHere 36 0
line 689
;686:}
;687:
;688:int NodeHere(vec3_t spot)
;689:{
line 692
;690: int i;
;691:
;692: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $278
JUMPV
LABELV $277
line 695
;693:
;694: while (i < nodenum)
;695: {
line 696
;696: if ((int)nodetable[i].origin[0] == (int)spot[0] &&
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ASGNI4
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRI4
ADDRGP4 nodetable
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 8
INDIRP4
INDIRF4
CVFI4 4
NEI4 $280
ADDRLP4 4
INDIRI4
ADDRGP4 nodetable+4
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 8
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
CVFI4 4
NEI4 $280
line 698
;697: (int)nodetable[i].origin[1] == (int)spot[1])
;698: {
line 699
;699: if ((int)nodetable[i].origin[2] == (int)spot[2] ||
ADDRLP4 12
CNSTI4 5
ASGNI4
ADDRLP4 16
ADDRLP4 0
INDIRI4
ADDRLP4 12
INDIRI4
LSHI4
ASGNI4
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
CVFI4 4
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 20
INDIRI4
EQI4 $291
ADDRLP4 16
INDIRI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 20
INDIRI4
GEI4 $292
ADDRLP4 16
INDIRI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 12
INDIRI4
ADDI4
ADDRLP4 20
INDIRI4
GTI4 $291
LABELV $292
ADDRLP4 24
CNSTI4 5
ASGNI4
ADDRLP4 28
ADDRLP4 0
INDIRI4
ADDRLP4 24
INDIRI4
LSHI4
ASGNI4
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
CVFI4 4
ASGNI4
ADDRLP4 28
INDIRI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 32
INDIRI4
LEI4 $283
ADDRLP4 28
INDIRI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 24
INDIRI4
SUBI4
ADDRLP4 32
INDIRI4
GEI4 $283
LABELV $291
line 702
;700: ((int)nodetable[i].origin[2] < (int)spot[2] && (int)nodetable[i].origin[2]+5 > (int)spot[2]) ||
;701: ((int)nodetable[i].origin[2] > (int)spot[2] && (int)nodetable[i].origin[2]-5 < (int)spot[2]))
;702: {
line 703
;703: return 1;
CNSTI4 1
RETI4
ADDRGP4 $276
JUMPV
LABELV $283
line 705
;704: }
;705: }
LABELV $280
line 706
;706: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 707
;707: }
LABELV $278
line 694
ADDRLP4 0
INDIRI4
ADDRGP4 nodenum
INDIRI4
LTI4 $277
line 709
;708:
;709: return 0;
CNSTI4 0
RETI4
LABELV $276
endproc NodeHere 36 0
export CanGetToVector
proc CanGetToVector 1084 28
line 713
;710:}
;711:
;712:int CanGetToVector(vec3_t org1, vec3_t org2, vec3_t mins, vec3_t maxs)
;713:{
line 716
;714: trace_t tr;
;715:
;716: trap_Trace(&tr, org1, mins, maxs, org2, -1, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 12
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 718
;717:
;718: if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid)
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $294
ADDRLP4 1080
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1080
INDIRI4
NEI4 $294
ADDRLP4 0
INDIRI4
ADDRLP4 1080
INDIRI4
NEI4 $294
line 719
;719: {
line 720
;720: return 1;
CNSTI4 1
RETI4
ADDRGP4 $293
JUMPV
LABELV $294
line 723
;721: }
;722:
;723: return 0;
CNSTI4 0
RETI4
LABELV $293
endproc CanGetToVector 1084 28
export CanGetToVectorTravel
proc CanGetToVectorTravel 1192 28
line 727
;724:}
;725:
;726:int CanGetToVectorTravel(vec3_t org1, vec3_t org2, vec3_t mins, vec3_t maxs)
;727:{
line 733
;728: trace_t tr;
;729: vec3_t a, ang, fwd;
;730: vec3_t midpos, dmid;
;731: float startheight, midheight, fLen;
;732:
;733: mins[2] = -13;
ADDRFP4 8
INDIRP4
CNSTI4 8
ADDP4
CNSTF4 3243245568
ASGNF4
line 734
;734: maxs[2] = 13;
ADDRFP4 12
INDIRP4
CNSTI4 8
ADDP4
CNSTF4 1095761920
ASGNF4
line 736
;735:
;736: trap_Trace(&tr, org1, mins, maxs, org2, -1, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 12
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 738
;737:
;738: if (tr.fraction != 1 || tr.startsolid || tr.allsolid)
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $304
ADDRLP4 1152
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1152
INDIRI4
NEI4 $304
ADDRLP4 0
INDIRI4
ADDRLP4 1152
INDIRI4
EQI4 $299
LABELV $304
line 739
;739: {
line 740
;740: return 0;
CNSTI4 0
RETI4
ADDRGP4 $298
JUMPV
LABELV $299
line 743
;741: }
;742:
;743: VectorSubtract(org2, org1, a);
ADDRLP4 1156
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 1160
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1104
ADDRLP4 1156
INDIRP4
INDIRF4
ADDRLP4 1160
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1164
CNSTI4 4
ASGNI4
ADDRLP4 1104+4
ADDRLP4 1156
INDIRP4
ADDRLP4 1164
INDIRI4
ADDP4
INDIRF4
ADDRLP4 1160
INDIRP4
ADDRLP4 1164
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1168
CNSTI4 8
ASGNI4
ADDRLP4 1104+8
ADDRFP4 4
INDIRP4
ADDRLP4 1168
INDIRI4
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
ADDRLP4 1168
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 745
;744:
;745: vectoangles(a, ang);
ADDRLP4 1104
ARGP4
ADDRLP4 1132
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 747
;746:
;747: AngleVectors(ang, fwd, NULL, NULL);
ADDRLP4 1132
ARGP4
ADDRLP4 1116
ARGP4
ADDRLP4 1172
CNSTP4 0
ASGNP4
ADDRLP4 1172
INDIRP4
ARGP4
ADDRLP4 1172
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 749
;748:
;749: fLen = VectorLength(a)/2;
ADDRLP4 1104
ARGP4
ADDRLP4 1176
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1128
ADDRLP4 1176
INDIRF4
CNSTF4 1073741824
DIVF4
ASGNF4
line 751
;750:
;751: midpos[0] = org1[0] + fwd[0]*fLen;
ADDRLP4 1080
ADDRFP4 0
INDIRP4
INDIRF4
ADDRLP4 1116
INDIRF4
ADDRLP4 1128
INDIRF4
MULF4
ADDF4
ASGNF4
line 752
;752: midpos[1] = org1[1] + fwd[1]*fLen;
ADDRLP4 1080+4
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
ADDRLP4 1116+4
INDIRF4
ADDRLP4 1128
INDIRF4
MULF4
ADDF4
ASGNF4
line 753
;753: midpos[2] = org1[2] + fwd[2]*fLen;
ADDRLP4 1080+8
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ADDRLP4 1116+8
INDIRF4
ADDRLP4 1128
INDIRF4
MULF4
ADDF4
ASGNF4
line 755
;754:
;755: VectorCopy(org1, dmid);
ADDRLP4 1092
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 756
;756: dmid[2] -= 1024;
ADDRLP4 1092+8
ADDRLP4 1092+8
INDIRF4
CNSTF4 1149239296
SUBF4
ASGNF4
line 758
;757:
;758: trap_Trace(&tr, midpos, NULL, NULL, dmid, -1, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1080
ARGP4
ADDRLP4 1180
CNSTP4 0
ASGNP4
ADDRLP4 1180
INDIRP4
ARGP4
ADDRLP4 1180
INDIRP4
ARGP4
ADDRLP4 1092
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 760
;759:
;760: startheight = org1[2] - tr.endpos[2];
ADDRLP4 1144
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ADDRLP4 0+12+8
INDIRF4
SUBF4
ASGNF4
line 762
;761:
;762: VectorCopy(midpos, dmid);
ADDRLP4 1092
ADDRLP4 1080
INDIRB
ASGNB 12
line 763
;763: dmid[2] -= 1024;
ADDRLP4 1092+8
ADDRLP4 1092+8
INDIRF4
CNSTF4 1149239296
SUBF4
ASGNF4
line 765
;764:
;765: trap_Trace(&tr, midpos, NULL, NULL, dmid, -1, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1080
ARGP4
ADDRLP4 1184
CNSTP4 0
ASGNP4
ADDRLP4 1184
INDIRP4
ARGP4
ADDRLP4 1184
INDIRP4
ARGP4
ADDRLP4 1092
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 767
;766:
;767: if (tr.startsolid || tr.allsolid)
ADDRLP4 1188
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1188
INDIRI4
NEI4 $318
ADDRLP4 0
INDIRI4
ADDRLP4 1188
INDIRI4
EQI4 $315
LABELV $318
line 768
;768: {
line 769
;769: return 1;
CNSTI4 1
RETI4
ADDRGP4 $298
JUMPV
LABELV $315
line 772
;770: }
;771:
;772: midheight = midpos[2] - tr.endpos[2];
ADDRLP4 1148
ADDRLP4 1080+8
INDIRF4
ADDRLP4 0+12+8
INDIRF4
SUBF4
ASGNF4
line 774
;773:
;774: if (midheight > startheight*2)
ADDRLP4 1148
INDIRF4
CNSTF4 1073741824
ADDRLP4 1144
INDIRF4
MULF4
LEF4 $322
line 775
;775: {
line 776
;776: return 0; //too steep of a drop.. can't go on
CNSTI4 0
RETI4
ADDRGP4 $298
JUMPV
LABELV $322
line 779
;777: }
;778:
;779: return 1;
CNSTI4 1
RETI4
LABELV $298
endproc CanGetToVectorTravel 1192 28
export ConnectTrail
proc ConnectTrail 17692 28
line 783
;780:}
;781:
;782:int ConnectTrail(int startindex, int endindex)
;783:{
line 801
;784: int foundit;
;785: int cancontinue;
;786: int i;
;787: int failsafe;
;788: int successnodeindex;
;789: int insertindex;
;790: int prenodestart;
;791: int extendednodes[MAX_NODETABLE_SIZE]; //for storing checked nodes and not trying to extend them each a bazillion times
;792: float fvecmeas;
;793: float baseheight;
;794: vec3_t a;
;795: vec3_t startplace, starttrace;
;796: vec3_t mins, maxs;
;797: vec3_t testspot;
;798: vec3_t validspotpos;
;799: trace_t tr;
;800:
;801: mins[0] = -15;
ADDRLP4 1108
CNSTF4 3245342720
ASGNF4
line 802
;802: mins[1] = -15;
ADDRLP4 1108+4
CNSTF4 3245342720
ASGNF4
line 803
;803: mins[2] = 0;
ADDRLP4 1108+8
CNSTF4 0
ASGNF4
line 804
;804: maxs[0] = 15;
ADDRLP4 1120
CNSTF4 1097859072
ASGNF4
line 805
;805: maxs[1] = 15;
ADDRLP4 1120+4
CNSTF4 1097859072
ASGNF4
line 806
;806: maxs[2] = 0;
ADDRLP4 1120+8
CNSTF4 0
ASGNF4
line 808
;807:
;808: nodenum = 0;
ADDRGP4 nodenum
CNSTI4 0
ASGNI4
line 809
;809: foundit = 0;
ADDRLP4 17556
CNSTI4 0
ASGNI4
line 811
;810:
;811: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 813
;812:
;813: successnodeindex = 0;
ADDRLP4 17560
CNSTI4 0
ASGNI4
ADDRGP4 $330
JUMPV
LABELV $329
line 816
;814:
;815: while (i < MAX_NODETABLE_SIZE) //clear it out before using it
;816: {
line 817
;817: nodetable[i].flags = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+24
ADDP4
CNSTI4 0
ASGNI4
line 818
;818: nodetable[i].index = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+16
ADDP4
CNSTI4 0
ASGNI4
line 819
;819: nodetable[i].inuse = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+12
ADDP4
CNSTI4 0
ASGNI4
line 820
;820: nodetable[i].neighbornum = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+28
ADDP4
CNSTI4 0
ASGNI4
line 821
;821: nodetable[i].origin[0] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
CNSTF4 0
ASGNF4
line 822
;822: nodetable[i].origin[1] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+4
ADDP4
CNSTF4 0
ASGNF4
line 823
;823: nodetable[i].origin[2] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+8
ADDP4
CNSTF4 0
ASGNF4
line 824
;824: nodetable[i].weight = 0;
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+20
ADDP4
CNSTF4 0
ASGNF4
line 826
;825:
;826: extendednodes[i] = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1148
ADDP4
CNSTI4 0
ASGNI4
line 828
;827:
;828: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 829
;829: }
LABELV $330
line 815
ADDRLP4 0
INDIRI4
CNSTI4 4096
LTI4 $329
line 831
;830:
;831: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 833
;832:
;833: G_Printf(S_COLOR_YELLOW "Point %i is not connected to %i - Repairing...\n", startindex, endindex);
ADDRGP4 $339
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 835
;834:
;835: VectorCopy(gWPArray[startindex]->origin, startplace);
ADDRLP4 17572
ADDRFP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
INDIRB
ASGNB 12
line 837
;836:
;837: VectorCopy(startplace, starttrace);
ADDRLP4 1096
ADDRLP4 17572
INDIRB
ASGNB 12
line 839
;838:
;839: starttrace[2] -= 4096;
ADDRLP4 1096+8
ADDRLP4 1096+8
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 841
;840:
;841: trap_Trace(&tr, startplace, NULL, NULL, starttrace, -1, MASK_SOLID);
ADDRLP4 16
ARGP4
ADDRLP4 17572
ARGP4
ADDRLP4 17584
CNSTP4 0
ASGNP4
ADDRLP4 17584
INDIRP4
ARGP4
ADDRLP4 17584
INDIRP4
ARGP4
ADDRLP4 1096
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 843
;842:
;843: baseheight = startplace[2] - tr.endpos[2];
ADDRLP4 1144
ADDRLP4 17572+8
INDIRF4
ADDRLP4 16+12+8
INDIRF4
SUBF4
ASGNF4
line 845
;844:
;845: cancontinue = 1;
ADDRLP4 17532
CNSTI4 1
ASGNI4
line 847
;846:
;847: VectorCopy(startplace, nodetable[nodenum].origin);
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ADDRLP4 17572
INDIRB
ASGNB 12
line 848
;848: nodetable[nodenum].weight = 1;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+20
ADDP4
CNSTF4 1065353216
ASGNF4
line 849
;849: nodetable[nodenum].inuse = 1;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+12
ADDP4
CNSTI4 1
ASGNI4
line 850
;850: nodetable[nodenum].index = nodenum;
ADDRLP4 17588
ADDRGP4 nodenum
INDIRI4
ASGNI4
ADDRLP4 17588
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+16
ADDP4
ADDRLP4 17588
INDIRI4
ASGNI4
line 851
;851: nodenum++;
ADDRLP4 17592
ADDRGP4 nodenum
ASGNP4
ADDRLP4 17592
INDIRP4
ADDRLP4 17592
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $348
JUMPV
LABELV $347
line 854
;852:
;853: while (nodenum < MAX_NODETABLE_SIZE && !foundit && cancontinue)
;854: {
line 855
;855: cancontinue = 0;
ADDRLP4 17532
CNSTI4 0
ASGNI4
line 856
;856: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 857
;857: prenodestart = nodenum;
ADDRLP4 17536
ADDRGP4 nodenum
INDIRI4
ASGNI4
ADDRGP4 $351
JUMPV
LABELV $350
line 860
;858:
;859: while (i < prenodestart)
;860: {
line 861
;861: if (extendednodes[i] != 1)
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1148
ADDP4
INDIRI4
CNSTI4 1
EQI4 $353
line 862
;862: {
line 863
;863: VectorSubtract(gWPArray[endindex]->origin, nodetable[i].origin, a);
ADDRLP4 17596
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 17600
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ASGNI4
ADDRLP4 1132
ADDRLP4 17596
INDIRP4
INDIRP4
INDIRF4
ADDRLP4 17600
INDIRI4
ADDRGP4 nodetable
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1132+4
ADDRLP4 17596
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
ADDRLP4 17600
INDIRI4
ADDRGP4 nodetable+4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1132+8
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 864
;864: fvecmeas = VectorLength(a);
ADDRLP4 1132
ARGP4
ADDRLP4 17604
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 17540
ADDRLP4 17604
INDIRF4
ASGNF4
line 866
;865:
;866: if (fvecmeas < 128 && CanGetToVector(gWPArray[endindex]->origin, nodetable[i].origin, mins, maxs))
ADDRLP4 17540
INDIRF4
CNSTF4 1124073472
GEF4 $359
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17608
ADDRGP4 CanGetToVector
CALLI4
ASGNI4
ADDRLP4 17608
INDIRI4
CNSTI4 0
EQI4 $359
line 867
;867: {
line 868
;868: foundit = 1;
ADDRLP4 17556
CNSTI4 1
ASGNI4
line 869
;869: successnodeindex = i;
ADDRLP4 17560
ADDRLP4 0
INDIRI4
ASGNI4
line 870
;870: break;
ADDRGP4 $352
JUMPV
LABELV $359
line 873
;871: }
;872:
;873: VectorCopy(nodetable[i].origin, testspot);
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
INDIRB
ASGNB 12
line 874
;874: testspot[0] += TABLE_BRANCH_DISTANCE;
ADDRLP4 4
ADDRLP4 4
INDIRF4
CNSTF4 1107296256
ADDF4
ASGNF4
line 876
;875:
;876: VectorCopy(testspot, starttrace);
ADDRLP4 1096
ADDRLP4 4
INDIRB
ASGNB 12
line 878
;877:
;878: starttrace[2] -= 4096;
ADDRLP4 1096+8
ADDRLP4 1096+8
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 880
;879:
;880: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID);
ADDRLP4 16
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 17612
CNSTP4 0
ASGNP4
ADDRLP4 17612
INDIRP4
ARGP4
ADDRLP4 17612
INDIRP4
ARGP4
ADDRLP4 1096
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 882
;881:
;882: testspot[2] = tr.endpos[2]+baseheight;
ADDRLP4 4+8
ADDRLP4 16+12+8
INDIRF4
ADDRLP4 1144
INDIRF4
ADDF4
ASGNF4
line 884
;883:
;884: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs))
ADDRLP4 4
ARGP4
ADDRLP4 17616
ADDRGP4 NodeHere
CALLI4
ASGNI4
ADDRLP4 17620
CNSTI4 0
ASGNI4
ADDRLP4 17616
INDIRI4
ADDRLP4 17620
INDIRI4
NEI4 $365
ADDRLP4 16+4
INDIRI4
ADDRLP4 17620
INDIRI4
NEI4 $365
ADDRLP4 16
INDIRI4
ADDRLP4 17620
INDIRI4
NEI4 $365
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17624
ADDRGP4 CanGetToVector
CALLI4
ASGNI4
ADDRLP4 17624
INDIRI4
CNSTI4 0
EQI4 $365
line 885
;885: {
line 886
;886: VectorCopy(testspot, nodetable[nodenum].origin);
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ADDRLP4 4
INDIRB
ASGNB 12
line 887
;887: nodetable[nodenum].inuse = 1;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+12
ADDP4
CNSTI4 1
ASGNI4
line 888
;888: nodetable[nodenum].index = nodenum;
ADDRLP4 17628
ADDRGP4 nodenum
INDIRI4
ASGNI4
ADDRLP4 17628
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+16
ADDP4
ADDRLP4 17628
INDIRI4
ASGNI4
line 889
;889: nodetable[nodenum].weight = nodetable[i].weight+1;
ADDRLP4 17632
CNSTI4 5
ASGNI4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17632
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 17632
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
INDIRF4
CNSTF4 1065353216
ADDF4
ASGNF4
line 890
;890: nodetable[nodenum].neighbornum = i;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+28
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 891
;891: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50)
ADDRLP4 17636
CNSTI4 5
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 17636
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17636
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
SUBF4
CNSTF4 1112014848
LEF4 $373
line 892
;892: { //if there's a big drop, make sure we know we can't just magically fly back up
line 893
;893: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+24
ADDP4
CNSTI4 16384
ASGNI4
line 894
;894: }
LABELV $373
line 895
;895: nodenum++;
ADDRLP4 17640
ADDRGP4 nodenum
ASGNP4
ADDRLP4 17640
INDIRP4
ADDRLP4 17640
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 896
;896: cancontinue = 1;
ADDRLP4 17532
CNSTI4 1
ASGNI4
line 897
;897: }
LABELV $365
line 899
;898:
;899: if (nodenum >= MAX_NODETABLE_SIZE)
ADDRGP4 nodenum
INDIRI4
CNSTI4 4096
LTI4 $378
line 900
;900: {
line 901
;901: break; //failure
ADDRGP4 $352
JUMPV
LABELV $378
line 904
;902: }
;903:
;904: VectorCopy(nodetable[i].origin, testspot);
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
INDIRB
ASGNB 12
line 905
;905: testspot[0] -= TABLE_BRANCH_DISTANCE;
ADDRLP4 4
ADDRLP4 4
INDIRF4
CNSTF4 1107296256
SUBF4
ASGNF4
line 907
;906:
;907: VectorCopy(testspot, starttrace);
ADDRLP4 1096
ADDRLP4 4
INDIRB
ASGNB 12
line 909
;908:
;909: starttrace[2] -= 4096;
ADDRLP4 1096+8
ADDRLP4 1096+8
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 911
;910:
;911: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID);
ADDRLP4 16
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 17628
CNSTP4 0
ASGNP4
ADDRLP4 17628
INDIRP4
ARGP4
ADDRLP4 17628
INDIRP4
ARGP4
ADDRLP4 1096
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 913
;912:
;913: testspot[2] = tr.endpos[2]+baseheight;
ADDRLP4 4+8
ADDRLP4 16+12+8
INDIRF4
ADDRLP4 1144
INDIRF4
ADDF4
ASGNF4
line 915
;914:
;915: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs))
ADDRLP4 4
ARGP4
ADDRLP4 17632
ADDRGP4 NodeHere
CALLI4
ASGNI4
ADDRLP4 17636
CNSTI4 0
ASGNI4
ADDRLP4 17632
INDIRI4
ADDRLP4 17636
INDIRI4
NEI4 $384
ADDRLP4 16+4
INDIRI4
ADDRLP4 17636
INDIRI4
NEI4 $384
ADDRLP4 16
INDIRI4
ADDRLP4 17636
INDIRI4
NEI4 $384
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17640
ADDRGP4 CanGetToVector
CALLI4
ASGNI4
ADDRLP4 17640
INDIRI4
CNSTI4 0
EQI4 $384
line 916
;916: {
line 917
;917: VectorCopy(testspot, nodetable[nodenum].origin);
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ADDRLP4 4
INDIRB
ASGNB 12
line 918
;918: nodetable[nodenum].inuse = 1;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+12
ADDP4
CNSTI4 1
ASGNI4
line 919
;919: nodetable[nodenum].index = nodenum;
ADDRLP4 17644
ADDRGP4 nodenum
INDIRI4
ASGNI4
ADDRLP4 17644
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+16
ADDP4
ADDRLP4 17644
INDIRI4
ASGNI4
line 920
;920: nodetable[nodenum].weight = nodetable[i].weight+1;
ADDRLP4 17648
CNSTI4 5
ASGNI4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17648
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 17648
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
INDIRF4
CNSTF4 1065353216
ADDF4
ASGNF4
line 921
;921: nodetable[nodenum].neighbornum = i;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+28
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 922
;922: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50)
ADDRLP4 17652
CNSTI4 5
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 17652
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17652
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
SUBF4
CNSTF4 1112014848
LEF4 $392
line 923
;923: { //if there's a big drop, make sure we know we can't just magically fly back up
line 924
;924: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+24
ADDP4
CNSTI4 16384
ASGNI4
line 925
;925: }
LABELV $392
line 926
;926: nodenum++;
ADDRLP4 17656
ADDRGP4 nodenum
ASGNP4
ADDRLP4 17656
INDIRP4
ADDRLP4 17656
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 927
;927: cancontinue = 1;
ADDRLP4 17532
CNSTI4 1
ASGNI4
line 928
;928: }
LABELV $384
line 930
;929:
;930: if (nodenum >= MAX_NODETABLE_SIZE)
ADDRGP4 nodenum
INDIRI4
CNSTI4 4096
LTI4 $397
line 931
;931: {
line 932
;932: break; //failure
ADDRGP4 $352
JUMPV
LABELV $397
line 935
;933: }
;934:
;935: VectorCopy(nodetable[i].origin, testspot);
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
INDIRB
ASGNB 12
line 936
;936: testspot[1] += TABLE_BRANCH_DISTANCE;
ADDRLP4 4+4
ADDRLP4 4+4
INDIRF4
CNSTF4 1107296256
ADDF4
ASGNF4
line 938
;937:
;938: VectorCopy(testspot, starttrace);
ADDRLP4 1096
ADDRLP4 4
INDIRB
ASGNB 12
line 940
;939:
;940: starttrace[2] -= 4096;
ADDRLP4 1096+8
ADDRLP4 1096+8
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 942
;941:
;942: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID);
ADDRLP4 16
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 17644
CNSTP4 0
ASGNP4
ADDRLP4 17644
INDIRP4
ARGP4
ADDRLP4 17644
INDIRP4
ARGP4
ADDRLP4 1096
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 944
;943:
;944: testspot[2] = tr.endpos[2]+baseheight;
ADDRLP4 4+8
ADDRLP4 16+12+8
INDIRF4
ADDRLP4 1144
INDIRF4
ADDF4
ASGNF4
line 946
;945:
;946: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs))
ADDRLP4 4
ARGP4
ADDRLP4 17648
ADDRGP4 NodeHere
CALLI4
ASGNI4
ADDRLP4 17652
CNSTI4 0
ASGNI4
ADDRLP4 17648
INDIRI4
ADDRLP4 17652
INDIRI4
NEI4 $404
ADDRLP4 16+4
INDIRI4
ADDRLP4 17652
INDIRI4
NEI4 $404
ADDRLP4 16
INDIRI4
ADDRLP4 17652
INDIRI4
NEI4 $404
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17656
ADDRGP4 CanGetToVector
CALLI4
ASGNI4
ADDRLP4 17656
INDIRI4
CNSTI4 0
EQI4 $404
line 947
;947: {
line 948
;948: VectorCopy(testspot, nodetable[nodenum].origin);
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ADDRLP4 4
INDIRB
ASGNB 12
line 949
;949: nodetable[nodenum].inuse = 1;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+12
ADDP4
CNSTI4 1
ASGNI4
line 950
;950: nodetable[nodenum].index = nodenum;
ADDRLP4 17660
ADDRGP4 nodenum
INDIRI4
ASGNI4
ADDRLP4 17660
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+16
ADDP4
ADDRLP4 17660
INDIRI4
ASGNI4
line 951
;951: nodetable[nodenum].weight = nodetable[i].weight+1;
ADDRLP4 17664
CNSTI4 5
ASGNI4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17664
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 17664
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
INDIRF4
CNSTF4 1065353216
ADDF4
ASGNF4
line 952
;952: nodetable[nodenum].neighbornum = i;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+28
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 953
;953: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50)
ADDRLP4 17668
CNSTI4 5
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 17668
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17668
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
SUBF4
CNSTF4 1112014848
LEF4 $412
line 954
;954: { //if there's a big drop, make sure we know we can't just magically fly back up
line 955
;955: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+24
ADDP4
CNSTI4 16384
ASGNI4
line 956
;956: }
LABELV $412
line 957
;957: nodenum++;
ADDRLP4 17672
ADDRGP4 nodenum
ASGNP4
ADDRLP4 17672
INDIRP4
ADDRLP4 17672
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 958
;958: cancontinue = 1;
ADDRLP4 17532
CNSTI4 1
ASGNI4
line 959
;959: }
LABELV $404
line 961
;960:
;961: if (nodenum >= MAX_NODETABLE_SIZE)
ADDRGP4 nodenum
INDIRI4
CNSTI4 4096
LTI4 $417
line 962
;962: {
line 963
;963: break; //failure
ADDRGP4 $352
JUMPV
LABELV $417
line 966
;964: }
;965:
;966: VectorCopy(nodetable[i].origin, testspot);
ADDRLP4 4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
INDIRB
ASGNB 12
line 967
;967: testspot[1] -= TABLE_BRANCH_DISTANCE;
ADDRLP4 4+4
ADDRLP4 4+4
INDIRF4
CNSTF4 1107296256
SUBF4
ASGNF4
line 969
;968:
;969: VectorCopy(testspot, starttrace);
ADDRLP4 1096
ADDRLP4 4
INDIRB
ASGNB 12
line 971
;970:
;971: starttrace[2] -= 4096;
ADDRLP4 1096+8
ADDRLP4 1096+8
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 973
;972:
;973: trap_Trace(&tr, testspot, NULL, NULL, starttrace, -1, MASK_SOLID);
ADDRLP4 16
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 17660
CNSTP4 0
ASGNP4
ADDRLP4 17660
INDIRP4
ARGP4
ADDRLP4 17660
INDIRP4
ARGP4
ADDRLP4 1096
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 975
;974:
;975: testspot[2] = tr.endpos[2]+baseheight;
ADDRLP4 4+8
ADDRLP4 16+12+8
INDIRF4
ADDRLP4 1144
INDIRF4
ADDF4
ASGNF4
line 977
;976:
;977: if (!NodeHere(testspot) && !tr.startsolid && !tr.allsolid && CanGetToVector(nodetable[i].origin, testspot, mins, maxs))
ADDRLP4 4
ARGP4
ADDRLP4 17664
ADDRGP4 NodeHere
CALLI4
ASGNI4
ADDRLP4 17668
CNSTI4 0
ASGNI4
ADDRLP4 17664
INDIRI4
ADDRLP4 17668
INDIRI4
NEI4 $424
ADDRLP4 16+4
INDIRI4
ADDRLP4 17668
INDIRI4
NEI4 $424
ADDRLP4 16
INDIRI4
ADDRLP4 17668
INDIRI4
NEI4 $424
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17672
ADDRGP4 CanGetToVector
CALLI4
ASGNI4
ADDRLP4 17672
INDIRI4
CNSTI4 0
EQI4 $424
line 978
;978: {
line 979
;979: VectorCopy(testspot, nodetable[nodenum].origin);
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ADDRLP4 4
INDIRB
ASGNB 12
line 980
;980: nodetable[nodenum].inuse = 1;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+12
ADDP4
CNSTI4 1
ASGNI4
line 981
;981: nodetable[nodenum].index = nodenum;
ADDRLP4 17676
ADDRGP4 nodenum
INDIRI4
ASGNI4
ADDRLP4 17676
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+16
ADDP4
ADDRLP4 17676
INDIRI4
ASGNI4
line 982
;982: nodetable[nodenum].weight = nodetable[i].weight+1;
ADDRLP4 17680
CNSTI4 5
ASGNI4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17680
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 17680
INDIRI4
LSHI4
ADDRGP4 nodetable+20
ADDP4
INDIRF4
CNSTF4 1065353216
ADDF4
ASGNF4
line 983
;983: nodetable[nodenum].neighbornum = i;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+28
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 984
;984: if ((nodetable[i].origin[2] - nodetable[nodenum].origin[2]) > 50)
ADDRLP4 17684
CNSTI4 5
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 17684
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
ADDRGP4 nodenum
INDIRI4
ADDRLP4 17684
INDIRI4
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
SUBF4
CNSTF4 1112014848
LEF4 $432
line 985
;985: { //if there's a big drop, make sure we know we can't just magically fly back up
line 986
;986: nodetable[nodenum].flags = WPFLAG_ONEWAY_FWD;
ADDRGP4 nodenum
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+24
ADDP4
CNSTI4 16384
ASGNI4
line 987
;987: }
LABELV $432
line 988
;988: nodenum++;
ADDRLP4 17688
ADDRGP4 nodenum
ASGNP4
ADDRLP4 17688
INDIRP4
ADDRLP4 17688
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 989
;989: cancontinue = 1;
ADDRLP4 17532
CNSTI4 1
ASGNI4
line 990
;990: }
LABELV $424
line 992
;991:
;992: if (nodenum >= MAX_NODETABLE_SIZE)
ADDRGP4 nodenum
INDIRI4
CNSTI4 4096
LTI4 $437
line 993
;993: {
line 994
;994: break; //failure
ADDRGP4 $352
JUMPV
LABELV $437
line 997
;995: }
;996:
;997: extendednodes[i] = 1;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 1148
ADDP4
CNSTI4 1
ASGNI4
line 998
;998: }
LABELV $353
line 1000
;999:
;1000: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1001
;1001: }
LABELV $351
line 859
ADDRLP4 0
INDIRI4
ADDRLP4 17536
INDIRI4
LTI4 $350
LABELV $352
line 1002
;1002: }
LABELV $348
line 853
ADDRGP4 nodenum
INDIRI4
CNSTI4 4096
GEI4 $440
ADDRLP4 17596
CNSTI4 0
ASGNI4
ADDRLP4 17556
INDIRI4
ADDRLP4 17596
INDIRI4
NEI4 $440
ADDRLP4 17532
INDIRI4
ADDRLP4 17596
INDIRI4
NEI4 $347
LABELV $440
line 1004
;1003:
;1004: if (!foundit)
ADDRLP4 17556
INDIRI4
CNSTI4 0
NEI4 $441
line 1005
;1005: {
line 1006
;1006: G_Printf(S_COLOR_RED "Could not link %i to %i, unreachable by node branching.\n", startindex, endindex);
ADDRGP4 $443
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 1007
;1007: gWPArray[startindex]->flags |= WPFLAG_ONEWAY_FWD;
ADDRLP4 17600
ADDRFP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 17600
INDIRP4
ADDRLP4 17600
INDIRP4
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 1008
;1008: gWPArray[endindex]->flags |= WPFLAG_ONEWAY_BACK;
ADDRLP4 17604
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 17604
INDIRP4
ADDRLP4 17604
INDIRP4
INDIRI4
CNSTI4 32768
BORI4
ASGNI4
line 1009
;1009: G_Printf(S_COLOR_YELLOW "Since points cannot be connected, point %i has been flagged as only-forward and point %i has been flagged as only-backward.\n", startindex, endindex);
ADDRGP4 $444
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 1022
;1010:
;1011: /*while (nodenum >= 0)
;1012: {
;1013: if (nodetable[nodenum].origin[0] || nodetable[nodenum].origin[1] || nodetable[nodenum].origin[2])
;1014: {
;1015: CreateNewWP(nodetable[nodenum].origin, nodetable[nodenum].flags);
;1016: }
;1017:
;1018: nodenum--;
;1019: }*/
;1020: //The above code transfers nodes into the "rendered" waypoint array. Strictly for debugging.
;1021:
;1022: return 0;
CNSTI4 0
RETI4
ADDRGP4 $324
JUMPV
LABELV $441
line 1025
;1023: }
;1024:
;1025: i = successnodeindex;
ADDRLP4 0
ADDRLP4 17560
INDIRI4
ASGNI4
line 1026
;1026: insertindex = startindex;
ADDRLP4 17568
ADDRFP4 0
INDIRI4
ASGNI4
line 1027
;1027: failsafe = 0;
ADDRLP4 17564
CNSTI4 0
ASGNI4
line 1028
;1028: VectorCopy(gWPArray[startindex]->origin, validspotpos);
ADDRLP4 17544
ADDRFP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
INDIRB
ASGNB 12
ADDRGP4 $446
JUMPV
LABELV $445
line 1031
;1029:
;1030: while (failsafe < MAX_NODETABLE_SIZE && i < MAX_NODETABLE_SIZE && i >= 0)
;1031: {
line 1032
;1032: VectorSubtract(validspotpos, nodetable[i].origin, a);
ADDRLP4 17600
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ASGNI4
ADDRLP4 1132
ADDRLP4 17544
INDIRF4
ADDRLP4 17600
INDIRI4
ADDRGP4 nodetable
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1132+4
ADDRLP4 17544+4
INDIRF4
ADDRLP4 17600
INDIRI4
ADDRGP4 nodetable+4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1132+8
ADDRLP4 17544+8
INDIRF4
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1033
;1033: if (!nodetable[nodetable[i].neighbornum].inuse || !CanGetToVectorTravel(validspotpos, /*nodetable[nodetable[i].neighbornum].origin*/nodetable[i].origin, mins, maxs) || VectorLength(a) > 256 || (!CanGetToVectorTravel(validspotpos, gWPArray[endindex]->origin, mins, maxs) && CanGetToVectorTravel(nodetable[i].origin, gWPArray[endindex]->origin, mins, maxs)) )
ADDRLP4 17604
CNSTI4 5
ASGNI4
ADDRLP4 17608
ADDRLP4 0
INDIRI4
ADDRLP4 17604
INDIRI4
LSHI4
ASGNI4
ADDRLP4 17608
INDIRI4
ADDRGP4 nodetable+28
ADDP4
INDIRI4
ADDRLP4 17604
INDIRI4
LSHI4
ADDRGP4 nodetable+12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $460
ADDRLP4 17544
ARGP4
ADDRLP4 17608
INDIRI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17612
ADDRGP4 CanGetToVectorTravel
CALLI4
ASGNI4
ADDRLP4 17612
INDIRI4
CNSTI4 0
EQI4 $460
ADDRLP4 1132
ARGP4
ADDRLP4 17616
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 17616
INDIRF4
CNSTF4 1132462080
GTF4 $460
ADDRLP4 17544
ARGP4
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17620
ADDRGP4 CanGetToVectorTravel
CALLI4
ASGNI4
ADDRLP4 17620
INDIRI4
CNSTI4 0
NEI4 $454
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 1108
ARGP4
ADDRLP4 1120
ARGP4
ADDRLP4 17624
ADDRGP4 CanGetToVectorTravel
CALLI4
ASGNI4
ADDRLP4 17624
INDIRI4
CNSTI4 0
EQI4 $454
LABELV $460
line 1034
;1034: {
line 1035
;1035: if (!CreateNewWP_InTrail(nodetable[i].origin, nodetable[i].flags, insertindex))
ADDRLP4 17628
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ASGNI4
ADDRLP4 17628
INDIRI4
ADDRGP4 nodetable
ADDP4
ARGP4
ADDRLP4 17628
INDIRI4
ADDRGP4 nodetable+24
ADDP4
INDIRI4
ARGI4
ADDRLP4 17568
INDIRI4
ARGI4
ADDRLP4 17632
ADDRGP4 CreateNewWP_InTrail
CALLI4
ASGNI4
ADDRLP4 17632
INDIRI4
CNSTI4 0
NEI4 $461
line 1036
;1036: {
line 1037
;1037: G_Printf(S_COLOR_RED "Could not link %i to %i, waypoint limit hit.\n", startindex, endindex);
ADDRGP4 $464
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 1038
;1038: return 0;
CNSTI4 0
RETI4
ADDRGP4 $324
JUMPV
LABELV $461
line 1041
;1039: }
;1040:
;1041: VectorCopy(nodetable[i].origin, validspotpos);
ADDRLP4 17544
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable
ADDP4
INDIRB
ASGNB 12
line 1042
;1042: }
LABELV $454
line 1044
;1043:
;1044: if (i == 0)
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $465
line 1045
;1045: {
line 1046
;1046: break;
ADDRGP4 $447
JUMPV
LABELV $465
line 1049
;1047: }
;1048:
;1049: i = nodetable[i].neighbornum;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 5
LSHI4
ADDRGP4 nodetable+28
ADDP4
INDIRI4
ASGNI4
line 1051
;1050:
;1051: failsafe++;
ADDRLP4 17564
ADDRLP4 17564
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1052
;1052: }
LABELV $446
line 1030
ADDRLP4 17600
CNSTI4 4096
ASGNI4
ADDRLP4 17564
INDIRI4
ADDRLP4 17600
INDIRI4
GEI4 $469
ADDRLP4 0
INDIRI4
ADDRLP4 17600
INDIRI4
GEI4 $469
ADDRLP4 0
INDIRI4
CNSTI4 0
GEI4 $445
LABELV $469
LABELV $447
line 1054
;1053:
;1054: G_Printf(S_COLOR_YELLOW "Finished connecting %i to %i.\n", startindex, endindex);
ADDRGP4 $470
ARGP4
ADDRFP4 0
INDIRI4
ARGI4
ADDRFP4 4
INDIRI4
ARGI4
ADDRGP4 G_Printf
CALLV
pop
line 1056
;1055:
;1056: return 1;
CNSTI4 1
RETI4
LABELV $324
endproc ConnectTrail 17692 28
export OpposingEnds
proc OpposingEnds 44 0
line 1060
;1057:}
;1058:
;1059:int OpposingEnds(int start, int end)
;1060:{
line 1061
;1061: if (!gWPArray[start] || !gWPArray[start]->inuse || !gWPArray[end] || !gWPArray[end]->inuse)
ADDRLP4 0
CNSTI4 2
ASGNI4
ADDRLP4 4
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 8
ADDRFP4 0
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 12
CNSTU4 0
ASGNU4
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 12
INDIRU4
EQU4 $476
ADDRLP4 16
CNSTI4 12
ASGNI4
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 8
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $476
ADDRLP4 24
ADDRFP4 4
INDIRI4
ADDRLP4 0
INDIRI4
LSHI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CVPU4 4
ADDRLP4 12
INDIRU4
EQU4 $476
ADDRLP4 24
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $472
LABELV $476
line 1062
;1062: {
line 1063
;1063: return 0;
CNSTI4 0
RETI4
ADDRGP4 $471
JUMPV
LABELV $472
line 1066
;1064: }
;1065:
;1066: if ((gWPArray[start]->flags & WPFLAG_ONEWAY_FWD) &&
ADDRLP4 28
CNSTI4 2
ASGNI4
ADDRLP4 32
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 36
CNSTI4 28
ASGNI4
ADDRLP4 40
CNSTI4 0
ASGNI4
ADDRFP4 0
INDIRI4
ADDRLP4 28
INDIRI4
LSHI4
ADDRLP4 32
INDIRP4
ADDP4
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRI4
CNSTI4 16384
BANDI4
ADDRLP4 40
INDIRI4
EQI4 $477
ADDRFP4 4
INDIRI4
ADDRLP4 28
INDIRI4
LSHI4
ADDRLP4 32
INDIRP4
ADDP4
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRI4
CNSTI4 32768
BANDI4
ADDRLP4 40
INDIRI4
EQI4 $477
line 1068
;1067: (gWPArray[end]->flags & WPFLAG_ONEWAY_BACK))
;1068: {
line 1069
;1069: return 1;
CNSTI4 1
RETI4
ADDRGP4 $471
JUMPV
LABELV $477
line 1072
;1070: }
;1071:
;1072: return 0;
CNSTI4 0
RETI4
LABELV $471
endproc OpposingEnds 44 0
export DoorBlockingSection
proc DoorBlockingSection 1144 28
line 1076
;1073:}
;1074:
;1075:int DoorBlockingSection(int start, int end)
;1076:{ //if a door blocks the trail, we'll just have to assume the points on each side are in visibility when it's open
line 1081
;1077: trace_t tr;
;1078: gentity_t *testdoor;
;1079: int start_trace_index;
;1080:
;1081: if (!gWPArray[start] || !gWPArray[start]->inuse || !gWPArray[end] || !gWPArray[end]->inuse)
ADDRLP4 1088
CNSTI4 2
ASGNI4
ADDRLP4 1092
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 1096
ADDRFP4 0
INDIRI4
ADDRLP4 1088
INDIRI4
LSHI4
ADDRLP4 1092
INDIRP4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1100
CNSTU4 0
ASGNU4
ADDRLP4 1096
INDIRP4
CVPU4 4
ADDRLP4 1100
INDIRU4
EQU4 $484
ADDRLP4 1104
CNSTI4 12
ASGNI4
ADDRLP4 1108
CNSTI4 0
ASGNI4
ADDRLP4 1096
INDIRP4
ADDRLP4 1104
INDIRI4
ADDP4
INDIRI4
ADDRLP4 1108
INDIRI4
EQI4 $484
ADDRLP4 1112
ADDRFP4 4
INDIRI4
ADDRLP4 1088
INDIRI4
LSHI4
ADDRLP4 1092
INDIRP4
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1112
INDIRP4
CVPU4 4
ADDRLP4 1100
INDIRU4
EQU4 $484
ADDRLP4 1112
INDIRP4
ADDRLP4 1104
INDIRI4
ADDP4
INDIRI4
ADDRLP4 1108
INDIRI4
NEI4 $480
LABELV $484
line 1082
;1082: {
line 1083
;1083: return 0;
CNSTI4 0
RETI4
ADDRGP4 $479
JUMPV
LABELV $480
line 1086
;1084: }
;1085:
;1086: trap_Trace(&tr, gWPArray[start]->origin, NULL, NULL, gWPArray[end]->origin, -1, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1116
CNSTI4 2
ASGNI4
ADDRLP4 1120
ADDRGP4 gWPArray
ASGNP4
ADDRFP4 0
INDIRI4
ADDRLP4 1116
INDIRI4
LSHI4
ADDRLP4 1120
INDIRP4
ADDP4
INDIRP4
ARGP4
ADDRLP4 1124
CNSTP4 0
ASGNP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ADDRLP4 1116
INDIRI4
LSHI4
ADDRLP4 1120
INDIRP4
ADDP4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1088
;1087:
;1088: if (tr.fraction == 1)
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $485
line 1089
;1089: {
line 1090
;1090: return 0;
CNSTI4 0
RETI4
ADDRGP4 $479
JUMPV
LABELV $485
line 1093
;1091: }
;1092:
;1093: testdoor = &g_entities[tr.entityNum];
ADDRLP4 1080
CNSTI4 828
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1095
;1094:
;1095: if (!testdoor)
ADDRLP4 1080
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $489
line 1096
;1096: {
line 1097
;1097: return 0;
CNSTI4 0
RETI4
ADDRGP4 $479
JUMPV
LABELV $489
line 1100
;1098: }
;1099:
;1100: if (!strstr(testdoor->classname, "func_"))
ADDRLP4 1080
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $493
ARGP4
ADDRLP4 1128
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 1128
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $491
line 1101
;1101: {
line 1102
;1102: return 0;
CNSTI4 0
RETI4
ADDRGP4 $479
JUMPV
LABELV $491
line 1105
;1103: }
;1104:
;1105: start_trace_index = tr.entityNum;
ADDRLP4 1084
ADDRLP4 0+52
INDIRI4
ASGNI4
line 1107
;1106:
;1107: trap_Trace(&tr, gWPArray[end]->origin, NULL, NULL, gWPArray[start]->origin, -1, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1132
CNSTI4 2
ASGNI4
ADDRLP4 1136
ADDRGP4 gWPArray
ASGNP4
ADDRFP4 4
INDIRI4
ADDRLP4 1132
INDIRI4
LSHI4
ADDRLP4 1136
INDIRP4
ADDP4
INDIRP4
ARGP4
ADDRLP4 1140
CNSTP4 0
ASGNP4
ADDRLP4 1140
INDIRP4
ARGP4
ADDRLP4 1140
INDIRP4
ARGP4
ADDRFP4 0
INDIRI4
ADDRLP4 1132
INDIRI4
LSHI4
ADDRLP4 1136
INDIRP4
ADDP4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1109
;1108:
;1109: if (tr.fraction == 1)
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $495
line 1110
;1110: {
line 1111
;1111: return 0;
CNSTI4 0
RETI4
ADDRGP4 $479
JUMPV
LABELV $495
line 1114
;1112: }
;1113:
;1114: if (start_trace_index == tr.entityNum)
ADDRLP4 1084
INDIRI4
ADDRLP4 0+52
INDIRI4
NEI4 $498
line 1115
;1115: {
line 1116
;1116: return 1;
CNSTI4 1
RETI4
ADDRGP4 $479
JUMPV
LABELV $498
line 1119
;1117: }
;1118:
;1119: return 0;
CNSTI4 0
RETI4
LABELV $479
endproc DoorBlockingSection 1144 28
export RepairPaths
proc RepairPaths 108 12
line 1123
;1120:}
;1121:
;1122:int RepairPaths(void)
;1123:{
line 1128
;1124: int i;
;1125: int ctRet;
;1126: vec3_t a;
;1127:
;1128: if (!gWPNum)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 0
NEI4 $502
line 1129
;1129: {
line 1130
;1130: return 0;
CNSTI4 0
RETI4
ADDRGP4 $501
JUMPV
LABELV $502
line 1133
;1131: }
;1132:
;1133: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1135
;1134:
;1135: trap_Cvar_Update(&bot_wp_distconnect);
ADDRGP4 bot_wp_distconnect
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 1136
;1136: trap_Cvar_Update(&bot_wp_visconnect);
ADDRGP4 bot_wp_visconnect
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
ADDRGP4 $505
JUMPV
LABELV $504
line 1139
;1137:
;1138: while (i < gWPNum)
;1139: {
line 1140
;1140: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i+1] && gWPArray[i+1]->inuse)
ADDRLP4 20
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 24
ADDRLP4 20
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 28
CNSTU4 0
ASGNU4
ADDRLP4 24
INDIRP4
CVPU4 4
ADDRLP4 28
INDIRU4
EQU4 $507
ADDRLP4 32
CNSTI4 12
ASGNI4
ADDRLP4 36
CNSTI4 0
ASGNI4
ADDRLP4 24
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
ADDRLP4 36
INDIRI4
EQI4 $507
ADDRLP4 20
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 28
INDIRU4
EQU4 $507
ADDRLP4 20
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 32
INDIRI4
ADDP4
INDIRI4
ADDRLP4 36
INDIRI4
EQI4 $507
line 1141
;1141: {
line 1142
;1142: VectorSubtract(gWPArray[i]->origin, gWPArray[i+1]->origin, a);
ADDRLP4 40
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 44
ADDRLP4 40
INDIRI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 4
ADDRLP4 44
INDIRP4
INDIRP4
INDIRF4
ADDRLP4 40
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 48
CNSTI4 4
ASGNI4
ADDRLP4 4+4
ADDRLP4 44
INDIRP4
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRF4
ADDRLP4 40
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 52
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 56
CNSTI4 8
ASGNI4
ADDRLP4 4+8
ADDRLP4 52
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRF4
ADDRLP4 52
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1144
;1143:
;1144: if (!(gWPArray[i+1]->flags & WPFLAG_NOVIS) &&
ADDRLP4 64
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 68
CNSTI4 28
ASGNI4
ADDRLP4 72
CNSTI4 0
ASGNI4
ADDRLP4 64
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 68
INDIRI4
ADDP4
INDIRI4
CNSTI4 1024
BANDI4
ADDRLP4 72
INDIRI4
NEI4 $516
ADDRLP4 64
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 68
INDIRI4
ADDP4
INDIRI4
CNSTI4 16
BANDI4
ADDRLP4 72
INDIRI4
NEI4 $516
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ARGI4
ADDRLP4 76
ADDRGP4 OpposingEnds
CALLI4
ASGNI4
ADDRLP4 76
INDIRI4
CNSTI4 0
NEI4 $516
ADDRLP4 4
ARGP4
ADDRLP4 80
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 80
INDIRF4
CNSTF4 1137180672
LEF4 $524
ADDRGP4 bot_wp_distconnect+8
INDIRF4
CNSTF4 0
NEF4 $523
LABELV $524
ADDRLP4 84
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 84
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 84
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
ADDRLP4 88
ADDRGP4 OrgVisible
CALLI4
ASGNI4
ADDRLP4 88
INDIRI4
CNSTI4 0
NEI4 $516
ADDRGP4 bot_wp_visconnect+8
INDIRF4
CNSTF4 0
EQF4 $516
LABELV $523
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ARGI4
ADDRLP4 96
ADDRGP4 DoorBlockingSection
CALLI4
ASGNI4
ADDRLP4 96
INDIRI4
CNSTI4 0
NEI4 $516
line 1149
;1145: !(gWPArray[i+1]->flags & WPFLAG_JUMP) && //don't calculate on jump points because they might not always want to be visible (in cases of force jumping)
;1146: !OpposingEnds(i, i+1) &&
;1147: ((VectorLength(a) > 400 && bot_wp_distconnect.value) || (!OrgVisible(gWPArray[i]->origin, gWPArray[i+1]->origin, -1) && bot_wp_visconnect.value) ) &&
;1148: !DoorBlockingSection(i, i+1))
;1149: {
line 1150
;1150: ctRet = ConnectTrail(i, i+1);
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ARGI4
ADDRLP4 104
ADDRGP4 ConnectTrail
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 104
INDIRI4
ASGNI4
line 1155
;1151: /*if (!ctRet)
;1152: {
;1153: return 0;
;1154: }*/ //we still want to write it..
;1155: }
LABELV $516
line 1156
;1156: }
LABELV $507
line 1158
;1157:
;1158: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1159
;1159: }
LABELV $505
line 1138
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $504
line 1161
;1160:
;1161: return 1;
CNSTI4 1
RETI4
LABELV $501
endproc RepairPaths 108 12
export OrgVisibleCurve
proc OrgVisibleCurve 1100 28
line 1165
;1162:}
;1163:
;1164:int OrgVisibleCurve(vec3_t org1, vec3_t mins, vec3_t maxs, vec3_t org2, int ignore)
;1165:{
line 1169
;1166: trace_t tr;
;1167: vec3_t evenorg1;
;1168:
;1169: VectorCopy(org1, evenorg1);
ADDRLP4 1080
ADDRFP4 0
INDIRP4
INDIRB
ASGNB 12
line 1170
;1170: evenorg1[2] = org2[2];
ADDRLP4 1080+8
ADDRFP4 12
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ASGNF4
line 1172
;1171:
;1172: trap_Trace(&tr, evenorg1, mins, maxs, org2, ignore, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1080
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 12
INDIRP4
ARGP4
ADDRFP4 16
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1174
;1173:
;1174: if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid)
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $527
ADDRLP4 1092
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1092
INDIRI4
NEI4 $527
ADDRLP4 0
INDIRI4
ADDRLP4 1092
INDIRI4
NEI4 $527
line 1175
;1175: {
line 1176
;1176: trap_Trace(&tr, evenorg1, mins, maxs, org1, ignore, MASK_SOLID);
ADDRLP4 0
ARGP4
ADDRLP4 1080
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 16
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1178
;1177:
;1178: if (tr.fraction == 1 && !tr.startsolid && !tr.allsolid)
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $531
ADDRLP4 1096
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1096
INDIRI4
NEI4 $531
ADDRLP4 0
INDIRI4
ADDRLP4 1096
INDIRI4
NEI4 $531
line 1179
;1179: {
line 1180
;1180: return 1;
CNSTI4 1
RETI4
ADDRGP4 $525
JUMPV
LABELV $531
line 1182
;1181: }
;1182: }
LABELV $527
line 1184
;1183:
;1184: return 0;
CNSTI4 0
RETI4
LABELV $525
endproc OrgVisibleCurve 1100 28
export CanForceJumpTo
proc CanForceJumpTo 104 20
line 1188
;1185:}
;1186:
;1187:int CanForceJumpTo(int baseindex, int testingindex, float distance)
;1188:{
line 1191
;1189: float heightdif;
;1190: vec3_t xy_base, xy_test, v, mins, maxs;
;1191: wpobject_t *wpBase = gWPArray[baseindex];
ADDRLP4 0
ADDRFP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 1192
;1192: wpobject_t *wpTest = gWPArray[testingindex];
ADDRLP4 4
ADDRFP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 1194
;1193:
;1194: mins[0] = -15;
ADDRLP4 48
CNSTF4 3245342720
ASGNF4
line 1195
;1195: mins[1] = -15;
ADDRLP4 48+4
CNSTF4 3245342720
ASGNF4
line 1196
;1196: mins[2] = -15; //-1
ADDRLP4 48+8
CNSTF4 3245342720
ASGNF4
line 1197
;1197: maxs[0] = 15;
ADDRLP4 60
CNSTF4 1097859072
ASGNF4
line 1198
;1198: maxs[1] = 15;
ADDRLP4 60+4
CNSTF4 1097859072
ASGNF4
line 1199
;1199: maxs[2] = 15; //1
ADDRLP4 60+8
CNSTF4 1097859072
ASGNF4
line 1201
;1200:
;1201: if (!wpBase || !wpBase->inuse || !wpTest || !wpTest->inuse)
ADDRLP4 76
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 76
INDIRU4
EQU4 $544
ADDRLP4 80
CNSTI4 12
ASGNI4
ADDRLP4 84
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 80
INDIRI4
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
EQI4 $544
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 76
INDIRU4
EQU4 $544
ADDRLP4 4
INDIRP4
ADDRLP4 80
INDIRI4
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
NEI4 $540
LABELV $544
line 1202
;1202: {
line 1203
;1203: return 0;
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $540
line 1206
;1204: }
;1205:
;1206: if (distance > 400)
ADDRFP4 8
INDIRF4
CNSTF4 1137180672
LEF4 $545
line 1207
;1207: {
line 1208
;1208: return 0;
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $545
line 1211
;1209: }
;1210:
;1211: VectorCopy(wpBase->origin, xy_base);
ADDRLP4 8
ADDRLP4 0
INDIRP4
INDIRB
ASGNB 12
line 1212
;1212: VectorCopy(wpTest->origin, xy_test);
ADDRLP4 20
ADDRLP4 4
INDIRP4
INDIRB
ASGNB 12
line 1214
;1213:
;1214: xy_base[2] = xy_test[2];
ADDRLP4 8+8
ADDRLP4 20+8
INDIRF4
ASGNF4
line 1216
;1215:
;1216: VectorSubtract(xy_base, xy_test, v);
ADDRLP4 36
ADDRLP4 8
INDIRF4
ADDRLP4 20
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36+4
ADDRLP4 8+4
INDIRF4
ADDRLP4 20+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36+8
ADDRLP4 8+8
INDIRF4
ADDRLP4 20+8
INDIRF4
SUBF4
ASGNF4
line 1218
;1217:
;1218: if (VectorLength(v) > MAX_NEIGHBOR_LINK_DISTANCE)
ADDRLP4 36
ARGP4
ADDRLP4 92
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 92
INDIRF4
CNSTF4 1124073472
LEF4 $555
line 1219
;1219: {
line 1220
;1220: return 0;
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $555
line 1223
;1221: }
;1222:
;1223: if ((int)wpBase->origin[2] < (int)wpTest->origin[2])
ADDRLP4 96
CNSTI4 8
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 96
INDIRI4
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 4
INDIRP4
ADDRLP4 96
INDIRI4
ADDP4
INDIRF4
CVFI4 4
GEI4 $557
line 1224
;1224: {
line 1225
;1225: heightdif = wpTest->origin[2] - wpBase->origin[2];
ADDRLP4 100
CNSTI4 8
ASGNI4
ADDRLP4 32
ADDRLP4 4
INDIRP4
ADDRLP4 100
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
ADDRLP4 100
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1226
;1226: }
ADDRGP4 $558
JUMPV
LABELV $557
line 1228
;1227: else
;1228: {
line 1229
;1229: return 0; //err..
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $558
line 1232
;1230: }
;1231:
;1232: if (heightdif < 128)
ADDRLP4 32
INDIRF4
CNSTF4 1124073472
GEF4 $559
line 1233
;1233: { //don't bother..
line 1234
;1234: return 0;
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $559
line 1237
;1235: }
;1236:
;1237: if (heightdif > 512)
ADDRLP4 32
INDIRF4
CNSTF4 1140850688
LEF4 $561
line 1238
;1238: { //too high
line 1239
;1239: return 0;
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $561
line 1242
;1240: }
;1241:
;1242: if (!OrgVisibleCurve(wpBase->origin, mins, maxs, wpTest->origin, -1))
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 48
ARGP4
ADDRLP4 60
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
ADDRLP4 100
ADDRGP4 OrgVisibleCurve
CALLI4
ASGNI4
ADDRLP4 100
INDIRI4
CNSTI4 0
NEI4 $563
line 1243
;1243: {
line 1244
;1244: return 0;
CNSTI4 0
RETI4
ADDRGP4 $535
JUMPV
LABELV $563
line 1247
;1245: }
;1246:
;1247: if (heightdif > 400)
ADDRLP4 32
INDIRF4
CNSTF4 1137180672
LEF4 $565
line 1248
;1248: {
line 1249
;1249: return 3;
CNSTI4 3
RETI4
ADDRGP4 $535
JUMPV
LABELV $565
line 1251
;1250: }
;1251: else if (heightdif > 256)
ADDRLP4 32
INDIRF4
CNSTF4 1132462080
LEF4 $567
line 1252
;1252: {
line 1253
;1253: return 2;
CNSTI4 2
RETI4
ADDRGP4 $535
JUMPV
LABELV $567
line 1256
;1254: }
;1255: else
;1256: {
line 1257
;1257: return 1;
CNSTI4 1
RETI4
LABELV $535
endproc CanForceJumpTo 104 20
export CalculatePaths
proc CalculatePaths 160 20
line 1262
;1258: }
;1259:}
;1260:
;1261:void CalculatePaths(void)
;1262:{
line 1270
;1263: int i;
;1264: int c;
;1265: int forceJumpable;
;1266: float nLDist;
;1267: vec3_t a;
;1268: vec3_t mins, maxs;
;1269:
;1270: if (!gWPNum)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 0
NEI4 $570
line 1271
;1271: {
line 1272
;1272: return;
ADDRGP4 $569
JUMPV
LABELV $570
line 1275
;1273: }
;1274:
;1275: mins[0] = -15;
ADDRLP4 28
CNSTF4 3245342720
ASGNF4
line 1276
;1276: mins[1] = -15;
ADDRLP4 28+4
CNSTF4 3245342720
ASGNF4
line 1277
;1277: mins[2] = -15; //-1
ADDRLP4 28+8
CNSTF4 3245342720
ASGNF4
line 1278
;1278: maxs[0] = 15;
ADDRLP4 40
CNSTF4 1097859072
ASGNF4
line 1279
;1279: maxs[1] = 15;
ADDRLP4 40+4
CNSTF4 1097859072
ASGNF4
line 1280
;1280: maxs[2] = 15; //1
ADDRLP4 40+8
CNSTF4 1097859072
ASGNF4
line 1283
;1281:
;1282: //now clear out all the neighbor data before we recalculate
;1283: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $577
JUMPV
LABELV $576
line 1286
;1284:
;1285: while (i < gWPNum)
;1286: {
line 1287
;1287: if (gWPArray[i] && gWPArray[i]->inuse && gWPArray[i]->neighbornum)
ADDRLP4 52
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $579
ADDRLP4 56
CNSTI4 0
ASGNI4
ADDRLP4 52
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ADDRLP4 56
INDIRI4
EQI4 $579
ADDRLP4 52
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
ADDRLP4 56
INDIRI4
EQI4 $579
line 1288
;1288: {
ADDRGP4 $582
JUMPV
LABELV $581
line 1290
;1289: while (gWPArray[i]->neighbornum >= 0)
;1290: {
line 1291
;1291: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].num = 0;
ADDRLP4 60
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 60
INDIRP4
CNSTI4 44
ADDP4
ADDP4
CNSTI4 0
ASGNI4
line 1292
;1292: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].forceJumpTo = 0;
ADDRLP4 64
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 64
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 64
INDIRP4
CNSTI4 44
ADDP4
ADDP4
CNSTI4 4
ADDP4
CNSTI4 0
ASGNI4
line 1293
;1293: gWPArray[i]->neighbornum--;
ADDRLP4 68
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
ASGNP4
ADDRLP4 68
INDIRP4
ADDRLP4 68
INDIRP4
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 1294
;1294: }
LABELV $582
line 1289
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 0
GEI4 $581
line 1295
;1295: gWPArray[i]->neighbornum = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
CNSTI4 0
ASGNI4
line 1296
;1296: }
LABELV $579
line 1298
;1297:
;1298: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1299
;1299: }
LABELV $577
line 1285
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $576
line 1301
;1300:
;1301: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $585
JUMPV
LABELV $584
line 1304
;1302:
;1303: while (i < gWPNum)
;1304: {
line 1305
;1305: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 52
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $587
ADDRLP4 52
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $587
line 1306
;1306: {
line 1307
;1307: c = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $590
JUMPV
LABELV $589
line 1310
;1308:
;1309: while (c < gWPNum)
;1310: {
line 1311
;1311: if (gWPArray[c] && gWPArray[c]->inuse && i != c &&
ADDRLP4 60
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $592
ADDRLP4 60
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $592
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $592
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 68
ADDRGP4 NotWithinRange
CALLI4
ASGNI4
ADDRLP4 68
INDIRI4
CNSTI4 0
EQI4 $592
line 1313
;1312: NotWithinRange(i, c))
;1313: {
line 1314
;1314: VectorSubtract(gWPArray[i]->origin, gWPArray[c]->origin, a);
ADDRLP4 72
CNSTI4 2
ASGNI4
ADDRLP4 76
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 80
ADDRLP4 0
INDIRI4
ADDRLP4 72
INDIRI4
LSHI4
ADDRLP4 76
INDIRP4
ADDP4
ASGNP4
ADDRLP4 84
ADDRLP4 4
INDIRI4
ADDRLP4 72
INDIRI4
LSHI4
ADDRLP4 76
INDIRP4
ADDP4
ASGNP4
ADDRLP4 12
ADDRLP4 80
INDIRP4
INDIRP4
INDIRF4
ADDRLP4 84
INDIRP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 88
CNSTI4 4
ASGNI4
ADDRLP4 12+4
ADDRLP4 80
INDIRP4
INDIRP4
ADDRLP4 88
INDIRI4
ADDP4
INDIRF4
ADDRLP4 84
INDIRP4
INDIRP4
ADDRLP4 88
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 92
CNSTI4 2
ASGNI4
ADDRLP4 96
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 100
CNSTI4 8
ASGNI4
ADDRLP4 12+8
ADDRLP4 0
INDIRI4
ADDRLP4 92
INDIRI4
LSHI4
ADDRLP4 96
INDIRP4
ADDP4
INDIRP4
ADDRLP4 100
INDIRI4
ADDP4
INDIRF4
ADDRLP4 4
INDIRI4
ADDRLP4 92
INDIRI4
LSHI4
ADDRLP4 96
INDIRP4
ADDP4
INDIRP4
ADDRLP4 100
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1316
;1315:
;1316: nLDist = VectorLength(a);
ADDRLP4 12
ARGP4
ADDRLP4 104
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 24
ADDRLP4 104
INDIRF4
ASGNF4
line 1317
;1317: forceJumpable = CanForceJumpTo(i, c, nLDist);
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 24
INDIRF4
ARGF4
ADDRLP4 108
ADDRGP4 CanForceJumpTo
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 108
INDIRI4
ASGNI4
line 1319
;1318:
;1319: if ((nLDist < MAX_NEIGHBOR_LINK_DISTANCE || forceJumpable) &&
ADDRLP4 24
INDIRF4
CNSTF4 1124073472
LTF4 $598
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $596
LABELV $598
ADDRLP4 112
CNSTI4 2
ASGNI4
ADDRLP4 116
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 120
CNSTI4 8
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 112
INDIRI4
LSHI4
ADDRLP4 116
INDIRP4
ADDP4
INDIRP4
ADDRLP4 120
INDIRI4
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 4
INDIRI4
ADDRLP4 112
INDIRI4
LSHI4
ADDRLP4 116
INDIRP4
ADDP4
INDIRP4
ADDRLP4 120
INDIRI4
ADDP4
INDIRF4
CVFI4 4
EQI4 $599
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $596
LABELV $599
ADDRLP4 124
CNSTI4 2
ASGNI4
ADDRLP4 128
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 0
INDIRI4
ADDRLP4 124
INDIRI4
LSHI4
ADDRLP4 128
INDIRP4
ADDP4
INDIRP4
ARGP4
ADDRLP4 28
ARGP4
ADDRLP4 40
ARGP4
ADDRLP4 4
INDIRI4
ADDRLP4 124
INDIRI4
LSHI4
ADDRLP4 128
INDIRP4
ADDP4
INDIRP4
ARGP4
CNSTI4 -1
ARGI4
ADDRLP4 132
ADDRGP4 OrgVisibleBox
CALLI4
ASGNI4
ADDRLP4 136
CNSTI4 0
ASGNI4
ADDRLP4 132
INDIRI4
ADDRLP4 136
INDIRI4
NEI4 $600
ADDRLP4 8
INDIRI4
ADDRLP4 136
INDIRI4
EQI4 $596
LABELV $600
line 1322
;1320: ((int)gWPArray[i]->origin[2] == (int)gWPArray[c]->origin[2] || forceJumpable) &&
;1321: (OrgVisibleBox(gWPArray[i]->origin, mins, maxs, gWPArray[c]->origin, -1) || forceJumpable))
;1322: {
line 1323
;1323: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].num = c;
ADDRLP4 140
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 140
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 140
INDIRP4
CNSTI4 44
ADDP4
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 1324
;1324: if (forceJumpable && ((int)gWPArray[i]->origin[2] != (int)gWPArray[c]->origin[2] || nLDist < MAX_NEIGHBOR_LINK_DISTANCE))
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $601
ADDRLP4 144
CNSTI4 2
ASGNI4
ADDRLP4 148
ADDRGP4 gWPArray
ASGNP4
ADDRLP4 152
CNSTI4 8
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 144
INDIRI4
LSHI4
ADDRLP4 148
INDIRP4
ADDP4
INDIRP4
ADDRLP4 152
INDIRI4
ADDP4
INDIRF4
CVFI4 4
ADDRLP4 4
INDIRI4
ADDRLP4 144
INDIRI4
LSHI4
ADDRLP4 148
INDIRP4
ADDP4
INDIRP4
ADDRLP4 152
INDIRI4
ADDP4
INDIRF4
CVFI4 4
NEI4 $603
ADDRLP4 24
INDIRF4
CNSTF4 1124073472
GEF4 $601
LABELV $603
line 1325
;1325: {
line 1326
;1326: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].forceJumpTo = 999;//forceJumpable; //FJSR
ADDRLP4 156
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 156
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 156
INDIRP4
CNSTI4 44
ADDP4
ADDP4
CNSTI4 4
ADDP4
CNSTI4 999
ASGNI4
line 1327
;1327: }
ADDRGP4 $602
JUMPV
LABELV $601
line 1329
;1328: else
;1329: {
line 1330
;1330: gWPArray[i]->neighbors[gWPArray[i]->neighbornum].forceJumpTo = 0;
ADDRLP4 156
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 156
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 156
INDIRP4
CNSTI4 44
ADDP4
ADDP4
CNSTI4 4
ADDP4
CNSTI4 0
ASGNI4
line 1331
;1331: }
LABELV $602
line 1332
;1332: gWPArray[i]->neighbornum++;
ADDRLP4 156
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
ASGNP4
ADDRLP4 156
INDIRP4
ADDRLP4 156
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1333
;1333: }
LABELV $596
line 1335
;1334:
;1335: if (gWPArray[i]->neighbornum >= MAX_NEIGHBOR_SIZE)
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 32
LTI4 $604
line 1336
;1336: {
line 1337
;1337: break;
ADDRGP4 $591
JUMPV
LABELV $604
line 1339
;1338: }
;1339: }
LABELV $592
line 1340
;1340: c++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1341
;1341: }
LABELV $590
line 1309
ADDRLP4 4
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $589
LABELV $591
line 1342
;1342: }
LABELV $587
line 1343
;1343: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1344
;1344: }
LABELV $585
line 1303
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $584
line 1345
;1345:}
LABELV $569
endproc CalculatePaths 160 20
export GetObjectThatTargets
proc GetObjectThatTargets 8 12
line 1348
;1346:
;1347:gentity_t *GetObjectThatTargets(gentity_t *ent)
;1348:{
line 1349
;1349: gentity_t *next = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
line 1351
;1350:
;1351: if (!ent->targetname)
ADDRFP4 0
INDIRP4
CNSTI4 588
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $607
line 1352
;1352: {
line 1353
;1353: return NULL;
CNSTP4 0
RETP4
ADDRGP4 $606
JUMPV
LABELV $607
line 1356
;1354: }
;1355:
;1356: next = G_Find( next, FOFS(target), ent->targetname );
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 584
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 588
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 G_Find
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 1358
;1357:
;1358: if (next)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $609
line 1359
;1359: {
line 1360
;1360: return next;
ADDRLP4 0
INDIRP4
RETP4
ADDRGP4 $606
JUMPV
LABELV $609
line 1363
;1361: }
;1362:
;1363: return NULL;
CNSTP4 0
RETP4
LABELV $606
endproc GetObjectThatTargets 8 12
export CalculateSagaGoals
proc CalculateSagaGoals 92 8
line 1367
;1364:}
;1365:
;1366:void CalculateSagaGoals(void)
;1367:{
line 1368
;1368: int i = 0;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 1369
;1369: int looptracker = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1370
;1370: int wpindex = 0;
ADDRLP4 20
CNSTI4 0
ASGNI4
line 1373
;1371: vec3_t dif;
;1372: gentity_t *ent;
;1373: gentity_t *tent = NULL, *t2ent = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
ADDRLP4 4
CNSTP4 0
ASGNP4
ADDRGP4 $613
JUMPV
LABELV $612
line 1376
;1374:
;1375: while (i < MAX_GENTITIES)
;1376: {
line 1377
;1377: ent = &g_entities[i];
ADDRLP4 12
CNSTI4 828
ADDRLP4 16
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1379
;1378:
;1379: tent = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
line 1381
;1380:
;1381: if (ent && ent->classname && strcmp(ent->classname, "info_saga_objective") == 0)
ADDRLP4 40
CNSTU4 0
ASGNU4
ADDRLP4 12
INDIRP4
CVPU4 4
ADDRLP4 40
INDIRU4
EQU4 $615
ADDRLP4 44
ADDRLP4 12
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
CVPU4 4
ADDRLP4 40
INDIRU4
EQU4 $615
ADDRLP4 44
INDIRP4
ARGP4
ADDRGP4 $617
ARGP4
ADDRLP4 48
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
NEI4 $615
line 1382
;1382: {
line 1383
;1383: tent = ent;
ADDRLP4 0
ADDRLP4 12
INDIRP4
ASGNP4
line 1384
;1384: t2ent = GetObjectThatTargets(tent);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 GetObjectThatTargets
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 52
INDIRP4
ASGNP4
line 1385
;1385: looptracker = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $619
JUMPV
LABELV $618
line 1388
;1386:
;1387: while (t2ent && looptracker < 2048)
;1388: { //looptracker keeps us from getting stuck in case something is set up weird on this map
line 1389
;1389: tent = t2ent;
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 1390
;1390: t2ent = GetObjectThatTargets(tent);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 56
ADDRGP4 GetObjectThatTargets
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 56
INDIRP4
ASGNP4
line 1391
;1391: looptracker++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1392
;1392: }
LABELV $619
line 1387
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $621
ADDRLP4 8
INDIRI4
CNSTI4 2048
LTI4 $618
LABELV $621
line 1394
;1393:
;1394: if (looptracker >= 2048)
ADDRLP4 8
INDIRI4
CNSTI4 2048
LTI4 $622
line 1395
;1395: { //something unpleasent has happened
line 1396
;1396: tent = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
line 1397
;1397: break;
ADDRGP4 $614
JUMPV
LABELV $622
line 1399
;1398: }
;1399: }
LABELV $615
line 1401
;1400:
;1401: if (tent && ent && tent != ent)
ADDRLP4 52
ADDRLP4 0
INDIRP4
CVPU4 4
ASGNU4
ADDRLP4 56
CNSTU4 0
ASGNU4
ADDRLP4 52
INDIRU4
ADDRLP4 56
INDIRU4
EQU4 $624
ADDRLP4 60
ADDRLP4 12
INDIRP4
CVPU4 4
ASGNU4
ADDRLP4 60
INDIRU4
ADDRLP4 56
INDIRU4
EQU4 $624
ADDRLP4 52
INDIRU4
ADDRLP4 60
INDIRU4
EQU4 $624
line 1402
;1402: { //tent should now be the object attached to the mission objective
line 1403
;1403: dif[0] = (tent->r.absmax[0]+tent->r.absmin[0])/2;
ADDRLP4 24
ADDRLP4 0
INDIRP4
CNSTI4 356
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 344
ADDP4
INDIRF4
ADDF4
CNSTF4 1073741824
DIVF4
ASGNF4
line 1404
;1404: dif[1] = (tent->r.absmax[1]+tent->r.absmin[1])/2;
ADDRLP4 24+4
ADDRLP4 0
INDIRP4
CNSTI4 360
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 348
ADDP4
INDIRF4
ADDF4
CNSTF4 1073741824
DIVF4
ASGNF4
line 1405
;1405: dif[2] = (tent->r.absmax[2]+tent->r.absmin[2])/2;
ADDRLP4 24+8
ADDRLP4 0
INDIRP4
CNSTI4 364
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 352
ADDP4
INDIRF4
ADDF4
CNSTF4 1073741824
DIVF4
ASGNF4
line 1407
;1406:
;1407: wpindex = GetNearestVisibleWP(dif, tent->s.number);
ADDRLP4 24
ARGP4
ADDRLP4 0
INDIRP4
INDIRI4
ARGI4
ADDRLP4 76
ADDRGP4 GetNearestVisibleWP
CALLI4
ASGNI4
ADDRLP4 20
ADDRLP4 76
INDIRI4
ASGNI4
line 1409
;1408:
;1409: if (wpindex != -1 && gWPArray[wpindex] && gWPArray[wpindex]->inuse)
ADDRLP4 20
INDIRI4
CNSTI4 -1
EQI4 $628
ADDRLP4 84
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 84
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $628
ADDRLP4 84
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $628
line 1410
;1410: { //found the waypoint nearest the center of this objective-related object
line 1411
;1411: if (ent->side == SAGATEAM_IMPERIAL)
ADDRLP4 12
INDIRP4
CNSTI4 440
ADDP4
INDIRI4
CNSTI4 1
NEI4 $630
line 1412
;1412: {
line 1413
;1413: gWPArray[wpindex]->flags |= WPFLAG_SAGA_IMPERIALOBJ;
ADDRLP4 88
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 88
INDIRP4
ADDRLP4 88
INDIRP4
INDIRI4
CNSTI4 1048576
BORI4
ASGNI4
line 1414
;1414: }
ADDRGP4 $631
JUMPV
LABELV $630
line 1416
;1415: else
;1416: {
line 1417
;1417: gWPArray[wpindex]->flags |= WPFLAG_SAGA_REBELOBJ;
ADDRLP4 88
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 88
INDIRP4
ADDRLP4 88
INDIRP4
INDIRI4
CNSTI4 524288
BORI4
ASGNI4
line 1418
;1418: }
LABELV $631
line 1420
;1419:
;1420: gWPArray[wpindex]->associated_entity = tent->s.number;
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 32
ADDP4
ADDRLP4 0
INDIRP4
INDIRI4
ASGNI4
line 1421
;1421: }
LABELV $628
line 1422
;1422: }
LABELV $624
line 1424
;1423:
;1424: i++;
ADDRLP4 16
ADDRLP4 16
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1425
;1425: }
LABELV $613
line 1375
ADDRLP4 16
INDIRI4
CNSTI4 1024
LTI4 $612
LABELV $614
line 1426
;1426:}
LABELV $611
endproc CalculateSagaGoals 92 8
data
export botGlobalNavWeaponWeights
align 4
LABELV botGlobalNavWeaponWeights
byte 4 0
byte 4 0
byte 4 0
byte 4 0
byte 4 1077936128
byte 4 1084227584
byte 4 1082130432
byte 4 1086324736
byte 4 1088421888
byte 4 1090519040
byte 4 1091567616
byte 4 1077936128
byte 4 1077936128
byte 4 1077936128
byte 4 0
skip 4
export GetNearestVisibleWPToItem
code
proc GetNearestVisibleWPToItem 100 20
line 1449
;1427:
;1428:float botGlobalNavWeaponWeights[WP_NUM_WEAPONS] =
;1429:{
;1430: 0,//WP_NONE,
;1431:
;1432: 0,//WP_STUN_BATON,
;1433: 0,//WP_SABER, // NOTE: lots of code assumes this is the first weapon (... which is crap) so be careful -Ste.
;1434: 0,//WP_BRYAR_PISTOL,
;1435: 3,//WP_BLASTER,
;1436: 5,//WP_DISRUPTOR,
;1437: 4,//WP_BOWCASTER,
;1438: 6,//WP_REPEATER,
;1439: 7,//WP_DEMP2,
;1440: 8,//WP_FLECHETTE,
;1441: 9,//WP_ROCKET_LAUNCHER,
;1442: 3,//WP_THERMAL,
;1443: 3,//WP_TRIP_MINE,
;1444: 3,//WP_DET_PACK,
;1445: 0//WP_EMPLACED_GUN,
;1446:};
;1447:
;1448:int GetNearestVisibleWPToItem(vec3_t org, int ignore)
;1449:{
line 1456
;1450: int i;
;1451: float bestdist;
;1452: float flLen;
;1453: int bestindex;
;1454: vec3_t a, mins, maxs;
;1455:
;1456: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1457
;1457: bestdist = 64; //has to be less than 64 units to the item or it isn't safe enough
ADDRLP4 20
CNSTF4 1115684864
ASGNF4
line 1458
;1458: bestindex = -1;
ADDRLP4 48
CNSTI4 -1
ASGNI4
line 1460
;1459:
;1460: mins[0] = -15;
ADDRLP4 24
CNSTF4 3245342720
ASGNF4
line 1461
;1461: mins[1] = -15;
ADDRLP4 24+4
CNSTF4 3245342720
ASGNF4
line 1462
;1462: mins[2] = 0;
ADDRLP4 24+8
CNSTF4 0
ASGNF4
line 1463
;1463: maxs[0] = 15;
ADDRLP4 36
CNSTF4 1097859072
ASGNF4
line 1464
;1464: maxs[1] = 15;
ADDRLP4 36+4
CNSTF4 1097859072
ASGNF4
line 1465
;1465: maxs[2] = 0;
ADDRLP4 36+8
CNSTF4 0
ASGNF4
ADDRGP4 $638
JUMPV
LABELV $637
line 1468
;1466:
;1467: while (i < gWPNum)
;1468: {
line 1469
;1469: if (gWPArray[i] && gWPArray[i]->inuse &&
ADDRLP4 52
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $640
ADDRLP4 52
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $640
ADDRLP4 56
CNSTI4 8
ASGNI4
ADDRLP4 60
ADDRLP4 52
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRF4
ASGNF4
ADDRLP4 64
CNSTF4 1097859072
ASGNF4
ADDRLP4 68
ADDRFP4 0
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
INDIRF4
ASGNF4
ADDRLP4 60
INDIRF4
ADDRLP4 64
INDIRF4
SUBF4
ADDRLP4 68
INDIRF4
GEF4 $640
ADDRLP4 60
INDIRF4
ADDRLP4 64
INDIRF4
ADDF4
ADDRLP4 68
INDIRF4
LEF4 $640
line 1472
;1470: gWPArray[i]->origin[2]-15 < org[2] &&
;1471: gWPArray[i]->origin[2]+15 > org[2])
;1472: {
line 1473
;1473: VectorSubtract(org, gWPArray[i]->origin, a);
ADDRLP4 72
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 76
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 4
ADDRLP4 72
INDIRP4
INDIRF4
ADDRLP4 76
INDIRP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 80
CNSTI4 4
ASGNI4
ADDRLP4 4+4
ADDRLP4 72
INDIRP4
ADDRLP4 80
INDIRI4
ADDP4
INDIRF4
ADDRLP4 76
INDIRP4
INDIRP4
ADDRLP4 80
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 84
CNSTI4 8
ASGNI4
ADDRLP4 4+8
ADDRFP4 0
INDIRP4
ADDRLP4 84
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 84
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1474
;1474: flLen = VectorLength(a);
ADDRLP4 4
ARGP4
ADDRLP4 88
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 16
ADDRLP4 88
INDIRF4
ASGNF4
line 1476
;1475:
;1476: if (flLen < bestdist && trap_InPVS(org, gWPArray[i]->origin) && OrgVisibleBox(org, mins, maxs, gWPArray[i]->origin, ignore))
ADDRLP4 16
INDIRF4
ADDRLP4 20
INDIRF4
GEF4 $644
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 92
INDIRI4
CNSTI4 0
EQI4 $644
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 24
ARGP4
ADDRLP4 36
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 96
ADDRGP4 OrgVisibleBox
CALLI4
ASGNI4
ADDRLP4 96
INDIRI4
CNSTI4 0
EQI4 $644
line 1477
;1477: {
line 1478
;1478: bestdist = flLen;
ADDRLP4 20
ADDRLP4 16
INDIRF4
ASGNF4
line 1479
;1479: bestindex = i;
ADDRLP4 48
ADDRLP4 0
INDIRI4
ASGNI4
line 1480
;1480: }
LABELV $644
line 1481
;1481: }
LABELV $640
line 1483
;1482:
;1483: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1484
;1484: }
LABELV $638
line 1467
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $637
line 1486
;1485:
;1486: return bestindex;
ADDRLP4 48
INDIRI4
RETI4
LABELV $632
endproc GetNearestVisibleWPToItem 100 20
export CalculateWeightGoals
proc CalculateWeightGoals 68 8
line 1490
;1487:}
;1488:
;1489:void CalculateWeightGoals(void)
;1490:{ //set waypoint weights depending on weapon and item placement
line 1491
;1491: int i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1492
;1492: int wpindex = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1496
;1493: gentity_t *ent;
;1494: float weight;
;1495:
;1496: trap_Cvar_Update(&bot_wp_clearweight);
ADDRGP4 bot_wp_clearweight
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 1498
;1497:
;1498: if (bot_wp_clearweight.integer)
ADDRGP4 bot_wp_clearweight+12
INDIRI4
CNSTI4 0
EQI4 $647
line 1499
;1499: { //if set then flush out all weight/goal values before calculating them again
ADDRGP4 $651
JUMPV
LABELV $650
line 1501
;1500: while (i < gWPNum)
;1501: {
line 1502
;1502: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 16
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $653
ADDRLP4 16
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $653
line 1503
;1503: {
line 1504
;1504: gWPArray[i]->weight = 0;
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 20
ADDP4
CNSTF4 0
ASGNF4
line 1506
;1505:
;1506: if (gWPArray[i]->flags & WPFLAG_GOALPOINT)
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
CNSTI4 65536
BANDI4
CNSTI4 0
EQI4 $655
line 1507
;1507: {
line 1508
;1508: gWPArray[i]->flags -= WPFLAG_GOALPOINT;
ADDRLP4 20
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 20
INDIRP4
ADDRLP4 20
INDIRP4
INDIRI4
CNSTI4 65536
SUBI4
ASGNI4
line 1509
;1509: }
LABELV $655
line 1510
;1510: }
LABELV $653
line 1512
;1511:
;1512: i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1513
;1513: }
LABELV $651
line 1500
ADDRLP4 4
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $650
line 1514
;1514: }
LABELV $647
line 1516
;1515:
;1516: i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $658
JUMPV
LABELV $657
line 1519
;1517:
;1518: while (i < MAX_GENTITIES)
;1519: {
line 1520
;1520: ent = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1522
;1521:
;1522: weight = 0;
ADDRLP4 12
CNSTF4 0
ASGNF4
line 1524
;1523:
;1524: if (ent && ent->classname)
ADDRLP4 20
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 20
INDIRU4
EQU4 $660
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 20
INDIRU4
EQU4 $660
line 1525
;1525: {
line 1526
;1526: if (strcmp(ent->classname, "item_seeker") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $664
ARGP4
ADDRLP4 24
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 0
NEI4 $662
line 1527
;1527: {
line 1528
;1528: weight = 2;
ADDRLP4 12
CNSTF4 1073741824
ASGNF4
line 1529
;1529: }
ADDRGP4 $663
JUMPV
LABELV $662
line 1530
;1530: else if (strcmp(ent->classname, "item_shield") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $667
ARGP4
ADDRLP4 28
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 0
NEI4 $665
line 1531
;1531: {
line 1532
;1532: weight = 2;
ADDRLP4 12
CNSTF4 1073741824
ASGNF4
line 1533
;1533: }
ADDRGP4 $666
JUMPV
LABELV $665
line 1534
;1534: else if (strcmp(ent->classname, "item_medpac") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $670
ARGP4
ADDRLP4 32
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
NEI4 $668
line 1535
;1535: {
line 1536
;1536: weight = 2;
ADDRLP4 12
CNSTF4 1073741824
ASGNF4
line 1537
;1537: }
ADDRGP4 $669
JUMPV
LABELV $668
line 1538
;1538: else if (strcmp(ent->classname, "item_sentry_gun") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $673
ARGP4
ADDRLP4 36
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 36
INDIRI4
CNSTI4 0
NEI4 $671
line 1539
;1539: {
line 1540
;1540: weight = 2;
ADDRLP4 12
CNSTF4 1073741824
ASGNF4
line 1541
;1541: }
ADDRGP4 $672
JUMPV
LABELV $671
line 1542
;1542: else if (strcmp(ent->classname, "item_force_enlighten_dark") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $676
ARGP4
ADDRLP4 40
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 40
INDIRI4
CNSTI4 0
NEI4 $674
line 1543
;1543: {
line 1544
;1544: weight = 5;
ADDRLP4 12
CNSTF4 1084227584
ASGNF4
line 1545
;1545: }
ADDRGP4 $675
JUMPV
LABELV $674
line 1546
;1546: else if (strcmp(ent->classname, "item_force_enlighten_light") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $679
ARGP4
ADDRLP4 44
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 44
INDIRI4
CNSTI4 0
NEI4 $677
line 1547
;1547: {
line 1548
;1548: weight = 5;
ADDRLP4 12
CNSTF4 1084227584
ASGNF4
line 1549
;1549: }
ADDRGP4 $678
JUMPV
LABELV $677
line 1550
;1550: else if (strcmp(ent->classname, "item_force_boon") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $682
ARGP4
ADDRLP4 48
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
NEI4 $680
line 1551
;1551: {
line 1552
;1552: weight = 5;
ADDRLP4 12
CNSTF4 1084227584
ASGNF4
line 1553
;1553: }
ADDRGP4 $681
JUMPV
LABELV $680
line 1554
;1554: else if (strcmp(ent->classname, "item_ysalimari") == 0)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $685
ARGP4
ADDRLP4 52
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 52
INDIRI4
CNSTI4 0
NEI4 $683
line 1555
;1555: {
line 1556
;1556: weight = 2;
ADDRLP4 12
CNSTF4 1073741824
ASGNF4
line 1557
;1557: }
ADDRGP4 $684
JUMPV
LABELV $683
line 1558
;1558: else if (strstr(ent->classname, "weapon_") && ent->item)
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $688
ARGP4
ADDRLP4 56
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 60
CNSTU4 0
ASGNU4
ADDRLP4 56
INDIRP4
CVPU4 4
ADDRLP4 60
INDIRU4
EQU4 $686
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 60
INDIRU4
EQU4 $686
line 1559
;1559: {
line 1560
;1560: weight = botGlobalNavWeaponWeights[ent->item->giTag];
ADDRLP4 12
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 botGlobalNavWeaponWeights
ADDP4
INDIRF4
ASGNF4
line 1561
;1561: }
ADDRGP4 $687
JUMPV
LABELV $686
line 1562
;1562: else if (ent->item && ent->item->giType == IT_AMMO)
ADDRLP4 64
ADDRLP4 0
INDIRP4
CNSTI4 824
ADDP4
INDIRP4
ASGNP4
ADDRLP4 64
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $689
ADDRLP4 64
INDIRP4
CNSTI4 36
ADDP4
INDIRI4
CNSTI4 2
NEI4 $689
line 1563
;1563: {
line 1564
;1564: weight = 3;
ADDRLP4 12
CNSTF4 1077936128
ASGNF4
line 1565
;1565: }
LABELV $689
LABELV $687
LABELV $684
LABELV $681
LABELV $678
LABELV $675
LABELV $672
LABELV $669
LABELV $666
LABELV $663
line 1566
;1566: }
LABELV $660
line 1568
;1567:
;1568: if (ent && weight)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $691
ADDRLP4 12
INDIRF4
CNSTF4 0
EQF4 $691
line 1569
;1569: {
line 1570
;1570: wpindex = GetNearestVisibleWPToItem(ent->s.pos.trBase, ent->s.number);
ADDRLP4 0
INDIRP4
CNSTI4 24
ADDP4
ARGP4
ADDRLP4 0
INDIRP4
INDIRI4
ARGI4
ADDRLP4 28
ADDRGP4 GetNearestVisibleWPToItem
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 28
INDIRI4
ASGNI4
line 1572
;1571:
;1572: if (wpindex != -1 && gWPArray[wpindex] && gWPArray[wpindex]->inuse)
ADDRLP4 8
INDIRI4
CNSTI4 -1
EQI4 $693
ADDRLP4 36
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $693
ADDRLP4 36
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $693
line 1573
;1573: { //found the waypoint nearest the center of this object
line 1574
;1574: gWPArray[wpindex]->weight = weight;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
line 1575
;1575: gWPArray[wpindex]->flags |= WPFLAG_GOALPOINT;
ADDRLP4 40
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
CNSTI4 65536
BORI4
ASGNI4
line 1576
;1576: gWPArray[wpindex]->associated_entity = ent->s.number;
ADDRLP4 8
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 32
ADDP4
ADDRLP4 0
INDIRP4
INDIRI4
ASGNI4
line 1577
;1577: }
LABELV $693
line 1578
;1578: }
LABELV $691
line 1580
;1579:
;1580: i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1581
;1581: }
LABELV $658
line 1518
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $657
line 1582
;1582:}
LABELV $646
endproc CalculateWeightGoals 68 8
export CalculateJumpRoutes
proc CalculateJumpRoutes 40 0
line 1585
;1583:
;1584:void CalculateJumpRoutes(void)
;1585:{
line 1586
;1586: int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1587
;1587: float nheightdif = 0;
ADDRLP4 8
CNSTF4 0
ASGNF4
line 1588
;1588: float pheightdif = 0;
ADDRLP4 4
CNSTF4 0
ASGNF4
ADDRGP4 $697
JUMPV
LABELV $696
line 1591
;1589:
;1590: while (i < gWPNum)
;1591: {
line 1592
;1592: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 12
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $699
ADDRLP4 12
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $699
line 1593
;1593: {
line 1594
;1594: if (gWPArray[i]->flags & WPFLAG_JUMP)
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
CNSTI4 16
BANDI4
CNSTI4 0
EQI4 $701
line 1595
;1595: {
line 1596
;1596: nheightdif = 0;
ADDRLP4 8
CNSTF4 0
ASGNF4
line 1597
;1597: pheightdif = 0;
ADDRLP4 4
CNSTF4 0
ASGNF4
line 1599
;1598:
;1599: gWPArray[i]->forceJumpTo = 0;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 0
ASGNI4
line 1601
;1600:
;1601: if (gWPArray[i-1] && gWPArray[i-1]->inuse && (gWPArray[i-1]->origin[2]+16) < gWPArray[i]->origin[2])
ADDRLP4 16
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 gWPArray-4
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $703
ADDRLP4 16
INDIRI4
ADDRGP4 gWPArray-4
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $703
ADDRLP4 20
CNSTI4 8
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 gWPArray-4
ADDP4
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRF4
CNSTF4 1098907648
ADDF4
ADDRLP4 16
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 20
INDIRI4
ADDP4
INDIRF4
GEF4 $703
line 1602
;1602: {
line 1603
;1603: nheightdif = (gWPArray[i]->origin[2] - gWPArray[i-1]->origin[2]);
ADDRLP4 24
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 28
CNSTI4 8
ASGNI4
ADDRLP4 8
ADDRLP4 24
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRF4
ADDRLP4 24
INDIRI4
ADDRGP4 gWPArray-4
ADDP4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1604
;1604: }
LABELV $703
line 1606
;1605:
;1606: if (gWPArray[i+1] && gWPArray[i+1]->inuse && (gWPArray[i+1]->origin[2]+16) < gWPArray[i]->origin[2])
ADDRLP4 24
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $709
ADDRLP4 24
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $709
ADDRLP4 28
CNSTI4 8
ASGNI4
ADDRLP4 24
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRF4
CNSTF4 1098907648
ADDF4
ADDRLP4 24
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRF4
GEF4 $709
line 1607
;1607: {
line 1608
;1608: pheightdif = (gWPArray[i]->origin[2] - gWPArray[i+1]->origin[2]);
ADDRLP4 32
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 36
CNSTI4 8
ASGNI4
ADDRLP4 4
ADDRLP4 32
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRF4
ADDRLP4 32
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1609
;1609: }
LABELV $709
line 1611
;1610:
;1611: if (nheightdif > pheightdif)
ADDRLP4 8
INDIRF4
ADDRLP4 4
INDIRF4
LEF4 $715
line 1612
;1612: {
line 1613
;1613: pheightdif = nheightdif;
ADDRLP4 4
ADDRLP4 8
INDIRF4
ASGNF4
line 1614
;1614: }
LABELV $715
line 1616
;1615:
;1616: if (pheightdif)
ADDRLP4 4
INDIRF4
CNSTF4 0
EQF4 $717
line 1617
;1617: {
line 1618
;1618: if (pheightdif > 500)
ADDRLP4 4
INDIRF4
CNSTF4 1140457472
LEF4 $719
line 1619
;1619: {
line 1620
;1620: gWPArray[i]->forceJumpTo = 999; //FORCE_LEVEL_3; //FJSR
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 999
ASGNI4
line 1621
;1621: }
ADDRGP4 $720
JUMPV
LABELV $719
line 1622
;1622: else if (pheightdif > 256)
ADDRLP4 4
INDIRF4
CNSTF4 1132462080
LEF4 $721
line 1623
;1623: {
line 1624
;1624: gWPArray[i]->forceJumpTo = 999; //FORCE_LEVEL_2; //FJSR
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 999
ASGNI4
line 1625
;1625: }
ADDRGP4 $722
JUMPV
LABELV $721
line 1626
;1626: else if (pheightdif > 128)
ADDRLP4 4
INDIRF4
CNSTF4 1124073472
LEF4 $723
line 1627
;1627: {
line 1628
;1628: gWPArray[i]->forceJumpTo = 999; //FORCE_LEVEL_1; //FJSR
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 999
ASGNI4
line 1629
;1629: }
LABELV $723
LABELV $722
LABELV $720
line 1630
;1630: }
LABELV $717
line 1631
;1631: }
LABELV $701
line 1632
;1632: }
LABELV $699
line 1634
;1633:
;1634: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1635
;1635: }
LABELV $697
line 1590
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $696
line 1636
;1636:}
LABELV $695
endproc CalculateJumpRoutes 40 0
export LoadPathData
proc LoadPathData 416 16
line 1639
;1637:
;1638:int LoadPathData(const char *filename)
;1639:{
line 1649
;1640: fileHandle_t f;
;1641: char *fileString;
;1642: char *currentVar;
;1643: char *routePath;
;1644: wpobject_t thiswp;
;1645: int len;
;1646: int i, i_cv;
;1647: int nei_num;
;1648:
;1649: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1650
;1650: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1652
;1651:
;1652: routePath = (char *)B_TempAlloc(1024);
CNSTI4 1024
ARGI4
ADDRLP4 332
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 328
ADDRLP4 332
INDIRP4
ASGNP4
line 1654
;1653:
;1654: Com_sprintf(routePath, 1024, "botroutes/%s.wnt\0", filename);
ADDRLP4 328
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $726
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1656
;1655:
;1656: len = trap_FS_FOpenFile(routePath, &f, FS_READ);
ADDRLP4 328
INDIRP4
ARGP4
ADDRLP4 324
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 336
ADDRGP4 trap_FS_FOpenFile
CALLI4
ASGNI4
ADDRLP4 320
ADDRLP4 336
INDIRI4
ASGNI4
line 1658
;1657:
;1658: B_TempFree(1024); //routePath
CNSTI4 1024
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 1660
;1659:
;1660: if (!f)
ADDRLP4 324
INDIRI4
CNSTI4 0
NEI4 $727
line 1661
;1661: {
line 1662
;1662: G_Printf(S_COLOR_YELLOW "Bot route data not found\n");
ADDRGP4 $729
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 1663
;1663: return 2;
CNSTI4 2
RETI4
ADDRGP4 $725
JUMPV
LABELV $727
line 1666
;1664: }
;1665:
;1666: if (len >= 524288)
ADDRLP4 320
INDIRI4
CNSTI4 524288
LTI4 $730
line 1667
;1667: {
line 1668
;1668: G_Printf(S_COLOR_RED "Route file exceeds maximum length\n");
ADDRGP4 $732
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 1669
;1669: return 0;
CNSTI4 0
RETI4
ADDRGP4 $725
JUMPV
LABELV $730
line 1672
;1670: }
;1671:
;1672: fileString = (char *)B_TempAlloc(524288);
CNSTI4 524288
ARGI4
ADDRLP4 340
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 340
INDIRP4
ASGNP4
line 1673
;1673: currentVar = (char *)B_TempAlloc(2048);
CNSTI4 2048
ARGI4
ADDRLP4 344
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 12
ADDRLP4 344
INDIRP4
ASGNP4
line 1675
;1674:
;1675: trap_FS_Read(fileString, len, f);
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 320
INDIRI4
ARGI4
ADDRLP4 324
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 1677
;1676:
;1677: if (fileString[i] == 'l')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 108
NEI4 $733
line 1678
;1678: { //contains a "levelflags" entry..
line 1680
;1679: char readLFlags[64];
;1680: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $736
JUMPV
LABELV $735
line 1683
;1681:
;1682: while (fileString[i] != ' ')
;1683: {
line 1684
;1684: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1685
;1685: }
LABELV $736
line 1682
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $735
line 1686
;1686: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $739
JUMPV
LABELV $738
line 1688
;1687: while (fileString[i] != '\n')
;1688: {
line 1689
;1689: readLFlags[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 348
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1690
;1690: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1691
;1691: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1692
;1692: }
LABELV $739
line 1687
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 10
NEI4 $738
line 1693
;1693: readLFlags[i_cv] = 0;
ADDRLP4 8
INDIRI4
ADDRLP4 348
ADDP4
CNSTI1 0
ASGNI1
line 1694
;1694: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1696
;1695:
;1696: gLevelFlags = atoi(readLFlags);
ADDRLP4 348
ARGP4
ADDRLP4 412
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 gLevelFlags
ADDRLP4 412
INDIRI4
ASGNI4
line 1697
;1697: }
ADDRGP4 $742
JUMPV
LABELV $733
line 1699
;1698: else
;1699: {
line 1700
;1700: gLevelFlags = 0;
ADDRGP4 gLevelFlags
CNSTI4 0
ASGNI4
line 1701
;1701: }
ADDRGP4 $742
JUMPV
LABELV $741
line 1704
;1702:
;1703: while (i < len)
;1704: {
line 1705
;1705: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1707
;1706:
;1707: thiswp.index = 0;
ADDRLP4 16+16
CNSTI4 0
ASGNI4
line 1708
;1708: thiswp.flags = 0;
ADDRLP4 16+28
CNSTI4 0
ASGNI4
line 1709
;1709: thiswp.inuse = 0;
ADDRLP4 16+12
CNSTI4 0
ASGNI4
line 1710
;1710: thiswp.neighbornum = 0;
ADDRLP4 16+40
CNSTI4 0
ASGNI4
line 1711
;1711: thiswp.origin[0] = 0;
ADDRLP4 16
CNSTF4 0
ASGNF4
line 1712
;1712: thiswp.origin[1] = 0;
ADDRLP4 16+4
CNSTF4 0
ASGNF4
line 1713
;1713: thiswp.origin[2] = 0;
ADDRLP4 16+8
CNSTF4 0
ASGNF4
line 1714
;1714: thiswp.weight = 0;
ADDRLP4 16+20
CNSTF4 0
ASGNF4
line 1715
;1715: thiswp.associated_entity = ENTITYNUM_NONE;
ADDRLP4 16+32
CNSTI4 1023
ASGNI4
line 1716
;1716: thiswp.forceJumpTo = 0;
ADDRLP4 16+36
CNSTI4 0
ASGNI4
line 1717
;1717: thiswp.disttonext = 0;
ADDRLP4 16+24
CNSTF4 0
ASGNF4
line 1718
;1718: nei_num = 0;
ADDRLP4 316
CNSTI4 0
ASGNI4
ADDRGP4 $755
JUMPV
LABELV $754
line 1721
;1719:
;1720: while (nei_num < MAX_NEIGHBOR_SIZE)
;1721: {
line 1722
;1722: thiswp.neighbors[nei_num].num = 0;
ADDRLP4 316
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 16+44
ADDP4
CNSTI4 0
ASGNI4
line 1723
;1723: thiswp.neighbors[nei_num].forceJumpTo = 0;
ADDRLP4 316
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 16+44+4
ADDP4
CNSTI4 0
ASGNI4
line 1725
;1724:
;1725: nei_num++;
ADDRLP4 316
ADDRLP4 316
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1726
;1726: }
LABELV $755
line 1720
ADDRLP4 316
INDIRI4
CNSTI4 32
LTI4 $754
ADDRGP4 $761
JUMPV
LABELV $760
line 1729
;1727:
;1728: while (fileString[i] != ' ')
;1729: {
line 1730
;1730: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1731
;1731: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1732
;1732: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1733
;1733: }
LABELV $761
line 1728
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $760
line 1734
;1734: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1736
;1735:
;1736: thiswp.index = atoi(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 348
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16+16
ADDRLP4 348
INDIRI4
ASGNI4
line 1738
;1737:
;1738: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1739
;1739: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $765
JUMPV
LABELV $764
line 1742
;1740:
;1741: while (fileString[i] != ' ')
;1742: {
line 1743
;1743: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1744
;1744: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1745
;1745: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1746
;1746: }
LABELV $765
line 1741
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $764
line 1747
;1747: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1749
;1748:
;1749: thiswp.flags = atoi(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 352
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16+28
ADDRLP4 352
INDIRI4
ASGNI4
line 1751
;1750:
;1751: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1752
;1752: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $769
JUMPV
LABELV $768
line 1755
;1753:
;1754: while (fileString[i] != ' ')
;1755: {
line 1756
;1756: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1757
;1757: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1758
;1758: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1759
;1759: }
LABELV $769
line 1754
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $768
line 1760
;1760: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1762
;1761:
;1762: thiswp.weight = atof(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 356
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 16+20
ADDRLP4 356
INDIRF4
ASGNF4
line 1764
;1763:
;1764: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1765
;1765: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1766
;1766: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $773
JUMPV
LABELV $772
line 1769
;1767:
;1768: while (fileString[i] != ' ')
;1769: {
line 1770
;1770: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1771
;1771: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1772
;1772: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1773
;1773: }
LABELV $773
line 1768
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $772
line 1774
;1774: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1776
;1775:
;1776: thiswp.origin[0] = atof(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 360
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 16
ADDRLP4 360
INDIRF4
ASGNF4
line 1778
;1777:
;1778: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1779
;1779: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $776
JUMPV
LABELV $775
line 1782
;1780:
;1781: while (fileString[i] != ' ')
;1782: {
line 1783
;1783: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1784
;1784: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1785
;1785: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1786
;1786: }
LABELV $776
line 1781
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $775
line 1787
;1787: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1789
;1788:
;1789: thiswp.origin[1] = atof(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 364
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 16+4
ADDRLP4 364
INDIRF4
ASGNF4
line 1791
;1790:
;1791: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1792
;1792: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $780
JUMPV
LABELV $779
line 1795
;1793:
;1794: while (fileString[i] != ')')
;1795: {
line 1796
;1796: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1797
;1797: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1798
;1798: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1799
;1799: }
LABELV $780
line 1794
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 41
NEI4 $779
line 1800
;1800: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1802
;1801:
;1802: thiswp.origin[2] = atof(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 368
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 16+8
ADDRLP4 368
INDIRF4
ASGNF4
line 1804
;1803:
;1804: i += 4;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 4
ADDI4
ASGNI4
ADDRGP4 $784
JUMPV
LABELV $783
line 1807
;1805:
;1806: while (fileString[i] != '}')
;1807: {
line 1808
;1808: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRGP4 $787
JUMPV
LABELV $786
line 1810
;1809: while (fileString[i] != ' ' && fileString[i] != '-')
;1810: {
line 1811
;1811: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1812
;1812: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1813
;1813: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1814
;1814: }
LABELV $787
line 1809
ADDRLP4 372
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 372
INDIRI4
CNSTI4 32
EQI4 $789
ADDRLP4 372
INDIRI4
CNSTI4 45
NEI4 $786
LABELV $789
line 1815
;1815: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1817
;1816:
;1817: thiswp.neighbors[thiswp.neighbornum].num = atoi(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 376
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16+40
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 16+44
ADDP4
ADDRLP4 376
INDIRI4
ASGNI4
line 1819
;1818:
;1819: if (fileString[i] == '-')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 45
NEI4 $792
line 1820
;1820: {
line 1821
;1821: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1822
;1822: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $795
JUMPV
LABELV $794
line 1825
;1823:
;1824: while (fileString[i] != ' ')
;1825: {
line 1826
;1826: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1827
;1827: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1828
;1828: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1829
;1829: }
LABELV $795
line 1824
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $794
line 1830
;1830: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1832
;1831:
;1832: thiswp.neighbors[thiswp.neighbornum].forceJumpTo = 999; //atoi(currentVar); //FJSR
ADDRLP4 16+40
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 16+44+4
ADDP4
CNSTI4 999
ASGNI4
line 1833
;1833: }
ADDRGP4 $793
JUMPV
LABELV $792
line 1835
;1834: else
;1835: {
line 1836
;1836: thiswp.neighbors[thiswp.neighbornum].forceJumpTo = 0;
ADDRLP4 16+40
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 16+44+4
ADDP4
CNSTI4 0
ASGNI4
line 1837
;1837: }
LABELV $793
line 1839
;1838:
;1839: thiswp.neighbornum++;
ADDRLP4 16+40
ADDRLP4 16+40
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1841
;1840:
;1841: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1842
;1842: }
LABELV $784
line 1806
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 125
NEI4 $783
line 1844
;1843:
;1844: i_cv = 0;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1845
;1845: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1846
;1846: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $805
JUMPV
LABELV $804
line 1849
;1847:
;1848: while (fileString[i] != '\n')
;1849: {
line 1850
;1850: currentVar[i_cv] = fileString[i];
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1851
;1851: i_cv++;
ADDRLP4 8
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1852
;1852: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1853
;1853: }
LABELV $805
line 1848
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 10
NEI4 $804
line 1854
;1854: currentVar[i_cv] = '\0';
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1856
;1855:
;1856: thiswp.disttonext = atof(currentVar);
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 372
ADDRGP4 atof
CALLF4
ASGNF4
ADDRLP4 16+24
ADDRLP4 372
INDIRF4
ASGNF4
line 1858
;1857:
;1858: CreateNewWP_FromObject(&thiswp);
ADDRLP4 16
ARGP4
ADDRGP4 CreateNewWP_FromObject
CALLV
pop
line 1859
;1859: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1860
;1860: }
LABELV $742
line 1703
ADDRLP4 0
INDIRI4
ADDRLP4 320
INDIRI4
LTI4 $741
line 1862
;1861:
;1862: B_TempFree(524288); //fileString
CNSTI4 524288
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 1863
;1863: B_TempFree(2048); //currentVar
CNSTI4 2048
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 1865
;1864:
;1865: trap_FS_FCloseFile(f);
ADDRLP4 324
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 1867
;1866:
;1867: if (g_gametype.integer == GT_SAGA)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 6
NEI4 $808
line 1868
;1868: {
line 1869
;1869: CalculateSagaGoals();
ADDRGP4 CalculateSagaGoals
CALLV
pop
line 1870
;1870: }
LABELV $808
line 1872
;1871:
;1872: CalculateWeightGoals();
ADDRGP4 CalculateWeightGoals
CALLV
pop
line 1876
;1873: //calculate weights for idle activity goals when
;1874: //the bot has absolutely nothing else to do
;1875:
;1876: CalculateJumpRoutes();
ADDRGP4 CalculateJumpRoutes
CALLV
pop
line 1880
;1877: //Look at jump points and mark them as requiring
;1878: //force jumping as needed
;1879:
;1880: return 1;
CNSTI4 1
RETI4
LABELV $725
endproc LoadPathData 416 16
export FlagObjects
proc FlagObjects 1172 28
line 1884
;1881:}
;1882:
;1883:void FlagObjects(void)
;1884:{
line 1885
;1885: int i = 0, bestindex = 0, found = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRLP4 1140
CNSTI4 0
ASGNI4
ADDRLP4 1144
CNSTI4 0
ASGNI4
line 1886
;1886: float bestdist = 999999, tlen = 0;
ADDRLP4 1112
CNSTF4 1232348144
ASGNF4
ADDRLP4 28
CNSTF4 0
ASGNF4
line 1891
;1887: gentity_t *flag_red, *flag_blue, *ent;
;1888: vec3_t a, mins, maxs;
;1889: trace_t tr;
;1890:
;1891: flag_red = NULL;
ADDRLP4 20
CNSTP4 0
ASGNP4
line 1892
;1892: flag_blue = NULL;
ADDRLP4 24
CNSTP4 0
ASGNP4
line 1894
;1893:
;1894: mins[0] = -15;
ADDRLP4 1116
CNSTF4 3245342720
ASGNF4
line 1895
;1895: mins[1] = -15;
ADDRLP4 1116+4
CNSTF4 3245342720
ASGNF4
line 1896
;1896: mins[2] = -5;
ADDRLP4 1116+8
CNSTF4 3231711232
ASGNF4
line 1897
;1897: maxs[0] = 15;
ADDRLP4 1128
CNSTF4 1097859072
ASGNF4
line 1898
;1898: maxs[1] = 15;
ADDRLP4 1128+4
CNSTF4 1097859072
ASGNF4
line 1899
;1899: maxs[2] = 5;
ADDRLP4 1128+8
CNSTF4 1084227584
ASGNF4
ADDRGP4 $817
JUMPV
LABELV $816
line 1902
;1900:
;1901: while (i < MAX_GENTITIES)
;1902: {
line 1903
;1903: ent = &g_entities[i];
ADDRLP4 4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1905
;1904:
;1905: if (ent && ent->inuse && ent->classname)
ADDRLP4 1152
CNSTU4 0
ASGNU4
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 1152
INDIRU4
EQU4 $819
ADDRLP4 4
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $819
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 1152
INDIRU4
EQU4 $819
line 1906
;1906: {
line 1907
;1907: if (!flag_red && strcmp(ent->classname, "team_CTF_redflag") == 0)
ADDRLP4 20
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $821
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $823
ARGP4
ADDRLP4 1156
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 1156
INDIRI4
CNSTI4 0
NEI4 $821
line 1908
;1908: {
line 1909
;1909: flag_red = ent;
ADDRLP4 20
ADDRLP4 4
INDIRP4
ASGNP4
line 1910
;1910: }
ADDRGP4 $822
JUMPV
LABELV $821
line 1911
;1911: else if (!flag_blue && strcmp(ent->classname, "team_CTF_blueflag") == 0)
ADDRLP4 24
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $824
ADDRLP4 4
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $826
ARGP4
ADDRLP4 1160
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 1160
INDIRI4
CNSTI4 0
NEI4 $824
line 1912
;1912: {
line 1913
;1913: flag_blue = ent;
ADDRLP4 24
ADDRLP4 4
INDIRP4
ASGNP4
line 1914
;1914: }
LABELV $824
LABELV $822
line 1916
;1915:
;1916: if (flag_red && flag_blue)
ADDRLP4 1164
CNSTU4 0
ASGNU4
ADDRLP4 20
INDIRP4
CVPU4 4
ADDRLP4 1164
INDIRU4
EQU4 $827
ADDRLP4 24
INDIRP4
CVPU4 4
ADDRLP4 1164
INDIRU4
EQU4 $827
line 1917
;1917: {
line 1918
;1918: break;
ADDRGP4 $818
JUMPV
LABELV $827
line 1920
;1919: }
;1920: }
LABELV $819
line 1922
;1921:
;1922: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1923
;1923: }
LABELV $817
line 1901
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $816
LABELV $818
line 1925
;1924:
;1925: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1927
;1926:
;1927: if (!flag_red || !flag_blue)
ADDRLP4 1148
CNSTU4 0
ASGNU4
ADDRLP4 20
INDIRP4
CVPU4 4
ADDRLP4 1148
INDIRU4
EQU4 $831
ADDRLP4 24
INDIRP4
CVPU4 4
ADDRLP4 1148
INDIRU4
NEU4 $833
LABELV $831
line 1928
;1928: {
line 1929
;1929: return;
ADDRGP4 $811
JUMPV
LABELV $832
line 1933
;1930: }
;1931:
;1932: while (i < gWPNum)
;1933: {
line 1934
;1934: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 1152
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1152
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $835
ADDRLP4 1152
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $835
line 1935
;1935: {
line 1936
;1936: VectorSubtract(flag_red->s.pos.trBase, gWPArray[i]->origin, a);
ADDRLP4 1160
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 8
ADDRLP4 20
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 1160
INDIRP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 20
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 1160
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+8
ADDRLP4 20
INDIRP4
CNSTI4 32
ADDP4
INDIRF4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1937
;1937: tlen = VectorLength(a);
ADDRLP4 8
ARGP4
ADDRLP4 1164
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 28
ADDRLP4 1164
INDIRF4
ASGNF4
line 1939
;1938:
;1939: if (tlen < bestdist)
ADDRLP4 28
INDIRF4
ADDRLP4 1112
INDIRF4
GEF4 $839
line 1940
;1940: {
line 1941
;1941: trap_Trace(&tr, flag_red->s.pos.trBase, mins, maxs, gWPArray[i]->origin, flag_red->s.number, MASK_SOLID);
ADDRLP4 32
ARGP4
ADDRLP4 20
INDIRP4
CNSTI4 24
ADDP4
ARGP4
ADDRLP4 1116
ARGP4
ADDRLP4 1128
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 20
INDIRP4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1943
;1942:
;1943: if (tr.fraction == 1 || tr.entityNum == flag_red->s.number)
ADDRLP4 32+8
INDIRF4
CNSTF4 1065353216
EQF4 $845
ADDRLP4 32+52
INDIRI4
ADDRLP4 20
INDIRP4
INDIRI4
NEI4 $841
LABELV $845
line 1944
;1944: {
line 1945
;1945: bestdist = tlen;
ADDRLP4 1112
ADDRLP4 28
INDIRF4
ASGNF4
line 1946
;1946: bestindex = i;
ADDRLP4 1140
ADDRLP4 0
INDIRI4
ASGNI4
line 1947
;1947: found = 1;
ADDRLP4 1144
CNSTI4 1
ASGNI4
line 1948
;1948: }
LABELV $841
line 1949
;1949: }
LABELV $839
line 1951
;1950:
;1951: }
LABELV $835
line 1953
;1952:
;1953: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1954
;1954: }
LABELV $833
line 1932
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $832
line 1956
;1955:
;1956: if (found)
ADDRLP4 1144
INDIRI4
CNSTI4 0
EQI4 $846
line 1957
;1957: {
line 1958
;1958: gWPArray[bestindex]->flags |= WPFLAG_RED_FLAG;
ADDRLP4 1152
ADDRLP4 1140
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 1152
INDIRP4
ADDRLP4 1152
INDIRP4
INDIRI4
CNSTI4 131072
BORI4
ASGNI4
line 1959
;1959: flagRed = gWPArray[bestindex];
ADDRGP4 flagRed
ADDRLP4 1140
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 1960
;1960: oFlagRed = flagRed;
ADDRGP4 oFlagRed
ADDRGP4 flagRed
INDIRP4
ASGNP4
line 1961
;1961: eFlagRed = flag_red;
ADDRGP4 eFlagRed
ADDRLP4 20
INDIRP4
ASGNP4
line 1962
;1962: }
LABELV $846
line 1964
;1963:
;1964: bestdist = 999999;
ADDRLP4 1112
CNSTF4 1232348144
ASGNF4
line 1965
;1965: bestindex = 0;
ADDRLP4 1140
CNSTI4 0
ASGNI4
line 1966
;1966: found = 0;
ADDRLP4 1144
CNSTI4 0
ASGNI4
line 1967
;1967: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $849
JUMPV
LABELV $848
line 1970
;1968:
;1969: while (i < gWPNum)
;1970: {
line 1971
;1971: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 1152
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1152
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $851
ADDRLP4 1152
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $851
line 1972
;1972: {
line 1973
;1973: VectorSubtract(flag_blue->s.pos.trBase, gWPArray[i]->origin, a);
ADDRLP4 1160
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 8
ADDRLP4 24
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 1160
INDIRP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 24
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 1160
INDIRP4
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 8+8
ADDRLP4 24
INDIRP4
CNSTI4 32
ADDP4
INDIRF4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1974
;1974: tlen = VectorLength(a);
ADDRLP4 8
ARGP4
ADDRLP4 1164
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 28
ADDRLP4 1164
INDIRF4
ASGNF4
line 1976
;1975:
;1976: if (tlen < bestdist)
ADDRLP4 28
INDIRF4
ADDRLP4 1112
INDIRF4
GEF4 $855
line 1977
;1977: {
line 1978
;1978: trap_Trace(&tr, flag_blue->s.pos.trBase, mins, maxs, gWPArray[i]->origin, flag_blue->s.number, MASK_SOLID);
ADDRLP4 32
ARGP4
ADDRLP4 24
INDIRP4
CNSTI4 24
ADDP4
ARGP4
ADDRLP4 1116
ARGP4
ADDRLP4 1128
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ARGP4
ADDRLP4 24
INDIRP4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 1980
;1979:
;1980: if (tr.fraction == 1 || tr.entityNum == flag_blue->s.number)
ADDRLP4 32+8
INDIRF4
CNSTF4 1065353216
EQF4 $861
ADDRLP4 32+52
INDIRI4
ADDRLP4 24
INDIRP4
INDIRI4
NEI4 $857
LABELV $861
line 1981
;1981: {
line 1982
;1982: bestdist = tlen;
ADDRLP4 1112
ADDRLP4 28
INDIRF4
ASGNF4
line 1983
;1983: bestindex = i;
ADDRLP4 1140
ADDRLP4 0
INDIRI4
ASGNI4
line 1984
;1984: found = 1;
ADDRLP4 1144
CNSTI4 1
ASGNI4
line 1985
;1985: }
LABELV $857
line 1986
;1986: }
LABELV $855
line 1988
;1987:
;1988: }
LABELV $851
line 1990
;1989:
;1990: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1991
;1991: }
LABELV $849
line 1969
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $848
line 1993
;1992:
;1993: if (found)
ADDRLP4 1144
INDIRI4
CNSTI4 0
EQI4 $862
line 1994
;1994: {
line 1995
;1995: gWPArray[bestindex]->flags |= WPFLAG_BLUE_FLAG;
ADDRLP4 1152
ADDRLP4 1140
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 1152
INDIRP4
ADDRLP4 1152
INDIRP4
INDIRI4
CNSTI4 262144
BORI4
ASGNI4
line 1996
;1996: flagBlue = gWPArray[bestindex];
ADDRGP4 flagBlue
ADDRLP4 1140
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 1997
;1997: oFlagBlue = flagBlue;
ADDRGP4 oFlagBlue
ADDRGP4 flagBlue
INDIRP4
ASGNP4
line 1998
;1998: eFlagBlue = flag_blue;
ADDRGP4 eFlagBlue
ADDRLP4 24
INDIRP4
ASGNP4
line 1999
;1999: }
LABELV $862
line 2000
;2000:}
LABELV $811
endproc FlagObjects 1172 28
export SavePathData
proc SavePathData 112 36
line 2003
;2001:
;2002:int SavePathData(const char *filename)
;2003:{
line 2012
;2004: fileHandle_t f;
;2005: char *fileString;
;2006: char *storeString;
;2007: char *routePath;
;2008: vec3_t a;
;2009: float flLen;
;2010: int i, s, n;
;2011:
;2012: fileString = NULL;
ADDRLP4 28
CNSTP4 0
ASGNP4
line 2013
;2013: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 2014
;2014: s = 0;
ADDRLP4 40
CNSTI4 0
ASGNI4
line 2016
;2015:
;2016: if (!gWPNum)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 0
NEI4 $865
line 2017
;2017: {
line 2018
;2018: return 0;
CNSTI4 0
RETI4
ADDRGP4 $864
JUMPV
LABELV $865
line 2021
;2019: }
;2020:
;2021: routePath = (char *)B_TempAlloc(1024);
CNSTI4 1024
ARGI4
ADDRLP4 44
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 36
ADDRLP4 44
INDIRP4
ASGNP4
line 2023
;2022:
;2023: Com_sprintf(routePath, 1024, "botroutes/%s.wnt\0", filename);
ADDRLP4 36
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 $726
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 2025
;2024:
;2025: trap_FS_FOpenFile(routePath, &f, FS_WRITE);
ADDRLP4 36
INDIRP4
ARGP4
ADDRLP4 32
ARGP4
CNSTI4 1
ARGI4
ADDRGP4 trap_FS_FOpenFile
CALLI4
pop
line 2027
;2026:
;2027: B_TempFree(1024); //routePath
CNSTI4 1024
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 2029
;2028:
;2029: if (!f)
ADDRLP4 32
INDIRI4
CNSTI4 0
NEI4 $867
line 2030
;2030: {
line 2031
;2031: G_Printf(S_COLOR_RED "ERROR: Could not open file to write path data\n");
ADDRGP4 $869
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2032
;2032: return 0;
CNSTI4 0
RETI4
ADDRGP4 $864
JUMPV
LABELV $867
line 2035
;2033: }
;2034:
;2035: if (!RepairPaths()) //check if we can see all waypoints from the last. If not, try to branch over.
ADDRLP4 48
ADDRGP4 RepairPaths
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
NEI4 $870
line 2036
;2036: {
line 2037
;2037: trap_FS_FCloseFile(f);
ADDRLP4 32
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 2038
;2038: return 0;
CNSTI4 0
RETI4
ADDRGP4 $864
JUMPV
LABELV $870
line 2041
;2039: }
;2040:
;2041: CalculatePaths(); //make everything nice and connected before saving
ADDRGP4 CalculatePaths
CALLV
pop
line 2043
;2042:
;2043: FlagObjects(); //currently only used for flagging waypoints nearest CTF flags
ADDRGP4 FlagObjects
CALLV
pop
line 2045
;2044:
;2045: fileString = (char *)B_TempAlloc(524288);
CNSTI4 524288
ARGI4
ADDRLP4 52
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 28
ADDRLP4 52
INDIRP4
ASGNP4
line 2046
;2046: storeString = (char *)B_TempAlloc(4096);
CNSTI4 4096
ARGI4
ADDRLP4 56
ADDRGP4 B_TempAlloc
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 56
INDIRP4
ASGNP4
line 2048
;2047:
;2048: Com_sprintf(fileString, 524288, "%i %i %f (%f %f %f) { ", gWPArray[i]->index, gWPArray[i]->flags, gWPArray[i]->weight, gWPArray[i]->origin[0], gWPArray[i]->origin[1], gWPArray[i]->origin[2]);
ADDRLP4 28
INDIRP4
ARGP4
CNSTI4 524288
ARGI4
ADDRGP4 $872
ARGP4
ADDRLP4 60
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ARGI4
ADDRLP4 60
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
ARGI4
ADDRLP4 60
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ARGF4
ADDRLP4 60
INDIRP4
INDIRF4
ARGF4
ADDRLP4 60
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
ARGF4
ADDRLP4 60
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ARGF4
ADDRGP4 Com_sprintf
CALLV
pop
line 2050
;2049:
;2050: n = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $874
JUMPV
LABELV $873
line 2053
;2051:
;2052: while (n < gWPArray[i]->neighbornum)
;2053: {
line 2054
;2054: if (gWPArray[i]->neighbors[n].forceJumpTo)
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $876
line 2055
;2055: {
line 2056
;2056: Com_sprintf(storeString, 4096, "%s%i-%i ", storeString, gWPArray[i]->neighbors[n].num, gWPArray[i]->neighbors[n].forceJumpTo);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 $878
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 68
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
ASGNP4
ADDRLP4 68
INDIRP4
INDIRI4
ARGI4
ADDRLP4 68
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ARGI4
ADDRGP4 Com_sprintf
CALLV
pop
line 2057
;2057: }
ADDRGP4 $877
JUMPV
LABELV $876
line 2059
;2058: else
;2059: {
line 2060
;2060: Com_sprintf(storeString, 4096, "%s%i ", storeString, gWPArray[i]->neighbors[n].num);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 $879
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
INDIRI4
ARGI4
ADDRGP4 Com_sprintf
CALLV
pop
line 2061
;2061: }
LABELV $877
line 2062
;2062: n++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2063
;2063: }
LABELV $874
line 2052
ADDRLP4 4
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
LTI4 $873
line 2065
;2064:
;2065: if (gWPArray[i+1] && gWPArray[i+1]->inuse && gWPArray[i+1]->index)
ADDRLP4 64
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 64
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $880
ADDRLP4 68
CNSTI4 0
ASGNI4
ADDRLP4 64
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ADDRLP4 68
INDIRI4
EQI4 $880
ADDRLP4 64
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 68
INDIRI4
EQI4 $880
line 2066
;2066: {
line 2067
;2067: VectorSubtract(gWPArray[i]->origin, gWPArray[i+1]->origin, a);
ADDRLP4 72
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 76
ADDRLP4 72
INDIRI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 16
ADDRLP4 76
INDIRP4
INDIRP4
INDIRF4
ADDRLP4 72
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 80
CNSTI4 4
ASGNI4
ADDRLP4 16+4
ADDRLP4 76
INDIRP4
INDIRP4
ADDRLP4 80
INDIRI4
ADDP4
INDIRF4
ADDRLP4 72
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 80
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 84
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 88
CNSTI4 8
ASGNI4
ADDRLP4 16+8
ADDRLP4 84
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 88
INDIRI4
ADDP4
INDIRF4
ADDRLP4 84
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 88
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2068
;2068: flLen = VectorLength(a);
ADDRLP4 16
ARGP4
ADDRLP4 92
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 12
ADDRLP4 92
INDIRF4
ASGNF4
line 2069
;2069: }
ADDRGP4 $881
JUMPV
LABELV $880
line 2071
;2070: else
;2071: {
line 2072
;2072: flLen = 0;
ADDRLP4 12
CNSTF4 0
ASGNF4
line 2073
;2073: }
LABELV $881
line 2075
;2074:
;2075: gWPArray[i]->disttonext = flLen;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
line 2077
;2076:
;2077: Com_sprintf(fileString, 524288, "%s} %f\n", fileString, flLen);
ADDRLP4 28
INDIRP4
ARGP4
CNSTI4 524288
ARGI4
ADDRGP4 $890
ARGP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 12
INDIRF4
ARGF4
ADDRGP4 Com_sprintf
CALLV
pop
line 2079
;2078:
;2079: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $892
JUMPV
LABELV $891
line 2082
;2080:
;2081: while (i < gWPNum)
;2082: {
line 2084
;2083: //sprintf(fileString, "%s%i %i %f (%f %f %f) { ", fileString, gWPArray[i]->index, gWPArray[i]->flags, gWPArray[i]->weight, gWPArray[i]->origin[0], gWPArray[i]->origin[1], gWPArray[i]->origin[2]);
;2084: Com_sprintf(storeString, 4096, "%i %i %f (%f %f %f) { ", gWPArray[i]->index, gWPArray[i]->flags, gWPArray[i]->weight, gWPArray[i]->origin[0], gWPArray[i]->origin[1], gWPArray[i]->origin[2]);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 $872
ARGP4
ADDRLP4 76
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 76
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ARGI4
ADDRLP4 76
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
ARGI4
ADDRLP4 76
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ARGF4
ADDRLP4 76
INDIRP4
INDIRF4
ARGF4
ADDRLP4 76
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
ARGF4
ADDRLP4 76
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ARGF4
ADDRGP4 Com_sprintf
CALLV
pop
line 2086
;2085:
;2086: n = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $895
JUMPV
LABELV $894
line 2089
;2087:
;2088: while (n < gWPArray[i]->neighbornum)
;2089: {
line 2090
;2090: if (gWPArray[i]->neighbors[n].forceJumpTo)
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $897
line 2091
;2091: {
line 2092
;2092: Com_sprintf(storeString, 4096, "%s%i-%i ", storeString, gWPArray[i]->neighbors[n].num, gWPArray[i]->neighbors[n].forceJumpTo);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 $878
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 84
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
ASGNP4
ADDRLP4 84
INDIRP4
INDIRI4
ARGI4
ADDRLP4 84
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ARGI4
ADDRGP4 Com_sprintf
CALLV
pop
line 2093
;2093: }
ADDRGP4 $898
JUMPV
LABELV $897
line 2095
;2094: else
;2095: {
line 2096
;2096: Com_sprintf(storeString, 4096, "%s%i ", storeString, gWPArray[i]->neighbors[n].num);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 $879
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 4
INDIRI4
CNSTI4 3
LSHI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 44
ADDP4
ADDP4
INDIRI4
ARGI4
ADDRGP4 Com_sprintf
CALLV
pop
line 2097
;2097: }
LABELV $898
line 2098
;2098: n++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2099
;2099: }
LABELV $895
line 2088
ADDRLP4 4
INDIRI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 40
ADDP4
INDIRI4
LTI4 $894
line 2101
;2100:
;2101: if (gWPArray[i+1] && gWPArray[i+1]->inuse && gWPArray[i+1]->index)
ADDRLP4 80
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 80
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $899
ADDRLP4 84
CNSTI4 0
ASGNI4
ADDRLP4 80
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
EQI4 $899
ADDRLP4 80
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
EQI4 $899
line 2102
;2102: {
line 2103
;2103: VectorSubtract(gWPArray[i]->origin, gWPArray[i+1]->origin, a);
ADDRLP4 88
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 92
ADDRLP4 88
INDIRI4
ADDRGP4 gWPArray
ADDP4
ASGNP4
ADDRLP4 16
ADDRLP4 92
INDIRP4
INDIRP4
INDIRF4
ADDRLP4 88
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 96
CNSTI4 4
ASGNI4
ADDRLP4 16+4
ADDRLP4 92
INDIRP4
INDIRP4
ADDRLP4 96
INDIRI4
ADDP4
INDIRF4
ADDRLP4 88
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 96
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 100
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ASGNI4
ADDRLP4 104
CNSTI4 8
ASGNI4
ADDRLP4 16+8
ADDRLP4 100
INDIRI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ADDRLP4 104
INDIRI4
ADDP4
INDIRF4
ADDRLP4 100
INDIRI4
ADDRGP4 gWPArray+4
ADDP4
INDIRP4
ADDRLP4 104
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2104
;2104: flLen = VectorLength(a);
ADDRLP4 16
ARGP4
ADDRLP4 108
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 12
ADDRLP4 108
INDIRF4
ASGNF4
line 2105
;2105: }
ADDRGP4 $900
JUMPV
LABELV $899
line 2107
;2106: else
;2107: {
line 2108
;2108: flLen = 0;
ADDRLP4 12
CNSTF4 0
ASGNF4
line 2109
;2109: }
LABELV $900
line 2111
;2110:
;2111: gWPArray[i]->disttonext = flLen;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
line 2113
;2112:
;2113: Com_sprintf(storeString, 4096, "%s} %f\n", storeString, flLen);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 4096
ARGI4
ADDRGP4 $890
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
INDIRF4
ARGF4
ADDRGP4 Com_sprintf
CALLV
pop
line 2115
;2114:
;2115: strcat(fileString, storeString);
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 strcat
CALLP4
pop
line 2117
;2116:
;2117: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2118
;2118: }
LABELV $892
line 2081
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $891
line 2120
;2119:
;2120: trap_FS_Write(fileString, strlen(fileString), f);
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 76
INDIRI4
ARGI4
ADDRLP4 32
INDIRI4
ARGI4
ADDRGP4 trap_FS_Write
CALLV
pop
line 2122
;2121:
;2122: B_TempFree(524288); //fileString
CNSTI4 524288
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 2123
;2123: B_TempFree(4096); //storeString
CNSTI4 4096
ARGI4
ADDRGP4 B_TempFree
CALLV
pop
line 2125
;2124:
;2125: trap_FS_FCloseFile(f);
ADDRLP4 32
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 2127
;2126:
;2127: G_Printf("Path data has been saved and updated. You may need to restart the level for some things to be properly calculated.\n");
ADDRGP4 $909
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2129
;2128:
;2129: return 1;
CNSTI4 1
RETI4
LABELV $864
endproc SavePathData 112 36
export LoadPath_ThisLevel
proc LoadPath_ThisLevel 304 16
line 2133
;2130:}
;2131:
;2132:void LoadPath_ThisLevel(void)
;2133:{
line 2135
;2134: vmCvar_t mapname;
;2135: int i = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 2136
;2136: gentity_t *ent = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
line 2138
;2137:
;2138: trap_Cvar_Register( &mapname, "mapname", "", CVAR_SERVERINFO | CVAR_ROM );
ADDRLP4 8
ARGP4
ADDRGP4 $911
ARGP4
ADDRGP4 $912
ARGP4
CNSTI4 68
ARGI4
ADDRGP4 trap_Cvar_Register
CALLV
pop
line 2140
;2139:
;2140: if (LoadPathData(mapname.string) == 2)
ADDRLP4 8+16
ARGP4
ADDRLP4 280
ADDRGP4 LoadPathData
CALLI4
ASGNI4
ADDRLP4 280
INDIRI4
CNSTI4 2
NEI4 $913
line 2141
;2141: {
line 2143
;2142: //enter "edit" mode if cheats enabled?
;2143: }
LABELV $913
line 2145
;2144:
;2145: trap_Cvar_Update(&bot_wp_edit);
ADDRGP4 bot_wp_edit
ARGP4
ADDRGP4 trap_Cvar_Update
CALLV
pop
line 2147
;2146:
;2147: if (bot_wp_edit.value)
ADDRGP4 bot_wp_edit+8
INDIRF4
CNSTF4 0
EQF4 $916
line 2148
;2148: {
line 2149
;2149: gBotEdit = 1;
ADDRGP4 gBotEdit
CNSTF4 1065353216
ASGNF4
line 2150
;2150: }
ADDRGP4 $920
JUMPV
LABELV $916
line 2152
;2151: else
;2152: {
line 2153
;2153: gBotEdit = 0;
ADDRGP4 gBotEdit
CNSTF4 0
ASGNF4
line 2154
;2154: }
ADDRGP4 $920
JUMPV
LABELV $919
line 2158
;2155:
;2156: //set the flag entities
;2157: while (i < MAX_GENTITIES)
;2158: {
line 2159
;2159: ent = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2161
;2160:
;2161: if (ent && ent->inuse && ent->classname)
ADDRLP4 288
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 288
INDIRU4
EQU4 $922
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $922
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 288
INDIRU4
EQU4 $922
line 2162
;2162: {
line 2163
;2163: if (!eFlagRed && strcmp(ent->classname, "team_CTF_redflag") == 0)
ADDRGP4 eFlagRed
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $924
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $823
ARGP4
ADDRLP4 292
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 292
INDIRI4
CNSTI4 0
NEI4 $924
line 2164
;2164: {
line 2165
;2165: eFlagRed = ent;
ADDRGP4 eFlagRed
ADDRLP4 0
INDIRP4
ASGNP4
line 2166
;2166: }
ADDRGP4 $925
JUMPV
LABELV $924
line 2167
;2167: else if (!eFlagBlue && strcmp(ent->classname, "team_CTF_blueflag") == 0)
ADDRGP4 eFlagBlue
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $926
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $826
ARGP4
ADDRLP4 296
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 296
INDIRI4
CNSTI4 0
NEI4 $926
line 2168
;2168: {
line 2169
;2169: eFlagBlue = ent;
ADDRGP4 eFlagBlue
ADDRLP4 0
INDIRP4
ASGNP4
line 2170
;2170: }
LABELV $926
LABELV $925
line 2172
;2171:
;2172: if (eFlagRed && eFlagBlue)
ADDRLP4 300
CNSTU4 0
ASGNU4
ADDRGP4 eFlagRed
INDIRP4
CVPU4 4
ADDRLP4 300
INDIRU4
EQU4 $928
ADDRGP4 eFlagBlue
INDIRP4
CVPU4 4
ADDRLP4 300
INDIRU4
EQU4 $928
line 2173
;2173: {
line 2174
;2174: break;
ADDRGP4 $921
JUMPV
LABELV $928
line 2176
;2175: }
;2176: }
LABELV $922
line 2178
;2177:
;2178: i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2179
;2179: }
LABELV $920
line 2157
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $919
LABELV $921
line 2180
;2180:}
LABELV $910
endproc LoadPath_ThisLevel 304 16
export GetClosestSpawn
proc GetClosestSpawn 60 8
line 2183
;2181:
;2182:gentity_t *GetClosestSpawn(gentity_t *ent)
;2183:{
line 2185
;2184: gentity_t *spawn;
;2185: gentity_t *closestSpawn = NULL;
ADDRLP4 12
CNSTP4 0
ASGNP4
line 2186
;2186: float closestDist = -1;
ADDRLP4 8
CNSTF4 3212836864
ASGNF4
line 2187
;2187: int i = MAX_CLIENTS;
ADDRLP4 4
CNSTI4 32
ASGNI4
line 2189
;2188:
;2189: spawn = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
ADDRGP4 $932
JUMPV
LABELV $931
line 2192
;2190:
;2191: while (i < MAX_GENTITIES)
;2192: {
line 2193
;2193: spawn = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2195
;2194:
;2195: if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $934
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $934
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $936
ARGP4
ADDRLP4 20
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $938
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $937
ARGP4
ADDRLP4 24
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 0
NEI4 $934
LABELV $938
line 2196
;2196: {
line 2200
;2197: float checkDist;
;2198: vec3_t vSub;
;2199:
;2200: VectorSubtract(ent->client->ps.origin, spawn->r.currentOrigin, vSub);
ADDRLP4 44
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
ASGNP4
ADDRLP4 28
ADDRLP4 44
INDIRP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 28+4
ADDRLP4 44
INDIRP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 28+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2201
;2201: checkDist = VectorLength(vSub);
ADDRLP4 28
ARGP4
ADDRLP4 52
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 40
ADDRLP4 52
INDIRF4
ASGNF4
line 2203
;2202:
;2203: if (closestDist == -1 || checkDist < closestDist)
ADDRLP4 8
INDIRF4
CNSTF4 3212836864
EQF4 $943
ADDRLP4 40
INDIRF4
ADDRLP4 8
INDIRF4
GEF4 $941
LABELV $943
line 2204
;2204: {
line 2205
;2205: closestSpawn = spawn;
ADDRLP4 12
ADDRLP4 0
INDIRP4
ASGNP4
line 2206
;2206: closestDist = checkDist;
ADDRLP4 8
ADDRLP4 40
INDIRF4
ASGNF4
line 2207
;2207: }
LABELV $941
line 2208
;2208: }
LABELV $934
line 2210
;2209:
;2210: i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2211
;2211: }
LABELV $932
line 2191
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $931
line 2213
;2212:
;2213: return closestSpawn;
ADDRLP4 12
INDIRP4
RETP4
LABELV $930
endproc GetClosestSpawn 60 8
export GetNextSpawnInIndex
proc GetNextSpawnInIndex 24 8
line 2217
;2214:}
;2215:
;2216:gentity_t *GetNextSpawnInIndex(gentity_t *currentSpawn)
;2217:{
line 2219
;2218: gentity_t *spawn;
;2219: gentity_t *nextSpawn = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 2220
;2220: int i = currentSpawn->s.number+1;
ADDRLP4 4
ADDRFP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2222
;2221:
;2222: spawn = NULL;
ADDRLP4 0
CNSTP4 0
ASGNP4
ADDRGP4 $946
JUMPV
LABELV $945
line 2225
;2223:
;2224: while (i < MAX_GENTITIES)
;2225: {
line 2226
;2226: spawn = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2228
;2227:
;2228: if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $948
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $948
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $936
ARGP4
ADDRLP4 16
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
EQI4 $950
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $937
ARGP4
ADDRLP4 20
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $948
LABELV $950
line 2229
;2229: {
line 2230
;2230: nextSpawn = spawn;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 2231
;2231: break;
ADDRGP4 $947
JUMPV
LABELV $948
line 2234
;2232: }
;2233:
;2234: i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2235
;2235: }
LABELV $946
line 2224
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $945
LABELV $947
line 2237
;2236:
;2237: if (!nextSpawn)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $951
line 2238
;2238: { //loop back around to 0
line 2239
;2239: i = MAX_CLIENTS;
ADDRLP4 4
CNSTI4 32
ASGNI4
ADDRGP4 $954
JUMPV
LABELV $953
line 2242
;2240:
;2241: while (i < MAX_GENTITIES)
;2242: {
line 2243
;2243: spawn = &g_entities[i];
ADDRLP4 0
CNSTI4 828
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 2245
;2244:
;2245: if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) )
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $956
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $956
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $936
ARGP4
ADDRLP4 16
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
EQI4 $958
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
INDIRP4
ARGP4
ADDRGP4 $937
ARGP4
ADDRLP4 20
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $956
LABELV $958
line 2246
;2246: {
line 2247
;2247: nextSpawn = spawn;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 2248
;2248: break;
ADDRGP4 $955
JUMPV
LABELV $956
line 2251
;2249: }
;2250:
;2251: i++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2252
;2252: }
LABELV $954
line 2241
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $953
LABELV $955
line 2253
;2253: }
LABELV $951
line 2255
;2254:
;2255: return nextSpawn;
ADDRLP4 8
INDIRP4
RETP4
LABELV $944
endproc GetNextSpawnInIndex 24 8
export AcceptBotCommand
proc AcceptBotCommand 344 16
line 2259
;2256:}
;2257:
;2258:int AcceptBotCommand(char *cmd, gentity_t *pl)
;2259:{
line 2265
;2260: int OptionalArgument, i;
;2261: int FlagsFromArgument;
;2262: char *OptionalSArgument, *RequiredSArgument;
;2263: vmCvar_t mapname;
;2264:
;2265: if (!gBotEdit)
ADDRGP4 gBotEdit
INDIRF4
CNSTF4 0
NEF4 $960
line 2266
;2266: {
line 2267
;2267: return 0;
CNSTI4 0
RETI4
ADDRGP4 $959
JUMPV
LABELV $960
line 2270
;2268: }
;2269:
;2270: OptionalArgument = 0;
ADDRLP4 16
CNSTI4 0
ASGNI4
line 2271
;2271: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 2272
;2272: FlagsFromArgument = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 2273
;2273: OptionalSArgument = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 2274
;2274: RequiredSArgument = NULL;
ADDRLP4 4
CNSTP4 0
ASGNP4
line 2279
;2275:
;2276: //if a waypoint editing related command is issued, bots will deactivate.
;2277: //once bot_wp_save is issued and the trail is recalculated, bots will activate again.
;2278:
;2279: if (!pl || !pl->client)
ADDRLP4 292
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 296
CNSTU4 0
ASGNU4
ADDRLP4 292
INDIRP4
CVPU4 4
ADDRLP4 296
INDIRU4
EQU4 $964
ADDRLP4 292
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 296
INDIRU4
NEU4 $962
LABELV $964
line 2280
;2280: {
line 2281
;2281: return 0;
CNSTI4 0
RETI4
ADDRGP4 $959
JUMPV
LABELV $962
line 2284
;2282: }
;2283:
;2284: if (Q_stricmp (cmd, "bot_wp_cmdlist") == 0) //lists all the bot waypoint commands.
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $967
ARGP4
ADDRLP4 300
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 300
INDIRI4
CNSTI4 0
NEI4 $965
line 2285
;2285: {
line 2286
;2286: G_Printf(S_COLOR_YELLOW "bot_wp_add" S_COLOR_WHITE " - Add a waypoint (optional int parameter will insert the point after the specified waypoint index in a trail)\n\n");
ADDRGP4 $968
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2287
;2287: G_Printf(S_COLOR_YELLOW "bot_wp_rem" S_COLOR_WHITE " - Remove a waypoint (removes last unless waypoint index is specified as a parameter)\n\n");
ADDRGP4 $969
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2288
;2288: G_Printf(S_COLOR_YELLOW "bot_wp_addflagged" S_COLOR_WHITE " - Same as wp_add, but adds a flagged point (type bot_wp_addflagged for help)\n\n");
ADDRGP4 $970
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2289
;2289: G_Printf(S_COLOR_YELLOW "bot_wp_switchflags" S_COLOR_WHITE " - Switches flags on an existing waypoint (type bot_wp_switchflags for help)\n\n");
ADDRGP4 $971
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2290
;2290: G_Printf(S_COLOR_YELLOW "bot_wp_tele" S_COLOR_WHITE " - Teleport yourself to the specified waypoint's location\n");
ADDRGP4 $972
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2291
;2291: G_Printf(S_COLOR_YELLOW "bot_wp_killoneways" S_COLOR_WHITE " - Removes oneway (backward and forward) flags on all waypoints in the level\n\n");
ADDRGP4 $973
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2292
;2292: G_Printf(S_COLOR_YELLOW "bot_wp_save" S_COLOR_WHITE " - Saves all waypoint data into a file for later use\n");
ADDRGP4 $974
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2294
;2293:
;2294: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $965
line 2297
;2295: }
;2296:
;2297: if (Q_stricmp (cmd, "bot_wp_add") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $977
ARGP4
ADDRLP4 304
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 304
INDIRI4
CNSTI4 0
NEI4 $975
line 2298
;2298: {
line 2299
;2299: gDeactivated = 1;
ADDRGP4 gDeactivated
CNSTF4 1065353216
ASGNF4
line 2300
;2300: OptionalSArgument = ConcatArgs( 1 );
CNSTI4 1
ARGI4
ADDRLP4 308
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 308
INDIRP4
ASGNP4
line 2302
;2301:
;2302: if (OptionalSArgument)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $978
line 2303
;2303: {
line 2304
;2304: OptionalArgument = atoi(OptionalSArgument);
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 312
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 312
INDIRI4
ASGNI4
line 2305
;2305: }
LABELV $978
line 2307
;2306:
;2307: if (OptionalSArgument && OptionalSArgument[0])
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $980
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $980
line 2308
;2308: {
line 2309
;2309: CreateNewWP_InTrail(pl->client->ps.origin, 0, OptionalArgument);
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 CreateNewWP_InTrail
CALLI4
pop
line 2310
;2310: }
ADDRGP4 $981
JUMPV
LABELV $980
line 2312
;2311: else
;2312: {
line 2313
;2313: CreateNewWP(pl->client->ps.origin, 0);
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 CreateNewWP
CALLV
pop
line 2314
;2314: }
LABELV $981
line 2315
;2315: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $975
line 2318
;2316: }
;2317:
;2318: if (Q_stricmp (cmd, "bot_wp_rem") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $984
ARGP4
ADDRLP4 308
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 308
INDIRI4
CNSTI4 0
NEI4 $982
line 2319
;2319: {
line 2320
;2320: gDeactivated = 1;
ADDRGP4 gDeactivated
CNSTF4 1065353216
ASGNF4
line 2322
;2321:
;2322: OptionalSArgument = ConcatArgs( 1 );
CNSTI4 1
ARGI4
ADDRLP4 312
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 312
INDIRP4
ASGNP4
line 2324
;2323:
;2324: if (OptionalSArgument)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $985
line 2325
;2325: {
line 2326
;2326: OptionalArgument = atoi(OptionalSArgument);
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 316
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 316
INDIRI4
ASGNI4
line 2327
;2327: }
LABELV $985
line 2329
;2328:
;2329: if (OptionalSArgument && OptionalSArgument[0])
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $987
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $987
line 2330
;2330: {
line 2331
;2331: RemoveWP_InTrail(OptionalArgument);
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 RemoveWP_InTrail
CALLV
pop
line 2332
;2332: }
ADDRGP4 $988
JUMPV
LABELV $987
line 2334
;2333: else
;2334: {
line 2335
;2335: RemoveWP();
ADDRGP4 RemoveWP
CALLV
pop
line 2336
;2336: }
LABELV $988
line 2338
;2337:
;2338: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $982
line 2341
;2339: }
;2340:
;2341: if (Q_stricmp (cmd, "bot_wp_tele") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $991
ARGP4
ADDRLP4 312
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 312
INDIRI4
CNSTI4 0
NEI4 $989
line 2342
;2342: {
line 2343
;2343: gDeactivated = 1;
ADDRGP4 gDeactivated
CNSTF4 1065353216
ASGNF4
line 2344
;2344: OptionalSArgument = ConcatArgs( 1 );
CNSTI4 1
ARGI4
ADDRLP4 316
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 316
INDIRP4
ASGNP4
line 2346
;2345:
;2346: if (OptionalSArgument)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $992
line 2347
;2347: {
line 2348
;2348: OptionalArgument = atoi(OptionalSArgument);
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 320
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 320
INDIRI4
ASGNI4
line 2349
;2349: }
LABELV $992
line 2351
;2350:
;2351: if (OptionalSArgument && OptionalSArgument[0])
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $994
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $994
line 2352
;2352: {
line 2353
;2353: TeleportToWP(pl, OptionalArgument);
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 TeleportToWP
CALLV
pop
line 2354
;2354: }
ADDRGP4 $995
JUMPV
LABELV $994
line 2356
;2355: else
;2356: {
line 2357
;2357: G_Printf(S_COLOR_YELLOW "You didn't specify an index. Assuming last.\n");
ADDRGP4 $996
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2358
;2358: TeleportToWP(pl, gWPNum-1);
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 gWPNum
INDIRI4
CNSTI4 1
SUBI4
ARGI4
ADDRGP4 TeleportToWP
CALLV
pop
line 2359
;2359: }
LABELV $995
line 2360
;2360: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $989
line 2363
;2361: }
;2362:
;2363: if (Q_stricmp (cmd, "bot_wp_spawntele") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $999
ARGP4
ADDRLP4 316
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 316
INDIRI4
CNSTI4 0
NEI4 $997
line 2364
;2364: {
line 2365
;2365: gentity_t *closestSpawn = GetClosestSpawn(pl);
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 324
ADDRGP4 GetClosestSpawn
CALLP4
ASGNP4
ADDRLP4 320
ADDRLP4 324
INDIRP4
ASGNP4
line 2367
;2366:
;2367: if (!closestSpawn)
ADDRLP4 320
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1000
line 2368
;2368: { //There should always be a spawn point..
line 2369
;2369: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1000
line 2372
;2370: }
;2371:
;2372: closestSpawn = GetNextSpawnInIndex(closestSpawn);
ADDRLP4 320
INDIRP4
ARGP4
ADDRLP4 328
ADDRGP4 GetNextSpawnInIndex
CALLP4
ASGNP4
ADDRLP4 320
ADDRLP4 328
INDIRP4
ASGNP4
line 2374
;2373:
;2374: if (closestSpawn)
ADDRLP4 320
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1002
line 2375
;2375: {
line 2376
;2376: VectorCopy(closestSpawn->r.currentOrigin, pl->client->ps.origin);
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ADDRLP4 320
INDIRP4
CNSTI4 368
ADDP4
INDIRB
ASGNB 12
line 2377
;2377: }
LABELV $1002
line 2378
;2378: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $997
line 2381
;2379: }
;2380:
;2381: if (Q_stricmp (cmd, "bot_wp_addflagged") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $1006
ARGP4
ADDRLP4 320
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 320
INDIRI4
CNSTI4 0
NEI4 $1004
line 2382
;2382: {
line 2383
;2383: gDeactivated = 1;
ADDRGP4 gDeactivated
CNSTF4 1065353216
ASGNF4
line 2385
;2384:
;2385: RequiredSArgument = ConcatArgs( 1 );
CNSTI4 1
ARGI4
ADDRLP4 324
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 324
INDIRP4
ASGNP4
line 2387
;2386:
;2387: if (!RequiredSArgument || !RequiredSArgument[0])
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1009
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $1012
LABELV $1009
line 2388
;2388: {
line 2389
;2389: G_Printf(S_COLOR_YELLOW "Flag string needed for bot_wp_addflagged\nj - Jump point\nd - Duck point\nc - Snipe or camp standing\nf - Wait for func\nm - Do not move to when func is under\ns - Snipe or camp\nx - Oneway, forward\ny - Oneway, back\ng - Mission goal\nn - No visibility\nExample (for a point the bot would jump at, and reverse on when traveling a trail backwards):\nbot_wp_addflagged jx\n");
ADDRGP4 $1010
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2390
;2390: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1011
line 2394
;2391: }
;2392:
;2393: while (RequiredSArgument[i])
;2394: {
line 2395
;2395: if (RequiredSArgument[i] == 'j')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 106
NEI4 $1014
line 2396
;2396: {
line 2397
;2397: FlagsFromArgument |= WPFLAG_JUMP;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 16
BORI4
ASGNI4
line 2398
;2398: }
ADDRGP4 $1015
JUMPV
LABELV $1014
line 2399
;2399: else if (RequiredSArgument[i] == 'd')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 100
NEI4 $1016
line 2400
;2400: {
line 2401
;2401: FlagsFromArgument |= WPFLAG_DUCK;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 2402
;2402: }
ADDRGP4 $1017
JUMPV
LABELV $1016
line 2403
;2403: else if (RequiredSArgument[i] == 'c')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 99
NEI4 $1018
line 2404
;2404: {
line 2405
;2405: FlagsFromArgument |= WPFLAG_SNIPEORCAMPSTAND;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 2048
BORI4
ASGNI4
line 2406
;2406: }
ADDRGP4 $1019
JUMPV
LABELV $1018
line 2407
;2407: else if (RequiredSArgument[i] == 'f')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 102
NEI4 $1020
line 2408
;2408: {
line 2409
;2409: FlagsFromArgument |= WPFLAG_WAITFORFUNC;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 4096
BORI4
ASGNI4
line 2410
;2410: }
ADDRGP4 $1021
JUMPV
LABELV $1020
line 2411
;2411: else if (RequiredSArgument[i] == 's')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 115
NEI4 $1022
line 2412
;2412: {
line 2413
;2413: FlagsFromArgument |= WPFLAG_SNIPEORCAMP;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 8192
BORI4
ASGNI4
line 2414
;2414: }
ADDRGP4 $1023
JUMPV
LABELV $1022
line 2415
;2415: else if (RequiredSArgument[i] == 'x')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 120
NEI4 $1024
line 2416
;2416: {
line 2417
;2417: FlagsFromArgument |= WPFLAG_ONEWAY_FWD;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 2418
;2418: }
ADDRGP4 $1025
JUMPV
LABELV $1024
line 2419
;2419: else if (RequiredSArgument[i] == 'y')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 121
NEI4 $1026
line 2420
;2420: {
line 2421
;2421: FlagsFromArgument |= WPFLAG_ONEWAY_BACK;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 32768
BORI4
ASGNI4
line 2422
;2422: }
ADDRGP4 $1027
JUMPV
LABELV $1026
line 2423
;2423: else if (RequiredSArgument[i] == 'g')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 103
NEI4 $1028
line 2424
;2424: {
line 2425
;2425: FlagsFromArgument |= WPFLAG_GOALPOINT;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 65536
BORI4
ASGNI4
line 2426
;2426: }
ADDRGP4 $1029
JUMPV
LABELV $1028
line 2427
;2427: else if (RequiredSArgument[i] == 'n')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 110
NEI4 $1030
line 2428
;2428: {
line 2429
;2429: FlagsFromArgument |= WPFLAG_NOVIS;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1024
BORI4
ASGNI4
line 2430
;2430: }
ADDRGP4 $1031
JUMPV
LABELV $1030
line 2431
;2431: else if (RequiredSArgument[i] == 'm')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 109
NEI4 $1032
line 2432
;2432: {
line 2433
;2433: FlagsFromArgument |= WPFLAG_NOMOVEFUNC;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 2097152
BORI4
ASGNI4
line 2434
;2434: }
LABELV $1032
LABELV $1031
LABELV $1029
LABELV $1027
LABELV $1025
LABELV $1023
LABELV $1021
LABELV $1019
LABELV $1017
LABELV $1015
line 2436
;2435:
;2436: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2437
;2437: }
LABELV $1012
line 2393
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $1011
line 2439
;2438:
;2439: OptionalSArgument = ConcatArgs( 2 );
CNSTI4 2
ARGI4
ADDRLP4 332
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 332
INDIRP4
ASGNP4
line 2441
;2440:
;2441: if (OptionalSArgument)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1034
line 2442
;2442: {
line 2443
;2443: OptionalArgument = atoi(OptionalSArgument);
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 336
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 336
INDIRI4
ASGNI4
line 2444
;2444: }
LABELV $1034
line 2446
;2445:
;2446: if (OptionalSArgument && OptionalSArgument[0])
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1036
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $1036
line 2447
;2447: {
line 2448
;2448: CreateNewWP_InTrail(pl->client->ps.origin, FlagsFromArgument, OptionalArgument);
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 12
INDIRI4
ARGI4
ADDRLP4 16
INDIRI4
ARGI4
ADDRGP4 CreateNewWP_InTrail
CALLI4
pop
line 2449
;2449: }
ADDRGP4 $1037
JUMPV
LABELV $1036
line 2451
;2450: else
;2451: {
line 2452
;2452: CreateNewWP(pl->client->ps.origin, FlagsFromArgument);
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 CreateNewWP
CALLV
pop
line 2453
;2453: }
LABELV $1037
line 2454
;2454: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1004
line 2457
;2455: }
;2456:
;2457: if (Q_stricmp (cmd, "bot_wp_switchflags") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $1040
ARGP4
ADDRLP4 324
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 324
INDIRI4
CNSTI4 0
NEI4 $1038
line 2458
;2458: {
line 2459
;2459: gDeactivated = 1;
ADDRGP4 gDeactivated
CNSTF4 1065353216
ASGNF4
line 2461
;2460:
;2461: RequiredSArgument = ConcatArgs( 1 );
CNSTI4 1
ARGI4
ADDRLP4 328
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 328
INDIRP4
ASGNP4
line 2463
;2462:
;2463: if (!RequiredSArgument || !RequiredSArgument[0])
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1043
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $1046
LABELV $1043
line 2464
;2464: {
line 2465
;2465: G_Printf(S_COLOR_YELLOW "Flag string needed for bot_wp_switchflags\nType bot_wp_addflagged for a list of flags and their corresponding characters, or use 0 for no flags.\nSyntax: bot_wp_switchflags <flags> <n>\n");
ADDRGP4 $1044
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2466
;2466: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1045
line 2470
;2467: }
;2468:
;2469: while (RequiredSArgument[i])
;2470: {
line 2471
;2471: if (RequiredSArgument[i] == 'j')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 106
NEI4 $1048
line 2472
;2472: {
line 2473
;2473: FlagsFromArgument |= WPFLAG_JUMP;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 16
BORI4
ASGNI4
line 2474
;2474: }
ADDRGP4 $1049
JUMPV
LABELV $1048
line 2475
;2475: else if (RequiredSArgument[i] == 'd')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 100
NEI4 $1050
line 2476
;2476: {
line 2477
;2477: FlagsFromArgument |= WPFLAG_DUCK;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 32
BORI4
ASGNI4
line 2478
;2478: }
ADDRGP4 $1051
JUMPV
LABELV $1050
line 2479
;2479: else if (RequiredSArgument[i] == 'c')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 99
NEI4 $1052
line 2480
;2480: {
line 2481
;2481: FlagsFromArgument |= WPFLAG_SNIPEORCAMPSTAND;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 2048
BORI4
ASGNI4
line 2482
;2482: }
ADDRGP4 $1053
JUMPV
LABELV $1052
line 2483
;2483: else if (RequiredSArgument[i] == 'f')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 102
NEI4 $1054
line 2484
;2484: {
line 2485
;2485: FlagsFromArgument |= WPFLAG_WAITFORFUNC;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 4096
BORI4
ASGNI4
line 2486
;2486: }
ADDRGP4 $1055
JUMPV
LABELV $1054
line 2487
;2487: else if (RequiredSArgument[i] == 's')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 115
NEI4 $1056
line 2488
;2488: {
line 2489
;2489: FlagsFromArgument |= WPFLAG_SNIPEORCAMP;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 8192
BORI4
ASGNI4
line 2490
;2490: }
ADDRGP4 $1057
JUMPV
LABELV $1056
line 2491
;2491: else if (RequiredSArgument[i] == 'x')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 120
NEI4 $1058
line 2492
;2492: {
line 2493
;2493: FlagsFromArgument |= WPFLAG_ONEWAY_FWD;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 16384
BORI4
ASGNI4
line 2494
;2494: }
ADDRGP4 $1059
JUMPV
LABELV $1058
line 2495
;2495: else if (RequiredSArgument[i] == 'y')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 121
NEI4 $1060
line 2496
;2496: {
line 2497
;2497: FlagsFromArgument |= WPFLAG_ONEWAY_BACK;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 32768
BORI4
ASGNI4
line 2498
;2498: }
ADDRGP4 $1061
JUMPV
LABELV $1060
line 2499
;2499: else if (RequiredSArgument[i] == 'g')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 103
NEI4 $1062
line 2500
;2500: {
line 2501
;2501: FlagsFromArgument |= WPFLAG_GOALPOINT;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 65536
BORI4
ASGNI4
line 2502
;2502: }
ADDRGP4 $1063
JUMPV
LABELV $1062
line 2503
;2503: else if (RequiredSArgument[i] == 'n')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 110
NEI4 $1064
line 2504
;2504: {
line 2505
;2505: FlagsFromArgument |= WPFLAG_NOVIS;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1024
BORI4
ASGNI4
line 2506
;2506: }
ADDRGP4 $1065
JUMPV
LABELV $1064
line 2507
;2507: else if (RequiredSArgument[i] == 'm')
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 109
NEI4 $1066
line 2508
;2508: {
line 2509
;2509: FlagsFromArgument |= WPFLAG_NOMOVEFUNC;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 2097152
BORI4
ASGNI4
line 2510
;2510: }
LABELV $1066
LABELV $1065
LABELV $1063
LABELV $1061
LABELV $1059
LABELV $1057
LABELV $1055
LABELV $1053
LABELV $1051
LABELV $1049
line 2512
;2511:
;2512: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2513
;2513: }
LABELV $1046
line 2469
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $1045
line 2515
;2514:
;2515: OptionalSArgument = ConcatArgs( 2 );
CNSTI4 2
ARGI4
ADDRLP4 336
ADDRGP4 ConcatArgs
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 336
INDIRP4
ASGNP4
line 2517
;2516:
;2517: if (OptionalSArgument)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1068
line 2518
;2518: {
line 2519
;2519: OptionalArgument = atoi(OptionalSArgument);
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 340
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 340
INDIRI4
ASGNI4
line 2520
;2520: }
LABELV $1068
line 2522
;2521:
;2522: if (OptionalSArgument && OptionalSArgument[0])
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1070
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $1070
line 2523
;2523: {
line 2524
;2524: WPFlagsModify(OptionalArgument, FlagsFromArgument);
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 WPFlagsModify
CALLV
pop
line 2525
;2525: }
ADDRGP4 $1071
JUMPV
LABELV $1070
line 2527
;2526: else
;2527: {
line 2528
;2528: G_Printf(S_COLOR_YELLOW "Waypoint number (to modify) needed for bot_wp_switchflags\nSyntax: bot_wp_switchflags <flags> <n>\n");
ADDRGP4 $1072
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 2529
;2529: }
LABELV $1071
line 2530
;2530: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1038
line 2533
;2531: }
;2532:
;2533: if (Q_stricmp (cmd, "bot_wp_killoneways") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $1075
ARGP4
ADDRLP4 328
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 328
INDIRI4
CNSTI4 0
NEI4 $1073
line 2534
;2534: {
line 2535
;2535: i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1077
JUMPV
LABELV $1076
line 2538
;2536:
;2537: while (i < gWPNum)
;2538: {
line 2539
;2539: if (gWPArray[i] && gWPArray[i]->inuse)
ADDRLP4 332
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
ADDRLP4 332
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1079
ADDRLP4 332
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1079
line 2540
;2540: {
line 2541
;2541: if (gWPArray[i]->flags & WPFLAG_ONEWAY_FWD)
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
CNSTI4 16384
BANDI4
CNSTI4 0
EQI4 $1081
line 2542
;2542: {
line 2543
;2543: gWPArray[i]->flags -= WPFLAG_ONEWAY_FWD;
ADDRLP4 336
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 336
INDIRP4
ADDRLP4 336
INDIRP4
INDIRI4
CNSTI4 16384
SUBI4
ASGNI4
line 2544
;2544: }
LABELV $1081
line 2545
;2545: if (gWPArray[i]->flags & WPFLAG_ONEWAY_BACK)
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRI4
CNSTI4 32768
BANDI4
CNSTI4 0
EQI4 $1083
line 2546
;2546: {
line 2547
;2547: gWPArray[i]->flags -= WPFLAG_ONEWAY_BACK;
ADDRLP4 336
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 336
INDIRP4
ADDRLP4 336
INDIRP4
INDIRI4
CNSTI4 32768
SUBI4
ASGNI4
line 2548
;2548: }
LABELV $1083
line 2549
;2549: }
LABELV $1079
line 2551
;2550:
;2551: i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2552
;2552: }
LABELV $1077
line 2537
ADDRLP4 0
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $1076
line 2554
;2553:
;2554: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1073
line 2557
;2555: }
;2556:
;2557: if (Q_stricmp (cmd, "bot_wp_save") == 0)
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 $1087
ARGP4
ADDRLP4 332
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 332
INDIRI4
CNSTI4 0
NEI4 $1085
line 2558
;2558: {
line 2559
;2559: gDeactivated = 0;
ADDRGP4 gDeactivated
CNSTF4 0
ASGNF4
line 2560
;2560: trap_Cvar_Register( &mapname, "mapname", "", CVAR_SERVERINFO | CVAR_ROM );
ADDRLP4 20
ARGP4
ADDRGP4 $911
ARGP4
ADDRGP4 $912
ARGP4
CNSTI4 68
ARGI4
ADDRGP4 trap_Cvar_Register
CALLV
pop
line 2561
;2561: SavePathData(mapname.string);
ADDRLP4 20+16
ARGP4
ADDRGP4 SavePathData
CALLI4
pop
line 2562
;2562: return 1;
CNSTI4 1
RETI4
ADDRGP4 $959
JUMPV
LABELV $1085
line 2565
;2563: }
;2564:
;2565: return 0;
CNSTI4 0
RETI4
LABELV $959
endproc AcceptBotCommand 344 16
import floattime
bss
export nodenum
align 4
LABELV nodenum
skip 4
export nodetable
align 4
LABELV nodetable
skip 131072
export gWPArray
align 4
LABELV gWPArray
skip 16384
import gBotChatBuffer
import eFlagBlue
import eFlagRed
import oFlagBlue
import flagBlue
import oFlagRed
import flagRed
import bot_wp_visconnect
import bot_wp_distconnect
import bot_wp_clearweight
import bot_wp_edit
import bot_wp_info
import bot_camp
import bot_attachments
import bot_forgimmick
import bot_forcepowers
import ConcatArgs
import GetBestIdleGoal
import GetNearestVisibleWP
import BotIsAChickenWuss
import OrgVisibleBox
import StandardBotAI
import BotDoChat
import BotUtilizePersonality
import NumBots
import BotResetState
import B_Free
import B_Alloc
import B_TempFree
import B_TempAlloc
import GetBotLibAPI
import trap_ROFF_Purge_Ent
import trap_ROFF_Play
import trap_ROFF_Cache
import trap_ROFF_UpdateEntities
import trap_ROFF_Clean
import trap_SP_GetStringTextString
import trap_SP_Register
import trap_SP_RegisterServer
import trap_SnapVector
import trap_GeneticParentsAndChildSelection
import trap_BotResetWeaponState
import trap_BotFreeWeaponState
import trap_BotAllocWeaponState
import trap_BotLoadWeaponWeights
import trap_BotGetWeaponInfo
import trap_BotChooseBestFightWeapon
import trap_BotAddAvoidSpot
import trap_BotInitMoveState
import trap_BotFreeMoveState
import trap_BotAllocMoveState
import trap_BotPredictVisiblePosition
import trap_BotMovementViewTarget
import trap_BotReachabilityArea
import trap_BotResetLastAvoidReach
import trap_BotResetAvoidReach
import trap_BotMoveInDirection
import trap_BotMoveToGoal
import trap_BotResetMoveState
import trap_BotFreeGoalState
import trap_BotAllocGoalState
import trap_BotMutateGoalFuzzyLogic
import trap_BotSaveGoalFuzzyLogic
import trap_BotInterbreedGoalFuzzyLogic
import trap_BotFreeItemWeights
import trap_BotLoadItemWeights
import trap_BotUpdateEntityItems
import trap_BotInitLevelItems
import trap_BotSetAvoidGoalTime
import trap_BotAvoidGoalTime
import trap_BotGetLevelItemGoal
import trap_BotGetMapLocationGoal
import trap_BotGetNextCampSpotGoal
import trap_BotItemGoalInVisButNotVisible
import trap_BotTouchingGoal
import trap_BotChooseNBGItem
import trap_BotChooseLTGItem
import trap_BotGetSecondGoal
import trap_BotGetTopGoal
import trap_BotGoalName
import trap_BotDumpGoalStack
import trap_BotDumpAvoidGoals
import trap_BotEmptyGoalStack
import trap_BotPopGoal
import trap_BotPushGoal
import trap_BotResetAvoidGoals
import trap_BotRemoveFromAvoidGoals
import trap_BotResetGoalState
import trap_BotSetChatName
import trap_BotSetChatGender
import trap_BotLoadChatFile
import trap_BotReplaceSynonyms
import trap_UnifyWhiteSpaces
import trap_BotMatchVariable
import trap_BotFindMatch
import trap_StringContains
import trap_BotGetChatMessage
import trap_BotEnterChat
import trap_BotChatLength
import trap_BotReplyChat
import trap_BotNumInitialChats
import trap_BotInitialChat
import trap_BotNumConsoleMessages
import trap_BotNextConsoleMessage
import trap_BotRemoveConsoleMessage
import trap_BotQueueConsoleMessage
import trap_BotFreeChatState
import trap_BotAllocChatState
import trap_Characteristic_String
import trap_Characteristic_BInteger
import trap_Characteristic_Integer
import trap_Characteristic_BFloat
import trap_Characteristic_Float
import trap_BotFreeCharacter
import trap_BotLoadCharacter
import trap_EA_ResetInput
import trap_EA_GetInput
import trap_EA_EndRegular
import trap_EA_ForcePower
import trap_EA_Alt_Attack
import trap_EA_View
import trap_EA_Move
import trap_EA_DelayedJump
import trap_EA_Jump
import trap_EA_SelectWeapon
import trap_EA_MoveRight
import trap_EA_MoveLeft
import trap_EA_MoveBack
import trap_EA_MoveForward
import trap_EA_MoveDown
import trap_EA_MoveUp
import trap_EA_Crouch
import trap_EA_Respawn
import trap_EA_Use
import trap_EA_Attack
import trap_EA_Talk
import trap_EA_Gesture
import trap_EA_Action
import trap_EA_Command
import trap_EA_SayTeam
import trap_EA_Say
import trap_AAS_PredictClientMovement
import trap_AAS_Swimming
import trap_AAS_AlternativeRouteGoals
import trap_AAS_PredictRoute
import trap_AAS_EnableRoutingArea
import trap_AAS_AreaTravelTimeToGoalArea
import trap_AAS_AreaReachability
import trap_AAS_IntForBSPEpairKey
import trap_AAS_FloatForBSPEpairKey
import trap_AAS_VectorForBSPEpairKey
import trap_AAS_ValueForBSPEpairKey
import trap_AAS_NextBSPEntity
import trap_AAS_PointContents
import trap_AAS_TraceAreas
import trap_AAS_PointReachabilityAreaIndex
import trap_AAS_PointAreaNum
import trap_AAS_Time
import trap_AAS_PresenceTypeBoundingBox
import trap_AAS_Initialized
import trap_AAS_EntityInfo
import trap_AAS_AreaInfo
import trap_AAS_BBoxAreas
import trap_BotUserCommand
import trap_BotGetServerCommand
import trap_BotGetSnapshotEntity
import trap_BotLibTest
import trap_BotLibUpdateEntity
import trap_BotLibLoadMap
import trap_BotLibStartFrame
import trap_BotLibDefine
import trap_BotLibVarGet
import trap_BotLibVarSet
import trap_BotLibShutdown
import trap_BotLibSetup
import trap_DebugPolygonDelete
import trap_DebugPolygonCreate
import trap_GetEntityToken
import trap_GetUsercmd
import trap_BotFreeClient
import trap_BotAllocateClient
import trap_EntityContact
import trap_EntitiesInBox
import trap_UnlinkEntity
import trap_LinkEntity
import trap_AreasConnected
import trap_AdjustAreaPortalState
import trap_InPVSIgnorePortals
import trap_InPVS
import trap_PointContents
import trap_Trace
import trap_SetBrushModel
import trap_GetServerinfo
import trap_SetUserinfo
import trap_GetUserinfo
import trap_GetConfigstring
import trap_SetConfigstring
import trap_SendServerCommand
import trap_DropClient
import trap_LocateGameData
import trap_Cvar_VariableStringBuffer
import trap_Cvar_VariableValue
import trap_Cvar_VariableIntegerValue
import trap_Cvar_Set
import trap_Cvar_Update
import trap_Cvar_Register
import trap_SendConsoleCommand
import trap_FS_GetFileList
import trap_FS_FCloseFile
import trap_FS_Write
import trap_FS_Read
import trap_FS_FOpenFile
import trap_Args
import trap_Argv
import trap_Argc
import trap_Milliseconds
import trap_Error
import trap_Printf
import g_timeouttospec
import g_forceDodge
import g_dismember
import g_singlePlayer
import g_enableBreath
import g_enableDust
import g_rankings
import pmove_msec
import pmove_fixed
import g_smoothClients
import g_blueteam
import g_redteam
import g_debugUp
import g_debugRight
import g_debugForward
import g_filterBan
import g_banIPs
import g_teamForceBalance
import g_teamAutoJoin
import g_allowVote
import g_blood
import g_doWarmup
import g_warmup
import g_motd
import g_synchronousClients
import g_adaptRespawn
import g_weaponTeamRespawn
import g_weaponRespawn
import g_debugDamage
import g_debugAlloc
import g_debugMove
import g_inactivity
import g_forcerespawn
import g_quadfactor
import g_knockback
import g_speed
import g_gravity
import g_needpass
import g_password
import g_friendlySaber
import g_friendlyFire
import g_saberInterpolate
import g_capturelimit
import g_timelimit
import g_duel_fraglimit
import g_fraglimit
import g_duelWeaponDisable
import g_weaponDisable
import g_forcePowerDisable
import g_spawnInvulnerability
import g_forceRegenTime
import g_saberLocking
import g_privateDuel
import g_forceBasedTeams
import g_maxForceRank
import g_dmflags
import g_autoMapCycle
import g_restarted
import g_maxGameClients
import g_maxclients
import g_cheats
import g_dedicated
import g_gametype
import g_entities
import level
import Pickup_Team
import CheckTeamStatus
import TeamplayInfoMessage
import Team_GetLocationMsg
import Team_GetLocation
import SelectSagaSpawnPoint
import SelectCTFSpawnPoint
import Team_FreeEntity
import Team_ReturnFlag
import Team_InitGame
import Team_CheckHurtCarrier
import Team_FragBonuses
import Team_DroppedFlagThink
import AddTeamScore
import TeamColorString
import OtherTeamName
import TeamName
import OtherTeam
import BotAIStartFrame
import BotAIShutdownClient
import BotAISetupClient
import BotAILoadMap
import BotAIShutdown
import BotAISetup
import B_CleanupAlloc
import B_InitAlloc
import InFieldOfVision
import BotOrder
import OrgVisible
import InitSagaMode
import G_ClearClientLog
import G_LogExit
import G_LogWeaponOutput
import G_LogWeaponInit
import G_LogWeaponItem
import G_LogWeaponPowerup
import G_LogWeaponFrag
import G_LogWeaponDeath
import G_LogWeaponKill
import G_LogWeaponDamage
import G_LogWeaponFire
import G_LogWeaponPickup
import Jedi_DodgeEvasion
import ForceTelepathy
import ForceThrow
import ForceSeeing
import ForceTeamForceReplenish
import ForceTeamHeal
import ForceAbsorb
import ForceProtect
import ForceGrip
import ForceRage
import ForceSpeed
import ForceHeal
import ForcePowerUsableOn
import WP_ForcePowersUpdate
import WP_SpawnInitForcePowers
import WP_InitForcePowers
import WP_SaberInitBladeData
import WP_SaberCanBlock
import WP_SaberPositionUpdate
import WP_ForcePowerStop
import HasSetSaberOnly
import G_PreDefSound
import G_RefreshNextMap
import G_DoesMapSupportGametype
import BotInterbreedEndMatch
import Svcmd_BotList_f
import Svcmd_AddBot_f
import G_BotConnect
import G_RemoveQueuedBotBegin
import G_CheckBotSpawn
import G_GetBotInfoByName
import G_GetBotInfoByNumber
import G_InitBots
import UpdateTournamentInfo
import G_WriteSessionData
import G_InitWorldSession
import G_InitSessionData
import G_ReadSessionData
import Svcmd_GameMem_f
import G_InitMemory
import G_Alloc
import Team_CheckDroppedItem
import OnSameTeam
import G_RunClient
import ClientEndFrame
import ClientThink
import G_CheckClientTimeouts
import ClientCommand
import ClientBegin
import ClientDisconnect
import ClientUserinfoChanged
import ClientConnect
import G_GetStripEdString
import G_Error
import G_Printf
import SendScoreboardMessageToAllClients
import G_LogPrintf
import G_RunThink
import CheckTeamLeader
import SetLeader
import FindIntermissionPoint
import g_ff_objectives
import DeathmatchScoreboardMessage
import G_SetStats
import MoveClientToIntermission
import BlowDetpacks
import FireWeapon
import G_FilterPacket
import G_ProcessIPBans
import ConsoleCommand
import gJMSaberEnt
import SpotWouldTelefrag
import CalculateRanks
import AddScore
import player_die
import ClientSpawn
import InitBodyQue
import BeginIntermission
import respawn
import CopyToBodyQue
import SelectSpawnPoint
import SetClientViewAngle
import PickTeam
import TeamLeader
import TeamCount
import CheckGauntletAttack
import SnapVectorTowards
import CalcMuzzlePoint
import LogAccuracyHit
import WP_FireGenericBlasterMissile
import WP_FireTurretMissile
import G_PlayerBecomeATST
import ATST_ManageDamageBoxes
import TeleportPlayer
import trigger_teleporter_touch
import Touch_DoorTrigger
import G_RunMover
import WP_FireBlasterMissile
import G_ExplodeMissile
import G_BounceProjectile
import CreateMissile
import G_RunMissile
import G_ReflectMissile
import ExplodeDeath
import TossClientCubes
import TossClientItems
import TossClientWeapon
import body_die
import G_RadiusDamage
import G_Damage
import CanDamage
import trap_G2API_SetBoneAnim
import trap_G2API_GetGLAName
import trap_G2API_SetBoneAngles
import trap_G2API_CleanGhoul2Models
import trap_G2API_RemoveGhoul2Model
import trap_G2API_HasGhoul2ModelOnIndex
import trap_G2API_DuplicateGhoul2Instance
import trap_G2API_CopySpecificGhoul2Model
import trap_G2API_CopyGhoul2Instance
import trap_G2API_SetBoltInfo
import trap_G2API_AddBolt
import trap_G2API_InitGhoul2Model
import trap_G2API_GetBoltMatrix_NoReconstruct
import trap_G2API_GetBoltMatrix
import trap_G2_HaveWeGhoul2Models
import trap_G2_SetGhoul2ModelIndexes
import trap_G2_ListModelBones
import trap_G2_ListModelSurfaces
import G_SkinIndex
import BuildShaderStateConfig
import AddRemap
import G_SetOrigin
import G_AddEvent
import G_AddPredictableEvent
import vtos
import tv
import G_RunObject
import G_TouchSolids
import G_TouchTriggers
import G_EntitiesFree
import G_FreeEntity
import G_KillG2Queue
import G_SendG2KillQueue
import TryUse
import G_EntitySound
import G_SoundAtLoc
import G_Sound
import G_MuteSound
import G_ScreenShake
import G_PlayEffect
import G_TempEntity
import G_Spawn
import G_InitGentity
import G_SetAngles
import G_SetMovedir
import G_UseTargets
import G_PickTarget
import G_RadiusList
import G_Find
import G_KillBox
import G_TeamCommand
import G_EffectIndex
import G_SoundIndex
import G_ModelIndex
import SaveRegisteredItems
import RegisterItem
import ClearRegisteredItems
import Touch_Item
import Add_Ammo
import ArmorIndex
import Think_Weapon
import FinishSpawningItem
import G_SpawnItem
import SetRespawn
import LaunchItem
import Drop_Item
import PrecacheItem
import UseHoldableItem
import RespawnItem
import G_RunItem
import G_CheckTeamItems
import ItemUse_MedPack
import ItemUse_Seeker
import ItemUse_Sentry
import ItemUse_Shield
import ItemUse_Binoculars
import G_GetDuelWinner
import Cmd_EngageDuel_f
import Cmd_ToggleSaber_f
import G_ItemUsable
import Cmd_SaberAttackCycle_f
import Cmd_FollowCycle_f
import SetTeam
import BroadcastTeamChange
import StopFollowing
import Cmd_Score_f
import G_NewString
import G_SpawnEntitiesFromString
import G_SpawnVector
import G_SpawnInt
import G_SpawnFloat
import G_SpawnString
import g2SaberInstance
import precachedKyle
import forcePowerDarkLight
import WeaponAttackAnim
import WeaponReadyAnim
import BG_OutOfMemory
import BG_StringAlloc
import BG_TempFree
import BG_TempAlloc
import BG_AllocUnaligned
import BG_Alloc
import BG_CanUseFPNow
import BG_HasYsalamiri
import BG_GetItemIndexByTag
import BG_ParseAnimationFile
import BG_PlayerTouchesItem
import BG_G2PlayerAngles
import BG_PlayerStateToEntityStateExtraPolate
import BG_PlayerStateToEntityState
import BG_TouchJumpPad
import BG_AddPredictableEventToPlayerstate
import BG_EvaluateTrajectoryDelta
import BG_EvaluateTrajectory
import BG_ForcePowerDrain
import BG_SaberStartTransAnim
import BG_InDeathAnim
import BG_InRoll
import BG_SaberInSpecialAttack
import BG_SpinningSaberAnim
import BG_FlippingAnim
import BG_SaberInIdle
import BG_SaberInSpecial
import BG_SaberInAttack
import BG_DirectFlippingAnim
import BG_InSaberStandAnim
import BG_InSpecialJump
import BG_LegalizedForcePowers
import saberMoveData
import BG_CanItemBeGrabbed
import BG_FindItemForHoldable
import BG_FindItemForPowerup
import BG_FindItemForWeapon
import BG_FindItem
import vectoyaw
import bg_numItems
import bg_itemlist
import Pmove
import PM_UpdateViewAngles
import pm
import bgForcePowerCost
import forceMasteryPoints
import forceMasteryLevels
import bgGlobalAnimations
import BGPAFtextLoaded
import forcePowerSorted
import WP_MuzzlePoint
import ammoData
import weaponData
import GetStringForID
import GetIDForString
import Q_irand
import irand
import flrand
import Rand_Init
import Com_Printf
import Com_Error
import Info_NextPair
import Info_Validate
import Info_SetValueForKey_Big
import Info_SetValueForKey
import Info_RemoveKey_big
import Info_RemoveKey
import Info_ValueForKey
import va
import Q_CleanStr
import Q_PrintStrlen
import Q_strcat
import Q_strncpyz
import Q_strrchr
import Q_strupr
import Q_strlwr
import Q_stricmpn
import Q_strncmp
import Q_stricmp
import Q_isalpha
import Q_isupper
import Q_islower
import Q_isprint
import Com_sprintf
import Parse3DMatrix
import Parse2DMatrix
import Parse1DMatrix
import SkipRestOfLine
import SkipBracedSection
import COM_MatchToken
import COM_ParseWarning
import COM_ParseError
import COM_Compress
import COM_ParseExt
import COM_Parse
import SkipWhitespace
import COM_GetCurrentParseLine
import COM_BeginParseSession
import COM_DefaultExtension
import COM_StripExtension
import COM_SkipPath
import Com_Clamp
import 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 powf
import ClampShort
import ClampChar
import Q_rsqrt
import Q_fabs
import axisDefault
import vec3_origin
import g_color_table
import colorDkBlue
import colorLtBlue
import colorDkGrey
import colorMdGrey
import colorLtGrey
import colorWhite
import colorCyan
import colorMagenta
import colorYellow
import colorBlue
import colorGreen
import colorRed
import colorBlack
import colorTable
import bytedirs
import Com_Memcpy
import Com_Memset
import Hunk_Alloc
import forceSpeedLevels
import FloatSwap
import LongSwap
import ShortSwap
import acos
import fabs
import abs
import tan
import atan2
import cos
import sin
import sqrt
import floor
import ceil
import memcpy
import memset
import memmove
import sscanf
import vsprintf
import _atoi
import atoi
import _atof
import atof
import toupper
import tolower
import strncpy
import strstr
import strchr
import strcmp
import strcpy
import strcat
import strlen
import rand
import srand
import qsort
lit
align 1
LABELV $1087
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 97
char 1 118
char 1 101
char 1 0
align 1
LABELV $1075
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 107
char 1 105
char 1 108
char 1 108
char 1 111
char 1 110
char 1 101
char 1 119
char 1 97
char 1 121
char 1 115
char 1 0
align 1
LABELV $1072
char 1 94
char 1 51
char 1 87
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 110
char 1 117
char 1 109
char 1 98
char 1 101
char 1 114
char 1 32
char 1 40
char 1 116
char 1 111
char 1 32
char 1 109
char 1 111
char 1 100
char 1 105
char 1 102
char 1 121
char 1 41
char 1 32
char 1 110
char 1 101
char 1 101
char 1 100
char 1 101
char 1 100
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 10
char 1 83
char 1 121
char 1 110
char 1 116
char 1 97
char 1 120
char 1 58
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 60
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 62
char 1 32
char 1 60
char 1 110
char 1 62
char 1 10
char 1 0
align 1
LABELV $1044
char 1 94
char 1 51
char 1 70
char 1 108
char 1 97
char 1 103
char 1 32
char 1 115
char 1 116
char 1 114
char 1 105
char 1 110
char 1 103
char 1 32
char 1 110
char 1 101
char 1 101
char 1 100
char 1 101
char 1 100
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 10
char 1 84
char 1 121
char 1 112
char 1 101
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 97
char 1 32
char 1 108
char 1 105
char 1 115
char 1 116
char 1 32
char 1 111
char 1 102
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 97
char 1 110
char 1 100
char 1 32
char 1 116
char 1 104
char 1 101
char 1 105
char 1 114
char 1 32
char 1 99
char 1 111
char 1 114
char 1 114
char 1 101
char 1 115
char 1 112
char 1 111
char 1 110
char 1 100
char 1 105
char 1 110
char 1 103
char 1 32
char 1 99
char 1 104
char 1 97
char 1 114
char 1 97
char 1 99
char 1 116
char 1 101
char 1 114
char 1 115
char 1 44
char 1 32
char 1 111
char 1 114
char 1 32
char 1 117
char 1 115
char 1 101
char 1 32
char 1 48
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 110
char 1 111
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 46
char 1 10
char 1 83
char 1 121
char 1 110
char 1 116
char 1 97
char 1 120
char 1 58
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 60
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 62
char 1 32
char 1 60
char 1 110
char 1 62
char 1 10
char 1 0
align 1
LABELV $1040
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 0
align 1
LABELV $1010
char 1 94
char 1 51
char 1 70
char 1 108
char 1 97
char 1 103
char 1 32
char 1 115
char 1 116
char 1 114
char 1 105
char 1 110
char 1 103
char 1 32
char 1 110
char 1 101
char 1 101
char 1 100
char 1 101
char 1 100
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 10
char 1 106
char 1 32
char 1 45
char 1 32
char 1 74
char 1 117
char 1 109
char 1 112
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 10
char 1 100
char 1 32
char 1 45
char 1 32
char 1 68
char 1 117
char 1 99
char 1 107
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 10
char 1 99
char 1 32
char 1 45
char 1 32
char 1 83
char 1 110
char 1 105
char 1 112
char 1 101
char 1 32
char 1 111
char 1 114
char 1 32
char 1 99
char 1 97
char 1 109
char 1 112
char 1 32
char 1 115
char 1 116
char 1 97
char 1 110
char 1 100
char 1 105
char 1 110
char 1 103
char 1 10
char 1 102
char 1 32
char 1 45
char 1 32
char 1 87
char 1 97
char 1 105
char 1 116
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 102
char 1 117
char 1 110
char 1 99
char 1 10
char 1 109
char 1 32
char 1 45
char 1 32
char 1 68
char 1 111
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 109
char 1 111
char 1 118
char 1 101
char 1 32
char 1 116
char 1 111
char 1 32
char 1 119
char 1 104
char 1 101
char 1 110
char 1 32
char 1 102
char 1 117
char 1 110
char 1 99
char 1 32
char 1 105
char 1 115
char 1 32
char 1 117
char 1 110
char 1 100
char 1 101
char 1 114
char 1 10
char 1 115
char 1 32
char 1 45
char 1 32
char 1 83
char 1 110
char 1 105
char 1 112
char 1 101
char 1 32
char 1 111
char 1 114
char 1 32
char 1 99
char 1 97
char 1 109
char 1 112
char 1 10
char 1 120
char 1 32
char 1 45
char 1 32
char 1 79
char 1 110
char 1 101
char 1 119
char 1 97
char 1 121
char 1 44
char 1 32
char 1 102
char 1 111
char 1 114
char 1 119
char 1 97
char 1 114
char 1 100
char 1 10
char 1 121
char 1 32
char 1 45
char 1 32
char 1 79
char 1 110
char 1 101
char 1 119
char 1 97
char 1 121
char 1 44
char 1 32
char 1 98
char 1 97
char 1 99
char 1 107
char 1 10
char 1 103
char 1 32
char 1 45
char 1 32
char 1 77
char 1 105
char 1 115
char 1 115
char 1 105
char 1 111
char 1 110
char 1 32
char 1 103
char 1 111
char 1 97
char 1 108
char 1 10
char 1 110
char 1 32
char 1 45
char 1 32
char 1 78
char 1 111
char 1 32
char 1 118
char 1 105
char 1 115
char 1 105
char 1 98
char 1 105
char 1 108
char 1 105
char 1 116
char 1 121
char 1 10
char 1 69
char 1 120
char 1 97
char 1 109
char 1 112
char 1 108
char 1 101
char 1 32
char 1 40
char 1 102
char 1 111
char 1 114
char 1 32
char 1 97
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 116
char 1 104
char 1 101
char 1 32
char 1 98
char 1 111
char 1 116
char 1 32
char 1 119
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 106
char 1 117
char 1 109
char 1 112
char 1 32
char 1 97
char 1 116
char 1 44
char 1 32
char 1 97
char 1 110
char 1 100
char 1 32
char 1 114
char 1 101
char 1 118
char 1 101
char 1 114
char 1 115
char 1 101
char 1 32
char 1 111
char 1 110
char 1 32
char 1 119
char 1 104
char 1 101
char 1 110
char 1 32
char 1 116
char 1 114
char 1 97
char 1 118
char 1 101
char 1 108
char 1 105
char 1 110
char 1 103
char 1 32
char 1 97
char 1 32
char 1 116
char 1 114
char 1 97
char 1 105
char 1 108
char 1 32
char 1 98
char 1 97
char 1 99
char 1 107
char 1 119
char 1 97
char 1 114
char 1 100
char 1 115
char 1 41
char 1 58
char 1 10
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 32
char 1 106
char 1 120
char 1 10
char 1 0
align 1
LABELV $1006
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 0
align 1
LABELV $999
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 112
char 1 97
char 1 119
char 1 110
char 1 116
char 1 101
char 1 108
char 1 101
char 1 0
align 1
LABELV $996
char 1 94
char 1 51
char 1 89
char 1 111
char 1 117
char 1 32
char 1 100
char 1 105
char 1 100
char 1 110
char 1 39
char 1 116
char 1 32
char 1 115
char 1 112
char 1 101
char 1 99
char 1 105
char 1 102
char 1 121
char 1 32
char 1 97
char 1 110
char 1 32
char 1 105
char 1 110
char 1 100
char 1 101
char 1 120
char 1 46
char 1 32
char 1 65
char 1 115
char 1 115
char 1 117
char 1 109
char 1 105
char 1 110
char 1 103
char 1 32
char 1 108
char 1 97
char 1 115
char 1 116
char 1 46
char 1 10
char 1 0
align 1
LABELV $991
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 116
char 1 101
char 1 108
char 1 101
char 1 0
align 1
LABELV $984
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 114
char 1 101
char 1 109
char 1 0
align 1
LABELV $977
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 0
align 1
LABELV $974
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 97
char 1 118
char 1 101
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 83
char 1 97
char 1 118
char 1 101
char 1 115
char 1 32
char 1 97
char 1 108
char 1 108
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 100
char 1 97
char 1 116
char 1 97
char 1 32
char 1 105
char 1 110
char 1 116
char 1 111
char 1 32
char 1 97
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 108
char 1 97
char 1 116
char 1 101
char 1 114
char 1 32
char 1 117
char 1 115
char 1 101
char 1 10
char 1 0
align 1
LABELV $973
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 107
char 1 105
char 1 108
char 1 108
char 1 111
char 1 110
char 1 101
char 1 119
char 1 97
char 1 121
char 1 115
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 82
char 1 101
char 1 109
char 1 111
char 1 118
char 1 101
char 1 115
char 1 32
char 1 111
char 1 110
char 1 101
char 1 119
char 1 97
char 1 121
char 1 32
char 1 40
char 1 98
char 1 97
char 1 99
char 1 107
char 1 119
char 1 97
char 1 114
char 1 100
char 1 32
char 1 97
char 1 110
char 1 100
char 1 32
char 1 102
char 1 111
char 1 114
char 1 119
char 1 97
char 1 114
char 1 100
char 1 41
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 111
char 1 110
char 1 32
char 1 97
char 1 108
char 1 108
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 115
char 1 32
char 1 105
char 1 110
char 1 32
char 1 116
char 1 104
char 1 101
char 1 32
char 1 108
char 1 101
char 1 118
char 1 101
char 1 108
char 1 10
char 1 10
char 1 0
align 1
LABELV $972
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 116
char 1 101
char 1 108
char 1 101
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 84
char 1 101
char 1 108
char 1 101
char 1 112
char 1 111
char 1 114
char 1 116
char 1 32
char 1 121
char 1 111
char 1 117
char 1 114
char 1 115
char 1 101
char 1 108
char 1 102
char 1 32
char 1 116
char 1 111
char 1 32
char 1 116
char 1 104
char 1 101
char 1 32
char 1 115
char 1 112
char 1 101
char 1 99
char 1 105
char 1 102
char 1 105
char 1 101
char 1 100
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 39
char 1 115
char 1 32
char 1 108
char 1 111
char 1 99
char 1 97
char 1 116
char 1 105
char 1 111
char 1 110
char 1 10
char 1 0
align 1
LABELV $971
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 83
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 101
char 1 115
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 111
char 1 110
char 1 32
char 1 97
char 1 110
char 1 32
char 1 101
char 1 120
char 1 105
char 1 115
char 1 116
char 1 105
char 1 110
char 1 103
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 40
char 1 116
char 1 121
char 1 112
char 1 101
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 115
char 1 119
char 1 105
char 1 116
char 1 99
char 1 104
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 104
char 1 101
char 1 108
char 1 112
char 1 41
char 1 10
char 1 10
char 1 0
align 1
LABELV $970
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 83
char 1 97
char 1 109
char 1 101
char 1 32
char 1 97
char 1 115
char 1 32
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 44
char 1 32
char 1 98
char 1 117
char 1 116
char 1 32
char 1 97
char 1 100
char 1 100
char 1 115
char 1 32
char 1 97
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 40
char 1 116
char 1 121
char 1 112
char 1 101
char 1 32
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 104
char 1 101
char 1 108
char 1 112
char 1 41
char 1 10
char 1 10
char 1 0
align 1
LABELV $969
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 114
char 1 101
char 1 109
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 82
char 1 101
char 1 109
char 1 111
char 1 118
char 1 101
char 1 32
char 1 97
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 40
char 1 114
char 1 101
char 1 109
char 1 111
char 1 118
char 1 101
char 1 115
char 1 32
char 1 108
char 1 97
char 1 115
char 1 116
char 1 32
char 1 117
char 1 110
char 1 108
char 1 101
char 1 115
char 1 115
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 105
char 1 110
char 1 100
char 1 101
char 1 120
char 1 32
char 1 105
char 1 115
char 1 32
char 1 115
char 1 112
char 1 101
char 1 99
char 1 105
char 1 102
char 1 105
char 1 101
char 1 100
char 1 32
char 1 97
char 1 115
char 1 32
char 1 97
char 1 32
char 1 112
char 1 97
char 1 114
char 1 97
char 1 109
char 1 101
char 1 116
char 1 101
char 1 114
char 1 41
char 1 10
char 1 10
char 1 0
align 1
LABELV $968
char 1 94
char 1 51
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 97
char 1 100
char 1 100
char 1 94
char 1 55
char 1 32
char 1 45
char 1 32
char 1 65
char 1 100
char 1 100
char 1 32
char 1 97
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 40
char 1 111
char 1 112
char 1 116
char 1 105
char 1 111
char 1 110
char 1 97
char 1 108
char 1 32
char 1 105
char 1 110
char 1 116
char 1 32
char 1 112
char 1 97
char 1 114
char 1 97
char 1 109
char 1 101
char 1 116
char 1 101
char 1 114
char 1 32
char 1 119
char 1 105
char 1 108
char 1 108
char 1 32
char 1 105
char 1 110
char 1 115
char 1 101
char 1 114
char 1 116
char 1 32
char 1 116
char 1 104
char 1 101
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 97
char 1 102
char 1 116
char 1 101
char 1 114
char 1 32
char 1 116
char 1 104
char 1 101
char 1 32
char 1 115
char 1 112
char 1 101
char 1 99
char 1 105
char 1 102
char 1 105
char 1 101
char 1 100
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 105
char 1 110
char 1 100
char 1 101
char 1 120
char 1 32
char 1 105
char 1 110
char 1 32
char 1 97
char 1 32
char 1 116
char 1 114
char 1 97
char 1 105
char 1 108
char 1 41
char 1 10
char 1 10
char 1 0
align 1
LABELV $967
char 1 98
char 1 111
char 1 116
char 1 95
char 1 119
char 1 112
char 1 95
char 1 99
char 1 109
char 1 100
char 1 108
char 1 105
char 1 115
char 1 116
char 1 0
align 1
LABELV $937
char 1 105
char 1 110
char 1 102
char 1 111
char 1 95
char 1 112
char 1 108
char 1 97
char 1 121
char 1 101
char 1 114
char 1 95
char 1 100
char 1 101
char 1 97
char 1 116
char 1 104
char 1 109
char 1 97
char 1 116
char 1 99
char 1 104
char 1 0
align 1
LABELV $936
char 1 105
char 1 110
char 1 102
char 1 111
char 1 95
char 1 112
char 1 108
char 1 97
char 1 121
char 1 101
char 1 114
char 1 95
char 1 115
char 1 116
char 1 97
char 1 114
char 1 116
char 1 0
align 1
LABELV $912
char 1 0
align 1
LABELV $911
char 1 109
char 1 97
char 1 112
char 1 110
char 1 97
char 1 109
char 1 101
char 1 0
align 1
LABELV $909
char 1 80
char 1 97
char 1 116
char 1 104
char 1 32
char 1 100
char 1 97
char 1 116
char 1 97
char 1 32
char 1 104
char 1 97
char 1 115
char 1 32
char 1 98
char 1 101
char 1 101
char 1 110
char 1 32
char 1 115
char 1 97
char 1 118
char 1 101
char 1 100
char 1 32
char 1 97
char 1 110
char 1 100
char 1 32
char 1 117
char 1 112
char 1 100
char 1 97
char 1 116
char 1 101
char 1 100
char 1 46
char 1 32
char 1 89
char 1 111
char 1 117
char 1 32
char 1 109
char 1 97
char 1 121
char 1 32
char 1 110
char 1 101
char 1 101
char 1 100
char 1 32
char 1 116
char 1 111
char 1 32
char 1 114
char 1 101
char 1 115
char 1 116
char 1 97
char 1 114
char 1 116
char 1 32
char 1 116
char 1 104
char 1 101
char 1 32
char 1 108
char 1 101
char 1 118
char 1 101
char 1 108
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 115
char 1 111
char 1 109
char 1 101
char 1 32
char 1 116
char 1 104
char 1 105
char 1 110
char 1 103
char 1 115
char 1 32
char 1 116
char 1 111
char 1 32
char 1 98
char 1 101
char 1 32
char 1 112
char 1 114
char 1 111
char 1 112
char 1 101
char 1 114
char 1 108
char 1 121
char 1 32
char 1 99
char 1 97
char 1 108
char 1 99
char 1 117
char 1 108
char 1 97
char 1 116
char 1 101
char 1 100
char 1 46
char 1 10
char 1 0
align 1
LABELV $890
char 1 37
char 1 115
char 1 125
char 1 32
char 1 37
char 1 102
char 1 10
char 1 0
align 1
LABELV $879
char 1 37
char 1 115
char 1 37
char 1 105
char 1 32
char 1 0
align 1
LABELV $878
char 1 37
char 1 115
char 1 37
char 1 105
char 1 45
char 1 37
char 1 105
char 1 32
char 1 0
align 1
LABELV $872
char 1 37
char 1 105
char 1 32
char 1 37
char 1 105
char 1 32
char 1 37
char 1 102
char 1 32
char 1 40
char 1 37
char 1 102
char 1 32
char 1 37
char 1 102
char 1 32
char 1 37
char 1 102
char 1 41
char 1 32
char 1 123
char 1 32
char 1 0
align 1
LABELV $869
char 1 94
char 1 49
char 1 69
char 1 82
char 1 82
char 1 79
char 1 82
char 1 58
char 1 32
char 1 67
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 111
char 1 112
char 1 101
char 1 110
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 32
char 1 116
char 1 111
char 1 32
char 1 119
char 1 114
char 1 105
char 1 116
char 1 101
char 1 32
char 1 112
char 1 97
char 1 116
char 1 104
char 1 32
char 1 100
char 1 97
char 1 116
char 1 97
char 1 10
char 1 0
align 1
LABELV $826
char 1 116
char 1 101
char 1 97
char 1 109
char 1 95
char 1 67
char 1 84
char 1 70
char 1 95
char 1 98
char 1 108
char 1 117
char 1 101
char 1 102
char 1 108
char 1 97
char 1 103
char 1 0
align 1
LABELV $823
char 1 116
char 1 101
char 1 97
char 1 109
char 1 95
char 1 67
char 1 84
char 1 70
char 1 95
char 1 114
char 1 101
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 0
align 1
LABELV $732
char 1 94
char 1 49
char 1 82
char 1 111
char 1 117
char 1 116
char 1 101
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 32
char 1 101
char 1 120
char 1 99
char 1 101
char 1 101
char 1 100
char 1 115
char 1 32
char 1 109
char 1 97
char 1 120
char 1 105
char 1 109
char 1 117
char 1 109
char 1 32
char 1 108
char 1 101
char 1 110
char 1 103
char 1 116
char 1 104
char 1 10
char 1 0
align 1
LABELV $729
char 1 94
char 1 51
char 1 66
char 1 111
char 1 116
char 1 32
char 1 114
char 1 111
char 1 117
char 1 116
char 1 101
char 1 32
char 1 100
char 1 97
char 1 116
char 1 97
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 102
char 1 111
char 1 117
char 1 110
char 1 100
char 1 10
char 1 0
align 1
LABELV $726
char 1 98
char 1 111
char 1 116
char 1 114
char 1 111
char 1 117
char 1 116
char 1 101
char 1 115
char 1 47
char 1 37
char 1 115
char 1 46
char 1 119
char 1 110
char 1 116
char 1 0
char 1 0
align 1
LABELV $688
char 1 119
char 1 101
char 1 97
char 1 112
char 1 111
char 1 110
char 1 95
char 1 0
align 1
LABELV $685
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 121
char 1 115
char 1 97
char 1 108
char 1 105
char 1 109
char 1 97
char 1 114
char 1 105
char 1 0
align 1
LABELV $682
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 102
char 1 111
char 1 114
char 1 99
char 1 101
char 1 95
char 1 98
char 1 111
char 1 111
char 1 110
char 1 0
align 1
LABELV $679
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 102
char 1 111
char 1 114
char 1 99
char 1 101
char 1 95
char 1 101
char 1 110
char 1 108
char 1 105
char 1 103
char 1 104
char 1 116
char 1 101
char 1 110
char 1 95
char 1 108
char 1 105
char 1 103
char 1 104
char 1 116
char 1 0
align 1
LABELV $676
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 102
char 1 111
char 1 114
char 1 99
char 1 101
char 1 95
char 1 101
char 1 110
char 1 108
char 1 105
char 1 103
char 1 104
char 1 116
char 1 101
char 1 110
char 1 95
char 1 100
char 1 97
char 1 114
char 1 107
char 1 0
align 1
LABELV $673
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 115
char 1 101
char 1 110
char 1 116
char 1 114
char 1 121
char 1 95
char 1 103
char 1 117
char 1 110
char 1 0
align 1
LABELV $670
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 109
char 1 101
char 1 100
char 1 112
char 1 97
char 1 99
char 1 0
align 1
LABELV $667
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 115
char 1 104
char 1 105
char 1 101
char 1 108
char 1 100
char 1 0
align 1
LABELV $664
char 1 105
char 1 116
char 1 101
char 1 109
char 1 95
char 1 115
char 1 101
char 1 101
char 1 107
char 1 101
char 1 114
char 1 0
align 1
LABELV $617
char 1 105
char 1 110
char 1 102
char 1 111
char 1 95
char 1 115
char 1 97
char 1 103
char 1 97
char 1 95
char 1 111
char 1 98
char 1 106
char 1 101
char 1 99
char 1 116
char 1 105
char 1 118
char 1 101
char 1 0
align 1
LABELV $493
char 1 102
char 1 117
char 1 110
char 1 99
char 1 95
char 1 0
align 1
LABELV $470
char 1 94
char 1 51
char 1 70
char 1 105
char 1 110
char 1 105
char 1 115
char 1 104
char 1 101
char 1 100
char 1 32
char 1 99
char 1 111
char 1 110
char 1 110
char 1 101
char 1 99
char 1 116
char 1 105
char 1 110
char 1 103
char 1 32
char 1 37
char 1 105
char 1 32
char 1 116
char 1 111
char 1 32
char 1 37
char 1 105
char 1 46
char 1 10
char 1 0
align 1
LABELV $464
char 1 94
char 1 49
char 1 67
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 108
char 1 105
char 1 110
char 1 107
char 1 32
char 1 37
char 1 105
char 1 32
char 1 116
char 1 111
char 1 32
char 1 37
char 1 105
char 1 44
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 32
char 1 104
char 1 105
char 1 116
char 1 46
char 1 10
char 1 0
align 1
LABELV $444
char 1 94
char 1 51
char 1 83
char 1 105
char 1 110
char 1 99
char 1 101
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 115
char 1 32
char 1 99
char 1 97
char 1 110
char 1 110
char 1 111
char 1 116
char 1 32
char 1 98
char 1 101
char 1 32
char 1 99
char 1 111
char 1 110
char 1 110
char 1 101
char 1 99
char 1 116
char 1 101
char 1 100
char 1 44
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 37
char 1 105
char 1 32
char 1 104
char 1 97
char 1 115
char 1 32
char 1 98
char 1 101
char 1 101
char 1 110
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 32
char 1 97
char 1 115
char 1 32
char 1 111
char 1 110
char 1 108
char 1 121
char 1 45
char 1 102
char 1 111
char 1 114
char 1 119
char 1 97
char 1 114
char 1 100
char 1 32
char 1 97
char 1 110
char 1 100
char 1 32
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 37
char 1 105
char 1 32
char 1 104
char 1 97
char 1 115
char 1 32
char 1 98
char 1 101
char 1 101
char 1 110
char 1 32
char 1 102
char 1 108
char 1 97
char 1 103
char 1 103
char 1 101
char 1 100
char 1 32
char 1 97
char 1 115
char 1 32
char 1 111
char 1 110
char 1 108
char 1 121
char 1 45
char 1 98
char 1 97
char 1 99
char 1 107
char 1 119
char 1 97
char 1 114
char 1 100
char 1 46
char 1 10
char 1 0
align 1
LABELV $443
char 1 94
char 1 49
char 1 67
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 108
char 1 105
char 1 110
char 1 107
char 1 32
char 1 37
char 1 105
char 1 32
char 1 116
char 1 111
char 1 32
char 1 37
char 1 105
char 1 44
char 1 32
char 1 117
char 1 110
char 1 114
char 1 101
char 1 97
char 1 99
char 1 104
char 1 97
char 1 98
char 1 108
char 1 101
char 1 32
char 1 98
char 1 121
char 1 32
char 1 110
char 1 111
char 1 100
char 1 101
char 1 32
char 1 98
char 1 114
char 1 97
char 1 110
char 1 99
char 1 104
char 1 105
char 1 110
char 1 103
char 1 46
char 1 10
char 1 0
align 1
LABELV $339
char 1 94
char 1 51
char 1 80
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 37
char 1 105
char 1 32
char 1 105
char 1 115
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 99
char 1 111
char 1 110
char 1 110
char 1 101
char 1 99
char 1 116
char 1 101
char 1 100
char 1 32
char 1 116
char 1 111
char 1 32
char 1 37
char 1 105
char 1 32
char 1 45
char 1 32
char 1 82
char 1 101
char 1 112
char 1 97
char 1 105
char 1 114
char 1 105
char 1 110
char 1 103
char 1 46
char 1 46
char 1 46
char 1 10
char 1 0
align 1
LABELV $270
char 1 94
char 1 51
char 1 87
char 1 80
char 1 70
char 1 108
char 1 97
char 1 103
char 1 115
char 1 77
char 1 111
char 1 100
char 1 105
char 1 102
char 1 121
char 1 58
char 1 32
char 1 87
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 37
char 1 105
char 1 32
char 1 100
char 1 111
char 1 101
char 1 115
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 101
char 1 120
char 1 105
char 1 115
char 1 116
char 1 10
char 1 0
align 1
LABELV $220
char 1 94
char 1 51
char 1 87
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 105
char 1 110
char 1 100
char 1 101
char 1 120
char 1 32
char 1 37
char 1 105
char 1 32
char 1 115
char 1 104
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 101
char 1 120
char 1 105
char 1 115
char 1 116
char 1 44
char 1 32
char 1 98
char 1 117
char 1 116
char 1 32
char 1 100
char 1 111
char 1 101
char 1 115
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 40
char 1 63
char 1 41
char 1 10
char 1 0
align 1
LABELV $212
char 1 94
char 1 51
char 1 87
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 110
char 1 117
char 1 109
char 1 98
char 1 101
char 1 114
char 1 32
char 1 37
char 1 105
char 1 32
char 1 100
char 1 111
char 1 101
char 1 115
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 101
char 1 120
char 1 105
char 1 115
char 1 116
char 1 10
char 1 0
align 1
LABELV $183
char 1 94
char 1 49
char 1 69
char 1 82
char 1 82
char 1 79
char 1 82
char 1 58
char 1 32
char 1 67
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 97
char 1 108
char 1 108
char 1 111
char 1 99
char 1 97
char 1 116
char 1 101
char 1 100
char 1 32
char 1 109
char 1 101
char 1 109
char 1 111
char 1 114
char 1 121
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 10
char 1 0
align 1
LABELV $178
char 1 94
char 1 51
char 1 87
char 1 97
char 1 114
char 1 110
char 1 105
char 1 110
char 1 103
char 1 58
char 1 32
char 1 87
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 32
char 1 104
char 1 105
char 1 116
char 1 32
char 1 40
char 1 37
char 1 105
char 1 41
char 1 10
char 1 0
align 1
LABELV $174
char 1 94
char 1 49
char 1 70
char 1 65
char 1 84
char 1 65
char 1 76
char 1 32
char 1 69
char 1 82
char 1 82
char 1 79
char 1 82
char 1 58
char 1 32
char 1 67
char 1 111
char 1 117
char 1 108
char 1 100
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 97
char 1 108
char 1 108
char 1 111
char 1 99
char 1 97
char 1 116
char 1 101
char 1 100
char 1 32
char 1 109
char 1 101
char 1 109
char 1 111
char 1 114
char 1 121
char 1 32
char 1 102
char 1 111
char 1 114
char 1 32
char 1 119
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 10
char 1 0
align 1
LABELV $166
char 1 94
char 1 51
char 1 87
char 1 97
char 1 121
char 1 112
char 1 111
char 1 105
char 1 110
char 1 116
char 1 32
char 1 37
char 1 105
char 1 10
char 1 70
char 1 108
char 1 97
char 1 103
char 1 115
char 1 32
char 1 45
char 1 32
char 1 37
char 1 105
char 1 32
char 1 40
char 1 37
char 1 115
char 1 41
char 1 32
char 1 40
char 1 119
char 1 37
char 1 102
char 1 41
char 1 10
char 1 79
char 1 114
char 1 105
char 1 103
char 1 105
char 1 110
char 1 32
char 1 45
char 1 32
char 1 40
char 1 37
char 1 105
char 1 32
char 1 37
char 1 105
char 1 32
char 1 37
char 1 105
char 1 41
char 1 10
char 1 0
align 1
LABELV $124
char 1 117
char 1 110
char 1 107
char 1 110
char 1 111
char 1 119
char 1 110
char 1 0
char 1 0
align 1
LABELV $84
char 1 110
char 1 111
char 1 110
char 1 101
char 1 0
char 1 0