summaryrefslogtreecommitdiff
path: root/asm/MetroTRK/support.s
blob: 014d4b3161d094d9755a5b6583ebede38ab132d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global HandlePositionFileSupportRequest
HandlePositionFileSupportRequest:
/* 801D69A0 001D2600  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 801D69A4 001D2604  7C 08 02 A6 */	mflr r0
/* 801D69A8 001D2608  90 01 00 74 */	stw r0, 0x74(r1)
/* 801D69AC 001D260C  93 E1 00 6C */	stw r31, 0x6c(r1)
/* 801D69B0 001D2610  7C BF 2B 78 */	mr r31, r5
/* 801D69B4 001D2614  38 A0 00 40 */	li r5, 0x40
/* 801D69B8 001D2618  93 C1 00 68 */	stw r30, 0x68(r1)
/* 801D69BC 001D261C  7C DE 33 78 */	mr r30, r6
/* 801D69C0 001D2620  93 A1 00 64 */	stw r29, 0x64(r1)
/* 801D69C4 001D2624  7C 9D 23 78 */	mr r29, r4
/* 801D69C8 001D2628  38 80 00 00 */	li r4, 0
/* 801D69CC 001D262C  93 81 00 60 */	stw r28, 0x60(r1)
/* 801D69D0 001D2630  7C 7C 1B 78 */	mr r28, r3
/* 801D69D4 001D2634  38 61 00 14 */	addi r3, r1, 0x14
/* 801D69D8 001D2638  4B E2 D7 5D */	bl TRK_memset
/* 801D69DC 001D263C  38 60 00 D4 */	li r3, 0xd4
/* 801D69E0 001D2640  38 00 00 40 */	li r0, 0x40
/* 801D69E4 001D2644  98 61 00 18 */	stb r3, 0x18(r1)
/* 801D69E8 001D2648  38 61 00 0C */	addi r3, r1, 0xc
/* 801D69EC 001D264C  38 81 00 08 */	addi r4, r1, 8
/* 801D69F0 001D2650  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D69F4 001D2654  93 81 00 1C */	stw r28, 0x1c(r1)
/* 801D69F8 001D2658  80 1D 00 00 */	lwz r0, 0(r29)
/* 801D69FC 001D265C  90 01 00 20 */	stw r0, 0x20(r1)
/* 801D6A00 001D2660  9B E1 00 24 */	stb r31, 0x24(r1)
/* 801D6A04 001D2664  4B FF EA 05 */	bl TRKGetFreeBuffer
/* 801D6A08 001D2668  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6A0C 001D266C  40 82 00 18 */	bne lbl_801D6A24
/* 801D6A10 001D2670  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6A14 001D2674  38 81 00 14 */	addi r4, r1, 0x14
/* 801D6A18 001D2678  38 A0 00 40 */	li r5, 0x40
/* 801D6A1C 001D267C  4B FF E6 59 */	bl TRKAppendBuffer_ui8
/* 801D6A20 001D2680  7C 7F 1B 78 */	mr r31, r3
lbl_801D6A24:
/* 801D6A24 001D2684  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6A28 001D2688  40 82 00 5C */	bne lbl_801D6A84
/* 801D6A2C 001D268C  38 60 00 00 */	li r3, 0
/* 801D6A30 001D2690  38 00 FF FF */	li r0, -1
/* 801D6A34 001D2694  90 7E 00 00 */	stw r3, 0(r30)
/* 801D6A38 001D2698  38 81 00 10 */	addi r4, r1, 0x10
/* 801D6A3C 001D269C  38 A0 00 03 */	li r5, 3
/* 801D6A40 001D26A0  38 C0 00 03 */	li r6, 3
/* 801D6A44 001D26A4  90 1D 00 00 */	stw r0, 0(r29)
/* 801D6A48 001D26A8  38 E0 00 00 */	li r7, 0
/* 801D6A4C 001D26AC  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6A50 001D26B0  48 00 02 65 */	bl TRKRequestSend
/* 801D6A54 001D26B4  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6A58 001D26B8  40 82 00 24 */	bne lbl_801D6A7C
/* 801D6A5C 001D26BC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6A60 001D26C0  4B FF E9 7D */	bl TRKGetBuffer
/* 801D6A64 001D26C4  28 03 00 00 */	cmplwi r3, 0
/* 801D6A68 001D26C8  41 82 00 14 */	beq lbl_801D6A7C
/* 801D6A6C 001D26CC  80 03 00 20 */	lwz r0, 0x20(r3)
/* 801D6A70 001D26D0  90 1E 00 00 */	stw r0, 0(r30)
/* 801D6A74 001D26D4  80 03 00 28 */	lwz r0, 0x28(r3)
/* 801D6A78 001D26D8  90 1D 00 00 */	stw r0, 0(r29)
lbl_801D6A7C:
/* 801D6A7C 001D26DC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6A80 001D26E0  4B FF E8 F9 */	bl TRKReleaseBuffer
lbl_801D6A84:
/* 801D6A84 001D26E4  80 61 00 0C */	lwz r3, 0xc(r1)
/* 801D6A88 001D26E8  4B FF E8 F1 */	bl TRKReleaseBuffer
/* 801D6A8C 001D26EC  80 01 00 74 */	lwz r0, 0x74(r1)
/* 801D6A90 001D26F0  7F E3 FB 78 */	mr r3, r31
/* 801D6A94 001D26F4  83 E1 00 6C */	lwz r31, 0x6c(r1)
/* 801D6A98 001D26F8  83 C1 00 68 */	lwz r30, 0x68(r1)
/* 801D6A9C 001D26FC  83 A1 00 64 */	lwz r29, 0x64(r1)
/* 801D6AA0 001D2700  83 81 00 60 */	lwz r28, 0x60(r1)
/* 801D6AA4 001D2704  7C 08 03 A6 */	mtlr r0
/* 801D6AA8 001D2708  38 21 00 70 */	addi r1, r1, 0x70
/* 801D6AAC 001D270C  4E 80 00 20 */	blr

