summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSReset.s
blob: dc489de282f86a12e696b6099353fdc08701d605 (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
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
.include "macros.inc"

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

.global OSRegisterShutdownFunction
OSRegisterShutdownFunction:
/* 8026FC90 0026B8F0  80 AD A8 20 */	lwz r5, lbl_8063FAE0-_SDA_BASE_(r13)
/* 8026FC94 0026B8F4  48 00 00 08 */	b lbl_8026FC9C
lbl_8026FC98:
/* 8026FC98 0026B8F8  80 A5 00 08 */	lwz r5, 8(r5)
lbl_8026FC9C:
/* 8026FC9C 0026B8FC  2C 05 00 00 */	cmpwi r5, 0
/* 8026FCA0 0026B900  41 82 00 14 */	beq lbl_8026FCB4
/* 8026FCA4 0026B904  80 85 00 04 */	lwz r4, 4(r5)
/* 8026FCA8 0026B908  80 03 00 04 */	lwz r0, 4(r3)
/* 8026FCAC 0026B90C  7C 04 00 40 */	cmplw r4, r0
/* 8026FCB0 0026B910  40 81 FF E8 */	ble lbl_8026FC98
lbl_8026FCB4:
/* 8026FCB4 0026B914  2C 05 00 00 */	cmpwi r5, 0
/* 8026FCB8 0026B918  40 82 00 38 */	bne lbl_8026FCF0
/* 8026FCBC 0026B91C  38 8D A8 20 */	addi r4, r13, lbl_8063FAE0-_SDA_BASE_
/* 8026FCC0 0026B920  80 84 00 04 */	lwz r4, 4(r4)
/* 8026FCC4 0026B924  2C 04 00 00 */	cmpwi r4, 0
/* 8026FCC8 0026B928  40 82 00 0C */	bne lbl_8026FCD4
/* 8026FCCC 0026B92C  90 6D A8 20 */	stw r3, lbl_8063FAE0-_SDA_BASE_(r13)
/* 8026FCD0 0026B930  48 00 00 08 */	b lbl_8026FCD8
lbl_8026FCD4:
/* 8026FCD4 0026B934  90 64 00 08 */	stw r3, 8(r4)
lbl_8026FCD8:
/* 8026FCD8 0026B938  38 00 00 00 */	li r0, 0
/* 8026FCDC 0026B93C  90 83 00 0C */	stw r4, 0xc(r3)
/* 8026FCE0 0026B940  38 8D A8 20 */	addi r4, r13, lbl_8063FAE0-_SDA_BASE_
/* 8026FCE4 0026B944  90 03 00 08 */	stw r0, 8(r3)
/* 8026FCE8 0026B948  90 64 00 04 */	stw r3, 4(r4)
/* 8026FCEC 0026B94C  4E 80 00 20 */	blr
lbl_8026FCF0:
/* 8026FCF0 0026B950  90 A3 00 08 */	stw r5, 8(r3)
/* 8026FCF4 0026B954  80 85 00 0C */	lwz r4, 0xc(r5)
/* 8026FCF8 0026B958  90 65 00 0C */	stw r3, 0xc(r5)
/* 8026FCFC 0026B95C  2C 04 00 00 */	cmpwi r4, 0
/* 8026FD00 0026B960  90 83 00 0C */	stw r4, 0xc(r3)
/* 8026FD04 0026B964  40 82 00 0C */	bne lbl_8026FD10
/* 8026FD08 0026B968  90 6D A8 20 */	stw r3, lbl_8063FAE0-_SDA_BASE_(r13)
/* 8026FD0C 0026B96C  4E 80 00 20 */	blr
lbl_8026FD10:
/* 8026FD10 0026B970  90 64 00 08 */	stw r3, 8(r4)
/* 8026FD14 0026B974  4E 80 00 20 */	blr

.global __OSCallShutdownFunctions
__OSCallShutdownFunctions:
/* 8026FD18 0026B978  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8026FD1C 0026B97C  7C 08 02 A6 */	mflr r0
/* 8026FD20 0026B980  90 01 00 24 */	stw r0, 0x24(r1)
/* 8026FD24 0026B984  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8026FD28 0026B988  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8026FD2C 0026B98C  3B C0 00 00 */	li r30, 0
/* 8026FD30 0026B990  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8026FD34 0026B994  7C 9D 23 78 */	mr r29, r4
/* 8026FD38 0026B998  93 81 00 10 */	stw r28, 0x10(r1)
/* 8026FD3C 0026B99C  7C 7C 1B 78 */	mr r28, r3
/* 8026FD40 0026B9A0  38 60 00 00 */	li r3, 0
/* 8026FD44 0026B9A4  83 ED A8 20 */	lwz r31, lbl_8063FAE0-_SDA_BASE_(r13)
/* 8026FD48 0026B9A8  48 00 00 40 */	b lbl_8026FD88
lbl_8026FD4C:
/* 8026FD4C 0026B9AC  2C 1E 00 00 */	cmpwi r30, 0
/* 8026FD50 0026B9B0  41 82 00 10 */	beq lbl_8026FD60
/* 8026FD54 0026B9B4  80 1F 00 04 */	lwz r0, 4(r31)
/* 8026FD58 0026B9B8  7C 03 00 40 */	cmplw r3, r0
/* 8026FD5C 0026B9BC  40 82 00 34 */	bne lbl_8026FD90
lbl_8026FD60:
/* 8026FD60 0026B9C0  81 9F 00 00 */	lwz r12, 0(r31)
/* 8026FD64 0026B9C4  7F 83 E3 78 */	mr r3, r28
/* 8026FD68 0026B9C8  7F A4 EB 78 */	mr r4, r29
/* 8026FD6C 0026B9CC  7D 89 03 A6 */	mtctr r12
/* 8026FD70 0026B9D0  4E 80 04 21 */	bctrl
/* 8026FD74 0026B9D4  7C 60 00 34 */	cntlzw r0, r3
/* 8026FD78 0026B9D8  80 7F 00 04 */	lwz r3, 4(r31)
/* 8026FD7C 0026B9DC  54 00 D9 7E */	srwi r0, r0, 5
/* 8026FD80 0026B9E0  83 FF 00 08 */	lwz r31, 8(r31)
/* 8026FD84 0026B9E4  7F DE 03 78 */	or r30, r30, r0
lbl_8026FD88:
/* 8026FD88 0026B9E8  2C 1F 00 00 */	cmpwi r31, 0
/* 8026FD8C 0026B9EC  40 82 FF C0 */	bne lbl_8026FD4C
lbl_8026FD90:
/* 8026FD90 0026B9F0  48 00 0C 65 */	bl __OSSyncSram
/* 8026FD94 0026B9F4  7C 60 00 34 */	cntlzw r0, r3
/* 8026FD98 0026B9F8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8026FD9C 0026B9FC  54 00 D9 7E */	srwi r0, r0, 5
/* 8026FDA0 0026BA00  7F DE 03 78 */	or r30, r30, r0
/* 8026FDA4 0026BA04  7F C0 00 34 */	cntlzw r0, r30
/* 8026FDA8 0026BA08  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8026FDAC 0026BA0C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8026FDB0 0026BA10  54 03 D9 7E */	srwi r3, r0, 5
/* 8026FDB4 0026BA14  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8026FDB8 0026BA18  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8026FDBC 0026BA1C  7C 08 03 A6 */	mtlr r0
/* 8026FDC0 0026BA20  38 21 00 20 */	addi r1, r1, 0x20
/* 8026FDC4 0026BA24  4E 80 00 20 */	blr

.global __OSShutdownDevices
__OSShutdownDevices:
/* 8026FDC8 0026BA28  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8026FDCC 0026BA2C  7C 08 02 A6 */	mflr r0
/* 8026FDD0 0026BA30  90 01 00 24 */	stw r0, 0x24(r1)
/* 8026FDD4 0026BA34  39 61 00 20 */	addi r11, r1, 0x20
/* 8026FDD8 0026BA38  4B F5 73 51 */	bl _savegpr_27
/* 8026FDDC 0026BA3C  2C 03 00 04 */	cmpwi r3, 4
/* 8026FDE0 0026BA40  7C 7B 1B 78 */	mr r27, r3
/* 8026FDE4 0026BA44  40 80 00 10 */	bge lbl_8026FDF4
/* 8026FDE8 0026BA48  2C 03 00 00 */	cmpwi r3, 0
/* 8026FDEC 0026BA4C  41 82 00 10 */	beq lbl_8026FDFC
/* 8026FDF0 0026BA50  48 00 00 14 */	b lbl_8026FE04
lbl_8026FDF4:
/* 8026FDF4 0026BA54  2C 03 00 07 */	cmpwi r3, 7
/* 8026FDF8 0026BA58  40 80 00 0C */	bge lbl_8026FE04
lbl_8026FDFC:
/* 8026FDFC 0026BA5C  3B 80 00 00 */	li r28, 0
/* 8026FE00 0026BA60  48 00 00 08 */	b lbl_8026FE08
lbl_8026FE04:
/* 8026FE04 0026BA64  3B 80 00 01 */	li r28, 1
lbl_8026FE08:
/* 8026FE08 0026BA68  4B FF A7 41 */	bl __OSStopAudioSystem
/* 8026FE0C 0026BA6C  2C 1C 00 00 */	cmpwi r28, 0
/* 8026FE10 0026BA70  40 82 00 10 */	bne lbl_8026FE20
/* 8026FE14 0026BA74  38 60 00 01 */	li r3, 1
/* 8026FE18 0026BA78  48 03 5D 11 */	bl __PADDisableRecalibration
/* 8026FE1C 0026BA7C  7C 7D 1B 78 */	mr r29, r3
lbl_8026FE20:
/* 8026FE20 0026BA80  83 CD A8 20 */	lwz r30, lbl_8063FAE0-_SDA_BASE_(r13)
/* 8026FE24 0026BA84  38 60 00 00 */	li r3, 0
/* 8026FE28 0026BA88  3B E0 00 00 */	li r31, 0
/* 8026FE2C 0026BA8C  48 00 00 40 */	b lbl_8026FE6C
lbl_8026FE30:
/* 8026FE30 0026BA90  2C 1F 00 00 */	cmpwi r31, 0
/* 8026FE34 0026BA94  41 82 00 10 */	beq lbl_8026FE44
/* 8026FE38 0026BA98  80 1E 00 04 */	lwz r0, 4(r30)
/* 8026FE3C 0026BA9C  7C 03 00 40 */	cmplw r3, r0
/* 8026FE40 0026BAA0  40 82 00 34 */	bne lbl_8026FE74
lbl_8026FE44:
/* 8026FE44 0026BAA4  81 9E 00 00 */	lwz r12, 0(r30)
/* 8026FE48 0026BAA8  7F 64 DB 78 */	mr r4, r27
/* 8026FE4C 0026BAAC  38 60 00 00 */	li r3, 0
/* 8026FE50 0026BAB0  7D 89 03 A6 */	mtctr r12
/* 8026FE54 0026BAB4  4E 80 04 21 */	bctrl
/* 8026FE58 0026BAB8  7C 60 00 34 */	cntlzw r0, r3
/* 8026FE5C 0026BABC  80 7E 00 04 */	lwz r3, 4(r30)
/* 8026FE60 0026BAC0  54 00 D9 7E */	srwi r0, r0, 5
/* 8026FE64 0026BAC4  83 DE 00 08 */	lwz r30, 8(r30)
/* 8026FE68 0026BAC8  7F FF 03 78 */	or r31, r31, r0
lbl_8026FE6C:
/* 8026FE6C 0026BACC  2C 1E 00 00 */	cmpwi r30, 0
/* 8026FE70 0026BAD0  40 82 FF C0 */	bne lbl_8026FE30
lbl_8026FE74:
/* 8026FE74 0026BAD4  48 00 0B 81 */	bl __OSSyncSram
/* 8026FE78 0026BAD8  7C 60 00 34 */	cntlzw r0, r3
/* 8026FE7C 0026BADC  54 00 D9 7E */	srwi r0, r0, 5
/* 8026FE80 0026BAE0  7F FF 03 79 */	or. r31, r31, r0
/* 8026FE84 0026BAE4  40 82 FF 9C */	bne lbl_8026FE20
lbl_8026FE88:
/* 8026FE88 0026BAE8  48 00 0B 6D */	bl __OSSyncSram
/* 8026FE8C 0026BAEC  2C 03 00 00 */	cmpwi r3, 0
/* 8026FE90 0026BAF0  41 82 FF F8 */	beq lbl_8026FE88
/* 8026FE94 0026BAF4  4B FF E8 C9 */	bl OSDisableInterrupts
/* 8026FE98 0026BAF8  83 ED A8 20 */	lwz r31, lbl_8063FAE0-_SDA_BASE_(r13)
/* 8026FE9C 0026BAFC  38 60 00 00 */	li r3, 0
/* 8026FEA0 0026BB00  3B C0 00 00 */	li r30, 0
/* 8026FEA4 0026BB04  48 00 00 40 */	b lbl_8026FEE4
lbl_8026FEA8:
/* 8026FEA8 0026BB08  2C 1E 00 00 */	cmpwi r30, 0
/* 8026FEAC 0026BB0C  41 82 00 10 */	beq lbl_8026FEBC
/* 8026FEB0 0026BB10  80 1F 00 04 */	lwz r0, 4(r31)
/* 8026FEB4 0026BB14  7C 03 00 40 */	cmplw r3, r0
/* 8026FEB8 0026BB18  40 82 00 34 */	bne lbl_8026FEEC
lbl_8026FEBC:
/* 8026FEBC 0026BB1C  81 9F 00 00 */	lwz r12, 0(r31)
/* 8026FEC0 0026BB20  7F 64 DB 78 */	mr r4, r27
/* 8026FEC4 0026BB24  38 60 00 01 */	li r3, 1
/* 8026FEC8 0026BB28  7D 89 03 A6 */	mtctr r12
/* 8026FECC 0026BB2C  4E 80 04 21 */	bctrl
/* 8026FED0 0026BB30  7C 60 00 34 */	cntlzw r0, r3
/* 8026FED4 0026BB34  80 7F 00 04 */	lwz r3, 4(r31)
/* 8026FED8 0026BB38  54 00 D9 7E */	srwi r0, r0, 5
/* 8026FEDC 0026BB3C  83 FF 00 08 */	lwz r31, 8(r31)
/* 8026FEE0 0026BB40  7F DE 03 78 */	or r30, r30, r0
lbl_8026FEE4:
/* 8026FEE4 0026BB44  2C 1F 00 00 */	cmpwi r31, 0
/* 8026FEE8 0026BB48  40 82 FF C0 */	bne lbl_8026FEA8
lbl_8026FEEC:
/* 8026FEEC 0026BB4C  48 00 0B 09 */	bl __OSSyncSram
/* 8026FEF0 0026BB50  4B FF A9 A5 */	bl LCDisable
/* 8026FEF4 0026BB54  2C 1C 00 00 */	cmpwi r28, 0
/* 8026FEF8 0026BB58  40 82 00 0C */	bne lbl_8026FF04
/* 8026FEFC 0026BB5C  7F A3 EB 78 */	mr r3, r29
/* 8026FF00 0026BB60  48 03 5C 29 */	bl __PADDisableRecalibration
lbl_8026FF04:
/* 8026FF04 0026BB64  3C 60 80 00 */	lis r3, 0x800000DC@ha
/* 8026FF08 0026BB68  80 63 00 DC */	lwz r3, 0x800000DC@l(r3)
/* 8026FF0C 0026BB6C  48 00 00 2C */	b lbl_8026FF38
lbl_8026FF10:
/* 8026FF10 0026BB70  A0 03 02 C8 */	lhz r0, 0x2c8(r3)
/* 8026FF14 0026BB74  83 C3 02 FC */	lwz r30, 0x2fc(r3)
/* 8026FF18 0026BB78  2C 00 00 04 */	cmpwi r0, 4
/* 8026FF1C 0026BB7C  41 82 00 14 */	beq lbl_8026FF30
/* 8026FF20 0026BB80  40 80 00 14 */	bge lbl_8026FF34
/* 8026FF24 0026BB84  2C 00 00 01 */	cmpwi r0, 1
/* 8026FF28 0026BB88  41 82 00 08 */	beq lbl_8026FF30
/* 8026FF2C 0026BB8C  48 00 00 08 */	b lbl_8026FF34
lbl_8026FF30:
/* 8026FF30 0026BB90  48 00 1D 01 */	bl OSCancelThread
lbl_8026FF34:
/* 8026FF34 0026BB94  7F C3 F3 78 */	mr r3, r30
lbl_8026FF38:
/* 8026FF38 0026BB98  2C 03 00 00 */	cmpwi r3, 0
/* 8026FF3C 0026BB9C  40 82 FF D4 */	bne lbl_8026FF10
/* 8026FF40 0026BBA0  39 61 00 20 */	addi r11, r1, 0x20
/* 8026FF44 0026BBA4  4B F5 72 31 */	bl _restgpr_27
/* 8026FF48 0026BBA8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8026FF4C 0026BBAC  7C 08 03 A6 */	mtlr r0
/* 8026FF50 0026BBB0  38 21 00 20 */	addi r1, r1, 0x20
/* 8026FF54 0026BBB4  4E 80 00 20 */	blr

.global OSRebootSystem
OSRebootSystem:
/* 8026FF58 0026BBB8  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8026FF5C 0026BBBC  7C 08 02 A6 */	mflr r0
/* 8026FF60 0026BBC0  90 01 00 34 */	stw r0, 0x34(r1)
/* 8026FF64 0026BBC4  48 00 3D B9 */	bl __OSStopPlayRecord
/* 8026FF68 0026BBC8  48 00 36 C5 */	bl __OSUnRegisterStateEvent
/* 8026FF6C 0026BBCC  48 01 C8 C1 */	bl __DVDPrepareReset
/* 8026FF70 0026BBD0  38 61 00 10 */	addi r3, r1, 0x10
/* 8026FF74 0026BBD4  48 00 40 75 */	bl __OSReadStateFlags
/* 8026FF78 0026BBD8  48 01 C4 89 */	bl __DVDGetCoverStatus
/* 8026FF7C 0026BBDC  28 03 00 02 */	cmplwi r3, 2
/* 8026FF80 0026BBE0  41 82 00 10 */	beq lbl_8026FF90
/* 8026FF84 0026BBE4  38 00 00 03 */	li r0, 3
/* 8026FF88 0026BBE8  98 01 00 16 */	stb r0, 0x16(r1)
/* 8026FF8C 0026BBEC  48 00 00 40 */	b lbl_8026FFCC
lbl_8026FF90:
/* 8026FF90 0026BBF0  88 01 00 16 */	lbz r0, 0x16(r1)
/* 8026FF94 0026BBF4  28 00 00 01 */	cmplwi r0, 1
/* 8026FF98 0026BBF8  40 82 00 20 */	bne lbl_8026FFB8
/* 8026FF9C 0026BBFC  38 61 00 08 */	addi r3, r1, 8
/* 8026FFA0 0026BC00  48 00 0C 9D */	bl __OSGetRTCFlags
/* 8026FFA4 0026BC04  2C 03 00 00 */	cmpwi r3, 0
/* 8026FFA8 0026BC08  41 82 00 1C */	beq lbl_8026FFC4
/* 8026FFAC 0026BC0C  80 01 00 08 */	lwz r0, 8(r1)
/* 8026FFB0 0026BC10  2C 00 00 00 */	cmpwi r0, 0
/* 8026FFB4 0026BC14  41 82 00 10 */	beq lbl_8026FFC4
lbl_8026FFB8:
/* 8026FFB8 0026BC18  38 00 00 02 */	li r0, 2
/* 8026FFBC 0026BC1C  98 01 00 16 */	stb r0, 0x16(r1)
/* 8026FFC0 0026BC20  48 00 00 0C */	b lbl_8026FFCC
lbl_8026FFC4:
/* 8026FFC4 0026BC24  38 00 00 01 */	li r0, 1
/* 8026FFC8 0026BC28  98 01 00 16 */	stb r0, 0x16(r1)
lbl_8026FFCC:
/* 8026FFCC 0026BC2C  38 00 00 02 */	li r0, 2
/* 8026FFD0 0026BC30  98 01 00 15 */	stb r0, 0x15(r1)
/* 8026FFD4 0026BC34  48 00 0D 85 */	bl __OSClearRTCFlags
/* 8026FFD8 0026BC38  38 61 00 10 */	addi r3, r1, 0x10
/* 8026FFDC 0026BC3C  48 00 3F 29 */	bl __OSWriteStateFlags
/* 8026FFE0 0026BC40  48 00 13 65 */	bl OSDisableScheduler
/* 8026FFE4 0026BC44  38 60 00 01 */	li r3, 1
/* 8026FFE8 0026BC48  4B FF FD E1 */	bl __OSShutdownDevices
/* 8026FFEC 0026BC4C  48 00 34 99 */	bl __OSHotReset
/* 8026FFF0 0026BC50  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8026FFF4 0026BC54  7C 08 03 A6 */	mtlr r0
/* 8026FFF8 0026BC58  38 21 00 30 */	addi r1, r1, 0x30
/* 8026FFFC 0026BC5C  4E 80 00 20 */	blr

.global OSShutdownSystem
OSShutdownSystem:
/* 80270000 0026BC60  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80270004 0026BC64  7C 08 02 A6 */	mflr r0
/* 80270008 0026BC68  38 80 00 00 */	li r4, 0
/* 8027000C 0026BC6C  38 A0 00 02 */	li r5, 2
/* 80270010 0026BC70  90 01 00 44 */	stw r0, 0x44(r1)
/* 80270014 0026BC74  38 61 00 08 */	addi r3, r1, 8
/* 80270018 0026BC78  4B D9 40 ED */	bl memset
/* 8027001C 0026BC7C  48 07 A9 31 */	bl SCInit
lbl_80270020:
/* 80270020 0026BC80  48 07 A9 CD */	bl SCCheckStatus
/* 80270024 0026BC84  28 03 00 01 */	cmplwi r3, 1
/* 80270028 0026BC88  41 82 FF F8 */	beq lbl_80270020
/* 8027002C 0026BC8C  38 61 00 08 */	addi r3, r1, 8
/* 80270030 0026BC90  48 07 C4 0D */	bl SCGetIdleMode
/* 80270034 0026BC94  48 00 3C E9 */	bl __OSStopPlayRecord
/* 80270038 0026BC98  48 00 35 F5 */	bl __OSUnRegisterStateEvent
/* 8027003C 0026BC9C  48 01 C7 F1 */	bl __DVDPrepareReset
/* 80270040 0026BCA0  38 61 00 18 */	addi r3, r1, 0x18
/* 80270044 0026BCA4  48 00 3F A5 */	bl __OSReadStateFlags
/* 80270048 0026BCA8  48 01 C3 B9 */	bl __DVDGetCoverStatus
/* 8027004C 0026BCAC  28 03 00 02 */	cmplwi r3, 2
/* 80270050 0026BCB0  41 82 00 10 */	beq lbl_80270060
/* 80270054 0026BCB4  38 00 00 03 */	li r0, 3
/* 80270058 0026BCB8  98 01 00 1E */	stb r0, 0x1e(r1)
/* 8027005C 0026BCBC  48 00 00 40 */	b lbl_8027009C
lbl_80270060:
/* 80270060 0026BCC0  88 01 00 1E */	lbz r0, 0x1e(r1)
/* 80270064 0026BCC4  28 00 00 01 */	cmplwi r0, 1
/* 80270068 0026BCC8  40 82 00 20 */	bne lbl_80270088
/* 8027006C 0026BCCC  38 61 00 0C */	addi r3, r1, 0xc
/* 80270070 0026BCD0  48 00 0B CD */	bl __OSGetRTCFlags
/* 80270074 0026BCD4  2C 03 00 00 */	cmpwi r3, 0
/* 80270078 0026BCD8  41 82 00 1C */	beq lbl_80270094
/* 8027007C 0026BCDC  80 01 00 0C */	lwz r0, 0xc(r1)
/* 80270080 0026BCE0  2C 00 00 00 */	cmpwi r0, 0
/* 80270084 0026BCE4  41 82 00 10 */	beq lbl_80270094
lbl_80270088:
/* 80270088 0026BCE8  38 00 00 02 */	li r0, 2
/* 8027008C 0026BCEC  98 01 00 1E */	stb r0, 0x1e(r1)
/* 80270090 0026BCF0  48 00 00 0C */	b lbl_8027009C
lbl_80270094:
/* 80270094 0026BCF4  38 00 00 01 */	li r0, 1
/* 80270098 0026BCF8  98 01 00 1E */	stb r0, 0x1e(r1)
lbl_8027009C:
/* 8027009C 0026BCFC  88 01 00 08 */	lbz r0, 8(r1)
/* 802700A0 0026BD00  28 00 00 01 */	cmplwi r0, 1
/* 802700A4 0026BD04  40 82 00 10 */	bne lbl_802700B4
/* 802700A8 0026BD08  38 00 00 05 */	li r0, 5
/* 802700AC 0026BD0C  98 01 00 1D */	stb r0, 0x1d(r1)
/* 802700B0 0026BD10  48 00 00 0C */	b lbl_802700BC
lbl_802700B4:
/* 802700B4 0026BD14  38 00 00 01 */	li r0, 1
/* 802700B8 0026BD18  98 01 00 1D */	stb r0, 0x1d(r1)
lbl_802700BC:
/* 802700BC 0026BD1C  48 00 0C 9D */	bl __OSClearRTCFlags
/* 802700C0 0026BD20  38 61 00 18 */	addi r3, r1, 0x18
/* 802700C4 0026BD24  48 00 3E 41 */	bl __OSWriteStateFlags
/* 802700C8 0026BD28  38 61 00 10 */	addi r3, r1, 0x10
/* 802700CC 0026BD2C  4B FF 83 F5 */	bl __OSGetIOSRev
/* 802700D0 0026BD30  88 01 00 08 */	lbz r0, 8(r1)
/* 802700D4 0026BD34  28 00 00 01 */	cmplwi r0, 1
/* 802700D8 0026BD38  40 82 00 1C */	bne lbl_802700F4
/* 802700DC 0026BD3C  48 00 12 69 */	bl OSDisableScheduler
/* 802700E0 0026BD40  38 60 00 05 */	li r3, 5
/* 802700E4 0026BD44  4B FF FC E5 */	bl __OSShutdownDevices
/* 802700E8 0026BD48  48 00 12 99 */	bl OSEnableScheduler
/* 802700EC 0026BD4C  4B FF C1 41 */	bl __OSLaunchMenu
/* 802700F0 0026BD50  48 00 00 14 */	b lbl_80270104
lbl_802700F4:
/* 802700F4 0026BD54  48 00 12 51 */	bl OSDisableScheduler
/* 802700F8 0026BD58  38 60 00 02 */	li r3, 2
/* 802700FC 0026BD5C  4B FF FC CD */	bl __OSShutdownDevices
/* 80270100 0026BD60  48 00 33 0D */	bl __OSShutdownToSBY
lbl_80270104:
/* 80270104 0026BD64  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80270108 0026BD68  7C 08 03 A6 */	mtlr r0
/* 8027010C 0026BD6C  38 21 00 40 */	addi r1, r1, 0x40
/* 80270110 0026BD70  4E 80 00 20 */	blr

.global __OSRebootForNANDAPP
__OSRebootForNANDAPP:
/* 80270114 0026BD74  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80270118 0026BD78  7C 08 02 A6 */	mflr r0
/* 8027011C 0026BD7C  90 01 00 34 */	stw r0, 0x34(r1)
/* 80270120 0026BD80  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 80270124 0026BD84  93 C1 00 28 */	stw r30, 0x28(r1)
/* 80270128 0026BD88  7C 7E 1B 78 */	mr r30, r3
/* 8027012C 0026BD8C  3C 60 81 28 */	lis r3, 0x8128
/* 80270130 0026BD90  4B FF 9F F5 */	bl OSSetArenaLo
/* 80270134 0026BD94  3C 60 81 2F */	lis r3, 0x812f
/* 80270138 0026BD98  4B FF 9F D5 */	bl OSSetArenaHi
/* 8027013C 0026BD9C  38 60 10 20 */	li r3, 0x1020
/* 80270140 0026BDA0  38 80 00 20 */	li r4, 0x20
/* 80270144 0026BDA4  4B FF 9F E9 */	bl OSAllocFromMEM1ArenaLo
/* 80270148 0026BDA8  7C 7F 1B 78 */	mr r31, r3
/* 8027014C 0026BDAC  38 80 00 00 */	li r4, 0
/* 80270150 0026BDB0  38 A0 10 20 */	li r5, 0x1020
/* 80270154 0026BDB4  4B D9 3F B1 */	bl memset
/* 80270158 0026BDB8  7F E3 FB 78 */	mr r3, r31
/* 8027015C 0026BDBC  48 00 41 B1 */	bl func_8027430C
/* 80270160 0026BDC0  38 60 00 01 */	li r3, 1
/* 80270164 0026BDC4  67 C0 80 00 */	oris r0, r30, 0x8000
/* 80270168 0026BDC8  90 7F 00 08 */	stw r3, 8(r31)
/* 8027016C 0026BDCC  7F E3 FB 78 */	mr r3, r31
/* 80270170 0026BDD0  90 1F 00 0C */	stw r0, 0xc(r31)
/* 80270174 0026BDD4  48 00 40 41 */	bl __OSWriteNandbootInfo
/* 80270178 0026BDD8  38 61 00 08 */	addi r3, r1, 8
/* 8027017C 0026BDDC  48 00 3E 6D */	bl __OSReadStateFlags
/* 80270180 0026BDE0  2C 03 00 00 */	cmpwi r3, 0
/* 80270184 0026BDE4  41 82 00 14 */	beq lbl_80270198
/* 80270188 0026BDE8  38 00 00 03 */	li r0, 3
/* 8027018C 0026BDEC  38 61 00 08 */	addi r3, r1, 8
/* 80270190 0026BDF0  98 01 00 0D */	stb r0, 0xd(r1)
/* 80270194 0026BDF4  48 00 3D 71 */	bl __OSWriteStateFlags
lbl_80270198:
/* 80270198 0026BDF8  48 00 11 AD */	bl OSDisableScheduler
/* 8027019C 0026BDFC  38 60 00 04 */	li r3, 4
/* 802701A0 0026BE00  4B FF FC 29 */	bl __OSShutdownDevices
/* 802701A4 0026BE04  48 00 11 DD */	bl OSEnableScheduler
/* 802701A8 0026BE08  4B FF C1 81 */	bl func_8026C328
/* 802701AC 0026BE0C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802701B0 0026BE10  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 802701B4 0026BE14  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 802701B8 0026BE18  7C 08 03 A6 */	mtlr r0
/* 802701BC 0026BE1C  38 21 00 30 */	addi r1, r1, 0x30
/* 802701C0 0026BE20  4E 80 00 20 */	blr

.global OSRestart
OSRestart:
/* 802701C4 0026BE24  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802701C8 0026BE28  7C 08 02 A6 */	mflr r0
/* 802701CC 0026BE2C  90 01 00 14 */	stw r0, 0x14(r1)
/* 802701D0 0026BE30  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802701D4 0026BE34  93 C1 00 08 */	stw r30, 8(r1)
/* 802701D8 0026BE38  7C 7E 1B 78 */	mr r30, r3
/* 802701DC 0026BE3C  4B FF 94 D1 */	bl OSGetAppType
/* 802701E0 0026BE40  7C 7F 1B 78 */	mr r31, r3
/* 802701E4 0026BE44  48 00 3B 39 */	bl __OSStopPlayRecord
/* 802701E8 0026BE48  48 00 34 45 */	bl __OSUnRegisterStateEvent
/* 802701EC 0026BE4C  57 E0 06 3E */	clrlwi r0, r31, 0x18
/* 802701F0 0026BE50  28 00 00 81 */	cmplwi r0, 0x81
/* 802701F4 0026BE54  40 82 00 10 */	bne lbl_80270204
/* 802701F8 0026BE58  7F C3 F3 78 */	mr r3, r30
/* 802701FC 0026BE5C  4B FF FF 19 */	bl __OSRebootForNANDAPP
/* 80270200 0026BE60  48 00 00 28 */	b lbl_80270228
lbl_80270204:
/* 80270204 0026BE64  28 00 00 80 */	cmplwi r0, 0x80
/* 80270208 0026BE68  40 82 00 20 */	bne lbl_80270228
/* 8027020C 0026BE6C  48 00 11 39 */	bl OSDisableScheduler
/* 80270210 0026BE70  38 60 00 04 */	li r3, 4
/* 80270214 0026BE74  4B FF FB B5 */	bl __OSShutdownDevices
/* 80270218 0026BE78  48 00 11 69 */	bl OSEnableScheduler
/* 8027021C 0026BE7C  80 8D A8 18 */	lwz r4, lbl_8063FAD8-_SDA_BASE_(r13)
/* 80270220 0026BE80  7F C3 F3 78 */	mr r3, r30
/* 80270224 0026BE84  4B FF F9 F9 */	bl __OSReboot
lbl_80270228:
/* 80270228 0026BE88  48 00 11 1D */	bl OSDisableScheduler
/* 8027022C 0026BE8C  38 60 00 01 */	li r3, 1
/* 80270230 0026BE90  4B FF FB 99 */	bl __OSShutdownDevices
/* 80270234 0026BE94  48 00 32 51 */	bl __OSHotReset
/* 80270238 0026BE98  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8027023C 0026BE9C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80270240 0026BEA0  83 C1 00 08 */	lwz r30, 8(r1)
/* 80270244 0026BEA4  7C 08 03 A6 */	mtlr r0
/* 80270248 0026BEA8  38 21 00 10 */	addi r1, r1, 0x10
/* 8027024C 0026BEAC  4E 80 00 20 */	blr

.global OSReturnToMenu
OSReturnToMenu:
/* 80270250 0026BEB0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80270254 0026BEB4  7C 08 02 A6 */	mflr r0
/* 80270258 0026BEB8  90 01 00 34 */	stw r0, 0x34(r1)
/* 8027025C 0026BEBC  48 00 3A C1 */	bl __OSStopPlayRecord
/* 80270260 0026BEC0  48 00 33 CD */	bl __OSUnRegisterStateEvent
/* 80270264 0026BEC4  48 01 C5 C9 */	bl __DVDPrepareReset
/* 80270268 0026BEC8  38 61 00 10 */	addi r3, r1, 0x10
/* 8027026C 0026BECC  48 00 3D 7D */	bl __OSReadStateFlags
/* 80270270 0026BED0  48 01 C1 91 */	bl __DVDGetCoverStatus
/* 80270274 0026BED4  28 03 00 02 */	cmplwi r3, 2
/* 80270278 0026BED8  41 82 00 10 */	beq lbl_80270288
/* 8027027C 0026BEDC  38 00 00 03 */	li r0, 3
/* 80270280 0026BEE0  98 01 00 16 */	stb r0, 0x16(r1)
/* 80270284 0026BEE4  48 00 00 40 */	b lbl_802702C4
lbl_80270288:
/* 80270288 0026BEE8  88 01 00 16 */	lbz r0, 0x16(r1)
/* 8027028C 0026BEEC  28 00 00 01 */	cmplwi r0, 1
/* 80270290 0026BEF0  40 82 00 20 */	bne lbl_802702B0
/* 80270294 0026BEF4  38 61 00 08 */	addi r3, r1, 8
/* 80270298 0026BEF8  48 00 09 A5 */	bl __OSGetRTCFlags
/* 8027029C 0026BEFC  2C 03 00 00 */	cmpwi r3, 0
/* 802702A0 0026BF00  41 82 00 1C */	beq lbl_802702BC
/* 802702A4 0026BF04  80 01 00 08 */	lwz r0, 8(r1)
/* 802702A8 0026BF08  2C 00 00 00 */	cmpwi r0, 0
/* 802702AC 0026BF0C  41 82 00 10 */	beq lbl_802702BC
lbl_802702B0:
/* 802702B0 0026BF10  38 00 00 02 */	li r0, 2
/* 802702B4 0026BF14  98 01 00 16 */	stb r0, 0x16(r1)
/* 802702B8 0026BF18  48 00 00 0C */	b lbl_802702C4
lbl_802702BC:
/* 802702BC 0026BF1C  38 00 00 01 */	li r0, 1
/* 802702C0 0026BF20  98 01 00 16 */	stb r0, 0x16(r1)
lbl_802702C4:
/* 802702C4 0026BF24  38 00 00 03 */	li r0, 3
/* 802702C8 0026BF28  98 01 00 15 */	stb r0, 0x15(r1)
/* 802702CC 0026BF2C  48 00 0A 8D */	bl __OSClearRTCFlags
/* 802702D0 0026BF30  38 61 00 10 */	addi r3, r1, 0x10
/* 802702D4 0026BF34  48 00 3C 31 */	bl __OSWriteStateFlags
/* 802702D8 0026BF38  48 00 10 6D */	bl OSDisableScheduler
/* 802702DC 0026BF3C  38 60 00 05 */	li r3, 5
/* 802702E0 0026BF40  4B FF FA E9 */	bl __OSShutdownDevices
/* 802702E4 0026BF44  48 00 10 9D */	bl OSEnableScheduler
/* 802702E8 0026BF48  4B FF BF 45 */	bl __OSLaunchMenu
/* 802702EC 0026BF4C  48 00 10 59 */	bl OSDisableScheduler
/* 802702F0 0026BF50  48 00 B7 C9 */	bl __VISetRGBModeImm
/* 802702F4 0026BF54  48 00 31 91 */	bl __OSHotReset
/* 802702F8 0026BF58  3C 60 80 42 */	lis r3, lbl_80427D18@ha
/* 802702FC 0026BF5C  3C A0 80 42 */	lis r5, lbl_80427D24@ha
/* 80270300 0026BF60  38 63 7D 18 */	addi r3, r3, lbl_80427D18@l
/* 80270304 0026BF64  38 80 03 4B */	li r4, 0x34b
/* 80270308 0026BF68  38 A5 7D 24 */	addi r5, r5, lbl_80427D24@l
/* 8027030C 0026BF6C  4C C6 31 82 */	crclr 6
/* 80270310 0026BF70  4B FF B1 8D */	bl OSPanic
/* 80270314 0026BF74  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80270318 0026BF78  7C 08 03 A6 */	mtlr r0
/* 8027031C 0026BF7C  38 21 00 30 */	addi r1, r1, 0x30
/* 80270320 0026BF80  4E 80 00 20 */	blr

.global __OSReturnToMenuForError
__OSReturnToMenuForError:
/* 80270324 0026BF84  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80270328 0026BF88  7C 08 02 A6 */	mflr r0
/* 8027032C 0026BF8C  90 01 00 34 */	stw r0, 0x34(r1)
/* 80270330 0026BF90  38 61 00 08 */	addi r3, r1, 8
/* 80270334 0026BF94  48 00 3C B5 */	bl __OSReadStateFlags
/* 80270338 0026BF98  38 60 00 02 */	li r3, 2
/* 8027033C 0026BF9C  38 00 00 03 */	li r0, 3
/* 80270340 0026BFA0  98 61 00 0E */	stb r3, 0xe(r1)
/* 80270344 0026BFA4  98 01 00 0D */	stb r0, 0xd(r1)
/* 80270348 0026BFA8  48 00 0A 11 */	bl __OSClearRTCFlags
/* 8027034C 0026BFAC  38 61 00 08 */	addi r3, r1, 8
/* 80270350 0026BFB0  48 00 3B B5 */	bl __OSWriteStateFlags
/* 80270354 0026BFB4  4B FF BE D9 */	bl __OSLaunchMenu
/* 80270358 0026BFB8  48 00 0F ED */	bl OSDisableScheduler
/* 8027035C 0026BFBC  48 00 B7 5D */	bl __VISetRGBModeImm
/* 80270360 0026BFC0  48 00 31 25 */	bl __OSHotReset
/* 80270364 0026BFC4  3C 60 80 42 */	lis r3, lbl_80427D18@ha
/* 80270368 0026BFC8  3C A0 80 42 */	lis r5, lbl_80427D54@ha
/* 8027036C 0026BFCC  38 63 7D 18 */	addi r3, r3, lbl_80427D18@l
/* 80270370 0026BFD0  38 80 03 65 */	li r4, 0x365
/* 80270374 0026BFD4  38 A5 7D 54 */	addi r5, r5, lbl_80427D54@l
/* 80270378 0026BFD8  4C C6 31 82 */	crclr 6
/* 8027037C 0026BFDC  4B FF B1 21 */	bl OSPanic
/* 80270380 0026BFE0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80270384 0026BFE4  7C 08 03 A6 */	mtlr r0
/* 80270388 0026BFE8  38 21 00 30 */	addi r1, r1, 0x30
/* 8027038C 0026BFEC  4E 80 00 20 */	blr

.global OSGetResetCode
OSGetResetCode:
/* 80270390 0026BFF0  3C 60 80 50 */	lis r3, lbl_80503C80@ha
/* 80270394 0026BFF4  80 03 3C 80 */	lwz r0, lbl_80503C80@l(r3)
/* 80270398 0026BFF8  2C 00 00 00 */	cmpwi r0, 0
/* 8027039C 0026BFFC  41 82 00 14 */	beq lbl_802703B0
/* 802703A0 0026C000  38 63 3C 80 */	addi r3, r3, 0x3c80
/* 802703A4 0026C004  80 03 00 04 */	lwz r0, 4(r3)
/* 802703A8 0026C008  64 03 80 00 */	oris r3, r0, 0x8000
/* 802703AC 0026C00C  4E 80 00 20 */	blr
lbl_802703B0:
/* 802703B0 0026C010  3C 60 CC 00 */	lis r3, 0xCC003024@ha
/* 802703B4 0026C014  80 03 30 24 */	lwz r0, 0xCC003024@l(r3)
/* 802703B8 0026C018  54 03 E8 FE */	srwi r3, r0, 3
/* 802703BC 0026C01C  4E 80 00 20 */	blr

.global OSResetSystem
OSResetSystem:
/* 802703C0 0026C020  3C 60 80 42 */	lis r3, lbl_80427D18@ha
/* 802703C4 0026C024  3C A0 80 42 */	lis r5, lbl_80427D88@ha
/* 802703C8 0026C028  38 63 7D 18 */	addi r3, r3, lbl_80427D18@l
/* 802703CC 0026C02C  38 80 03 FC */	li r4, 0x3fc
/* 802703D0 0026C030  38 A5 7D 88 */	addi r5, r5, lbl_80427D88@l
/* 802703D4 0026C034  4C C6 31 82 */	crclr 6
/* 802703D8 0026C038  4B FF B0 C4 */	b OSPanic