prime/asm/Dolphin/dvd/dvdlow.s

1102 lines
52 KiB
ArmAsm

.include "macros.inc"
.section .sdata
.balign 8
.global FirstRead
FirstRead:
# ROM: 0x3F6428
.4byte 0x00000001
.section .bss
.balign 8
.obj CommandList, local
.skip 0x3c
.endobj CommandList
.balign 8
.obj AlarmForWA, local
.skip 0x28
.endobj AlarmForWA
.obj AlarmForTimeout, local
.skip 0x28
.endobj AlarmForTimeout
.obj AlarmForBreak, local
.skip 0x28
.endobj AlarmForBreak
.obj Prev, local
.skip 0xc
.endobj Prev
.obj Curr, local
.skip 0xc
.endobj Curr
.section .sbss
.balign 8
.global StopAtNextInt
StopAtNextInt:
.skip 0x4
.global LastLength
LastLength:
.skip 0x4
.global Callback
Callback:
.skip 0x4
.global ResetCoverCallback
ResetCoverCallback:
.skip 0x4
.global LastResetEnd
LastResetEnd:
.skip 0x8
.global ResetOccurred
ResetOccurred:
.skip 0x4
.global WaitingCoverClose
WaitingCoverClose:
.skip 0x4
.global Breaking
Breaking:
.skip 0x4
.global WorkAroundType
WorkAroundType:
.skip 0x4
.obj WorkAroundSeekLocation
WorkAroundSeekLocation:
.skip 4
.endobj WorkAroundSeekLocation
.skip 4
.global LastReadFinished
LastReadFinished:
.skip 0x8
.global LastReadIssued
LastReadIssued:
.skip 0x8
.global LastCommandWasRead
LastCommandWasRead:
.skip 0x4
.global NextCommandNumber
NextCommandNumber:
.skip 0x4
.section .text, "ax"
.global __DVDInitWA
__DVDInitWA:
/* 803704A4 0036D404 7C 08 02 A6 */ mflr r0
/* 803704A8 0036D408 3C 60 80 54 */ lis r3, CommandList@ha
/* 803704AC 0036D40C 90 01 00 04 */ stw r0, 4(r1)
/* 803704B0 0036D410 38 00 00 00 */ li r0, 0
/* 803704B4 0036D414 38 80 00 00 */ li r4, 0
/* 803704B8 0036D418 94 21 FF F8 */ stwu r1, -8(r1)
/* 803704BC 0036D41C 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 803704C0 0036D420 38 00 FF FF */ li r0, -1
/* 803704C4 0036D424 90 03 0A 80 */ stw r0, CommandList@l(r3)
/* 803704C8 0036D428 38 60 00 00 */ li r3, 0
/* 803704CC 0036D42C 48 00 0D D5 */ bl __DVDLowSetWAType
/* 803704D0 0036D430 48 00 DB 95 */ bl OSInitAlarm
/* 803704D4 0036D434 80 01 00 0C */ lwz r0, 0xc(r1)
/* 803704D8 0036D438 38 21 00 08 */ addi r1, r1, 8
/* 803704DC 0036D43C 7C 08 03 A6 */ mtlr r0
/* 803704E0 0036D440 4E 80 00 20 */ blr
.global __DVDInterruptHandler
__DVDInterruptHandler:
/* 803704E4 0036D444 7C 08 02 A6 */ mflr r0
/* 803704E8 0036D448 3C 60 80 54 */ lis r3, CommandList@ha
/* 803704EC 0036D44C 90 01 00 04 */ stw r0, 4(r1)
/* 803704F0 0036D450 94 21 FD 10 */ stwu r1, -0x2f0(r1)
/* 803704F4 0036D454 BF 61 02 DC */ stmw r27, 0x2dc(r1)
/* 803704F8 0036D458 3B 84 00 00 */ addi r28, r4, 0
/* 803704FC 0036D45C 3B C3 0A 80 */ addi r30, r3, CommandList@l
/* 80370500 0036D460 3B A0 00 00 */ li r29, 0
/* 80370504 0036D464 80 0D AB E8 */ lwz r0, LastCommandWasRead@sda21(r13)
/* 80370508 0036D468 2C 00 00 00 */ cmpwi r0, 0
/* 8037050C 0036D46C 41 82 00 40 */ beq lbl_8037054C
/* 80370510 0036D470 48 01 4E B9 */ bl __OSGetSystemTime
/* 80370514 0036D474 90 8D AB DC */ stw r4, LastReadFinished+4@sda21(r13)
/* 80370518 0036D478 38 00 00 00 */ li r0, 0
/* 8037051C 0036D47C 90 6D AB D8 */ stw r3, LastReadFinished@sda21(r13)
/* 80370520 0036D480 90 0D 9E C8 */ stw r0, FirstRead@sda21(r13)
/* 80370524 0036D484 80 1E 00 C4 */ lwz r0, 0xc4(r30)
/* 80370528 0036D488 90 1E 00 B8 */ stw r0, 0xb8(r30)
/* 8037052C 0036D48C 80 1E 00 C8 */ lwz r0, 0xc8(r30)
/* 80370530 0036D490 90 1E 00 BC */ stw r0, 0xbc(r30)
/* 80370534 0036D494 80 1E 00 CC */ lwz r0, 0xcc(r30)
/* 80370538 0036D498 90 1E 00 C0 */ stw r0, 0xc0(r30)
/* 8037053C 0036D49C 80 0D AB A8 */ lwz r0, StopAtNextInt@sda21(r13)
/* 80370540 0036D4A0 2C 00 00 01 */ cmpwi r0, 1
/* 80370544 0036D4A4 40 82 00 08 */ bne lbl_8037054C
/* 80370548 0036D4A8 63 BD 00 08 */ ori r29, r29, 8
lbl_8037054C:
/* 8037054C 0036D4AC 38 00 00 00 */ li r0, 0
/* 80370550 0036D4B0 90 0D AB E8 */ stw r0, LastCommandWasRead@sda21(r13)
/* 80370554 0036D4B4 3C 60 CC 00 */ lis r3, 0xCC006000@ha
/* 80370558 0036D4B8 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 8037055C 0036D4BC 80 03 60 00 */ lwz r0, 0xCC006000@l(r3)
/* 80370560 0036D4C0 70 1F 00 2A */ andi. r31, r0, 0x2a
/* 80370564 0036D4C4 70 03 00 54 */ andi. r3, r0, 0x54
/* 80370568 0036D4C8 57 E0 08 3C */ slwi r0, r31, 1
/* 8037056C 0036D4CC 7C 7B 00 38 */ and r27, r3, r0
/* 80370570 0036D4D0 57 60 06 73 */ rlwinm. r0, r27, 0, 0x19, 0x19
/* 80370574 0036D4D4 41 82 00 08 */ beq lbl_8037057C
/* 80370578 0036D4D8 63 BD 00 08 */ ori r29, r29, 8
lbl_8037057C:
/* 8037057C 0036D4DC 57 60 06 F7 */ rlwinm. r0, r27, 0, 0x1b, 0x1b
/* 80370580 0036D4E0 41 82 00 08 */ beq lbl_80370588
/* 80370584 0036D4E4 63 BD 00 01 */ ori r29, r29, 1
lbl_80370588:
/* 80370588 0036D4E8 57 60 07 7B */ rlwinm. r0, r27, 0, 0x1d, 0x1d
/* 8037058C 0036D4EC 41 82 00 08 */ beq lbl_80370594
/* 80370590 0036D4F0 63 BD 00 02 */ ori r29, r29, 2
lbl_80370594:
/* 80370594 0036D4F4 28 1D 00 00 */ cmplwi r29, 0
/* 80370598 0036D4F8 41 82 00 14 */ beq lbl_803705AC
/* 8037059C 0036D4FC 38 00 00 00 */ li r0, 0
/* 803705A0 0036D500 90 0D AB C0 */ stw r0, ResetOccurred@sda21(r13)
/* 803705A4 0036D504 38 7E 00 68 */ addi r3, r30, 0x68
/* 803705A8 0036D508 48 00 DE 4D */ bl OSCancelAlarm
lbl_803705AC:
/* 803705AC 0036D50C 7F 60 FB 78 */ or r0, r27, r31
/* 803705B0 0036D510 3F E0 CC 00 */ lis r31, 0xCC006000@ha
/* 803705B4 0036D514 90 1F 60 00 */ stw r0, 0xCC006000@l(r31)
/* 803705B8 0036D518 80 0D AB C0 */ lwz r0, ResetOccurred@sda21(r13)
/* 803705BC 0036D51C 28 00 00 00 */ cmplwi r0, 0
/* 803705C0 0036D520 41 82 00 A0 */ beq lbl_80370660
/* 803705C4 0036D524 48 01 4E 05 */ bl __OSGetSystemTime
/* 803705C8 0036D528 3C A0 80 00 */ lis r5, 0x800000F8@ha
/* 803705CC 0036D52C 80 ED AB B8 */ lwz r7, LastResetEnd@sda21(r13)
/* 803705D0 0036D530 80 C5 00 F8 */ lwz r6, 0x800000F8@l(r5)
/* 803705D4 0036D534 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 803705D8 0036D538 38 A5 4D D3 */ addi r5, r5, 0x10624DD3@l
/* 803705DC 0036D53C 81 0D AB BC */ lwz r8, LastResetEnd+4@sda21(r13)
/* 803705E0 0036D540 54 C6 F0 BE */ srwi r6, r6, 2
/* 803705E4 0036D544 7C A5 30 16 */ mulhwu r5, r5, r6
/* 803705E8 0036D548 54 A5 D1 BE */ srwi r5, r5, 6
/* 803705EC 0036D54C 1C A5 00 C8 */ mulli r5, r5, 0xc8
/* 803705F0 0036D550 7C C8 20 10 */ subfc r6, r8, r4
/* 803705F4 0036D554 7C 67 19 10 */ subfe r3, r7, r3
/* 803705F8 0036D558 38 00 00 00 */ li r0, 0
/* 803705FC 0036D55C 6C 64 80 00 */ xoris r4, r3, 0x8000
/* 80370600 0036D560 6C 03 80 00 */ xoris r3, r0, 0x8000
/* 80370604 0036D564 7C 05 30 10 */ subfc r0, r5, r6
/* 80370608 0036D568 7C 63 21 10 */ subfe r3, r3, r4
/* 8037060C 0036D56C 7C 64 21 10 */ subfe r3, r4, r4
/* 80370610 0036D570 7C 63 00 D1 */ neg. r3, r3
/* 80370614 0036D574 41 82 00 4C */ beq lbl_80370660
/* 80370618 0036D578 3B 7F 60 00 */ addi r27, r31, 0x6000
/* 8037061C 0036D57C 84 1B 00 04 */ lwzu r0, 4(r27)
/* 80370620 0036D580 54 03 07 7A */ rlwinm r3, r0, 0, 0x1d, 0x1d
/* 80370624 0036D584 54 00 0F 7A */ rlwinm r0, r0, 1, 0x1d, 0x1d
/* 80370628 0036D588 7C 60 00 38 */ and r0, r3, r0
/* 8037062C 0036D58C 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80370630 0036D590 41 82 00 24 */ beq lbl_80370654
/* 80370634 0036D594 81 8D AB B4 */ lwz r12, ResetCoverCallback@sda21(r13)
/* 80370638 0036D598 28 0C 00 00 */ cmplwi r12, 0
/* 8037063C 0036D59C 41 82 00 10 */ beq lbl_8037064C
/* 80370640 0036D5A0 7D 88 03 A6 */ mtlr r12
/* 80370644 0036D5A4 38 60 00 04 */ li r3, 4
/* 80370648 0036D5A8 4E 80 00 21 */ blrl
lbl_8037064C:
/* 8037064C 0036D5AC 38 00 00 00 */ li r0, 0
/* 80370650 0036D5B0 90 0D AB B4 */ stw r0, ResetCoverCallback@sda21(r13)
lbl_80370654:
/* 80370654 0036D5B4 80 1B 00 00 */ lwz r0, 0(r27)
/* 80370658 0036D5B8 90 1B 00 00 */ stw r0, 0(r27)
/* 8037065C 0036D5BC 48 00 00 58 */ b lbl_803706B4
lbl_80370660:
/* 80370660 0036D5C0 80 0D AB C4 */ lwz r0, WaitingCoverClose@sda21(r13)
/* 80370664 0036D5C4 2C 00 00 00 */ cmpwi r0, 0
/* 80370668 0036D5C8 41 82 00 40 */ beq lbl_803706A8
/* 8037066C 0036D5CC 3C 60 CC 00 */ lis r3, 0xCC006000@ha
/* 80370670 0036D5D0 38 A3 60 00 */ addi r5, r3, 0xCC006000@l
/* 80370674 0036D5D4 84 05 00 04 */ lwzu r0, 4(r5)
/* 80370678 0036D5D8 54 04 07 BC */ rlwinm r4, r0, 0, 0x1e, 0x1e
/* 8037067C 0036D5DC 54 03 07 7A */ rlwinm r3, r0, 0, 0x1d, 0x1d
/* 80370680 0036D5E0 54 00 0F 7A */ rlwinm r0, r0, 1, 0x1d, 0x1d
/* 80370684 0036D5E4 7C 63 00 38 */ and r3, r3, r0
/* 80370688 0036D5E8 54 60 07 7B */ rlwinm. r0, r3, 0, 0x1d, 0x1d
/* 8037068C 0036D5EC 41 82 00 08 */ beq lbl_80370694
/* 80370690 0036D5F0 63 BD 00 04 */ ori r29, r29, 4
lbl_80370694:
/* 80370694 0036D5F4 7C 60 23 78 */ or r0, r3, r4
/* 80370698 0036D5F8 90 05 00 00 */ stw r0, 0(r5)
/* 8037069C 0036D5FC 38 00 00 00 */ li r0, 0
/* 803706A0 0036D600 90 0D AB C4 */ stw r0, WaitingCoverClose@sda21(r13)
/* 803706A4 0036D604 48 00 00 10 */ b lbl_803706B4
lbl_803706A8:
/* 803706A8 0036D608 3C 60 CC 00 */ lis r3, 0xCC006004@ha
/* 803706AC 0036D60C 38 00 00 00 */ li r0, 0
/* 803706B0 0036D610 90 03 60 04 */ stw r0, 0xCC006004@l(r3)
lbl_803706B4:
/* 803706B4 0036D614 57 A0 07 39 */ rlwinm. r0, r29, 0, 0x1c, 0x1c
/* 803706B8 0036D618 41 82 00 14 */ beq lbl_803706CC
/* 803706BC 0036D61C 80 0D AB C8 */ lwz r0, Breaking@sda21(r13)
/* 803706C0 0036D620 2C 00 00 00 */ cmpwi r0, 0
/* 803706C4 0036D624 40 82 00 08 */ bne lbl_803706CC
/* 803706C8 0036D628 57 BD 07 76 */ rlwinm r29, r29, 0, 0x1d, 0x1b
lbl_803706CC:
/* 803706CC 0036D62C 57 A0 07 FF */ clrlwi. r0, r29, 0x1f
/* 803706D0 0036D630 41 82 00 80 */ beq lbl_80370750
/* 803706D4 0036D634 80 0D AB EC */ lwz r0, NextCommandNumber@sda21(r13)
/* 803706D8 0036D638 1C 00 00 14 */ mulli r0, r0, 0x14
/* 803706DC 0036D63C 7C 7E 00 2E */ lwzx r3, r30, r0
/* 803706E0 0036D640 2C 03 00 01 */ cmpwi r3, 1
/* 803706E4 0036D644 40 82 00 30 */ bne lbl_80370714
/* 803706E8 0036D648 80 6D AB EC */ lwz r3, NextCommandNumber@sda21(r13)
/* 803706EC 0036D64C 7C DE 02 14 */ add r6, r30, r0
/* 803706F0 0036D650 38 03 00 01 */ addi r0, r3, 1
/* 803706F4 0036D654 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 803706F8 0036D658 80 66 00 04 */ lwz r3, 4(r6)
/* 803706FC 0036D65C 80 86 00 08 */ lwz r4, 8(r6)
/* 80370700 0036D660 80 A6 00 0C */ lwz r5, 0xc(r6)
/* 80370704 0036D664 80 C6 00 10 */ lwz r6, 0x10(r6)
/* 80370708 0036D668 48 00 01 B1 */ bl Read
/* 8037070C 0036D66C 38 00 00 01 */ li r0, 1
/* 80370710 0036D670 48 00 00 34 */ b lbl_80370744
lbl_80370714:
/* 80370714 0036D674 2C 03 00 02 */ cmpwi r3, 2
/* 80370718 0036D678 40 82 00 28 */ bne lbl_80370740
/* 8037071C 0036D67C 80 6D AB EC */ lwz r3, NextCommandNumber@sda21(r13)
/* 80370720 0036D680 7C 9E 02 14 */ add r4, r30, r0
/* 80370724 0036D684 38 03 00 01 */ addi r0, r3, 1
/* 80370728 0036D688 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 8037072C 0036D68C 80 64 00 0C */ lwz r3, 0xc(r4)
/* 80370730 0036D690 80 84 00 10 */ lwz r4, 0x10(r4)
/* 80370734 0036D694 48 00 05 AD */ bl DVDLowSeek
/* 80370738 0036D698 38 00 00 01 */ li r0, 1
/* 8037073C 0036D69C 48 00 00 08 */ b lbl_80370744
lbl_80370740:
/* 80370740 0036D6A0 38 00 00 00 */ li r0, 0
lbl_80370744:
/* 80370744 0036D6A4 2C 00 00 00 */ cmpwi r0, 0
/* 80370748 0036D6A8 41 82 00 18 */ beq lbl_80370760
/* 8037074C 0036D6AC 48 00 00 64 */ b lbl_803707B0
lbl_80370750:
/* 80370750 0036D6B0 38 00 FF FF */ li r0, -1
/* 80370754 0036D6B4 90 1E 00 00 */ stw r0, 0(r30)
/* 80370758 0036D6B8 38 00 00 00 */ li r0, 0
/* 8037075C 0036D6BC 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
lbl_80370760:
/* 80370760 0036D6C0 38 61 00 10 */ addi r3, r1, 0x10
/* 80370764 0036D6C4 48 00 EE B1 */ bl OSClearContext
/* 80370768 0036D6C8 38 61 00 10 */ addi r3, r1, 0x10
/* 8037076C 0036D6CC 48 00 EC B1 */ bl OSSetCurrentContext
/* 80370770 0036D6D0 28 1D 00 00 */ cmplwi r29, 0
/* 80370774 0036D6D4 41 82 00 2C */ beq lbl_803707A0
/* 80370778 0036D6D8 81 8D AB B0 */ lwz r12, Callback@sda21(r13)
/* 8037077C 0036D6DC 38 00 00 00 */ li r0, 0
/* 80370780 0036D6E0 28 0C 00 00 */ cmplwi r12, 0
/* 80370784 0036D6E4 90 0D AB B0 */ stw r0, Callback@sda21(r13)
/* 80370788 0036D6E8 41 82 00 10 */ beq lbl_80370798
/* 8037078C 0036D6EC 7D 88 03 A6 */ mtlr r12
/* 80370790 0036D6F0 38 7D 00 00 */ addi r3, r29, 0
/* 80370794 0036D6F4 4E 80 00 21 */ blrl
lbl_80370798:
/* 80370798 0036D6F8 38 00 00 00 */ li r0, 0
/* 8037079C 0036D6FC 90 0D AB C8 */ stw r0, Breaking@sda21(r13)
lbl_803707A0:
/* 803707A0 0036D700 38 61 00 10 */ addi r3, r1, 0x10
/* 803707A4 0036D704 48 00 EE 71 */ bl OSClearContext
/* 803707A8 0036D708 7F 83 E3 78 */ mr r3, r28
/* 803707AC 0036D70C 48 00 EC 71 */ bl OSSetCurrentContext
lbl_803707B0:
/* 803707B0 0036D710 BB 61 02 DC */ lmw r27, 0x2dc(r1)
/* 803707B4 0036D714 80 01 02 F4 */ lwz r0, 0x2f4(r1)
/* 803707B8 0036D718 38 21 02 F0 */ addi r1, r1, 0x2f0
/* 803707BC 0036D71C 7C 08 03 A6 */ mtlr r0
/* 803707C0 0036D720 4E 80 00 20 */ blr
.global AlarmHandler
AlarmHandler:
/* 803707C4 0036D724 7C 08 02 A6 */ mflr r0
/* 803707C8 0036D728 3C 60 80 54 */ lis r3, CommandList@ha
/* 803707CC 0036D72C 90 01 00 04 */ stw r0, 4(r1)
/* 803707D0 0036D730 38 83 0A 80 */ addi r4, r3, CommandList@l
/* 803707D4 0036D734 94 21 FF F8 */ stwu r1, -8(r1)
/* 803707D8 0036D738 80 0D AB EC */ lwz r0, NextCommandNumber@sda21(r13)
/* 803707DC 0036D73C 1C 00 00 14 */ mulli r0, r0, 0x14
/* 803707E0 0036D740 7C 64 00 2E */ lwzx r3, r4, r0
/* 803707E4 0036D744 2C 03 00 01 */ cmpwi r3, 1
/* 803707E8 0036D748 40 82 00 2C */ bne lbl_80370814
/* 803707EC 0036D74C 80 6D AB EC */ lwz r3, NextCommandNumber@sda21(r13)
/* 803707F0 0036D750 7C C4 02 14 */ add r6, r4, r0
/* 803707F4 0036D754 38 03 00 01 */ addi r0, r3, 1
/* 803707F8 0036D758 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 803707FC 0036D75C 80 66 00 04 */ lwz r3, 4(r6)
/* 80370800 0036D760 80 86 00 08 */ lwz r4, 8(r6)
/* 80370804 0036D764 80 A6 00 0C */ lwz r5, 0xc(r6)
/* 80370808 0036D768 80 C6 00 10 */ lwz r6, 0x10(r6)
/* 8037080C 0036D76C 48 00 00 AD */ bl Read
/* 80370810 0036D770 48 00 00 28 */ b lbl_80370838
lbl_80370814:
/* 80370814 0036D774 2C 03 00 02 */ cmpwi r3, 2
/* 80370818 0036D778 40 82 00 20 */ bne lbl_80370838
/* 8037081C 0036D77C 80 6D AB EC */ lwz r3, NextCommandNumber@sda21(r13)
/* 80370820 0036D780 7C 84 02 14 */ add r4, r4, r0
/* 80370824 0036D784 38 03 00 01 */ addi r0, r3, 1
/* 80370828 0036D788 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 8037082C 0036D78C 80 64 00 0C */ lwz r3, 0xc(r4)
/* 80370830 0036D790 80 84 00 10 */ lwz r4, 0x10(r4)
/* 80370834 0036D794 48 00 04 AD */ bl DVDLowSeek
lbl_80370838:
/* 80370838 0036D798 80 01 00 0C */ lwz r0, 0xc(r1)
/* 8037083C 0036D79C 38 21 00 08 */ addi r1, r1, 8
/* 80370840 0036D7A0 7C 08 03 A6 */ mtlr r0
/* 80370844 0036D7A4 4E 80 00 20 */ blr
.global AlarmHandlerForTimeout
AlarmHandlerForTimeout:
/* 80370848 0036D7A8 7C 08 02 A6 */ mflr r0
/* 8037084C 0036D7AC 38 60 04 00 */ li r3, 0x400
/* 80370850 0036D7B0 90 01 00 04 */ stw r0, 4(r1)
/* 80370854 0036D7B4 94 21 FD 20 */ stwu r1, -0x2e0(r1)
/* 80370858 0036D7B8 93 E1 02 DC */ stw r31, 0x2dc(r1)
/* 8037085C 0036D7BC 3B E4 00 00 */ addi r31, r4, 0
/* 80370860 0036D7C0 48 01 11 C9 */ bl __OSMaskInterrupts
/* 80370864 0036D7C4 38 61 00 10 */ addi r3, r1, 0x10
/* 80370868 0036D7C8 48 00 ED AD */ bl OSClearContext
/* 8037086C 0036D7CC 38 61 00 10 */ addi r3, r1, 0x10
/* 80370870 0036D7D0 48 00 EB AD */ bl OSSetCurrentContext
/* 80370874 0036D7D4 81 8D AB B0 */ lwz r12, Callback@sda21(r13)
/* 80370878 0036D7D8 38 00 00 00 */ li r0, 0
/* 8037087C 0036D7DC 28 0C 00 00 */ cmplwi r12, 0
/* 80370880 0036D7E0 90 0D AB B0 */ stw r0, Callback@sda21(r13)
/* 80370884 0036D7E4 41 82 00 10 */ beq lbl_80370894
/* 80370888 0036D7E8 7D 88 03 A6 */ mtlr r12
/* 8037088C 0036D7EC 38 60 00 10 */ li r3, 0x10
/* 80370890 0036D7F0 4E 80 00 21 */ blrl
lbl_80370894:
/* 80370894 0036D7F4 38 61 00 10 */ addi r3, r1, 0x10
/* 80370898 0036D7F8 48 00 ED 7D */ bl OSClearContext
/* 8037089C 0036D7FC 7F E3 FB 78 */ mr r3, r31
/* 803708A0 0036D800 48 00 EB 7D */ bl OSSetCurrentContext
/* 803708A4 0036D804 80 01 02 E4 */ lwz r0, 0x2e4(r1)
/* 803708A8 0036D808 83 E1 02 DC */ lwz r31, 0x2dc(r1)
/* 803708AC 0036D80C 38 21 02 E0 */ addi r1, r1, 0x2e0
/* 803708B0 0036D810 7C 08 03 A6 */ mtlr r0
/* 803708B4 0036D814 4E 80 00 20 */ blr
.global Read
Read:
/* 803708B8 0036D818 7C 08 02 A6 */ mflr r0
/* 803708BC 0036D81C 90 01 00 04 */ stw r0, 4(r1)
/* 803708C0 0036D820 38 00 00 00 */ li r0, 0
/* 803708C4 0036D824 94 21 FF D8 */ stwu r1, -0x28(r1)
/* 803708C8 0036D828 93 E1 00 24 */ stw r31, 0x24(r1)
/* 803708CC 0036D82C 93 C1 00 20 */ stw r30, 0x20(r1)
/* 803708D0 0036D830 3B C5 00 00 */ addi r30, r5, 0
/* 803708D4 0036D834 93 A1 00 1C */ stw r29, 0x1c(r1)
/* 803708D8 0036D838 3B A4 00 00 */ addi r29, r4, 0
/* 803708DC 0036D83C 93 81 00 18 */ stw r28, 0x18(r1)
/* 803708E0 0036D840 3B 83 00 00 */ addi r28, r3, 0
/* 803708E4 0036D844 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 803708E8 0036D848 38 00 00 01 */ li r0, 1
/* 803708EC 0036D84C 90 CD AB B0 */ stw r6, Callback@sda21(r13)
/* 803708F0 0036D850 3C C0 80 54 */ lis r6, CommandList@ha
/* 803708F4 0036D854 3B E6 0A 80 */ addi r31, r6, CommandList@l
/* 803708F8 0036D858 90 0D AB E8 */ stw r0, LastCommandWasRead@sda21(r13)
/* 803708FC 0036D85C 48 01 4A CD */ bl __OSGetSystemTime
/* 80370900 0036D860 90 8D AB E4 */ stw r4, LastReadIssued+4@sda21(r13)
/* 80370904 0036D864 3C 80 CC 00 */ lis r4, 0xCC006000@ha
/* 80370908 0036D868 3C 00 00 A0 */ lis r0, 0xa0
/* 8037090C 0036D86C 90 6D AB E0 */ stw r3, LastReadIssued@sda21(r13)
/* 80370910 0036D870 38 84 60 00 */ addi r4, r4, 0xCC006000@l
/* 80370914 0036D874 3C 60 A8 00 */ lis r3, 0xa800
/* 80370918 0036D878 90 64 00 08 */ stw r3, 8(r4)
/* 8037091C 0036D87C 57 C3 F0 BE */ srwi r3, r30, 2
/* 80370920 0036D880 7C 1D 00 40 */ cmplw r29, r0
/* 80370924 0036D884 90 64 00 0C */ stw r3, 0xc(r4)
/* 80370928 0036D888 38 00 00 03 */ li r0, 3
/* 8037092C 0036D88C 93 A4 00 10 */ stw r29, 0x10(r4)
/* 80370930 0036D890 93 84 00 14 */ stw r28, 0x14(r4)
/* 80370934 0036D894 93 A4 00 18 */ stw r29, 0x18(r4)
/* 80370938 0036D898 93 AD AB AC */ stw r29, LastLength@sda21(r13)
/* 8037093C 0036D89C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80370940 0036D8A0 40 81 00 38 */ ble lbl_80370978
/* 80370944 0036D8A4 3C 60 80 00 */ lis r3, 0x800000F8@ha
/* 80370948 0036D8A8 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
/* 8037094C 0036D8AC 38 7F 00 68 */ addi r3, r31, 0x68
/* 80370950 0036D8B0 54 00 F0 BE */ srwi r0, r0, 2
/* 80370954 0036D8B4 1F C0 00 14 */ mulli r30, r0, 0x14
/* 80370958 0036D8B8 48 00 D7 59 */ bl OSCreateAlarm
/* 8037095C 0036D8BC 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370960 0036D8C0 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370964 0036D8C4 38 DE 00 00 */ addi r6, r30, 0
/* 80370968 0036D8C8 38 7F 00 68 */ addi r3, r31, 0x68
/* 8037096C 0036D8CC 38 A0 00 00 */ li r5, 0
/* 80370970 0036D8D0 48 00 D9 A1 */ bl OSSetAlarm
/* 80370974 0036D8D4 48 00 00 34 */ b lbl_803709A8
lbl_80370978:
/* 80370978 0036D8D8 3C 60 80 00 */ lis r3, 0x800000F8@ha
/* 8037097C 0036D8DC 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
/* 80370980 0036D8E0 38 7F 00 68 */ addi r3, r31, 0x68
/* 80370984 0036D8E4 54 00 F0 BE */ srwi r0, r0, 2
/* 80370988 0036D8E8 1F C0 00 0A */ mulli r30, r0, 0xa
/* 8037098C 0036D8EC 48 00 D7 25 */ bl OSCreateAlarm
/* 80370990 0036D8F0 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370994 0036D8F4 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370998 0036D8F8 38 DE 00 00 */ addi r6, r30, 0
/* 8037099C 0036D8FC 38 7F 00 68 */ addi r3, r31, 0x68
/* 803709A0 0036D900 38 A0 00 00 */ li r5, 0
/* 803709A4 0036D904 48 00 D9 6D */ bl OSSetAlarm
lbl_803709A8:
/* 803709A8 0036D908 80 01 00 2C */ lwz r0, 0x2c(r1)
/* 803709AC 0036D90C 83 E1 00 24 */ lwz r31, 0x24(r1)
/* 803709B0 0036D910 83 C1 00 20 */ lwz r30, 0x20(r1)
/* 803709B4 0036D914 83 A1 00 1C */ lwz r29, 0x1c(r1)
/* 803709B8 0036D918 83 81 00 18 */ lwz r28, 0x18(r1)
/* 803709BC 0036D91C 38 21 00 28 */ addi r1, r1, 0x28
/* 803709C0 0036D920 7C 08 03 A6 */ mtlr r0
/* 803709C4 0036D924 4E 80 00 20 */ blr
.global SeekTwiceBeforeRead
SeekTwiceBeforeRead:
/* 803709C8 0036D928 7C 08 02 A6 */ mflr r0
/* 803709CC 0036D92C 3C E0 80 54 */ lis r7, CommandList@ha
/* 803709D0 0036D930 90 01 00 04 */ stw r0, 4(r1)
/* 803709D4 0036D934 54 A8 00 21 */ rlwinm. r8, r5, 0, 0, 0x10
/* 803709D8 0036D938 39 27 0A 80 */ addi r9, r7, CommandList@l
/* 803709DC 0036D93C 94 21 FF F8 */ stwu r1, -8(r1)
/* 803709E0 0036D940 40 82 00 0C */ bne lbl_803709EC
/* 803709E4 0036D944 39 40 00 00 */ li r10, 0
/* 803709E8 0036D948 48 00 00 0C */ b lbl_803709F4
lbl_803709EC:
/* 803709EC 0036D94C 80 0D AB D0 */ lwz r0, WorkAroundSeekLocation@sda21(r13)
/* 803709F0 0036D950 7D 48 02 14 */ add r10, r8, r0
lbl_803709F4:
/* 803709F4 0036D954 38 00 00 02 */ li r0, 2
/* 803709F8 0036D958 90 09 00 00 */ stw r0, 0(r9)
/* 803709FC 0036D95C 39 00 00 01 */ li r8, 1
/* 80370A00 0036D960 38 E0 FF FF */ li r7, -1
/* 80370A04 0036D964 91 49 00 0C */ stw r10, 0xc(r9)
/* 80370A08 0036D968 38 00 00 00 */ li r0, 0
/* 80370A0C 0036D96C 90 C9 00 10 */ stw r6, 0x10(r9)
/* 80370A10 0036D970 91 09 00 14 */ stw r8, 0x14(r9)
/* 80370A14 0036D974 90 69 00 18 */ stw r3, 0x18(r9)
/* 80370A18 0036D978 7D 43 53 78 */ mr r3, r10
/* 80370A1C 0036D97C 90 89 00 1C */ stw r4, 0x1c(r9)
/* 80370A20 0036D980 7C C4 33 78 */ mr r4, r6
/* 80370A24 0036D984 90 A9 00 20 */ stw r5, 0x20(r9)
/* 80370A28 0036D988 90 C9 00 24 */ stw r6, 0x24(r9)
/* 80370A2C 0036D98C 90 E9 00 28 */ stw r7, 0x28(r9)
/* 80370A30 0036D990 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 80370A34 0036D994 48 00 02 AD */ bl DVDLowSeek
/* 80370A38 0036D998 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80370A3C 0036D99C 38 21 00 08 */ addi r1, r1, 8
/* 80370A40 0036D9A0 7C 08 03 A6 */ mtlr r0
/* 80370A44 0036D9A4 4E 80 00 20 */ blr
.global DVDLowRead
DVDLowRead:
/* 80370A48 0036D9A8 7C 08 02 A6 */ mflr r0
/* 80370A4C 0036D9AC 3C E0 CC 00 */ lis r7, 0xCC006000@ha
/* 80370A50 0036D9B0 90 01 00 04 */ stw r0, 4(r1)
/* 80370A54 0036D9B4 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 80370A58 0036D9B8 BE C1 00 18 */ stmw r22, 0x18(r1)
/* 80370A5C 0036D9BC 3B 24 00 00 */ addi r25, r4, 0
/* 80370A60 0036D9C0 38 87 60 00 */ addi r4, r7, 0xCC006000@l
/* 80370A64 0036D9C4 3C E0 80 54 */ lis r7, CommandList@ha
/* 80370A68 0036D9C8 3B E7 0A 80 */ addi r31, r7, CommandList@l
/* 80370A6C 0036D9CC 3B 03 00 00 */ addi r24, r3, 0
/* 80370A70 0036D9D0 3B 45 00 00 */ addi r26, r5, 0
/* 80370A74 0036D9D4 3B DF 00 CC */ addi r30, r31, 0xcc
/* 80370A78 0036D9D8 7C DB 33 78 */ mr r27, r6
/* 80370A7C 0036D9DC 93 24 00 18 */ stw r25, 0x18(r4)
/* 80370A80 0036D9E0 93 1F 00 C4 */ stw r24, 0xc4(r31)
/* 80370A84 0036D9E4 93 3F 00 C8 */ stw r25, 0xc8(r31)
/* 80370A88 0036D9E8 93 5F 00 CC */ stw r26, 0xcc(r31)
/* 80370A8C 0036D9EC 80 0D AB CC */ lwz r0, WorkAroundType@sda21(r13)
/* 80370A90 0036D9F0 28 00 00 00 */ cmplwi r0, 0
/* 80370A94 0036D9F4 40 82 00 2C */ bne lbl_80370AC0
/* 80370A98 0036D9F8 38 00 FF FF */ li r0, -1
/* 80370A9C 0036D9FC 90 1F 00 00 */ stw r0, 0(r31)
/* 80370AA0 0036DA00 38 00 00 00 */ li r0, 0
/* 80370AA4 0036DA04 38 78 00 00 */ addi r3, r24, 0
/* 80370AA8 0036DA08 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 80370AAC 0036DA0C 38 99 00 00 */ addi r4, r25, 0
/* 80370AB0 0036DA10 38 BA 00 00 */ addi r5, r26, 0
/* 80370AB4 0036DA14 38 DB 00 00 */ addi r6, r27, 0
/* 80370AB8 0036DA18 4B FF FE 01 */ bl Read
/* 80370ABC 0036DA1C 48 00 02 0C */ b lbl_80370CC8
lbl_80370AC0:
/* 80370AC0 0036DA20 80 0D AB CC */ lwz r0, WorkAroundType@sda21(r13)
/* 80370AC4 0036DA24 28 00 00 01 */ cmplwi r0, 1
/* 80370AC8 0036DA28 40 82 02 00 */ bne lbl_80370CC8
/* 80370ACC 0036DA2C 80 0D 9E C8 */ lwz r0, FirstRead@sda21(r13)
/* 80370AD0 0036DA30 2C 00 00 00 */ cmpwi r0, 0
/* 80370AD4 0036DA34 41 82 00 1C */ beq lbl_80370AF0
/* 80370AD8 0036DA38 38 78 00 00 */ addi r3, r24, 0
/* 80370ADC 0036DA3C 38 99 00 00 */ addi r4, r25, 0
/* 80370AE0 0036DA40 38 BA 00 00 */ addi r5, r26, 0
/* 80370AE4 0036DA44 38 DB 00 00 */ addi r6, r27, 0
/* 80370AE8 0036DA48 4B FF FE E1 */ bl SeekTwiceBeforeRead
/* 80370AEC 0036DA4C 48 00 01 DC */ b lbl_80370CC8
lbl_80370AF0:
/* 80370AF0 0036DA50 3B BF 00 BC */ addi r29, r31, 0xbc
/* 80370AF4 0036DA54 80 1E 00 00 */ lwz r0, 0(r30)
/* 80370AF8 0036DA58 3B 9F 00 C0 */ addi r28, r31, 0xc0
/* 80370AFC 0036DA5C 80 7F 00 BC */ lwz r3, 0xbc(r31)
/* 80370B00 0036DA60 80 9F 00 C0 */ lwz r4, 0xc0(r31)
/* 80370B04 0036DA64 54 17 8B FE */ srwi r23, r0, 0xf
/* 80370B08 0036DA68 38 03 FF FF */ addi r0, r3, -1
/* 80370B0C 0036DA6C 7C 04 02 14 */ add r0, r4, r0
/* 80370B10 0036DA70 54 16 8B FE */ srwi r22, r0, 0xf
/* 80370B14 0036DA74 48 00 3B 9D */ bl DVDGetCurrentDiskID
/* 80370B18 0036DA78 88 03 00 08 */ lbz r0, 8(r3)
/* 80370B1C 0036DA7C 28 00 00 00 */ cmplwi r0, 0
/* 80370B20 0036DA80 41 82 00 0C */ beq lbl_80370B2C
/* 80370B24 0036DA84 38 00 00 01 */ li r0, 1
/* 80370B28 0036DA88 48 00 00 08 */ b lbl_80370B30
lbl_80370B2C:
/* 80370B2C 0036DA8C 38 00 00 00 */ li r0, 0
lbl_80370B30:
/* 80370B30 0036DA90 2C 00 00 00 */ cmpwi r0, 0
/* 80370B34 0036DA94 41 82 00 0C */ beq lbl_80370B40
/* 80370B38 0036DA98 38 60 00 05 */ li r3, 5
/* 80370B3C 0036DA9C 48 00 00 08 */ b lbl_80370B44
lbl_80370B40:
/* 80370B40 0036DAA0 38 60 00 0F */ li r3, 0xf
lbl_80370B44:
/* 80370B44 0036DAA4 38 16 FF FE */ addi r0, r22, -2
/* 80370B48 0036DAA8 7C 17 00 40 */ cmplw r23, r0
/* 80370B4C 0036DAAC 41 81 00 14 */ bgt lbl_80370B60
/* 80370B50 0036DAB0 38 03 00 03 */ addi r0, r3, 3
/* 80370B54 0036DAB4 7C 16 02 14 */ add r0, r22, r0
/* 80370B58 0036DAB8 7C 17 00 40 */ cmplw r23, r0
/* 80370B5C 0036DABC 40 80 00 0C */ bge lbl_80370B68
lbl_80370B60:
/* 80370B60 0036DAC0 38 00 00 01 */ li r0, 1
/* 80370B64 0036DAC4 48 00 00 08 */ b lbl_80370B6C
lbl_80370B68:
/* 80370B68 0036DAC8 38 00 00 00 */ li r0, 0
lbl_80370B6C:
/* 80370B6C 0036DACC 2C 00 00 00 */ cmpwi r0, 0
/* 80370B70 0036DAD0 40 82 00 2C */ bne lbl_80370B9C
/* 80370B74 0036DAD4 38 00 FF FF */ li r0, -1
/* 80370B78 0036DAD8 90 1F 00 00 */ stw r0, 0(r31)
/* 80370B7C 0036DADC 38 00 00 00 */ li r0, 0
/* 80370B80 0036DAE0 38 78 00 00 */ addi r3, r24, 0
/* 80370B84 0036DAE4 90 0D AB EC */ stw r0, NextCommandNumber@sda21(r13)
/* 80370B88 0036DAE8 38 99 00 00 */ addi r4, r25, 0
/* 80370B8C 0036DAEC 38 BA 00 00 */ addi r5, r26, 0
/* 80370B90 0036DAF0 38 DB 00 00 */ addi r6, r27, 0
/* 80370B94 0036DAF4 4B FF FD 25 */ bl Read
/* 80370B98 0036DAF8 48 00 01 30 */ b lbl_80370CC8
lbl_80370B9C:
/* 80370B9C 0036DAFC 80 7D 00 00 */ lwz r3, 0(r29)
/* 80370BA0 0036DB00 80 9C 00 00 */ lwz r4, 0(r28)
/* 80370BA4 0036DB04 38 63 FF FF */ addi r3, r3, -1
/* 80370BA8 0036DB08 80 1E 00 00 */ lwz r0, 0(r30)
/* 80370BAC 0036DB0C 7C 64 1A 14 */ add r3, r4, r3
/* 80370BB0 0036DB10 54 63 8B FE */ srwi r3, r3, 0xf
/* 80370BB4 0036DB14 54 04 8B FE */ srwi r4, r0, 0xf
/* 80370BB8 0036DB18 7C 03 20 40 */ cmplw r3, r4
/* 80370BBC 0036DB1C 41 82 00 10 */ beq lbl_80370BCC
/* 80370BC0 0036DB20 38 03 00 01 */ addi r0, r3, 1
/* 80370BC4 0036DB24 7C 00 20 40 */ cmplw r0, r4
/* 80370BC8 0036DB28 40 82 00 EC */ bne lbl_80370CB4
lbl_80370BCC:
/* 80370BCC 0036DB2C 48 01 47 FD */ bl __OSGetSystemTime
/* 80370BD0 0036DB30 3C A0 80 00 */ lis r5, 0x800000F8@ha
/* 80370BD4 0036DB34 81 0D AB D8 */ lwz r8, LastReadFinished@sda21(r13)
/* 80370BD8 0036DB38 80 05 00 F8 */ lwz r0, 0x800000F8@l(r5)
/* 80370BDC 0036DB3C 3C A0 10 62 */ lis r5, 0x10624DD3@ha
/* 80370BE0 0036DB40 81 2D AB DC */ lwz r9, LastReadFinished+4@sda21(r13)
/* 80370BE4 0036DB44 38 C0 00 00 */ li r6, 0
/* 80370BE8 0036DB48 54 07 F0 BE */ srwi r7, r0, 2
/* 80370BEC 0036DB4C 38 05 4D D3 */ addi r0, r5, 0x10624DD3@l
/* 80370BF0 0036DB50 7C 00 38 16 */ mulhwu r0, r0, r7
/* 80370BF4 0036DB54 54 00 D1 BE */ srwi r0, r0, 6
/* 80370BF8 0036DB58 7D 29 20 10 */ subfc r9, r9, r4
/* 80370BFC 0036DB5C 7D 08 19 10 */ subfe r8, r8, r3
/* 80370C00 0036DB60 1C A0 00 05 */ mulli r5, r0, 5
/* 80370C04 0036DB64 6C C4 80 00 */ xoris r4, r6, 0x8000
/* 80370C08 0036DB68 6D 03 80 00 */ xoris r3, r8, 0x8000
/* 80370C0C 0036DB6C 7C 09 28 10 */ subfc r0, r9, r5
/* 80370C10 0036DB70 7C 63 21 10 */ subfe r3, r3, r4
/* 80370C14 0036DB74 7C 64 21 10 */ subfe r3, r4, r4
/* 80370C18 0036DB78 7C 63 00 D1 */ neg. r3, r3
/* 80370C1C 0036DB7C 41 82 00 28 */ beq lbl_80370C44
/* 80370C20 0036DB80 38 00 FF FF */ li r0, -1
/* 80370C24 0036DB84 90 1F 00 00 */ stw r0, 0(r31)
/* 80370C28 0036DB88 38 78 00 00 */ addi r3, r24, 0
/* 80370C2C 0036DB8C 38 99 00 00 */ addi r4, r25, 0
/* 80370C30 0036DB90 90 CD AB EC */ stw r6, NextCommandNumber@sda21(r13)
/* 80370C34 0036DB94 38 BA 00 00 */ addi r5, r26, 0
/* 80370C38 0036DB98 38 DB 00 00 */ addi r6, r27, 0
/* 80370C3C 0036DB9C 4B FF FC 7D */ bl Read
/* 80370C40 0036DBA0 48 00 00 88 */ b lbl_80370CC8
lbl_80370C44:
/* 80370C44 0036DBA4 38 00 00 01 */ li r0, 1
/* 80370C48 0036DBA8 90 1F 00 00 */ stw r0, 0(r31)
/* 80370C4C 0036DBAC 3C 60 43 1C */ lis r3, 0x431BDE83@ha
/* 80370C50 0036DBB0 38 03 DE 83 */ addi r0, r3, 0x431BDE83@l
/* 80370C54 0036DBB4 93 1F 00 04 */ stw r24, 4(r31)
/* 80370C58 0036DBB8 7C 00 38 16 */ mulhwu r0, r0, r7
/* 80370C5C 0036DBBC 93 3F 00 08 */ stw r25, 8(r31)
/* 80370C60 0036DBC0 93 5F 00 0C */ stw r26, 0xc(r31)
/* 80370C64 0036DBC4 54 00 8B FE */ srwi r0, r0, 0xf
/* 80370C68 0036DBC8 1C 60 01 F4 */ mulli r3, r0, 0x1f4
/* 80370C6C 0036DBCC 93 7F 00 10 */ stw r27, 0x10(r31)
/* 80370C70 0036DBD0 38 00 FF FF */ li r0, -1
/* 80370C74 0036DBD4 90 1F 00 14 */ stw r0, 0x14(r31)
/* 80370C78 0036DBD8 7C A9 28 10 */ subfc r5, r9, r5
/* 80370C7C 0036DBDC 7C 88 31 10 */ subfe r4, r8, r6
/* 80370C80 0036DBE0 54 60 E8 FE */ srwi r0, r3, 3
/* 80370C84 0036DBE4 90 CD AB EC */ stw r6, NextCommandNumber@sda21(r13)
/* 80370C88 0036DBE8 7E E5 00 14 */ addc r23, r5, r0
/* 80370C8C 0036DBEC 7E C4 31 14 */ adde r22, r4, r6
/* 80370C90 0036DBF0 38 7F 00 40 */ addi r3, r31, 0x40
/* 80370C94 0036DBF4 48 00 D4 1D */ bl OSCreateAlarm
/* 80370C98 0036DBF8 3C 60 80 37 */ lis r3, AlarmHandler@ha
/* 80370C9C 0036DBFC 38 E3 07 C4 */ addi r7, r3, AlarmHandler@l
/* 80370CA0 0036DC00 38 D7 00 00 */ addi r6, r23, 0
/* 80370CA4 0036DC04 38 B6 00 00 */ addi r5, r22, 0
/* 80370CA8 0036DC08 38 7F 00 40 */ addi r3, r31, 0x40
/* 80370CAC 0036DC0C 48 00 D6 65 */ bl OSSetAlarm
/* 80370CB0 0036DC10 48 00 00 18 */ b lbl_80370CC8
lbl_80370CB4:
/* 80370CB4 0036DC14 38 78 00 00 */ addi r3, r24, 0
/* 80370CB8 0036DC18 38 99 00 00 */ addi r4, r25, 0
/* 80370CBC 0036DC1C 38 BA 00 00 */ addi r5, r26, 0
/* 80370CC0 0036DC20 38 DB 00 00 */ addi r6, r27, 0
/* 80370CC4 0036DC24 4B FF FD 05 */ bl SeekTwiceBeforeRead
lbl_80370CC8:
/* 80370CC8 0036DC28 BA C1 00 18 */ lmw r22, 0x18(r1)
/* 80370CCC 0036DC2C 38 60 00 01 */ li r3, 1
/* 80370CD0 0036DC30 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80370CD4 0036DC34 38 21 00 40 */ addi r1, r1, 0x40
/* 80370CD8 0036DC38 7C 08 03 A6 */ mtlr r0
/* 80370CDC 0036DC3C 4E 80 00 20 */ blr
.global DVDLowSeek
DVDLowSeek:
/* 80370CE0 0036DC40 7C 08 02 A6 */ mflr r0
/* 80370CE4 0036DC44 90 01 00 04 */ stw r0, 4(r1)
/* 80370CE8 0036DC48 38 00 00 00 */ li r0, 0
/* 80370CEC 0036DC4C 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 80370CF0 0036DC50 93 E1 00 14 */ stw r31, 0x14(r1)
/* 80370CF4 0036DC54 93 C1 00 10 */ stw r30, 0x10(r1)
/* 80370CF8 0036DC58 90 8D AB B0 */ stw r4, Callback@sda21(r13)
/* 80370CFC 0036DC5C 3C 80 CC 00 */ lis r4, 0xCC006000@ha
/* 80370D00 0036DC60 38 84 60 00 */ addi r4, r4, 0xCC006000@l
/* 80370D04 0036DC64 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80370D08 0036DC68 3C 00 AB 00 */ lis r0, 0xab00
/* 80370D0C 0036DC6C 90 04 00 08 */ stw r0, 8(r4)
/* 80370D10 0036DC70 54 60 F0 BE */ srwi r0, r3, 2
/* 80370D14 0036DC74 3C 60 80 54 */ lis r3, AlarmForTimeout@ha
/* 80370D18 0036DC78 90 04 00 0C */ stw r0, 0xc(r4)
/* 80370D1C 0036DC7C 38 00 00 01 */ li r0, 1
/* 80370D20 0036DC80 3B E3 0A E8 */ addi r31, r3, AlarmForTimeout@l
/* 80370D24 0036DC84 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80370D28 0036DC88 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 80370D2C 0036DC8C 38 7F 00 00 */ addi r3, r31, 0
/* 80370D30 0036DC90 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 80370D34 0036DC94 54 00 F0 BE */ srwi r0, r0, 2
/* 80370D38 0036DC98 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80370D3C 0036DC9C 48 00 D3 75 */ bl OSCreateAlarm
/* 80370D40 0036DCA0 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370D44 0036DCA4 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370D48 0036DCA8 38 7F 00 00 */ addi r3, r31, 0
/* 80370D4C 0036DCAC 38 DE 00 00 */ addi r6, r30, 0
/* 80370D50 0036DCB0 38 A0 00 00 */ li r5, 0
/* 80370D54 0036DCB4 48 00 D5 BD */ bl OSSetAlarm
/* 80370D58 0036DCB8 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 80370D5C 0036DCBC 38 60 00 01 */ li r3, 1
/* 80370D60 0036DCC0 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 80370D64 0036DCC4 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 80370D68 0036DCC8 38 21 00 18 */ addi r1, r1, 0x18
/* 80370D6C 0036DCCC 7C 08 03 A6 */ mtlr r0
/* 80370D70 0036DCD0 4E 80 00 20 */ blr
.global DVDLowWaitCoverClose
DVDLowWaitCoverClose:
/* 80370D74 0036DCD4 38 00 00 01 */ li r0, 1
/* 80370D78 0036DCD8 90 6D AB B0 */ stw r3, Callback@sda21(r13)
/* 80370D7C 0036DCDC 3C 60 CC 00 */ lis r3, 0xCC006000@ha
/* 80370D80 0036DCE0 90 0D AB C4 */ stw r0, WaitingCoverClose@sda21(r13)
/* 80370D84 0036DCE4 38 00 00 00 */ li r0, 0
/* 80370D88 0036DCE8 38 83 60 00 */ addi r4, r3, 0xCC006000@l
/* 80370D8C 0036DCEC 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80370D90 0036DCF0 38 00 00 02 */ li r0, 2
/* 80370D94 0036DCF4 38 60 00 01 */ li r3, 1
/* 80370D98 0036DCF8 90 04 00 04 */ stw r0, 4(r4)
/* 80370D9C 0036DCFC 4E 80 00 20 */ blr
.global DVDLowReadDiskID
DVDLowReadDiskID:
/* 80370DA0 0036DD00 7C 08 02 A6 */ mflr r0
/* 80370DA4 0036DD04 39 00 00 00 */ li r8, 0
/* 80370DA8 0036DD08 90 01 00 04 */ stw r0, 4(r1)
/* 80370DAC 0036DD0C 3C A0 A8 00 */ lis r5, 0xA8000040@ha
/* 80370DB0 0036DD10 38 05 00 40 */ addi r0, r5, 0xA8000040@l
/* 80370DB4 0036DD14 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 80370DB8 0036DD18 38 C0 00 20 */ li r6, 0x20
/* 80370DBC 0036DD1C 3C A0 80 00 */ lis r5, 0x800000F8@ha
/* 80370DC0 0036DD20 93 E1 00 14 */ stw r31, 0x14(r1)
/* 80370DC4 0036DD24 93 C1 00 10 */ stw r30, 0x10(r1)
/* 80370DC8 0036DD28 90 8D AB B0 */ stw r4, Callback@sda21(r13)
/* 80370DCC 0036DD2C 3C 80 CC 00 */ lis r4, 0xCC006000@ha
/* 80370DD0 0036DD30 38 E4 60 00 */ addi r7, r4, 0xCC006000@l
/* 80370DD4 0036DD34 91 0D AB A8 */ stw r8, StopAtNextInt@sda21(r13)
/* 80370DD8 0036DD38 90 04 60 08 */ stw r0, 0x6008(r4)
/* 80370DDC 0036DD3C 3C 80 80 54 */ lis r4, AlarmForTimeout@ha
/* 80370DE0 0036DD40 38 00 00 03 */ li r0, 3
/* 80370DE4 0036DD44 91 07 00 0C */ stw r8, 0xc(r7)
/* 80370DE8 0036DD48 3B E4 0A E8 */ addi r31, r4, AlarmForTimeout@l
/* 80370DEC 0036DD4C 90 C7 00 10 */ stw r6, 0x10(r7)
/* 80370DF0 0036DD50 90 67 00 14 */ stw r3, 0x14(r7)
/* 80370DF4 0036DD54 7F E3 FB 78 */ mr r3, r31
/* 80370DF8 0036DD58 90 C7 00 18 */ stw r6, 0x18(r7)
/* 80370DFC 0036DD5C 90 07 00 1C */ stw r0, 0x1c(r7)
/* 80370E00 0036DD60 80 05 00 F8 */ lwz r0, 0x800000F8@l(r5)
/* 80370E04 0036DD64 54 00 F0 BE */ srwi r0, r0, 2
/* 80370E08 0036DD68 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80370E0C 0036DD6C 48 00 D2 A5 */ bl OSCreateAlarm
/* 80370E10 0036DD70 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370E14 0036DD74 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370E18 0036DD78 38 7F 00 00 */ addi r3, r31, 0
/* 80370E1C 0036DD7C 38 DE 00 00 */ addi r6, r30, 0
/* 80370E20 0036DD80 38 A0 00 00 */ li r5, 0
/* 80370E24 0036DD84 48 00 D4 ED */ bl OSSetAlarm
/* 80370E28 0036DD88 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 80370E2C 0036DD8C 38 60 00 01 */ li r3, 1
/* 80370E30 0036DD90 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 80370E34 0036DD94 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 80370E38 0036DD98 38 21 00 18 */ addi r1, r1, 0x18
/* 80370E3C 0036DD9C 7C 08 03 A6 */ mtlr r0
/* 80370E40 0036DDA0 4E 80 00 20 */ blr
.global DVDLowStopMotor
DVDLowStopMotor:
/* 80370E44 0036DDA4 7C 08 02 A6 */ mflr r0
/* 80370E48 0036DDA8 90 01 00 04 */ stw r0, 4(r1)
/* 80370E4C 0036DDAC 38 00 00 00 */ li r0, 0
/* 80370E50 0036DDB0 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 80370E54 0036DDB4 93 E1 00 14 */ stw r31, 0x14(r1)
/* 80370E58 0036DDB8 93 C1 00 10 */ stw r30, 0x10(r1)
/* 80370E5C 0036DDBC 90 6D AB B0 */ stw r3, Callback@sda21(r13)
/* 80370E60 0036DDC0 3C 60 CC 00 */ lis r3, 0xCC006000@ha
/* 80370E64 0036DDC4 38 83 60 00 */ addi r4, r3, 0xCC006000@l
/* 80370E68 0036DDC8 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80370E6C 0036DDCC 3C 00 E3 00 */ lis r0, 0xe300
/* 80370E70 0036DDD0 90 03 60 08 */ stw r0, 0x6008(r3)
/* 80370E74 0036DDD4 38 00 00 01 */ li r0, 1
/* 80370E78 0036DDD8 3C 60 80 54 */ lis r3, AlarmForTimeout@ha
/* 80370E7C 0036DDDC 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80370E80 0036DDE0 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 80370E84 0036DDE4 3B E3 0A E8 */ addi r31, r3, AlarmForTimeout@l
/* 80370E88 0036DDE8 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 80370E8C 0036DDEC 38 7F 00 00 */ addi r3, r31, 0
/* 80370E90 0036DDF0 54 00 F0 BE */ srwi r0, r0, 2
/* 80370E94 0036DDF4 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80370E98 0036DDF8 48 00 D2 19 */ bl OSCreateAlarm
/* 80370E9C 0036DDFC 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370EA0 0036DE00 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370EA4 0036DE04 38 7F 00 00 */ addi r3, r31, 0
/* 80370EA8 0036DE08 38 DE 00 00 */ addi r6, r30, 0
/* 80370EAC 0036DE0C 38 A0 00 00 */ li r5, 0
/* 80370EB0 0036DE10 48 00 D4 61 */ bl OSSetAlarm
/* 80370EB4 0036DE14 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 80370EB8 0036DE18 38 60 00 01 */ li r3, 1
/* 80370EBC 0036DE1C 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 80370EC0 0036DE20 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 80370EC4 0036DE24 38 21 00 18 */ addi r1, r1, 0x18
/* 80370EC8 0036DE28 7C 08 03 A6 */ mtlr r0
/* 80370ECC 0036DE2C 4E 80 00 20 */ blr
.global DVDLowRequestError
DVDLowRequestError:
/* 80370ED0 0036DE30 7C 08 02 A6 */ mflr r0
/* 80370ED4 0036DE34 90 01 00 04 */ stw r0, 4(r1)
/* 80370ED8 0036DE38 38 00 00 00 */ li r0, 0
/* 80370EDC 0036DE3C 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 80370EE0 0036DE40 93 E1 00 14 */ stw r31, 0x14(r1)
/* 80370EE4 0036DE44 93 C1 00 10 */ stw r30, 0x10(r1)
/* 80370EE8 0036DE48 90 6D AB B0 */ stw r3, Callback@sda21(r13)
/* 80370EEC 0036DE4C 3C 60 CC 00 */ lis r3, 0xCC006000@ha
/* 80370EF0 0036DE50 38 83 60 00 */ addi r4, r3, 0xCC006000@l
/* 80370EF4 0036DE54 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80370EF8 0036DE58 3C 00 E0 00 */ lis r0, 0xe000
/* 80370EFC 0036DE5C 90 03 60 08 */ stw r0, 0x6008(r3)
/* 80370F00 0036DE60 38 00 00 01 */ li r0, 1
/* 80370F04 0036DE64 3C 60 80 54 */ lis r3, AlarmForTimeout@ha
/* 80370F08 0036DE68 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80370F0C 0036DE6C 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 80370F10 0036DE70 3B E3 0A E8 */ addi r31, r3, AlarmForTimeout@l
/* 80370F14 0036DE74 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 80370F18 0036DE78 38 7F 00 00 */ addi r3, r31, 0
/* 80370F1C 0036DE7C 54 00 F0 BE */ srwi r0, r0, 2
/* 80370F20 0036DE80 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80370F24 0036DE84 48 00 D1 8D */ bl OSCreateAlarm
/* 80370F28 0036DE88 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370F2C 0036DE8C 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370F30 0036DE90 38 7F 00 00 */ addi r3, r31, 0
/* 80370F34 0036DE94 38 DE 00 00 */ addi r6, r30, 0
/* 80370F38 0036DE98 38 A0 00 00 */ li r5, 0
/* 80370F3C 0036DE9C 48 00 D3 D5 */ bl OSSetAlarm
/* 80370F40 0036DEA0 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 80370F44 0036DEA4 38 60 00 01 */ li r3, 1
/* 80370F48 0036DEA8 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 80370F4C 0036DEAC 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 80370F50 0036DEB0 38 21 00 18 */ addi r1, r1, 0x18
/* 80370F54 0036DEB4 7C 08 03 A6 */ mtlr r0
/* 80370F58 0036DEB8 4E 80 00 20 */ blr
.global DVDLowInquiry
DVDLowInquiry:
/* 80370F5C 0036DEBC 7C 08 02 A6 */ mflr r0
/* 80370F60 0036DEC0 38 C0 00 20 */ li r6, 0x20
/* 80370F64 0036DEC4 90 01 00 04 */ stw r0, 4(r1)
/* 80370F68 0036DEC8 38 00 00 00 */ li r0, 0
/* 80370F6C 0036DECC 3C A0 80 00 */ lis r5, 0x800000F8@ha
/* 80370F70 0036DED0 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 80370F74 0036DED4 93 E1 00 14 */ stw r31, 0x14(r1)
/* 80370F78 0036DED8 93 C1 00 10 */ stw r30, 0x10(r1)
/* 80370F7C 0036DEDC 90 8D AB B0 */ stw r4, Callback@sda21(r13)
/* 80370F80 0036DEE0 3C 80 CC 00 */ lis r4, 0xCC006000@ha
/* 80370F84 0036DEE4 38 E4 60 00 */ addi r7, r4, 0xCC006000@l
/* 80370F88 0036DEE8 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80370F8C 0036DEEC 3C 00 12 00 */ lis r0, 0x1200
/* 80370F90 0036DEF0 90 04 60 08 */ stw r0, 0x6008(r4)
/* 80370F94 0036DEF4 3C 80 80 54 */ lis r4, AlarmForTimeout@ha
/* 80370F98 0036DEF8 38 00 00 03 */ li r0, 3
/* 80370F9C 0036DEFC 90 C7 00 10 */ stw r6, 0x10(r7)
/* 80370FA0 0036DF00 3B E4 0A E8 */ addi r31, r4, AlarmForTimeout@l
/* 80370FA4 0036DF04 90 67 00 14 */ stw r3, 0x14(r7)
/* 80370FA8 0036DF08 38 7F 00 00 */ addi r3, r31, 0
/* 80370FAC 0036DF0C 90 C7 00 18 */ stw r6, 0x18(r7)
/* 80370FB0 0036DF10 90 07 00 1C */ stw r0, 0x1c(r7)
/* 80370FB4 0036DF14 80 05 00 F8 */ lwz r0, 0x800000F8@l(r5)
/* 80370FB8 0036DF18 54 00 F0 BE */ srwi r0, r0, 2
/* 80370FBC 0036DF1C 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80370FC0 0036DF20 48 00 D0 F1 */ bl OSCreateAlarm
/* 80370FC4 0036DF24 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80370FC8 0036DF28 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80370FCC 0036DF2C 38 7F 00 00 */ addi r3, r31, 0
/* 80370FD0 0036DF30 38 DE 00 00 */ addi r6, r30, 0
/* 80370FD4 0036DF34 38 A0 00 00 */ li r5, 0
/* 80370FD8 0036DF38 48 00 D3 39 */ bl OSSetAlarm
/* 80370FDC 0036DF3C 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 80370FE0 0036DF40 38 60 00 01 */ li r3, 1
/* 80370FE4 0036DF44 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 80370FE8 0036DF48 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 80370FEC 0036DF4C 38 21 00 18 */ addi r1, r1, 0x18
/* 80370FF0 0036DF50 7C 08 03 A6 */ mtlr r0
/* 80370FF4 0036DF54 4E 80 00 20 */ blr
.global DVDLowAudioStream
DVDLowAudioStream:
/* 80370FF8 0036DF58 7C 08 02 A6 */ mflr r0
/* 80370FFC 0036DF5C 90 01 00 04 */ stw r0, 4(r1)
/* 80371000 0036DF60 38 00 00 00 */ li r0, 0
/* 80371004 0036DF64 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80371008 0036DF68 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8037100C 0036DF6C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80371010 0036DF70 90 CD AB B0 */ stw r6, Callback@sda21(r13)
/* 80371014 0036DF74 3C C0 CC 00 */ lis r6, 0xCC006000@ha
/* 80371018 0036DF78 38 C6 60 00 */ addi r6, r6, 0xCC006000@l
/* 8037101C 0036DF7C 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80371020 0036DF80 64 60 E1 00 */ oris r0, r3, 0xe100
/* 80371024 0036DF84 3C 60 80 54 */ lis r3, AlarmForTimeout@ha
/* 80371028 0036DF88 90 06 00 08 */ stw r0, 8(r6)
/* 8037102C 0036DF8C 54 A0 F0 BE */ srwi r0, r5, 2
/* 80371030 0036DF90 3B E3 0A E8 */ addi r31, r3, AlarmForTimeout@l
/* 80371034 0036DF94 90 06 00 0C */ stw r0, 0xc(r6)
/* 80371038 0036DF98 38 00 00 01 */ li r0, 1
/* 8037103C 0036DF9C 38 7F 00 00 */ addi r3, r31, 0
/* 80371040 0036DFA0 90 86 00 10 */ stw r4, 0x10(r6)
/* 80371044 0036DFA4 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 80371048 0036DFA8 90 06 00 1C */ stw r0, 0x1c(r6)
/* 8037104C 0036DFAC 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 80371050 0036DFB0 54 00 F0 BE */ srwi r0, r0, 2
/* 80371054 0036DFB4 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80371058 0036DFB8 48 00 D0 59 */ bl OSCreateAlarm
/* 8037105C 0036DFBC 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80371060 0036DFC0 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 80371064 0036DFC4 38 7F 00 00 */ addi r3, r31, 0
/* 80371068 0036DFC8 38 DE 00 00 */ addi r6, r30, 0
/* 8037106C 0036DFCC 38 A0 00 00 */ li r5, 0
/* 80371070 0036DFD0 48 00 D2 A1 */ bl OSSetAlarm
/* 80371074 0036DFD4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80371078 0036DFD8 38 60 00 01 */ li r3, 1
/* 8037107C 0036DFDC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80371080 0036DFE0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80371084 0036DFE4 38 21 00 20 */ addi r1, r1, 0x20
/* 80371088 0036DFE8 7C 08 03 A6 */ mtlr r0
/* 8037108C 0036DFEC 4E 80 00 20 */ blr
.global DVDLowRequestAudioStatus
DVDLowRequestAudioStatus:
/* 80371090 0036DFF0 7C 08 02 A6 */ mflr r0
/* 80371094 0036DFF4 90 01 00 04 */ stw r0, 4(r1)
/* 80371098 0036DFF8 38 00 00 00 */ li r0, 0
/* 8037109C 0036DFFC 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 803710A0 0036E000 93 E1 00 14 */ stw r31, 0x14(r1)
/* 803710A4 0036E004 93 C1 00 10 */ stw r30, 0x10(r1)
/* 803710A8 0036E008 90 8D AB B0 */ stw r4, Callback@sda21(r13)
/* 803710AC 0036E00C 3C 80 CC 00 */ lis r4, 0xCC006000@ha
/* 803710B0 0036E010 38 84 60 00 */ addi r4, r4, 0xCC006000@l
/* 803710B4 0036E014 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 803710B8 0036E018 64 60 E2 00 */ oris r0, r3, 0xe200
/* 803710BC 0036E01C 3C 60 80 54 */ lis r3, AlarmForTimeout@ha
/* 803710C0 0036E020 90 04 00 08 */ stw r0, 8(r4)
/* 803710C4 0036E024 38 00 00 01 */ li r0, 1
/* 803710C8 0036E028 3B E3 0A E8 */ addi r31, r3, AlarmForTimeout@l
/* 803710CC 0036E02C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803710D0 0036E030 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 803710D4 0036E034 38 7F 00 00 */ addi r3, r31, 0
/* 803710D8 0036E038 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 803710DC 0036E03C 54 00 F0 BE */ srwi r0, r0, 2
/* 803710E0 0036E040 1F C0 00 0A */ mulli r30, r0, 0xa
/* 803710E4 0036E044 48 00 CF CD */ bl OSCreateAlarm
/* 803710E8 0036E048 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 803710EC 0036E04C 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 803710F0 0036E050 38 7F 00 00 */ addi r3, r31, 0
/* 803710F4 0036E054 38 DE 00 00 */ addi r6, r30, 0
/* 803710F8 0036E058 38 A0 00 00 */ li r5, 0
/* 803710FC 0036E05C 48 00 D2 15 */ bl OSSetAlarm
/* 80371100 0036E060 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 80371104 0036E064 38 60 00 01 */ li r3, 1
/* 80371108 0036E068 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 8037110C 0036E06C 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 80371110 0036E070 38 21 00 18 */ addi r1, r1, 0x18
/* 80371114 0036E074 7C 08 03 A6 */ mtlr r0
/* 80371118 0036E078 4E 80 00 20 */ blr
.global DVDLowAudioBufferConfig
DVDLowAudioBufferConfig:
/* 8037111C 0036E07C 7C 08 02 A6 */ mflr r0
/* 80371120 0036E080 2C 03 00 00 */ cmpwi r3, 0
/* 80371124 0036E084 90 01 00 04 */ stw r0, 4(r1)
/* 80371128 0036E088 38 00 00 00 */ li r0, 0
/* 8037112C 0036E08C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80371130 0036E090 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80371134 0036E094 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80371138 0036E098 90 AD AB B0 */ stw r5, Callback@sda21(r13)
/* 8037113C 0036E09C 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 80371140 0036E0A0 41 82 00 08 */ beq lbl_80371148
/* 80371144 0036E0A4 3C 00 00 01 */ lis r0, 1
lbl_80371148:
/* 80371148 0036E0A8 64 00 E4 00 */ oris r0, r0, 0xe400
/* 8037114C 0036E0AC 3C 60 CC 00 */ lis r3, 0xCC006000@ha
/* 80371150 0036E0B0 7C 80 03 78 */ or r0, r4, r0
/* 80371154 0036E0B4 38 63 60 00 */ addi r3, r3, 0xCC006000@l
/* 80371158 0036E0B8 90 03 00 08 */ stw r0, 8(r3)
/* 8037115C 0036E0BC 38 00 00 01 */ li r0, 1
/* 80371160 0036E0C0 3C 80 80 00 */ lis r4, 0x800000F8@ha
/* 80371164 0036E0C4 90 03 00 1C */ stw r0, 0x1c(r3)
/* 80371168 0036E0C8 3C 60 80 54 */ lis r3, AlarmForTimeout@ha
/* 8037116C 0036E0CC 3B E3 0A E8 */ addi r31, r3, AlarmForTimeout@l
/* 80371170 0036E0D0 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
/* 80371174 0036E0D4 38 7F 00 00 */ addi r3, r31, 0
/* 80371178 0036E0D8 54 00 F0 BE */ srwi r0, r0, 2
/* 8037117C 0036E0DC 1F C0 00 0A */ mulli r30, r0, 0xa
/* 80371180 0036E0E0 48 00 CF 31 */ bl OSCreateAlarm
/* 80371184 0036E0E4 3C 60 80 37 */ lis r3, AlarmHandlerForTimeout@ha
/* 80371188 0036E0E8 38 E3 08 48 */ addi r7, r3, AlarmHandlerForTimeout@l
/* 8037118C 0036E0EC 38 7F 00 00 */ addi r3, r31, 0
/* 80371190 0036E0F0 38 DE 00 00 */ addi r6, r30, 0
/* 80371194 0036E0F4 38 A0 00 00 */ li r5, 0
/* 80371198 0036E0F8 48 00 D1 79 */ bl OSSetAlarm
/* 8037119C 0036E0FC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803711A0 0036E100 38 60 00 01 */ li r3, 1
/* 803711A4 0036E104 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803711A8 0036E108 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803711AC 0036E10C 38 21 00 20 */ addi r1, r1, 0x20
/* 803711B0 0036E110 7C 08 03 A6 */ mtlr r0
/* 803711B4 0036E114 4E 80 00 20 */ blr
.global DVDLowReset
DVDLowReset:
/* 803711B8 0036E118 7C 08 02 A6 */ mflr r0
/* 803711BC 0036E11C 3C 80 CC 00 */ lis r4, 0xCC003000@ha
/* 803711C0 0036E120 90 01 00 04 */ stw r0, 4(r1)
/* 803711C4 0036E124 38 00 00 02 */ li r0, 2
/* 803711C8 0036E128 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803711CC 0036E12C BF 41 00 08 */ stmw r26, 8(r1)
/* 803711D0 0036E130 3B E4 30 00 */ addi r31, r4, 0xCC003000@l
/* 803711D4 0036E134 90 04 60 04 */ stw r0, 0x6004(r4)
/* 803711D8 0036E138 83 C4 30 24 */ lwz r30, 0x3024(r4)
/* 803711DC 0036E13C 57 C0 07 B8 */ rlwinm r0, r30, 0, 0x1e, 0x1c
/* 803711E0 0036E140 60 00 00 01 */ ori r0, r0, 1
/* 803711E4 0036E144 94 1F 00 24 */ stwu r0, 0x24(r31)
/* 803711E8 0036E148 48 01 41 E1 */ bl __OSGetSystemTime
/* 803711EC 0036E14C 3C A0 80 00 */ lis r5, 0x800000F8@ha
/* 803711F0 0036E150 80 05 00 F8 */ lwz r0, 0x800000F8@l(r5)
/* 803711F4 0036E154 3C A0 43 1C */ lis r5, 0x431BDE83@ha
/* 803711F8 0036E158 38 A5 DE 83 */ addi r5, r5, 0x431BDE83@l
/* 803711FC 0036E15C 54 00 F0 BE */ srwi r0, r0, 2
/* 80371200 0036E160 7C 05 00 16 */ mulhwu r0, r5, r0
/* 80371204 0036E164 54 00 8B FE */ srwi r0, r0, 0xf
/* 80371208 0036E168 1C 00 00 0C */ mulli r0, r0, 0xc
/* 8037120C 0036E16C 3B 44 00 00 */ addi r26, r4, 0
/* 80371210 0036E170 3B 63 00 00 */ addi r27, r3, 0
/* 80371214 0036E174 54 1C E8 FE */ srwi r28, r0, 3
/* 80371218 0036E178 3B A0 00 00 */ li r29, 0
lbl_8037121C:
/* 8037121C 0036E17C 48 01 41 AD */ bl __OSGetSystemTime
/* 80371220 0036E180 7C BA 20 10 */ subfc r5, r26, r4
/* 80371224 0036E184 7C 1B 19 10 */ subfe r0, r27, r3
/* 80371228 0036E188 6C 04 80 00 */ xoris r4, r0, 0x8000
/* 8037122C 0036E18C 6F A3 80 00 */ xoris r3, r29, 0x8000
/* 80371230 0036E190 7C 1C 28 10 */ subfc r0, r28, r5
/* 80371234 0036E194 7C 63 21 10 */ subfe r3, r3, r4
/* 80371238 0036E198 7C 64 21 10 */ subfe r3, r4, r4
/* 8037123C 0036E19C 7C 63 00 D1 */ neg. r3, r3
/* 80371240 0036E1A0 40 82 FF DC */ bne lbl_8037121C
/* 80371244 0036E1A4 63 C0 00 05 */ ori r0, r30, 5
/* 80371248 0036E1A8 90 1F 00 00 */ stw r0, 0(r31)
/* 8037124C 0036E1AC 38 00 00 01 */ li r0, 1
/* 80371250 0036E1B0 90 0D AB C0 */ stw r0, ResetOccurred@sda21(r13)
/* 80371254 0036E1B4 48 01 41 75 */ bl __OSGetSystemTime
/* 80371258 0036E1B8 90 8D AB BC */ stw r4, LastResetEnd+4@sda21(r13)
/* 8037125C 0036E1BC 90 6D AB B8 */ stw r3, LastResetEnd@sda21(r13)
/* 80371260 0036E1C0 BB 41 00 08 */ lmw r26, 8(r1)
/* 80371264 0036E1C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80371268 0036E1C8 38 21 00 20 */ addi r1, r1, 0x20
/* 8037126C 0036E1CC 7C 08 03 A6 */ mtlr r0
/* 80371270 0036E1D0 4E 80 00 20 */ blr
.global DVDLowBreak
DVDLowBreak:
/* 80371274 0036E1D4 38 00 00 01 */ li r0, 1
/* 80371278 0036E1D8 90 0D AB A8 */ stw r0, StopAtNextInt@sda21(r13)
/* 8037127C 0036E1DC 38 60 00 01 */ li r3, 1
/* 80371280 0036E1E0 90 0D AB C8 */ stw r0, Breaking@sda21(r13)
/* 80371284 0036E1E4 4E 80 00 20 */ blr
.global DVDLowClearCallback
DVDLowClearCallback:
/* 80371288 0036E1E8 3C 60 CC 00 */ lis r3, 0xCC006004@ha
/* 8037128C 0036E1EC 38 00 00 00 */ li r0, 0
/* 80371290 0036E1F0 90 03 60 04 */ stw r0, 0xCC006004@l(r3)
/* 80371294 0036E1F4 80 6D AB B0 */ lwz r3, Callback@sda21(r13)
/* 80371298 0036E1F8 90 0D AB B0 */ stw r0, Callback@sda21(r13)
/* 8037129C 0036E1FC 4E 80 00 20 */ blr
.global __DVDLowSetWAType
__DVDLowSetWAType:
/* 803712A0 0036E200 7C 08 02 A6 */ mflr r0
/* 803712A4 0036E204 90 01 00 04 */ stw r0, 4(r1)
/* 803712A8 0036E208 94 21 FF E8 */ stwu r1, -0x18(r1)
/* 803712AC 0036E20C 93 E1 00 14 */ stw r31, 0x14(r1)
/* 803712B0 0036E210 3B E4 00 00 */ addi r31, r4, 0
/* 803712B4 0036E214 93 C1 00 10 */ stw r30, 0x10(r1)
/* 803712B8 0036E218 3B C3 00 00 */ addi r30, r3, 0
/* 803712BC 0036E21C 48 01 03 A5 */ bl OSDisableInterrupts
/* 803712C0 0036E220 93 CD AB CC */ stw r30, WorkAroundType@sda21(r13)
/* 803712C4 0036E224 93 ED AB D0 */ stw r31, WorkAroundSeekLocation@sda21(r13)
/* 803712C8 0036E228 48 01 03 C1 */ bl OSRestoreInterrupts
/* 803712CC 0036E22C 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 803712D0 0036E230 83 E1 00 14 */ lwz r31, 0x14(r1)
/* 803712D4 0036E234 83 C1 00 10 */ lwz r30, 0x10(r1)
/* 803712D8 0036E238 38 21 00 18 */ addi r1, r1, 0x18
/* 803712DC 0036E23C 7C 08 03 A6 */ mtlr r0
/* 803712E0 0036E240 4E 80 00 20 */ blr