.global HandleCloseFileSupportRequest
HandleCloseFileSupportRequest:
/* 801D6AB0 001D2710  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 801D6AB4 001D2714  7C 08 02 A6 */	mflr r0
/* 801D6AB8 001D2718  38 A0 00 40 */	li r5, 0x40
/* 801D6ABC 001D271C  90 01 00 74 */	stw r0, 0x74(r1)
/* 801D6AC0 001D2720  93 E1 00 6C */	stw r31, 0x6c(r1)
/* 801D6AC4 001D2724  7C 7F 1B 78 */	mr r31, r3
/* 801D6AC8 001D2728  38 61 00 14 */	addi r3, r1, 0x14
/* 801D6ACC 001D272C  93 C1 00 68 */	stw r30, 0x68(r1)
/* 801D6AD0 001D2730  93 A1 00 64 */	stw r29, 0x64(r1)
/* 801D6AD4 001D2734  7C 9D 23 78 */	mr r29, r4
/* 801D6AD8 001D2738  38 80 00 00 */	li r4, 0
/* 801D6ADC 001D273C  4B E2 D6 59 */	bl TRK_memset
/* 801D6AE0 001D2740  38 60 00 D3 */	li r3, 0xd3
/* 801D6AE4 001D2744  38 00 00 40 */	li r0, 0x40
/* 801D6AE8 001D2748  98 61 00 18 */	stb r3, 0x18(r1)
/* 801D6AEC 001D274C  38 61 00 0C */	addi r3, r1, 0xc
/* 801D6AF0 001D2750  38 81 00 08 */	addi r4, r1, 8
/* 801D6AF4 001D2754  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D6AF8 001D2758  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801D6AFC 001D275C  4B FF E9 0D */	bl TRKGetFreeBuffer
/* 801D6B00 001D2760  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6B04 001D2764  40 82 00 18 */	bne lbl_801D6B1C
/* 801D6B08 001D2768  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6B0C 001D276C  38 81 00 14 */	addi r4, r1, 0x14
/* 801D6B10 001D2770  38 A0 00 40 */	li r5, 0x40
/* 801D6B14 001D2774  4B FF E5 61 */	bl TRKAppendBuffer_ui8
/* 801D6B18 001D2778  7C 7F 1B 78 */	mr r31, r3
lbl_801D6B1C:
/* 801D6B1C 001D277C  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6B20 001D2780  40 82 00 50 */	bne lbl_801D6B70
/* 801D6B24 001D2784  38 00 00 00 */	li r0, 0
/* 801D6B28 001D2788  38 81 00 10 */	addi r4, r1, 0x10
/* 801D6B2C 001D278C  90 1D 00 00 */	stw r0, 0(r29)
/* 801D6B30 001D2790  38 A0 00 03 */	li r5, 3
/* 801D6B34 001D2794  38 C0 00 03 */	li r6, 3
/* 801D6B38 001D2798  38 E0 00 00 */	li r7, 0
/* 801D6B3C 001D279C  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6B40 001D27A0  48 00 01 75 */	bl TRKRequestSend
/* 801D6B44 001D27A4  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6B48 001D27A8  40 82 00 10 */	bne lbl_801D6B58
/* 801D6B4C 001D27AC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6B50 001D27B0  4B FF E8 8D */	bl TRKGetBuffer
/* 801D6B54 001D27B4  7C 7E 1B 78 */	mr r30, r3
lbl_801D6B58:
/* 801D6B58 001D27B8  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6B5C 001D27BC  40 82 00 0C */	bne lbl_801D6B68
/* 801D6B60 001D27C0  80 1E 00 20 */	lwz r0, 0x20(r30)
/* 801D6B64 001D27C4  90 1D 00 00 */	stw r0, 0(r29)
lbl_801D6B68:
/* 801D6B68 001D27C8  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6B6C 001D27CC  4B FF E8 0D */	bl TRKReleaseBuffer
lbl_801D6B70:
/* 801D6B70 001D27D0  80 61 00 0C */	lwz r3, 0xc(r1)
/* 801D6B74 001D27D4  4B FF E8 05 */	bl TRKReleaseBuffer
/* 801D6B78 001D27D8  80 01 00 74 */	lwz r0, 0x74(r1)
/* 801D6B7C 001D27DC  7F E3 FB 78 */	mr r3, r31
/* 801D6B80 001D27E0  83 E1 00 6C */	lwz r31, 0x6c(r1)
/* 801D6B84 001D27E4  83 C1 00 68 */	lwz r30, 0x68(r1)
/* 801D6B88 001D27E8  83 A1 00 64 */	lwz r29, 0x64(r1)
/* 801D6B8C 001D27EC  7C 08 03 A6 */	mtlr r0
/* 801D6B90 001D27F0  38 21 00 70 */	addi r1, r1, 0x70
/* 801D6B94 001D27F4  4E 80 00 20 */	blr

