summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSPlayRecord.s
blob: b31cbf9e3a1a6f8d8e8a9863cda6af9eda2910f1 (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
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
.include "macros.inc"

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

.global PlayRecordAlarmCallback
PlayRecordAlarmCallback:
/* 8027380C 0026F46C  38 60 00 00 */	li r3, 0
/* 80273810 0026F470  38 80 00 00 */	li r4, 0
/* 80273814 0026F474  48 00 00 04 */	b PlayRecordCallback

.global PlayRecordCallback
PlayRecordCallback:
/* 80273818 0026F478  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8027381C 0026F47C  7C 08 02 A6 */	mflr r0
/* 80273820 0026F480  90 01 00 24 */	stw r0, 0x24(r1)
/* 80273824 0026F484  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80273828 0026F488  3F E0 80 51 */	lis r31, lbl_805152A0@ha
/* 8027382C 0026F48C  3B FF 52 A0 */	addi r31, r31, lbl_805152A0@l
/* 80273830 0026F490  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80273834 0026F494  3B C0 00 00 */	li r30, 0
/* 80273838 0026F498  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8027383C 0026F49C  80 0D A8 70 */	lwz r0, lbl_8063FB30-_SDA_BASE_(r13)
/* 80273840 0026F4A0  90 6D A8 7C */	stw r3, lbl_8063FB3C-_SDA_BASE_(r13)
/* 80273844 0026F4A4  2C 00 00 00 */	cmpwi r0, 0
/* 80273848 0026F4A8  41 82 00 10 */	beq lbl_80273858
/* 8027384C 0026F4AC  38 00 00 01 */	li r0, 1
/* 80273850 0026F4B0  90 0D A8 74 */	stw r0, lbl_8063FB34-_SDA_BASE_(r13)
/* 80273854 0026F4B4  48 00 04 58 */	b lbl_80273CAC
lbl_80273858:
/* 80273858 0026F4B8  80 0D A8 78 */	lwz r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 8027385C 0026F4BC  2C 00 00 00 */	cmpwi r0, 0
/* 80273860 0026F4C0  40 82 02 18 */	bne lbl_80273A78
/* 80273864 0026F4C4  80 0D 87 F0 */	lwz r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273868 0026F4C8  28 00 00 06 */	cmplwi r0, 6
/* 8027386C 0026F4CC  41 81 01 F8 */	bgt lbl_80273A64
/* 80273870 0026F4D0  3C 80 80 43 */	lis r4, lbl_80433D5C@ha
/* 80273874 0026F4D4  54 00 10 3A */	slwi r0, r0, 2
/* 80273878 0026F4D8  38 84 3D 5C */	addi r4, r4, lbl_80433D5C@l
/* 8027387C 0026F4DC  7C 84 00 2E */	lwzx r4, r4, r0
/* 80273880 0026F4E0  7C 89 03 A6 */	mtctr r4
/* 80273884 0026F4E4  4E 80 04 20 */	bctr
/* 80273888 0026F4E8  38 00 00 01 */	li r0, 1
/* 8027388C 0026F4EC  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273890 0026F4F0  48 00 01 E8 */	b lbl_80273A78
/* 80273894 0026F4F4  2C 03 FF F6 */	cmpwi r3, -10
/* 80273898 0026F4F8  40 82 00 38 */	bne lbl_802738D0
/* 8027389C 0026F4FC  38 00 00 01 */	li r0, 1
/* 802738A0 0026F500  38 7F 00 80 */	addi r3, r31, 0x80
/* 802738A4 0026F504  90 0D A8 78 */	stw r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 802738A8 0026F508  4B FF 5E 7D */	bl OSCreateAlarm
/* 802738AC 0026F50C  3C 60 80 00 */	lis r3, 0x800000F8@ha
/* 802738B0 0026F510  3C E0 80 27 */	lis r7, PlayRecordAlarmCallback@ha
/* 802738B4 0026F514  80 03 00 F8 */	lwz r0, 0x800000F8@l(r3)
/* 802738B8 0026F518  38 7F 00 80 */	addi r3, r31, 0x80
/* 802738BC 0026F51C  38 E7 38 0C */	addi r7, r7, PlayRecordAlarmCallback@l
/* 802738C0 0026F520  38 A0 00 00 */	li r5, 0
/* 802738C4 0026F524  54 06 F0 BE */	srwi r6, r0, 2
/* 802738C8 0026F528  4B FF 60 BD */	bl OSSetAlarm
/* 802738CC 0026F52C  48 00 03 E0 */	b lbl_80273CAC
lbl_802738D0:
/* 802738D0 0026F530  2C 03 00 00 */	cmpwi r3, 0
/* 802738D4 0026F534  40 82 00 28 */	bne lbl_802738FC
/* 802738D8 0026F538  80 0D A8 68 */	lwz r0, lbl_8063FB28-_SDA_BASE_(r13)
/* 802738DC 0026F53C  2C 00 00 00 */	cmpwi r0, 0
/* 802738E0 0026F540  40 82 00 10 */	bne lbl_802738F0
/* 802738E4 0026F544  38 00 00 02 */	li r0, 2
/* 802738E8 0026F548  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 802738EC 0026F54C  48 00 01 8C */	b lbl_80273A78
lbl_802738F0:
/* 802738F0 0026F550  38 00 00 04 */	li r0, 4
/* 802738F4 0026F554  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 802738F8 0026F558  48 00 01 80 */	b lbl_80273A78
lbl_802738FC:
/* 802738FC 0026F55C  38 60 00 01 */	li r3, 1
/* 80273900 0026F560  38 00 00 07 */	li r0, 7
/* 80273904 0026F564  90 6D A8 6C */	stw r3, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273908 0026F568  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 8027390C 0026F56C  48 00 03 A0 */	b lbl_80273CAC
/* 80273910 0026F570  28 03 00 80 */	cmplwi r3, 0x80
/* 80273914 0026F574  40 82 00 2C */	bne lbl_80273940
/* 80273918 0026F578  38 9F 00 00 */	addi r4, r31, 0
/* 8027391C 0026F57C  38 A0 00 01 */	li r5, 1
/* 80273920 0026F580  80 64 00 60 */	lwz r3, 0x60(r4)
/* 80273924 0026F584  38 00 00 03 */	li r0, 3
/* 80273928 0026F588  80 84 00 64 */	lwz r4, 0x64(r4)
/* 8027392C 0026F58C  90 AD A8 68 */	stw r5, lbl_8063FB28-_SDA_BASE_(r13)
/* 80273930 0026F590  90 8D A8 84 */	stw r4, lbl_8063FB44-_SDA_BASE_(r13)
/* 80273934 0026F594  90 6D A8 80 */	stw r3, lbl_8063FB40-_SDA_BASE_(r13)
/* 80273938 0026F598  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 8027393C 0026F59C  48 00 01 3C */	b lbl_80273A78
lbl_80273940:
/* 80273940 0026F5A0  38 60 00 01 */	li r3, 1
/* 80273944 0026F5A4  38 00 00 06 */	li r0, 6
/* 80273948 0026F5A8  90 6D A8 6C */	stw r3, lbl_8063FB2C-_SDA_BASE_(r13)
/* 8027394C 0026F5AC  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273950 0026F5B0  48 00 01 28 */	b lbl_80273A78
/* 80273954 0026F5B4  2C 03 00 00 */	cmpwi r3, 0
/* 80273958 0026F5B8  40 82 00 10 */	bne lbl_80273968
/* 8027395C 0026F5BC  38 00 00 04 */	li r0, 4
/* 80273960 0026F5C0  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273964 0026F5C4  48 00 01 14 */	b lbl_80273A78
lbl_80273968:
/* 80273968 0026F5C8  38 60 00 01 */	li r3, 1
/* 8027396C 0026F5CC  38 00 00 06 */	li r0, 6
/* 80273970 0026F5D0  90 6D A8 6C */	stw r3, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273974 0026F5D4  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273978 0026F5D8  48 00 01 00 */	b lbl_80273A78
/* 8027397C 0026F5DC  38 00 00 05 */	li r0, 5
/* 80273980 0026F5E0  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273984 0026F5E4  48 00 00 F4 */	b lbl_80273A78
/* 80273988 0026F5E8  28 03 00 80 */	cmplwi r3, 0x80
/* 8027398C 0026F5EC  40 82 00 70 */	bne lbl_802739FC
/* 80273990 0026F5F0  4B FF EE 29 */	bl OSGetTime
/* 80273994 0026F5F4  3C A0 80 00 */	lis r5, 0x800000F8@ha
/* 80273998 0026F5F8  81 0D A8 84 */	lwz r8, lbl_8063FB44-_SDA_BASE_(r13)
/* 8027399C 0026F5FC  80 05 00 F8 */	lwz r0, 0x800000F8@l(r5)
/* 802739A0 0026F600  38 A0 01 2C */	li r5, 0x12c
/* 802739A4 0026F604  81 2D A8 80 */	lwz r9, lbl_8063FB40-_SDA_BASE_(r13)
/* 802739A8 0026F608  7D 08 20 10 */	subfc r8, r8, r4
/* 802739AC 0026F60C  54 07 F0 BE */	srwi r7, r0, 2
/* 802739B0 0026F610  38 C0 00 00 */	li r6, 0
/* 802739B4 0026F614  7C 69 19 10 */	subfe r3, r9, r3
/* 802739B8 0026F618  6C 64 80 00 */	xoris r4, r3, 0x8000
/* 802739BC 0026F61C  7C 07 28 16 */	mulhwu r0, r7, r5
/* 802739C0 0026F620  7C 66 29 D6 */	mullw r3, r6, r5
/* 802739C4 0026F624  7C 00 1A 14 */	add r0, r0, r3
/* 802739C8 0026F628  1C A7 01 2C */	mulli r5, r7, 0x12c
/* 802739CC 0026F62C  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 802739D0 0026F630  7C 68 28 10 */	subfc r3, r8, r5
/* 802739D4 0026F634  7C 84 01 10 */	subfe r4, r4, r0
/* 802739D8 0026F638  7C 80 01 10 */	subfe r4, r0, r0
/* 802739DC 0026F63C  7C 84 00 D1 */	neg. r4, r4
/* 802739E0 0026F640  41 82 00 10 */	beq lbl_802739F0
/* 802739E4 0026F644  38 00 00 06 */	li r0, 6
/* 802739E8 0026F648  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 802739EC 0026F64C  48 00 00 8C */	b lbl_80273A78
lbl_802739F0:
/* 802739F0 0026F650  38 00 00 03 */	li r0, 3
/* 802739F4 0026F654  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 802739F8 0026F658  48 00 00 80 */	b lbl_80273A78
lbl_802739FC:
/* 802739FC 0026F65C  38 60 00 01 */	li r3, 1
/* 80273A00 0026F660  38 00 00 06 */	li r0, 6
/* 80273A04 0026F664  90 6D A8 6C */	stw r3, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273A08 0026F668  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273A0C 0026F66C  48 00 00 6C */	b lbl_80273A78
/* 80273A10 0026F670  80 0D A8 6C */	lwz r0, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273A14 0026F674  2C 00 00 00 */	cmpwi r0, 0
/* 80273A18 0026F678  41 82 00 10 */	beq lbl_80273A28
/* 80273A1C 0026F67C  38 00 00 07 */	li r0, 7
/* 80273A20 0026F680  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273A24 0026F684  48 00 02 88 */	b lbl_80273CAC
lbl_80273A28:
/* 80273A28 0026F688  2C 03 00 00 */	cmpwi r3, 0
/* 80273A2C 0026F68C  40 82 00 24 */	bne lbl_80273A50
/* 80273A30 0026F690  38 9F 00 00 */	addi r4, r31, 0
/* 80273A34 0026F694  38 00 00 01 */	li r0, 1
/* 80273A38 0026F698  80 64 00 60 */	lwz r3, 0x60(r4)
/* 80273A3C 0026F69C  80 84 00 64 */	lwz r4, 0x64(r4)
/* 80273A40 0026F6A0  90 6D A8 80 */	stw r3, lbl_8063FB40-_SDA_BASE_(r13)
/* 80273A44 0026F6A4  90 8D A8 84 */	stw r4, lbl_8063FB44-_SDA_BASE_(r13)
/* 80273A48 0026F6A8  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273A4C 0026F6AC  48 00 00 2C */	b lbl_80273A78
lbl_80273A50:
/* 80273A50 0026F6B0  38 60 00 07 */	li r3, 7
/* 80273A54 0026F6B4  38 00 00 01 */	li r0, 1
/* 80273A58 0026F6B8  90 6D 87 F0 */	stw r3, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273A5C 0026F6BC  90 0D A8 6C */	stw r0, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273A60 0026F6C0  48 00 02 4C */	b lbl_80273CAC
lbl_80273A64:
/* 80273A64 0026F6C4  38 60 00 07 */	li r3, 7
/* 80273A68 0026F6C8  38 00 00 01 */	li r0, 1
/* 80273A6C 0026F6CC  90 6D 87 F0 */	stw r3, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273A70 0026F6D0  90 0D A8 6C */	stw r0, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273A74 0026F6D4  48 00 02 38 */	b lbl_80273CAC
lbl_80273A78:
/* 80273A78 0026F6D8  80 0D 87 F0 */	lwz r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273A7C 0026F6DC  3B A0 00 00 */	li r29, 0
/* 80273A80 0026F6E0  93 AD A8 78 */	stw r29, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273A84 0026F6E4  2C 00 00 04 */	cmpwi r0, 4
/* 80273A88 0026F6E8  41 82 00 A0 */	beq lbl_80273B28
/* 80273A8C 0026F6EC  40 80 00 1C */	bge lbl_80273AA8
/* 80273A90 0026F6F0  2C 00 00 02 */	cmpwi r0, 2
/* 80273A94 0026F6F4  41 82 00 4C */	beq lbl_80273AE0
/* 80273A98 0026F6F8  40 80 00 6C */	bge lbl_80273B04
/* 80273A9C 0026F6FC  2C 00 00 01 */	cmpwi r0, 1
/* 80273AA0 0026F700  40 80 00 18 */	bge lbl_80273AB8
/* 80273AA4 0026F704  48 00 01 30 */	b lbl_80273BD4
lbl_80273AA8:
/* 80273AA8 0026F708  2C 00 00 06 */	cmpwi r0, 6
/* 80273AAC 0026F70C  41 82 01 10 */	beq lbl_80273BBC
/* 80273AB0 0026F710  40 80 01 24 */	bge lbl_80273BD4
/* 80273AB4 0026F714  48 00 00 B0 */	b lbl_80273B64
lbl_80273AB8:
/* 80273AB8 0026F718  3C 60 80 43 */	lis r3, lbl_80433D30@ha
/* 80273ABC 0026F71C  3C C0 80 27 */	lis r6, PlayRecordCallback@ha
/* 80273AC0 0026F720  38 63 3D 30 */	addi r3, r3, lbl_80433D30@l
/* 80273AC4 0026F724  38 9F 00 B0 */	addi r4, r31, 0xb0
/* 80273AC8 0026F728  38 C6 38 18 */	addi r6, r6, PlayRecordCallback@l
/* 80273ACC 0026F72C  38 FF 01 40 */	addi r7, r31, 0x140
/* 80273AD0 0026F730  38 A0 00 03 */	li r5, 3
/* 80273AD4 0026F734  48 07 4A 4D */	bl NANDOpenAsync
/* 80273AD8 0026F738  7C 7E 1B 78 */	mr r30, r3
/* 80273ADC 0026F73C  48 00 00 F8 */	b lbl_80273BD4
lbl_80273AE0:
/* 80273AE0 0026F740  3C C0 80 27 */	lis r6, PlayRecordCallback@ha
/* 80273AE4 0026F744  38 7F 00 B0 */	addi r3, r31, 0xb0
/* 80273AE8 0026F748  38 9F 00 00 */	addi r4, r31, 0
/* 80273AEC 0026F74C  38 FF 01 40 */	addi r7, r31, 0x140
/* 80273AF0 0026F750  38 C6 38 18 */	addi r6, r6, PlayRecordCallback@l
/* 80273AF4 0026F754  38 A0 00 80 */	li r5, 0x80
/* 80273AF8 0026F758  48 07 3E 31 */	bl NANDReadAsync
/* 80273AFC 0026F75C  7C 7E 1B 78 */	mr r30, r3
/* 80273B00 0026F760  48 00 00 D4 */	b lbl_80273BD4
lbl_80273B04:
/* 80273B04 0026F764  3C C0 80 27 */	lis r6, PlayRecordCallback@ha
/* 80273B08 0026F768  38 7F 00 B0 */	addi r3, r31, 0xb0
/* 80273B0C 0026F76C  38 C6 38 18 */	addi r6, r6, PlayRecordCallback@l
/* 80273B10 0026F770  38 FF 01 40 */	addi r7, r31, 0x140
/* 80273B14 0026F774  38 80 00 00 */	li r4, 0
/* 80273B18 0026F778  38 A0 00 00 */	li r5, 0
/* 80273B1C 0026F77C  48 07 40 05 */	bl NANDSeekAsync
/* 80273B20 0026F780  7C 7E 1B 78 */	mr r30, r3
/* 80273B24 0026F784  48 00 00 B0 */	b lbl_80273BD4
lbl_80273B28:
/* 80273B28 0026F788  38 7F 00 80 */	addi r3, r31, 0x80
/* 80273B2C 0026F78C  4B FF 5B F9 */	bl OSCreateAlarm
/* 80273B30 0026F790  3C 60 80 00 */	lis r3, 0x800000F8@ha
/* 80273B34 0026F794  38 00 00 3C */	li r0, 0x3c
/* 80273B38 0026F798  80 63 00 F8 */	lwz r3, 0x800000F8@l(r3)
/* 80273B3C 0026F79C  3C E0 80 27 */	lis r7, PlayRecordAlarmCallback@ha
/* 80273B40 0026F7A0  7C 9D 01 D6 */	mullw r4, r29, r0
/* 80273B44 0026F7A4  54 65 F0 BE */	srwi r5, r3, 2
/* 80273B48 0026F7A8  38 7F 00 80 */	addi r3, r31, 0x80
/* 80273B4C 0026F7AC  38 E7 38 0C */	addi r7, r7, PlayRecordAlarmCallback@l
/* 80273B50 0026F7B0  7C 05 00 16 */	mulhwu r0, r5, r0
/* 80273B54 0026F7B4  1C C5 00 3C */	mulli r6, r5, 0x3c
/* 80273B58 0026F7B8  7C A0 22 14 */	add r5, r0, r4
/* 80273B5C 0026F7BC  4B FF 5E 29 */	bl OSSetAlarm
/* 80273B60 0026F7C0  48 00 00 74 */	b lbl_80273BD4
lbl_80273B64:
/* 80273B64 0026F7C4  4B FF EC 55 */	bl OSGetTime
/* 80273B68 0026F7C8  38 BF 00 00 */	addi r5, r31, 0
/* 80273B6C 0026F7CC  38 00 00 1F */	li r0, 0x1f
/* 80273B70 0026F7D0  90 85 00 64 */	stw r4, 0x64(r5)
/* 80273B74 0026F7D4  38 C5 00 04 */	addi r6, r5, 4
/* 80273B78 0026F7D8  38 80 00 00 */	li r4, 0
/* 80273B7C 0026F7DC  90 65 00 60 */	stw r3, 0x60(r5)
/* 80273B80 0026F7E0  7C 09 03 A6 */	mtctr r0
lbl_80273B84:
/* 80273B84 0026F7E4  80 06 00 00 */	lwz r0, 0(r6)
/* 80273B88 0026F7E8  38 C6 00 04 */	addi r6, r6, 4
/* 80273B8C 0026F7EC  7C 84 02 14 */	add r4, r4, r0
/* 80273B90 0026F7F0  42 00 FF F4 */	bdnz lbl_80273B84
/* 80273B94 0026F7F4  3C C0 80 27 */	lis r6, PlayRecordCallback@ha
/* 80273B98 0026F7F8  90 9F 00 00 */	stw r4, 0(r31)
/* 80273B9C 0026F7FC  38 7F 00 B0 */	addi r3, r31, 0xb0
/* 80273BA0 0026F800  38 9F 00 00 */	addi r4, r31, 0
/* 80273BA4 0026F804  38 C6 38 18 */	addi r6, r6, PlayRecordCallback@l
/* 80273BA8 0026F808  38 FF 01 40 */	addi r7, r31, 0x140
/* 80273BAC 0026F80C  38 A0 00 80 */	li r5, 0x80
/* 80273BB0 0026F810  48 07 3E 59 */	bl NANDWriteAsync
/* 80273BB4 0026F814  7C 7E 1B 78 */	mr r30, r3
/* 80273BB8 0026F818  48 00 00 1C */	b lbl_80273BD4
lbl_80273BBC:
/* 80273BBC 0026F81C  3C 80 80 27 */	lis r4, PlayRecordCallback@ha
/* 80273BC0 0026F820  38 7F 00 B0 */	addi r3, r31, 0xb0
/* 80273BC4 0026F824  38 84 38 18 */	addi r4, r4, PlayRecordCallback@l
/* 80273BC8 0026F828  38 BF 01 40 */	addi r5, r31, 0x140
/* 80273BCC 0026F82C  48 07 4B 29 */	bl NANDCloseAsync
/* 80273BD0 0026F830  7C 7E 1B 78 */	mr r30, r3
lbl_80273BD4:
/* 80273BD4 0026F834  2C 1E 00 00 */	cmpwi r30, 0
/* 80273BD8 0026F838  41 82 00 D0 */	beq lbl_80273CA8
/* 80273BDC 0026F83C  2C 1E FF FD */	cmpwi r30, -3
/* 80273BE0 0026F840  40 82 00 38 */	bne lbl_80273C18
/* 80273BE4 0026F844  38 7F 00 80 */	addi r3, r31, 0x80
/* 80273BE8 0026F848  4B FF 5B 3D */	bl OSCreateAlarm
/* 80273BEC 0026F84C  3C 60 80 00 */	lis r3, 0x800000F8@ha
/* 80273BF0 0026F850  3C E0 80 27 */	lis r7, PlayRecordAlarmCallback@ha
/* 80273BF4 0026F854  80 03 00 F8 */	lwz r0, 0x800000F8@l(r3)
/* 80273BF8 0026F858  38 7F 00 80 */	addi r3, r31, 0x80
/* 80273BFC 0026F85C  38 E7 38 0C */	addi r7, r7, PlayRecordAlarmCallback@l
/* 80273C00 0026F860  38 A0 00 00 */	li r5, 0
/* 80273C04 0026F864  54 06 F0 BE */	srwi r6, r0, 2
/* 80273C08 0026F868  4B FF 5D 7D */	bl OSSetAlarm
/* 80273C0C 0026F86C  38 00 00 01 */	li r0, 1
/* 80273C10 0026F870  90 0D A8 78 */	stw r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273C14 0026F874  48 00 00 94 */	b lbl_80273CA8
lbl_80273C18:
/* 80273C18 0026F878  80 0D 87 F0 */	lwz r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273C1C 0026F87C  38 60 00 01 */	li r3, 1
/* 80273C20 0026F880  90 6D A8 6C */	stw r3, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273C24 0026F884  2C 00 00 04 */	cmpwi r0, 4
/* 80273C28 0026F888  41 82 00 78 */	beq lbl_80273CA0
/* 80273C2C 0026F88C  40 80 00 10 */	bge lbl_80273C3C
/* 80273C30 0026F890  2C 00 00 02 */	cmpwi r0, 2
/* 80273C34 0026F894  40 80 00 10 */	bge lbl_80273C44
/* 80273C38 0026F898  48 00 00 68 */	b lbl_80273CA0
lbl_80273C3C:
/* 80273C3C 0026F89C  2C 00 00 06 */	cmpwi r0, 6
/* 80273C40 0026F8A0  40 80 00 60 */	bge lbl_80273CA0
lbl_80273C44:
/* 80273C44 0026F8A4  38 00 00 06 */	li r0, 6
/* 80273C48 0026F8A8  3C 80 80 27 */	lis r4, PlayRecordCallback@ha
/* 80273C4C 0026F8AC  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273C50 0026F8B0  38 7F 00 B0 */	addi r3, r31, 0xb0
/* 80273C54 0026F8B4  38 84 38 18 */	addi r4, r4, PlayRecordCallback@l
/* 80273C58 0026F8B8  38 BF 01 40 */	addi r5, r31, 0x140
/* 80273C5C 0026F8BC  48 07 4A 99 */	bl NANDCloseAsync
/* 80273C60 0026F8C0  2C 03 FF FD */	cmpwi r3, -3
/* 80273C64 0026F8C4  7C 7E 1B 78 */	mr r30, r3
/* 80273C68 0026F8C8  40 82 00 40 */	bne lbl_80273CA8
/* 80273C6C 0026F8CC  38 00 00 01 */	li r0, 1
/* 80273C70 0026F8D0  38 7F 00 80 */	addi r3, r31, 0x80
/* 80273C74 0026F8D4  90 0D A8 78 */	stw r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273C78 0026F8D8  4B FF 5A AD */	bl OSCreateAlarm
/* 80273C7C 0026F8DC  3C 60 80 00 */	lis r3, 0x800000F8@ha
/* 80273C80 0026F8E0  3C E0 80 27 */	lis r7, PlayRecordAlarmCallback@ha
/* 80273C84 0026F8E4  80 03 00 F8 */	lwz r0, 0x800000F8@l(r3)
/* 80273C88 0026F8E8  38 7F 00 80 */	addi r3, r31, 0x80
/* 80273C8C 0026F8EC  38 E7 38 0C */	addi r7, r7, PlayRecordAlarmCallback@l
/* 80273C90 0026F8F0  38 A0 00 00 */	li r5, 0
/* 80273C94 0026F8F4  54 06 F0 BE */	srwi r6, r0, 2
/* 80273C98 0026F8F8  4B FF 5C ED */	bl OSSetAlarm
/* 80273C9C 0026F8FC  48 00 00 0C */	b lbl_80273CA8
lbl_80273CA0:
/* 80273CA0 0026F900  38 00 00 07 */	li r0, 7
/* 80273CA4 0026F904  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
lbl_80273CA8:
/* 80273CA8 0026F908  93 CD A8 7C */	stw r30, lbl_8063FB3C-_SDA_BASE_(r13)
lbl_80273CAC:
/* 80273CAC 0026F90C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80273CB0 0026F910  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80273CB4 0026F914  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80273CB8 0026F918  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80273CBC 0026F91C  7C 08 03 A6 */	mtlr r0
/* 80273CC0 0026F920  38 21 00 20 */	addi r1, r1, 0x20
/* 80273CC4 0026F924  4E 80 00 20 */	blr

.global __OSStartPlayRecord
__OSStartPlayRecord:
/* 80273CC8 0026F928  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80273CCC 0026F92C  7C 08 02 A6 */	mflr r0
/* 80273CD0 0026F930  90 01 00 14 */	stw r0, 0x14(r1)
/* 80273CD4 0026F934  48 07 59 71 */	bl NANDInit
/* 80273CD8 0026F938  2C 03 00 00 */	cmpwi r3, 0
/* 80273CDC 0026F93C  40 82 00 30 */	bne lbl_80273D0C
/* 80273CE0 0026F940  38 00 00 00 */	li r0, 0
/* 80273CE4 0026F944  38 60 00 00 */	li r3, 0
/* 80273CE8 0026F948  90 0D A8 70 */	stw r0, lbl_8063FB30-_SDA_BASE_(r13)
/* 80273CEC 0026F94C  38 80 00 00 */	li r4, 0
/* 80273CF0 0026F950  90 0D A8 68 */	stw r0, lbl_8063FB28-_SDA_BASE_(r13)
/* 80273CF4 0026F954  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273CF8 0026F958  90 0D A8 6C */	stw r0, lbl_8063FB2C-_SDA_BASE_(r13)
/* 80273CFC 0026F95C  90 0D A8 78 */	stw r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273D00 0026F960  90 0D A8 74 */	stw r0, lbl_8063FB34-_SDA_BASE_(r13)
/* 80273D04 0026F964  90 0D A8 7C */	stw r0, lbl_8063FB3C-_SDA_BASE_(r13)
/* 80273D08 0026F968  4B FF FB 11 */	bl PlayRecordCallback
lbl_80273D0C:
/* 80273D0C 0026F96C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80273D10 0026F970  7C 08 03 A6 */	mtlr r0
/* 80273D14 0026F974  38 21 00 10 */	addi r1, r1, 0x10
/* 80273D18 0026F978  4E 80 00 20 */	blr

.global __OSStopPlayRecord
__OSStopPlayRecord:
/* 80273D1C 0026F97C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80273D20 0026F980  7C 08 02 A6 */	mflr r0
/* 80273D24 0026F984  90 01 00 24 */	stw r0, 0x24(r1)
/* 80273D28 0026F988  39 61 00 20 */	addi r11, r1, 0x20
/* 80273D2C 0026F98C  4B F5 33 F9 */	bl _savegpr_26
/* 80273D30 0026F990  3F A0 80 51 */	lis r29, lbl_805152A0@ha
/* 80273D34 0026F994  3B BD 52 A0 */	addi r29, r29, lbl_805152A0@l
/* 80273D38 0026F998  4B FF AA 25 */	bl OSDisableInterrupts
/* 80273D3C 0026F99C  80 0D 87 F0 */	lwz r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273D40 0026F9A0  38 80 00 01 */	li r4, 1
/* 80273D44 0026F9A4  90 8D A8 70 */	stw r4, lbl_8063FB30-_SDA_BASE_(r13)
/* 80273D48 0026F9A8  7C 7A 1B 78 */	mr r26, r3
/* 80273D4C 0026F9AC  2C 00 00 07 */	cmpwi r0, 7
/* 80273D50 0026F9B0  41 82 00 1C */	beq lbl_80273D6C
/* 80273D54 0026F9B4  2C 00 00 00 */	cmpwi r0, 0
/* 80273D58 0026F9B8  41 82 00 14 */	beq lbl_80273D6C
/* 80273D5C 0026F9BC  2C 00 00 09 */	cmpwi r0, 9
/* 80273D60 0026F9C0  41 82 00 0C */	beq lbl_80273D6C
/* 80273D64 0026F9C4  2C 00 00 08 */	cmpwi r0, 8
/* 80273D68 0026F9C8  40 82 00 10 */	bne lbl_80273D78
lbl_80273D6C:
/* 80273D6C 0026F9CC  7F 43 D3 78 */	mr r3, r26
/* 80273D70 0026F9D0  4B FF AA 15 */	bl OSRestoreInterrupts
/* 80273D74 0026F9D4  48 00 01 70 */	b lbl_80273EE4
lbl_80273D78:
/* 80273D78 0026F9D8  2C 00 00 04 */	cmpwi r0, 4
/* 80273D7C 0026F9DC  40 82 00 64 */	bne lbl_80273DE0
/* 80273D80 0026F9E0  38 7D 00 80 */	addi r3, r29, 0x80
/* 80273D84 0026F9E4  4B FF 5C F5 */	bl OSCancelAlarm
/* 80273D88 0026F9E8  7F 43 D3 78 */	mr r3, r26
/* 80273D8C 0026F9EC  4B FF A9 F9 */	bl OSRestoreInterrupts
/* 80273D90 0026F9F0  4B FF EA 29 */	bl OSGetTime
/* 80273D94 0026F9F4  38 BD 00 00 */	addi r5, r29, 0
/* 80273D98 0026F9F8  38 00 00 1F */	li r0, 0x1f
/* 80273D9C 0026F9FC  90 85 00 64 */	stw r4, 0x64(r5)
/* 80273DA0 0026FA00  38 C5 00 04 */	addi r6, r5, 4
/* 80273DA4 0026FA04  38 80 00 00 */	li r4, 0
/* 80273DA8 0026FA08  90 65 00 60 */	stw r3, 0x60(r5)
/* 80273DAC 0026FA0C  7C 09 03 A6 */	mtctr r0
lbl_80273DB0:
/* 80273DB0 0026FA10  80 06 00 00 */	lwz r0, 0(r6)
/* 80273DB4 0026FA14  38 C6 00 04 */	addi r6, r6, 4
/* 80273DB8 0026FA18  7C 84 02 14 */	add r4, r4, r0
/* 80273DBC 0026FA1C  42 00 FF F4 */	bdnz lbl_80273DB0
/* 80273DC0 0026FA20  90 9D 00 00 */	stw r4, 0(r29)
/* 80273DC4 0026FA24  38 7D 00 B0 */	addi r3, r29, 0xb0
/* 80273DC8 0026FA28  38 9D 00 00 */	addi r4, r29, 0
/* 80273DCC 0026FA2C  38 A0 00 80 */	li r5, 0x80
/* 80273DD0 0026FA30  48 07 3B D1 */	bl NANDWrite
/* 80273DD4 0026FA34  38 7D 00 B0 */	addi r3, r29, 0xb0
/* 80273DD8 0026FA38  48 07 48 B1 */	bl NANDClose
/* 80273DDC 0026FA3C  48 00 01 08 */	b lbl_80273EE4
lbl_80273DE0:
/* 80273DE0 0026FA40  80 0D A8 78 */	lwz r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273DE4 0026FA44  2C 00 00 00 */	cmpwi r0, 0
/* 80273DE8 0026FA48  41 82 00 18 */	beq lbl_80273E00
/* 80273DEC 0026FA4C  38 7D 00 80 */	addi r3, r29, 0x80
/* 80273DF0 0026FA50  4B FF 5C 89 */	bl OSCancelAlarm
/* 80273DF4 0026FA54  7F 43 D3 78 */	mr r3, r26
/* 80273DF8 0026FA58  4B FF A9 8D */	bl OSRestoreInterrupts
/* 80273DFC 0026FA5C  48 00 00 78 */	b lbl_80273E74
lbl_80273E00:
/* 80273E00 0026FA60  4B FF A9 85 */	bl OSRestoreInterrupts
/* 80273E04 0026FA64  4B FF E9 B5 */	bl OSGetTime
/* 80273E08 0026FA68  3C A0 10 62 */	lis r5, 0x10624DD3@ha
/* 80273E0C 0026FA6C  38 00 00 00 */	li r0, 0
/* 80273E10 0026FA70  7C 9E 23 78 */	mr r30, r4
/* 80273E14 0026FA74  7C 7F 1B 78 */	mr r31, r3
/* 80273E18 0026FA78  3B 45 4D D3 */	addi r26, r5, 0x10624DD3@l
/* 80273E1C 0026FA7C  6C 1C 80 00 */	xoris r28, r0, 0x8000
/* 80273E20 0026FA80  3F 60 80 00 */	lis r27, 0x8000
lbl_80273E24:
/* 80273E24 0026FA84  80 0D A8 74 */	lwz r0, lbl_8063FB34-_SDA_BASE_(r13)
/* 80273E28 0026FA88  2C 00 00 00 */	cmpwi r0, 0
/* 80273E2C 0026FA8C  40 82 00 48 */	bne lbl_80273E74
/* 80273E30 0026FA90  4B FF E9 89 */	bl OSGetTime
/* 80273E34 0026FA94  80 1B 00 F8 */	lwz r0, 0xf8(r27)
/* 80273E38 0026FA98  7C 9E 20 10 */	subfc r4, r30, r4
/* 80273E3C 0026FA9C  7C 7F 19 10 */	subfe r3, r31, r3
/* 80273E40 0026FAA0  54 00 F0 BE */	srwi r0, r0, 2
/* 80273E44 0026FAA4  7C 1A 00 16 */	mulhwu r0, r26, r0
/* 80273E48 0026FAA8  6C 63 80 00 */	xoris r3, r3, 0x8000
/* 80273E4C 0026FAAC  54 00 D1 BE */	srwi r0, r0, 6
/* 80273E50 0026FAB0  1C 00 01 F4 */	mulli r0, r0, 0x1f4
/* 80273E54 0026FAB4  7C 04 00 10 */	subfc r0, r4, r0
/* 80273E58 0026FAB8  7C 63 E1 10 */	subfe r3, r3, r28
/* 80273E5C 0026FABC  7C 7C E1 10 */	subfe r3, r28, r28
/* 80273E60 0026FAC0  7C 63 00 D1 */	neg. r3, r3
/* 80273E64 0026FAC4  41 82 FF C0 */	beq lbl_80273E24
/* 80273E68 0026FAC8  38 00 00 08 */	li r0, 8
/* 80273E6C 0026FACC  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273E70 0026FAD0  48 00 00 7C */	b lbl_80273EEC
lbl_80273E74:
/* 80273E74 0026FAD4  80 0D 87 F0 */	lwz r0, lbl_8063DAB0-_SDA_BASE_(r13)
/* 80273E78 0026FAD8  2C 00 00 04 */	cmpwi r0, 4
/* 80273E7C 0026FADC  41 82 00 68 */	beq lbl_80273EE4
/* 80273E80 0026FAE0  40 80 00 14 */	bge lbl_80273E94
/* 80273E84 0026FAE4  2C 00 00 01 */	cmpwi r0, 1
/* 80273E88 0026FAE8  41 82 00 24 */	beq lbl_80273EAC
/* 80273E8C 0026FAEC  40 80 00 14 */	bge lbl_80273EA0
/* 80273E90 0026FAF0  48 00 00 54 */	b lbl_80273EE4
lbl_80273E94:
/* 80273E94 0026FAF4  2C 00 00 06 */	cmpwi r0, 6
/* 80273E98 0026FAF8  41 82 00 38 */	beq lbl_80273ED0
/* 80273E9C 0026FAFC  40 80 00 48 */	bge lbl_80273EE4
lbl_80273EA0:
/* 80273EA0 0026FB00  38 7D 00 B0 */	addi r3, r29, 0xb0
/* 80273EA4 0026FB04  48 07 47 E5 */	bl NANDClose
/* 80273EA8 0026FB08  48 00 00 3C */	b lbl_80273EE4
lbl_80273EAC:
/* 80273EAC 0026FB0C  80 0D A8 7C */	lwz r0, lbl_8063FB3C-_SDA_BASE_(r13)
/* 80273EB0 0026FB10  2C 00 00 00 */	cmpwi r0, 0
/* 80273EB4 0026FB14  40 82 00 30 */	bne lbl_80273EE4
/* 80273EB8 0026FB18  80 0D A8 78 */	lwz r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273EBC 0026FB1C  2C 00 00 00 */	cmpwi r0, 0
/* 80273EC0 0026FB20  40 82 00 24 */	bne lbl_80273EE4
/* 80273EC4 0026FB24  38 7D 00 B0 */	addi r3, r29, 0xb0
/* 80273EC8 0026FB28  48 07 47 C1 */	bl NANDClose
/* 80273ECC 0026FB2C  48 00 00 18 */	b lbl_80273EE4
lbl_80273ED0:
/* 80273ED0 0026FB30  80 0D A8 78 */	lwz r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273ED4 0026FB34  2C 00 00 00 */	cmpwi r0, 0
/* 80273ED8 0026FB38  41 82 00 0C */	beq lbl_80273EE4
/* 80273EDC 0026FB3C  38 7D 00 B0 */	addi r3, r29, 0xb0
/* 80273EE0 0026FB40  48 07 47 A9 */	bl NANDClose
lbl_80273EE4:
/* 80273EE4 0026FB44  38 00 00 09 */	li r0, 9
/* 80273EE8 0026FB48  90 0D 87 F0 */	stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
lbl_80273EEC:
/* 80273EEC 0026FB4C  39 61 00 20 */	addi r11, r1, 0x20
/* 80273EF0 0026FB50  4B F5 32 81 */	bl _restgpr_26
/* 80273EF4 0026FB54  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80273EF8 0026FB58  7C 08 03 A6 */	mtlr r0
/* 80273EFC 0026FB5C  38 21 00 20 */	addi r1, r1, 0x20
/* 80273F00 0026FB60  4E 80 00 20 */	blr