.global HandleOpenFileSupportRequest
HandleOpenFileSupportRequest:
/* 801D6B98 001D27F8  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 801D6B9C 001D27FC  7C 08 02 A6 */	mflr r0
/* 801D6BA0 001D2800  90 01 00 74 */	stw r0, 0x74(r1)
/* 801D6BA4 001D2804  BF 61 00 5C */	stmw r27, 0x5c(r1)
/* 801D6BA8 001D2808  7C 7B 1B 78 */	mr r27, r3
/* 801D6BAC 001D280C  7C 9F 23 78 */	mr r31, r4
/* 801D6BB0 001D2810  7C BC 2B 78 */	mr r28, r5
/* 801D6BB4 001D2814  7C DD 33 78 */	mr r29, r6
/* 801D6BB8 001D2818  38 61 00 14 */	addi r3, r1, 0x14
/* 801D6BBC 001D281C  38 80 00 00 */	li r4, 0
/* 801D6BC0 001D2820  38 A0 00 40 */	li r5, 0x40
/* 801D6BC4 001D2824  4B E2 D5 71 */	bl TRK_memset
/* 801D6BC8 001D2828  38 60 00 00 */	li r3, 0
/* 801D6BCC 001D282C  38 00 00 D2 */	li r0, 0xd2
/* 801D6BD0 001D2830  90 7C 00 00 */	stw r3, 0(r28)
/* 801D6BD4 001D2834  7F 63 DB 78 */	mr r3, r27
/* 801D6BD8 001D2838  98 01 00 18 */	stb r0, 0x18(r1)
/* 801D6BDC 001D283C  48 00 06 19 */	bl TRK_strlen
/* 801D6BE0 001D2840  38 03 00 41 */	addi r0, r3, 0x41
/* 801D6BE4 001D2844  9B E1 00 1C */	stb r31, 0x1c(r1)
/* 801D6BE8 001D2848  7F 63 DB 78 */	mr r3, r27
/* 801D6BEC 001D284C  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D6BF0 001D2850  48 00 06 05 */	bl TRK_strlen
/* 801D6BF4 001D2854  38 03 00 01 */	addi r0, r3, 1
/* 801D6BF8 001D2858  38 61 00 0C */	addi r3, r1, 0xc
/* 801D6BFC 001D285C  B0 01 00 20 */	sth r0, 0x20(r1)
/* 801D6C00 001D2860  38 81 00 08 */	addi r4, r1, 8
/* 801D6C04 001D2864  4B FF E8 05 */	bl TRKGetFreeBuffer
/* 801D6C08 001D2868  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6C0C 001D286C  38 81 00 14 */	addi r4, r1, 0x14
/* 801D6C10 001D2870  38 A0 00 40 */	li r5, 0x40
/* 801D6C14 001D2874  4B FF E4 61 */	bl TRKAppendBuffer_ui8
/* 801D6C18 001D2878  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6C1C 001D287C  40 82 00 24 */	bne lbl_801D6C40
/* 801D6C20 001D2880  7F 63 DB 78 */	mr r3, r27
/* 801D6C24 001D2884  48 00 05 D1 */	bl TRK_strlen
/* 801D6C28 001D2888  7C 65 1B 78 */	mr r5, r3
/* 801D6C2C 001D288C  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6C30 001D2890  7F 64 DB 78 */	mr r4, r27
/* 801D6C34 001D2894  38 A5 00 01 */	addi r5, r5, 1
/* 801D6C38 001D2898  4B FF E4 3D */	bl TRKAppendBuffer_ui8
/* 801D6C3C 001D289C  7C 7F 1B 78 */	mr r31, r3
lbl_801D6C40:
/* 801D6C40 001D28A0  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6C44 001D28A4  40 82 00 50 */	bne lbl_801D6C94
/* 801D6C48 001D28A8  38 00 00 00 */	li r0, 0
/* 801D6C4C 001D28AC  38 81 00 10 */	addi r4, r1, 0x10
/* 801D6C50 001D28B0  90 1D 00 00 */	stw r0, 0(r29)
/* 801D6C54 001D28B4  38 A0 00 07 */	li r5, 7
/* 801D6C58 001D28B8  38 C0 00 03 */	li r6, 3
/* 801D6C5C 001D28BC  38 E0 00 00 */	li r7, 0
/* 801D6C60 001D28C0  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6C64 001D28C4  48 00 00 51 */	bl TRKRequestSend
/* 801D6C68 001D28C8  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6C6C 001D28CC  40 82 00 10 */	bne lbl_801D6C7C
/* 801D6C70 001D28D0  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6C74 001D28D4  4B FF E7 69 */	bl TRKGetBuffer
/* 801D6C78 001D28D8  7C 7E 1B 78 */	mr r30, r3
lbl_801D6C7C:
/* 801D6C7C 001D28DC  80 1E 00 20 */	lwz r0, 0x20(r30)
/* 801D6C80 001D28E0  90 1D 00 00 */	stw r0, 0(r29)
/* 801D6C84 001D28E4  80 1E 00 18 */	lwz r0, 0x18(r30)
/* 801D6C88 001D28E8  90 1C 00 00 */	stw r0, 0(r28)
/* 801D6C8C 001D28EC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6C90 001D28F0  4B FF E6 E9 */	bl TRKReleaseBuffer
lbl_801D6C94:
/* 801D6C94 001D28F4  80 61 00 0C */	lwz r3, 0xc(r1)
/* 801D6C98 001D28F8  4B FF E6 E1 */	bl TRKReleaseBuffer
/* 801D6C9C 001D28FC  7F E3 FB 78 */	mr r3, r31
/* 801D6CA0 001D2900  BB 61 00 5C */	lmw r27, 0x5c(r1)
/* 801D6CA4 001D2904  80 01 00 74 */	lwz r0, 0x74(r1)
/* 801D6CA8 001D2908  7C 08 03 A6 */	mtlr r0
/* 801D6CAC 001D290C  38 21 00 70 */	addi r1, r1, 0x70
/* 801D6CB0 001D2910  4E 80 00 20 */	blr

.global TRKRequestSend
TRKRequestSend:
/* 801D6CB4 001D2914  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801D6CB8 001D2918  7C 08 02 A6 */	mflr r0
/* 801D6CBC 001D291C  90 01 00 34 */	stw r0, 0x34(r1)
/* 801D6CC0 001D2920  38 00 FF FF */	li r0, -1
/* 801D6CC4 001D2924  BE C1 00 08 */	stmw r22, 8(r1)
/* 801D6CC8 001D2928  7C 97 23 78 */	mr r23, r4
/* 801D6CCC 001D292C  7C 76 1B 78 */	mr r22, r3
/* 801D6CD0 001D2930  7C F8 3B 78 */	mr r24, r7
/* 801D6CD4 001D2934  3B 86 00 01 */	addi r28, r6, 1
/* 801D6CD8 001D2938  3B E0 00 00 */	li r31, 0
/* 801D6CDC 001D293C  3B 20 00 01 */	li r25, 1
/* 801D6CE0 001D2940  90 04 00 00 */	stw r0, 0(r4)
/* 801D6CE4 001D2944  48 00 01 0C */	b lbl_801D6DF0
lbl_801D6CE8:
/* 801D6CE8 001D2948  7E C3 B3 78 */	mr r3, r22
/* 801D6CEC 001D294C  4B FF DF F1 */	bl TRKMessageSend
/* 801D6CF0 001D2950  7C 7F 1B 79 */	or. r31, r3, r3
/* 801D6CF4 001D2954  40 82 00 F8 */	bne lbl_801D6DEC
/* 801D6CF8 001D2958  2C 18 00 00 */	cmpwi r24, 0
/* 801D6CFC 001D295C  41 82 00 08 */	beq lbl_801D6D04
/* 801D6D00 001D2960  3B A0 00 00 */	li r29, 0
lbl_801D6D04:
/* 801D6D04 001D2964  4B FF E9 1D */	bl TRKTestForPacket
/* 801D6D08 001D2968  90 77 00 00 */	stw r3, 0(r23)
/* 801D6D0C 001D296C  80 77 00 00 */	lwz r3, 0(r23)
/* 801D6D10 001D2970  2C 03 FF FF */	cmpwi r3, -1
/* 801D6D14 001D2974  40 82 00 20 */	bne lbl_801D6D34
/* 801D6D18 001D2978  2C 18 00 00 */	cmpwi r24, 0
/* 801D6D1C 001D297C  41 82 FF E8 */	beq lbl_801D6D04
/* 801D6D20 001D2980  3C 80 04 C5 */	lis r4, 0x04C4B3EC@ha
/* 801D6D24 001D2984  3B BD 00 01 */	addi r29, r29, 1
/* 801D6D28 001D2988  38 04 B3 EC */	addi r0, r4, 0x04C4B3EC@l
/* 801D6D2C 001D298C  7C 1D 00 40 */	cmplw r29, r0
/* 801D6D30 001D2990  41 80 FF D4 */	blt lbl_801D6D04
lbl_801D6D34:
/* 801D6D34 001D2994  2C 03 FF FF */	cmpwi r3, -1
/* 801D6D38 001D2998  41 82 00 44 */	beq lbl_801D6D7C
/* 801D6D3C 001D299C  3B 20 00 00 */	li r25, 0
/* 801D6D40 001D29A0  4B FF E6 9D */	bl TRKGetBuffer
/* 801D6D44 001D29A4  38 80 00 00 */	li r4, 0
/* 801D6D48 001D29A8  7C 7E 1B 78 */	mr r30, r3
/* 801D6D4C 001D29AC  4B FF E5 BD */	bl TRKSetBufferPosition
/* 801D6D50 001D29B0  80 9E 00 08 */	lwz r4, 8(r30)
/* 801D6D54 001D29B4  38 7E 00 10 */	addi r3, r30, 0x10
/* 801D6D58 001D29B8  48 00 2F 0D */	bl OutputData
/* 801D6D5C 001D29BC  8B 7E 00 14 */	lbz r27, 0x14(r30)
/* 801D6D60 001D29C0  28 1B 00 80 */	cmplwi r27, 0x80
/* 801D6D64 001D29C4  40 80 00 18 */	bge lbl_801D6D7C
/* 801D6D68 001D29C8  80 77 00 00 */	lwz r3, 0(r23)
/* 801D6D6C 001D29CC  4B FF E8 05 */	bl TRKProcessInput
/* 801D6D70 001D29D0  38 00 FF FF */	li r0, -1
/* 801D6D74 001D29D4  90 17 00 00 */	stw r0, 0(r23)
/* 801D6D78 001D29D8  4B FF FF 8C */	b lbl_801D6D04
lbl_801D6D7C:
/* 801D6D7C 001D29DC  80 77 00 00 */	lwz r3, 0(r23)
/* 801D6D80 001D29E0  2C 03 FF FF */	cmpwi r3, -1
/* 801D6D84 001D29E4  41 82 00 68 */	beq lbl_801D6DEC
/* 801D6D88 001D29E8  80 1E 00 08 */	lwz r0, 8(r30)
/* 801D6D8C 001D29EC  28 00 00 40 */	cmplwi r0, 0x40
/* 801D6D90 001D29F0  40 80 00 08 */	bge lbl_801D6D98
/* 801D6D94 001D29F4  3B 20 00 01 */	li r25, 1
lbl_801D6D98:
/* 801D6D98 001D29F8  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6D9C 001D29FC  40 82 00 10 */	bne lbl_801D6DAC
/* 801D6DA0 001D2A00  2C 19 00 00 */	cmpwi r25, 0
/* 801D6DA4 001D2A04  40 82 00 08 */	bne lbl_801D6DAC
/* 801D6DA8 001D2A08  8B 5E 00 18 */	lbz r26, 0x18(r30)
lbl_801D6DAC:
/* 801D6DAC 001D2A0C  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6DB0 001D2A10  40 82 00 20 */	bne lbl_801D6DD0
/* 801D6DB4 001D2A14  2C 19 00 00 */	cmpwi r25, 0
/* 801D6DB8 001D2A18  40 82 00 18 */	bne lbl_801D6DD0
/* 801D6DBC 001D2A1C  2C 1B 00 80 */	cmpwi r27, 0x80
/* 801D6DC0 001D2A20  40 82 00 0C */	bne lbl_801D6DCC
/* 801D6DC4 001D2A24  2C 1A 00 00 */	cmpwi r26, 0
/* 801D6DC8 001D2A28  41 82 00 08 */	beq lbl_801D6DD0
lbl_801D6DCC:
/* 801D6DCC 001D2A2C  3B 20 00 01 */	li r25, 1
lbl_801D6DD0:
/* 801D6DD0 001D2A30  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6DD4 001D2A34  40 82 00 0C */	bne lbl_801D6DE0
/* 801D6DD8 001D2A38  2C 19 00 00 */	cmpwi r25, 0
/* 801D6DDC 001D2A3C  41 82 00 10 */	beq lbl_801D6DEC
lbl_801D6DE0:
/* 801D6DE0 001D2A40  4B FF E5 99 */	bl TRKReleaseBuffer
/* 801D6DE4 001D2A44  38 00 FF FF */	li r0, -1
/* 801D6DE8 001D2A48  90 17 00 00 */	stw r0, 0(r23)
lbl_801D6DEC:
/* 801D6DEC 001D2A4C  3B 9C FF FF */	addi r28, r28, -1
lbl_801D6DF0:
/* 801D6DF0 001D2A50  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6DF4 001D2A54  41 82 00 18 */	beq lbl_801D6E0C
/* 801D6DF8 001D2A58  80 17 00 00 */	lwz r0, 0(r23)
/* 801D6DFC 001D2A5C  2C 00 FF FF */	cmpwi r0, -1
/* 801D6E00 001D2A60  40 82 00 0C */	bne lbl_801D6E0C
/* 801D6E04 001D2A64  2C 1F 00 00 */	cmpwi r31, 0
/* 801D6E08 001D2A68  41 82 FE E0 */	beq lbl_801D6CE8
lbl_801D6E0C:
/* 801D6E0C 001D2A6C  80 17 00 00 */	lwz r0, 0(r23)
/* 801D6E10 001D2A70  2C 00 FF FF */	cmpwi r0, -1
/* 801D6E14 001D2A74  40 82 00 08 */	bne lbl_801D6E1C
/* 801D6E18 001D2A78  3B E0 08 00 */	li r31, 0x800
lbl_801D6E1C:
/* 801D6E1C 001D2A7C  7F E3 FB 78 */	mr r3, r31
/* 801D6E20 001D2A80  BA C1 00 08 */	lmw r22, 8(r1)
/* 801D6E24 001D2A84  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801D6E28 001D2A88  7C 08 03 A6 */	mtlr r0
/* 801D6E2C 001D2A8C  38 21 00 30 */	addi r1, r1, 0x30
/* 801D6E30 001D2A90  4E 80 00 20 */	blr

.global TRKSuppAccessFile
TRKSuppAccessFile:
/* 801D6E34 001D2A94  94 21 FF 70 */	stwu r1, -0x90(r1)
/* 801D6E38 001D2A98  7C 08 02 A6 */	mflr r0
/* 801D6E3C 001D2A9C  90 01 00 94 */	stw r0, 0x94(r1)
/* 801D6E40 001D2AA0  BE 61 00 5C */	stmw r19, 0x5c(r1)
/* 801D6E44 001D2AA4  7C 98 23 79 */	or. r24, r4, r4
/* 801D6E48 001D2AA8  7C 77 1B 78 */	mr r23, r3
/* 801D6E4C 001D2AAC  7C B9 2B 78 */	mr r25, r5
/* 801D6E50 001D2AB0  7C DA 33 78 */	mr r26, r6
/* 801D6E54 001D2AB4  7C FB 3B 78 */	mr r27, r7
/* 801D6E58 001D2AB8  7D 1C 43 78 */	mr r28, r8
/* 801D6E5C 001D2ABC  41 82 00 10 */	beq lbl_801D6E6C
/* 801D6E60 001D2AC0  80 19 00 00 */	lwz r0, 0(r25)
/* 801D6E64 001D2AC4  28 00 00 00 */	cmplwi r0, 0
/* 801D6E68 001D2AC8  40 82 00 0C */	bne lbl_801D6E74
lbl_801D6E6C:
/* 801D6E6C 001D2ACC  38 60 00 02 */	li r3, 2
/* 801D6E70 001D2AD0  48 00 01 D0 */	b lbl_801D7040
lbl_801D6E74:
/* 801D6E74 001D2AD4  38 00 00 00 */	li r0, 0
/* 801D6E78 001D2AD8  3B A0 00 00 */	li r29, 0
/* 801D6E7C 001D2ADC  90 1A 00 00 */	stw r0, 0(r26)
/* 801D6E80 001D2AE0  3B C0 00 00 */	li r30, 0
/* 801D6E84 001D2AE4  3A A0 00 00 */	li r21, 0
/* 801D6E88 001D2AE8  48 00 01 88 */	b lbl_801D7010
lbl_801D6E8C:
/* 801D6E8C 001D2AEC  38 61 00 14 */	addi r3, r1, 0x14
/* 801D6E90 001D2AF0  38 80 00 00 */	li r4, 0
/* 801D6E94 001D2AF4  38 A0 00 40 */	li r5, 0x40
/* 801D6E98 001D2AF8  4B E2 D2 9D */	bl TRK_memset
/* 801D6E9C 001D2AFC  80 19 00 00 */	lwz r0, 0(r25)
/* 801D6EA0 001D2B00  38 60 08 00 */	li r3, 0x800
/* 801D6EA4 001D2B04  7C 1E 00 50 */	subf r0, r30, r0
/* 801D6EA8 001D2B08  28 00 08 00 */	cmplwi r0, 0x800
/* 801D6EAC 001D2B0C  41 81 00 08 */	bgt lbl_801D6EB4
/* 801D6EB0 001D2B10  7C 03 03 78 */	mr r3, r0
lbl_801D6EB4:
/* 801D6EB4 001D2B14  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6EB8 001D2B18  7C 7F 1B 78 */	mr r31, r3
/* 801D6EBC 001D2B1C  38 00 00 D0 */	li r0, 0xd0
/* 801D6EC0 001D2B20  41 82 00 08 */	beq lbl_801D6EC8
/* 801D6EC4 001D2B24  38 00 00 D1 */	li r0, 0xd1
lbl_801D6EC8:
/* 801D6EC8 001D2B28  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6ECC 001D2B2C  98 01 00 18 */	stb r0, 0x18(r1)
/* 801D6ED0 001D2B30  38 00 00 40 */	li r0, 0x40
/* 801D6ED4 001D2B34  40 82 00 08 */	bne lbl_801D6EDC
/* 801D6ED8 001D2B38  38 1F 00 40 */	addi r0, r31, 0x40
lbl_801D6EDC:
/* 801D6EDC 001D2B3C  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D6EE0 001D2B40  38 61 00 0C */	addi r3, r1, 0xc
/* 801D6EE4 001D2B44  38 81 00 08 */	addi r4, r1, 8
/* 801D6EE8 001D2B48  92 E1 00 1C */	stw r23, 0x1c(r1)
/* 801D6EEC 001D2B4C  B3 E1 00 20 */	sth r31, 0x20(r1)
/* 801D6EF0 001D2B50  4B FF E5 19 */	bl TRKGetFreeBuffer
/* 801D6EF4 001D2B54  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6EF8 001D2B58  38 81 00 14 */	addi r4, r1, 0x14
/* 801D6EFC 001D2B5C  38 A0 00 40 */	li r5, 0x40
/* 801D6F00 001D2B60  4B FF E1 75 */	bl TRKAppendBuffer_ui8
/* 801D6F04 001D2B64  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6F08 001D2B68  7C 75 1B 78 */	mr r21, r3
/* 801D6F0C 001D2B6C  40 82 00 20 */	bne lbl_801D6F2C
/* 801D6F10 001D2B70  2C 15 00 00 */	cmpwi r21, 0
/* 801D6F14 001D2B74  40 82 00 18 */	bne lbl_801D6F2C
/* 801D6F18 001D2B78  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6F1C 001D2B7C  7F E5 FB 78 */	mr r5, r31
/* 801D6F20 001D2B80  7C 98 F2 14 */	add r4, r24, r30
/* 801D6F24 001D2B84  4B FF E1 51 */	bl TRKAppendBuffer_ui8
/* 801D6F28 001D2B88  7C 75 1B 78 */	mr r21, r3
lbl_801D6F2C:
/* 801D6F2C 001D2B8C  2C 15 00 00 */	cmpwi r21, 0
/* 801D6F30 001D2B90  40 82 00 D4 */	bne lbl_801D7004
/* 801D6F34 001D2B94  2C 1B 00 00 */	cmpwi r27, 0
/* 801D6F38 001D2B98  41 82 00 C0 */	beq lbl_801D6FF8
/* 801D6F3C 001D2B9C  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6F40 001D2BA0  38 00 00 00 */	li r0, 0
/* 801D6F44 001D2BA4  41 82 00 10 */	beq lbl_801D6F54
/* 801D6F48 001D2BA8  28 17 00 00 */	cmplwi r23, 0
/* 801D6F4C 001D2BAC  40 82 00 08 */	bne lbl_801D6F54
/* 801D6F50 001D2BB0  38 00 00 01 */	li r0, 1
lbl_801D6F54:
/* 801D6F54 001D2BB4  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6F58 001D2BB8  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6F5C 001D2BBC  38 81 00 10 */	addi r4, r1, 0x10
/* 801D6F60 001D2BC0  38 A0 00 05 */	li r5, 5
/* 801D6F64 001D2BC4  7C 00 00 34 */	cntlzw r0, r0
/* 801D6F68 001D2BC8  38 C0 00 03 */	li r6, 3
/* 801D6F6C 001D2BCC  54 07 D9 7E */	srwi r7, r0, 5
/* 801D6F70 001D2BD0  4B FF FD 45 */	bl TRKRequestSend
/* 801D6F74 001D2BD4  7C 75 1B 79 */	or. r21, r3, r3
/* 801D6F78 001D2BD8  40 82 00 10 */	bne lbl_801D6F88
/* 801D6F7C 001D2BDC  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6F80 001D2BE0  4B FF E4 5D */	bl TRKGetBuffer
/* 801D6F84 001D2BE4  7C 76 1B 78 */	mr r22, r3
lbl_801D6F88:
/* 801D6F88 001D2BE8  80 16 00 20 */	lwz r0, 0x20(r22)
/* 801D6F8C 001D2BEC  2C 1C 00 00 */	cmpwi r28, 0
/* 801D6F90 001D2BF0  A2 76 00 24 */	lhz r19, 0x24(r22)
/* 801D6F94 001D2BF4  54 14 06 3E */	clrlwi r20, r0, 0x18
/* 801D6F98 001D2BF8  41 82 00 40 */	beq lbl_801D6FD8
/* 801D6F9C 001D2BFC  2C 15 00 00 */	cmpwi r21, 0
/* 801D6FA0 001D2C00  40 82 00 38 */	bne lbl_801D6FD8
/* 801D6FA4 001D2C04  7C 13 F8 40 */	cmplw r19, r31
/* 801D6FA8 001D2C08  41 81 00 30 */	bgt lbl_801D6FD8
/* 801D6FAC 001D2C0C  7E C3 B3 78 */	mr r3, r22
/* 801D6FB0 001D2C10  38 80 00 40 */	li r4, 0x40
/* 801D6FB4 001D2C14  4B FF E3 55 */	bl TRKSetBufferPosition
/* 801D6FB8 001D2C18  7E C3 B3 78 */	mr r3, r22
/* 801D6FBC 001D2C1C  7E 65 9B 78 */	mr r5, r19
/* 801D6FC0 001D2C20  7C 98 F2 14 */	add r4, r24, r30
/* 801D6FC4 001D2C24  4B FF DE 35 */	bl TRKReadBuffer_ui8
/* 801D6FC8 001D2C28  7C 75 1B 78 */	mr r21, r3
/* 801D6FCC 001D2C2C  2C 15 03 02 */	cmpwi r21, 0x302
/* 801D6FD0 001D2C30  40 82 00 08 */	bne lbl_801D6FD8
/* 801D6FD4 001D2C34  3A A0 00 00 */	li r21, 0
lbl_801D6FD8:
/* 801D6FD8 001D2C38  7C 13 F8 40 */	cmplw r19, r31
/* 801D6FDC 001D2C3C  41 82 00 0C */	beq lbl_801D6FE8
/* 801D6FE0 001D2C40  7E 7F 9B 78 */	mr r31, r19
/* 801D6FE4 001D2C44  3B A0 00 01 */	li r29, 1
lbl_801D6FE8:
/* 801D6FE8 001D2C48  92 9A 00 00 */	stw r20, 0(r26)
/* 801D6FEC 001D2C4C  80 61 00 10 */	lwz r3, 0x10(r1)
/* 801D6FF0 001D2C50  4B FF E3 89 */	bl TRKReleaseBuffer
/* 801D6FF4 001D2C54  48 00 00 10 */	b lbl_801D7004
lbl_801D6FF8:
/* 801D6FF8 001D2C58  80 61 00 08 */	lwz r3, 8(r1)
/* 801D6FFC 001D2C5C  4B FF DC E1 */	bl TRKMessageSend
/* 801D7000 001D2C60  7C 75 1B 78 */	mr r21, r3
lbl_801D7004:
/* 801D7004 001D2C64  80 61 00 0C */	lwz r3, 0xc(r1)
/* 801D7008 001D2C68  4B FF E3 71 */	bl TRKReleaseBuffer
/* 801D700C 001D2C6C  7F DE FA 14 */	add r30, r30, r31
lbl_801D7010:
/* 801D7010 001D2C70  2C 1D 00 00 */	cmpwi r29, 0
/* 801D7014 001D2C74  40 82 00 24 */	bne lbl_801D7038
/* 801D7018 001D2C78  80 19 00 00 */	lwz r0, 0(r25)
/* 801D701C 001D2C7C  7C 1E 00 40 */	cmplw r30, r0
/* 801D7020 001D2C80  40 80 00 18 */	bge lbl_801D7038
/* 801D7024 001D2C84  2C 15 00 00 */	cmpwi r21, 0
/* 801D7028 001D2C88  40 82 00 10 */	bne lbl_801D7038
/* 801D702C 001D2C8C  80 1A 00 00 */	lwz r0, 0(r26)
/* 801D7030 001D2C90  2C 00 00 00 */	cmpwi r0, 0
/* 801D7034 001D2C94  41 82 FE 58 */	beq lbl_801D6E8C
lbl_801D7038:
/* 801D7038 001D2C98  93 D9 00 00 */	stw r30, 0(r25)
/* 801D703C 001D2C9C  7E A3 AB 78 */	mr r3, r21
lbl_801D7040:
/* 801D7040 001D2CA0  BA 61 00 5C */	lmw r19, 0x5c(r1)
/* 801D7044 001D2CA4  80 01 00 94 */	lwz r0, 0x94(r1)
/* 801D7048 001D2CA8  7C 08 03 A6 */	mtlr r0
/* 801D704C 001D2CAC  38 21 00 90 */	addi r1, r1, 0x90
/* 801D7050 001D2CB0  4E 80 00 20 */	blr