summaryrefslogtreecommitdiff
path: root/asm/SDK
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK')
-rw-r--r--asm/SDK/ARC/arc.s404
-rw-r--r--asm/SDK/DVD/dvdFatal.s6
-rw-r--r--asm/SDK/HBM/HBMRemoteSpk.s12
-rw-r--r--asm/SDK/OS/OSReset.s2
-rw-r--r--asm/SDK/SC/scapi.s363
-rw-r--r--asm/SDK/SC/scapi_prdinfo.s200
-rw-r--r--asm/SDK/VI/vi.s6
-rw-r--r--asm/SDK/WENC/wenc.s202
-rw-r--r--asm/SDK/WPAD/WPAD.s22
-rw-r--r--asm/SDK/WUD/WUD.s8
10 files changed, 1197 insertions, 28 deletions
diff --git a/asm/SDK/ARC/arc.s b/asm/SDK/ARC/arc.s
new file mode 100644
index 0000000..8a7a0f1
--- /dev/null
+++ b/asm/SDK/ARC/arc.s
@@ -0,0 +1,404 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global ARCInitHandle
+ARCInitHandle:
+/* 802ECCF8 002E8958 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802ECCFC 002E895C 7C 08 02 A6 */ mflr r0
+/* 802ECD00 002E8960 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802ECD04 002E8964 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802ECD08 002E8968 7C 9F 23 78 */ mr r31, r4
+/* 802ECD0C 002E896C 93 C1 00 08 */ stw r30, 8(r1)
+/* 802ECD10 002E8970 7C 7E 1B 78 */ mr r30, r3
+/* 802ECD14 002E8974 80 A3 00 00 */ lwz r5, 0(r3)
+/* 802ECD18 002E8978 3C 05 AA 56 */ addis r0, r5, 0xaa56
+/* 802ECD1C 002E897C 28 00 38 2D */ cmplwi r0, 0x382d
+/* 802ECD20 002E8980 41 82 00 1C */ beq lbl_802ECD3C
+/* 802ECD24 002E8984 3C A0 80 44 */ lis r5, lbl_80445A80@ha
+/* 802ECD28 002E8988 38 6D 8B E0 */ addi r3, r13, lbl_8063DEA0-_SDA_BASE_
+/* 802ECD2C 002E898C 38 A5 5A 80 */ addi r5, r5, lbl_80445A80@l
+/* 802ECD30 002E8990 38 80 00 4A */ li r4, 0x4a
+/* 802ECD34 002E8994 4C C6 31 82 */ crclr 6
+/* 802ECD38 002E8998 4B F7 E7 65 */ bl OSPanic
+lbl_802ECD3C:
+/* 802ECD3C 002E899C 93 DF 00 00 */ stw r30, 0(r31)
+/* 802ECD40 002E89A0 38 00 00 00 */ li r0, 0
+/* 802ECD44 002E89A4 38 60 00 01 */ li r3, 1
+/* 802ECD48 002E89A8 80 9E 00 04 */ lwz r4, 4(r30)
+/* 802ECD4C 002E89AC 7C DE 22 14 */ add r6, r30, r4
+/* 802ECD50 002E89B0 90 DF 00 04 */ stw r6, 4(r31)
+/* 802ECD54 002E89B4 80 9E 00 0C */ lwz r4, 0xc(r30)
+/* 802ECD58 002E89B8 7C 9E 22 14 */ add r4, r30, r4
+/* 802ECD5C 002E89BC 90 9F 00 08 */ stw r4, 8(r31)
+/* 802ECD60 002E89C0 80 A6 00 08 */ lwz r5, 8(r6)
+/* 802ECD64 002E89C4 1C 85 00 0C */ mulli r4, r5, 0xc
+/* 802ECD68 002E89C8 90 BF 00 0C */ stw r5, 0xc(r31)
+/* 802ECD6C 002E89CC 7C 86 22 14 */ add r4, r6, r4
+/* 802ECD70 002E89D0 90 9F 00 10 */ stw r4, 0x10(r31)
+/* 802ECD74 002E89D4 80 9E 00 08 */ lwz r4, 8(r30)
+/* 802ECD78 002E89D8 90 9F 00 14 */ stw r4, 0x14(r31)
+/* 802ECD7C 002E89DC 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 802ECD80 002E89E0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802ECD84 002E89E4 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802ECD88 002E89E8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802ECD8C 002E89EC 7C 08 03 A6 */ mtlr r0
+/* 802ECD90 002E89F0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802ECD94 002E89F4 4E 80 00 20 */ blr
+
+.global ARCFastOpen
+ARCFastOpen:
+/* 802ECD98 002E89F8 2C 04 00 00 */ cmpwi r4, 0
+/* 802ECD9C 002E89FC 80 C3 00 04 */ lwz r6, 4(r3)
+/* 802ECDA0 002E8A00 41 80 00 20 */ blt lbl_802ECDC0
+/* 802ECDA4 002E8A04 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802ECDA8 002E8A08 7C 04 00 40 */ cmplw r4, r0
+/* 802ECDAC 002E8A0C 40 80 00 14 */ bge lbl_802ECDC0
+/* 802ECDB0 002E8A10 1C 84 00 0C */ mulli r4, r4, 0xc
+/* 802ECDB4 002E8A14 7C 06 20 2E */ lwzx r0, r6, r4
+/* 802ECDB8 002E8A18 54 00 00 0F */ rlwinm. r0, r0, 0, 0, 7
+/* 802ECDBC 002E8A1C 41 82 00 0C */ beq lbl_802ECDC8
+lbl_802ECDC0:
+/* 802ECDC0 002E8A20 38 60 00 00 */ li r3, 0
+/* 802ECDC4 002E8A24 4E 80 00 20 */ blr
+lbl_802ECDC8:
+/* 802ECDC8 002E8A28 90 65 00 00 */ stw r3, 0(r5)
+/* 802ECDCC 002E8A2C 7C 86 22 14 */ add r4, r6, r4
+/* 802ECDD0 002E8A30 38 60 00 01 */ li r3, 1
+/* 802ECDD4 002E8A34 80 04 00 04 */ lwz r0, 4(r4)
+/* 802ECDD8 002E8A38 90 05 00 04 */ stw r0, 4(r5)
+/* 802ECDDC 002E8A3C 80 04 00 08 */ lwz r0, 8(r4)
+/* 802ECDE0 002E8A40 90 05 00 08 */ stw r0, 8(r5)
+/* 802ECDE4 002E8A44 4E 80 00 20 */ blr
+
+.global ARCConvertPathToEntrynum
+ARCConvertPathToEntrynum:
+/* 802ECDE8 002E8A48 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802ECDEC 002E8A4C 3C A0 80 42 */ lis r5, lbl_80422D48@ha
+/* 802ECDF0 002E8A50 38 A5 2D 48 */ addi r5, r5, lbl_80422D48@l
+/* 802ECDF4 002E8A54 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802ECDF8 002E8A58 93 C1 00 08 */ stw r30, 8(r1)
+/* 802ECDFC 002E8A5C 81 03 00 18 */ lwz r8, 0x18(r3)
+/* 802ECE00 002E8A60 81 23 00 04 */ lwz r9, 4(r3)
+/* 802ECE04 002E8A64 80 C5 00 38 */ lwz r6, 0x38(r5)
+lbl_802ECE08:
+/* 802ECE08 002E8A68 88 04 00 00 */ lbz r0, 0(r4)
+/* 802ECE0C 002E8A6C 7C 00 07 75 */ extsb. r0, r0
+/* 802ECE10 002E8A70 40 82 00 0C */ bne lbl_802ECE1C
+/* 802ECE14 002E8A74 7D 03 43 78 */ mr r3, r8
+/* 802ECE18 002E8A78 48 00 02 24 */ b lbl_802ED03C
+lbl_802ECE1C:
+/* 802ECE1C 002E8A7C 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802ECE20 002E8A80 40 82 00 10 */ bne lbl_802ECE30
+/* 802ECE24 002E8A84 39 00 00 00 */ li r8, 0
+/* 802ECE28 002E8A88 38 84 00 01 */ addi r4, r4, 1
+/* 802ECE2C 002E8A8C 4B FF FF DC */ b lbl_802ECE08
+lbl_802ECE30:
+/* 802ECE30 002E8A90 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 802ECE34 002E8A94 40 82 00 70 */ bne lbl_802ECEA4
+/* 802ECE38 002E8A98 88 04 00 01 */ lbz r0, 1(r4)
+/* 802ECE3C 002E8A9C 7C 00 07 74 */ extsb r0, r0
+/* 802ECE40 002E8AA0 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 802ECE44 002E8AA4 40 82 00 40 */ bne lbl_802ECE84
+/* 802ECE48 002E8AA8 88 04 00 02 */ lbz r0, 2(r4)
+/* 802ECE4C 002E8AAC 7C 00 07 74 */ extsb r0, r0
+/* 802ECE50 002E8AB0 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802ECE54 002E8AB4 40 82 00 18 */ bne lbl_802ECE6C
+/* 802ECE58 002E8AB8 1C 08 00 0C */ mulli r0, r8, 0xc
+/* 802ECE5C 002E8ABC 38 84 00 03 */ addi r4, r4, 3
+/* 802ECE60 002E8AC0 7C A9 02 14 */ add r5, r9, r0
+/* 802ECE64 002E8AC4 81 05 00 04 */ lwz r8, 4(r5)
+/* 802ECE68 002E8AC8 4B FF FF A0 */ b lbl_802ECE08
+lbl_802ECE6C:
+/* 802ECE6C 002E8ACC 2C 00 00 00 */ cmpwi r0, 0
+/* 802ECE70 002E8AD0 40 82 00 34 */ bne lbl_802ECEA4
+/* 802ECE74 002E8AD4 1C 08 00 0C */ mulli r0, r8, 0xc
+/* 802ECE78 002E8AD8 7C 69 02 14 */ add r3, r9, r0
+/* 802ECE7C 002E8ADC 80 63 00 04 */ lwz r3, 4(r3)
+/* 802ECE80 002E8AE0 48 00 01 BC */ b lbl_802ED03C
+lbl_802ECE84:
+/* 802ECE84 002E8AE4 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802ECE88 002E8AE8 40 82 00 0C */ bne lbl_802ECE94
+/* 802ECE8C 002E8AEC 38 84 00 02 */ addi r4, r4, 2
+/* 802ECE90 002E8AF0 4B FF FF 78 */ b lbl_802ECE08
+lbl_802ECE94:
+/* 802ECE94 002E8AF4 2C 00 00 00 */ cmpwi r0, 0
+/* 802ECE98 002E8AF8 40 82 00 0C */ bne lbl_802ECEA4
+/* 802ECE9C 002E8AFC 7D 03 43 78 */ mr r3, r8
+/* 802ECEA0 002E8B00 48 00 01 9C */ b lbl_802ED03C
+lbl_802ECEA4:
+/* 802ECEA4 002E8B04 7C 87 23 78 */ mr r7, r4
+/* 802ECEA8 002E8B08 48 00 00 08 */ b lbl_802ECEB0
+lbl_802ECEAC:
+/* 802ECEAC 002E8B0C 38 E7 00 01 */ addi r7, r7, 1
+lbl_802ECEB0:
+/* 802ECEB0 002E8B10 88 A7 00 00 */ lbz r5, 0(r7)
+/* 802ECEB4 002E8B14 7C A0 07 75 */ extsb. r0, r5
+/* 802ECEB8 002E8B18 41 82 00 0C */ beq lbl_802ECEC4
+/* 802ECEBC 002E8B1C 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802ECEC0 002E8B20 40 82 FF EC */ bne lbl_802ECEAC
+lbl_802ECEC4:
+/* 802ECEC4 002E8B24 1C 08 00 0C */ mulli r0, r8, 0xc
+/* 802ECEC8 002E8B28 7C AB 07 74 */ extsb r11, r5
+/* 802ECECC 002E8B2C 7C E4 38 50 */ subf r7, r4, r7
+/* 802ECED0 002E8B30 7D 4B 00 D0 */ neg r10, r11
+/* 802ECED4 002E8B34 7C A9 02 14 */ add r5, r9, r0
+/* 802ECED8 002E8B38 39 08 00 01 */ addi r8, r8, 1
+/* 802ECEDC 002E8B3C 7D 40 5B 78 */ or r0, r10, r11
+/* 802ECEE0 002E8B40 80 A5 00 08 */ lwz r5, 8(r5)
+/* 802ECEE4 002E8B44 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 802ECEE8 002E8B48 48 00 01 28 */ b lbl_802ED010
+lbl_802ECEEC:
+/* 802ECEEC 002E8B4C 1D 48 00 0C */ mulli r10, r8, 0xc
+/* 802ECEF0 002E8B50 7D 89 52 14 */ add r12, r9, r10
+lbl_802ECEF4:
+/* 802ECEF4 002E8B54 83 EC 00 00 */ lwz r31, 0(r12)
+/* 802ECEF8 002E8B58 57 EA 00 0F */ rlwinm. r10, r31, 0, 0, 7
+/* 802ECEFC 002E8B5C 40 82 00 0C */ bne lbl_802ECF08
+/* 802ECF00 002E8B60 2C 00 00 01 */ cmpwi r0, 1
+/* 802ECF04 002E8B64 41 82 00 EC */ beq lbl_802ECFF0
+lbl_802ECF08:
+/* 802ECF08 002E8B68 81 63 00 10 */ lwz r11, 0x10(r3)
+/* 802ECF0C 002E8B6C 57 EA 02 3E */ clrlwi r10, r31, 8
+/* 802ECF10 002E8B70 7F CB 52 14 */ add r30, r11, r10
+/* 802ECF14 002E8B74 7D 4B 50 AE */ lbzx r10, r11, r10
+/* 802ECF18 002E8B78 2C 0A 00 2E */ cmpwi r10, 0x2e
+/* 802ECF1C 002E8B7C 40 82 00 1C */ bne lbl_802ECF38
+/* 802ECF20 002E8B80 89 5E 00 01 */ lbz r10, 1(r30)
+/* 802ECF24 002E8B84 7D 4A 07 75 */ extsb. r10, r10
+/* 802ECF28 002E8B88 40 82 00 10 */ bne lbl_802ECF38
+/* 802ECF2C 002E8B8C 39 8C 00 0C */ addi r12, r12, 0xc
+/* 802ECF30 002E8B90 39 08 00 01 */ addi r8, r8, 1
+/* 802ECF34 002E8B94 4B FF FF C0 */ b lbl_802ECEF4
+lbl_802ECF38:
+/* 802ECF38 002E8B98 7C 8C 23 78 */ mr r12, r4
+/* 802ECF3C 002E8B9C 48 00 00 7C */ b lbl_802ECFB8
+lbl_802ECF40:
+/* 802ECF40 002E8BA0 89 7E 00 00 */ lbz r11, 0(r30)
+/* 802ECF44 002E8BA4 39 40 00 00 */ li r10, 0
+/* 802ECF48 002E8BA8 3B DE 00 01 */ addi r30, r30, 1
+/* 802ECF4C 002E8BAC 7D 7F 07 75 */ extsb. r31, r11
+/* 802ECF50 002E8BB0 41 80 00 0C */ blt lbl_802ECF5C
+/* 802ECF54 002E8BB4 2C 1F 01 00 */ cmpwi r31, 0x100
+/* 802ECF58 002E8BB8 41 80 00 08 */ blt lbl_802ECF60
+lbl_802ECF5C:
+/* 802ECF5C 002E8BBC 39 40 00 01 */ li r10, 1
+lbl_802ECF60:
+/* 802ECF60 002E8BC0 2C 0A 00 00 */ cmpwi r10, 0
+/* 802ECF64 002E8BC4 41 82 00 08 */ beq lbl_802ECF6C
+/* 802ECF68 002E8BC8 48 00 00 0C */ b lbl_802ECF74
+lbl_802ECF6C:
+/* 802ECF6C 002E8BCC 81 46 00 10 */ lwz r10, 0x10(r6)
+/* 802ECF70 002E8BD0 7F EA F8 AE */ lbzx r31, r10, r31
+lbl_802ECF74:
+/* 802ECF74 002E8BD4 89 6C 00 00 */ lbz r11, 0(r12)
+/* 802ECF78 002E8BD8 39 40 00 00 */ li r10, 0
+/* 802ECF7C 002E8BDC 39 8C 00 01 */ addi r12, r12, 1
+/* 802ECF80 002E8BE0 7D 6B 07 75 */ extsb. r11, r11
+/* 802ECF84 002E8BE4 41 80 00 0C */ blt lbl_802ECF90
+/* 802ECF88 002E8BE8 2C 0B 01 00 */ cmpwi r11, 0x100
+/* 802ECF8C 002E8BEC 41 80 00 08 */ blt lbl_802ECF94
+lbl_802ECF90:
+/* 802ECF90 002E8BF0 39 40 00 01 */ li r10, 1
+lbl_802ECF94:
+/* 802ECF94 002E8BF4 2C 0A 00 00 */ cmpwi r10, 0
+/* 802ECF98 002E8BF8 41 82 00 08 */ beq lbl_802ECFA0
+/* 802ECF9C 002E8BFC 48 00 00 0C */ b lbl_802ECFA8
+lbl_802ECFA0:
+/* 802ECFA0 002E8C00 81 46 00 10 */ lwz r10, 0x10(r6)
+/* 802ECFA4 002E8C04 7D 6A 58 AE */ lbzx r11, r10, r11
+lbl_802ECFA8:
+/* 802ECFA8 002E8C08 7C 0B F8 00 */ cmpw r11, r31
+/* 802ECFAC 002E8C0C 41 82 00 0C */ beq lbl_802ECFB8
+/* 802ECFB0 002E8C10 39 40 00 00 */ li r10, 0
+/* 802ECFB4 002E8C14 48 00 00 34 */ b lbl_802ECFE8
+lbl_802ECFB8:
+/* 802ECFB8 002E8C18 89 5E 00 00 */ lbz r10, 0(r30)
+/* 802ECFBC 002E8C1C 7D 4A 07 75 */ extsb. r10, r10
+/* 802ECFC0 002E8C20 40 82 FF 80 */ bne lbl_802ECF40
+/* 802ECFC4 002E8C24 89 4C 00 00 */ lbz r10, 0(r12)
+/* 802ECFC8 002E8C28 7D 4A 07 74 */ extsb r10, r10
+/* 802ECFCC 002E8C2C 2C 0A 00 2F */ cmpwi r10, 0x2f
+/* 802ECFD0 002E8C30 41 82 00 0C */ beq lbl_802ECFDC
+/* 802ECFD4 002E8C34 2C 0A 00 00 */ cmpwi r10, 0
+/* 802ECFD8 002E8C38 40 82 00 0C */ bne lbl_802ECFE4
+lbl_802ECFDC:
+/* 802ECFDC 002E8C3C 39 40 00 01 */ li r10, 1
+/* 802ECFE0 002E8C40 48 00 00 08 */ b lbl_802ECFE8
+lbl_802ECFE4:
+/* 802ECFE4 002E8C44 39 40 00 00 */ li r10, 0
+lbl_802ECFE8:
+/* 802ECFE8 002E8C48 2C 0A 00 01 */ cmpwi r10, 1
+/* 802ECFEC 002E8C4C 41 82 00 34 */ beq lbl_802ED020
+lbl_802ECFF0:
+/* 802ECFF0 002E8C50 1D 48 00 0C */ mulli r10, r8, 0xc
+/* 802ECFF4 002E8C54 7D 69 52 14 */ add r11, r9, r10
+/* 802ECFF8 002E8C58 7D 49 50 2E */ lwzx r10, r9, r10
+/* 802ECFFC 002E8C5C 55 4A 00 0F */ rlwinm. r10, r10, 0, 0, 7
+/* 802ED000 002E8C60 41 82 00 0C */ beq lbl_802ED00C
+/* 802ED004 002E8C64 81 0B 00 08 */ lwz r8, 8(r11)
+/* 802ED008 002E8C68 48 00 00 08 */ b lbl_802ED010
+lbl_802ED00C:
+/* 802ED00C 002E8C6C 39 08 00 01 */ addi r8, r8, 1
+lbl_802ED010:
+/* 802ED010 002E8C70 7C 08 28 40 */ cmplw r8, r5
+/* 802ED014 002E8C74 41 80 FE D8 */ blt lbl_802ECEEC
+/* 802ED018 002E8C78 38 60 FF FF */ li r3, -1
+/* 802ED01C 002E8C7C 48 00 00 20 */ b lbl_802ED03C
+lbl_802ED020:
+/* 802ED020 002E8C80 2C 00 00 00 */ cmpwi r0, 0
+/* 802ED024 002E8C84 40 82 00 0C */ bne lbl_802ED030
+/* 802ED028 002E8C88 7D 03 43 78 */ mr r3, r8
+/* 802ED02C 002E8C8C 48 00 00 10 */ b lbl_802ED03C
+lbl_802ED030:
+/* 802ED030 002E8C90 7C 87 22 14 */ add r4, r7, r4
+/* 802ED034 002E8C94 38 84 00 01 */ addi r4, r4, 1
+/* 802ED038 002E8C98 4B FF FD D0 */ b lbl_802ECE08
+lbl_802ED03C:
+/* 802ED03C 002E8C9C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802ED040 002E8CA0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802ED044 002E8CA4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802ED048 002E8CA8 4E 80 00 20 */ blr
+
+.global ARCGetStartAddrInMem
+ARCGetStartAddrInMem:
+/* 802ED04C 002E8CAC 80 83 00 00 */ lwz r4, 0(r3)
+/* 802ED050 002E8CB0 80 03 00 04 */ lwz r0, 4(r3)
+/* 802ED054 002E8CB4 80 64 00 00 */ lwz r3, 0(r4)
+/* 802ED058 002E8CB8 7C 63 02 14 */ add r3, r3, r0
+/* 802ED05C 002E8CBC 4E 80 00 20 */ blr
+
+.global ARCGetLength
+ARCGetLength:
+/* 802ED060 002E8CC0 80 63 00 08 */ lwz r3, 8(r3)
+/* 802ED064 002E8CC4 4E 80 00 20 */ blr
+
+.global ARCClose
+ARCClose:
+/* 802ED068 002E8CC8 38 60 00 01 */ li r3, 1
+/* 802ED06C 002E8CCC 4E 80 00 20 */ blr
+
+.global ARCChangeDir
+ARCChangeDir:
+/* 802ED070 002E8CD0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802ED074 002E8CD4 7C 08 02 A6 */ mflr r0
+/* 802ED078 002E8CD8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802ED07C 002E8CDC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802ED080 002E8CE0 7C 7F 1B 78 */ mr r31, r3
+/* 802ED084 002E8CE4 4B FF FD 65 */ bl ARCConvertPathToEntrynum
+/* 802ED088 002E8CE8 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED08C 002E8CEC 80 9F 00 04 */ lwz r4, 4(r31)
+/* 802ED090 002E8CF0 41 80 00 14 */ blt lbl_802ED0A4
+/* 802ED094 002E8CF4 1C 03 00 0C */ mulli r0, r3, 0xc
+/* 802ED098 002E8CF8 7C 04 00 2E */ lwzx r0, r4, r0
+/* 802ED09C 002E8CFC 54 00 00 0F */ rlwinm. r0, r0, 0, 0, 7
+/* 802ED0A0 002E8D00 40 82 00 0C */ bne lbl_802ED0AC
+lbl_802ED0A4:
+/* 802ED0A4 002E8D04 38 60 00 00 */ li r3, 0
+/* 802ED0A8 002E8D08 48 00 00 0C */ b lbl_802ED0B4
+lbl_802ED0AC:
+/* 802ED0AC 002E8D0C 90 7F 00 18 */ stw r3, 0x18(r31)
+/* 802ED0B0 002E8D10 38 60 00 01 */ li r3, 1
+lbl_802ED0B4:
+/* 802ED0B4 002E8D14 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802ED0B8 002E8D18 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802ED0BC 002E8D1C 7C 08 03 A6 */ mtlr r0
+/* 802ED0C0 002E8D20 38 21 00 10 */ addi r1, r1, 0x10
+/* 802ED0C4 002E8D24 4E 80 00 20 */ blr
+
+.global ARCOpenDir
+ARCOpenDir:
+/* 802ED0C8 002E8D28 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802ED0CC 002E8D2C 7C 08 02 A6 */ mflr r0
+/* 802ED0D0 002E8D30 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802ED0D4 002E8D34 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802ED0D8 002E8D38 7C BF 2B 78 */ mr r31, r5
+/* 802ED0DC 002E8D3C 93 C1 00 08 */ stw r30, 8(r1)
+/* 802ED0E0 002E8D40 7C 7E 1B 78 */ mr r30, r3
+/* 802ED0E4 002E8D44 4B FF FD 05 */ bl ARCConvertPathToEntrynum
+/* 802ED0E8 002E8D48 2C 03 00 00 */ cmpwi r3, 0
+/* 802ED0EC 002E8D4C 80 BE 00 04 */ lwz r5, 4(r30)
+/* 802ED0F0 002E8D50 41 80 00 14 */ blt lbl_802ED104
+/* 802ED0F4 002E8D54 1C 83 00 0C */ mulli r4, r3, 0xc
+/* 802ED0F8 002E8D58 7C 05 20 2E */ lwzx r0, r5, r4
+/* 802ED0FC 002E8D5C 54 00 00 0F */ rlwinm. r0, r0, 0, 0, 7
+/* 802ED100 002E8D60 40 82 00 0C */ bne lbl_802ED10C
+lbl_802ED104:
+/* 802ED104 002E8D64 38 60 00 00 */ li r3, 0
+/* 802ED108 002E8D68 48 00 00 24 */ b lbl_802ED12C
+lbl_802ED10C:
+/* 802ED10C 002E8D6C 38 03 00 01 */ addi r0, r3, 1
+/* 802ED110 002E8D70 90 7F 00 04 */ stw r3, 4(r31)
+/* 802ED114 002E8D74 7C 85 22 14 */ add r4, r5, r4
+/* 802ED118 002E8D78 38 60 00 01 */ li r3, 1
+/* 802ED11C 002E8D7C 93 DF 00 00 */ stw r30, 0(r31)
+/* 802ED120 002E8D80 90 1F 00 08 */ stw r0, 8(r31)
+/* 802ED124 002E8D84 80 04 00 08 */ lwz r0, 8(r4)
+/* 802ED128 002E8D88 90 1F 00 0C */ stw r0, 0xc(r31)
+lbl_802ED12C:
+/* 802ED12C 002E8D8C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802ED130 002E8D90 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802ED134 002E8D94 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802ED138 002E8D98 7C 08 03 A6 */ mtlr r0
+/* 802ED13C 002E8D9C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802ED140 002E8DA0 4E 80 00 20 */ blr
+
+.global ARCReadDir
+ARCReadDir:
+/* 802ED144 002E8DA4 80 E3 00 08 */ lwz r7, 8(r3)
+/* 802ED148 002E8DA8 81 23 00 00 */ lwz r9, 0(r3)
+/* 802ED14C 002E8DAC 1C 07 00 0C */ mulli r0, r7, 0xc
+/* 802ED150 002E8DB0 81 09 00 04 */ lwz r8, 4(r9)
+/* 802ED154 002E8DB4 7C C8 02 14 */ add r6, r8, r0
+lbl_802ED158:
+/* 802ED158 002E8DB8 80 03 00 04 */ lwz r0, 4(r3)
+/* 802ED15C 002E8DBC 7C 07 00 40 */ cmplw r7, r0
+/* 802ED160 002E8DC0 40 81 00 10 */ ble lbl_802ED170
+/* 802ED164 002E8DC4 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802ED168 002E8DC8 7C 00 38 40 */ cmplw r0, r7
+/* 802ED16C 002E8DCC 41 81 00 0C */ bgt lbl_802ED178
+lbl_802ED170:
+/* 802ED170 002E8DD0 38 60 00 00 */ li r3, 0
+/* 802ED174 002E8DD4 4E 80 00 20 */ blr
+lbl_802ED178:
+/* 802ED178 002E8DD8 91 24 00 00 */ stw r9, 0(r4)
+/* 802ED17C 002E8DDC 90 E4 00 04 */ stw r7, 4(r4)
+/* 802ED180 002E8DE0 80 06 00 00 */ lwz r0, 0(r6)
+/* 802ED184 002E8DE4 54 05 00 0E */ rlwinm r5, r0, 0, 0, 7
+/* 802ED188 002E8DE8 7C 05 00 D0 */ neg r0, r5
+/* 802ED18C 002E8DEC 7C 00 2B 78 */ or r0, r0, r5
+/* 802ED190 002E8DF0 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 802ED194 002E8DF4 90 04 00 08 */ stw r0, 8(r4)
+/* 802ED198 002E8DF8 80 06 00 00 */ lwz r0, 0(r6)
+/* 802ED19C 002E8DFC 80 A9 00 10 */ lwz r5, 0x10(r9)
+/* 802ED1A0 002E8E00 54 00 02 3E */ clrlwi r0, r0, 8
+/* 802ED1A4 002E8E04 7C A5 02 14 */ add r5, r5, r0
+/* 802ED1A8 002E8E08 90 A4 00 0C */ stw r5, 0xc(r4)
+/* 802ED1AC 002E8E0C 88 05 00 00 */ lbz r0, 0(r5)
+/* 802ED1B0 002E8E10 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 802ED1B4 002E8E14 40 82 00 1C */ bne lbl_802ED1D0
+/* 802ED1B8 002E8E18 88 05 00 01 */ lbz r0, 1(r5)
+/* 802ED1BC 002E8E1C 7C 00 07 75 */ extsb. r0, r0
+/* 802ED1C0 002E8E20 40 82 00 10 */ bne lbl_802ED1D0
+/* 802ED1C4 002E8E24 38 C6 00 0C */ addi r6, r6, 0xc
+/* 802ED1C8 002E8E28 38 E7 00 01 */ addi r7, r7, 1
+/* 802ED1CC 002E8E2C 4B FF FF 8C */ b lbl_802ED158
+lbl_802ED1D0:
+/* 802ED1D0 002E8E30 1C 87 00 0C */ mulli r4, r7, 0xc
+/* 802ED1D4 002E8E34 7C 08 20 2E */ lwzx r0, r8, r4
+/* 802ED1D8 002E8E38 54 00 00 0F */ rlwinm. r0, r0, 0, 0, 7
+/* 802ED1DC 002E8E3C 41 82 00 10 */ beq lbl_802ED1EC
+/* 802ED1E0 002E8E40 7C 88 22 14 */ add r4, r8, r4
+/* 802ED1E4 002E8E44 80 04 00 08 */ lwz r0, 8(r4)
+/* 802ED1E8 002E8E48 48 00 00 08 */ b lbl_802ED1F0
+lbl_802ED1EC:
+/* 802ED1EC 002E8E4C 38 07 00 01 */ addi r0, r7, 1
+lbl_802ED1F0:
+/* 802ED1F0 002E8E50 90 03 00 08 */ stw r0, 8(r3)
+/* 802ED1F4 002E8E54 38 60 00 01 */ li r3, 1
+/* 802ED1F8 002E8E58 4E 80 00 20 */ blr
+
+.global ARCCloseDir
+ARCCloseDir:
+/* 802ED1FC 002E8E5C 38 60 00 01 */ li r3, 1
+/* 802ED200 002E8E60 4E 80 00 20 */ blr
diff --git a/asm/SDK/DVD/dvdFatal.s b/asm/SDK/DVD/dvdFatal.s
index e4ab30d..0410935 100644
--- a/asm/SDK/DVD/dvdFatal.s
+++ b/asm/SDK/DVD/dvdFatal.s
@@ -16,7 +16,7 @@ __DVDShowFatalMessage:
/* 8028D004 00288C64 98 81 00 11 */ stb r4, 0x11(r1)
/* 8028D008 00288C68 98 61 00 12 */ stb r3, 0x12(r1)
/* 8028D00C 00288C6C 98 01 00 13 */ stb r0, 0x13(r1)
-/* 8028D010 00288C70 48 05 F4 39 */ bl func_802EC448
+/* 8028D010 00288C70 48 05 F4 39 */ bl SCGetLanguage
/* 8028D014 00288C74 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8028D018 00288C78 40 82 00 10 */ bne lbl_8028D028
/* 8028D01C 00288C7C 38 60 00 01 */ li r3, 1
@@ -26,7 +26,7 @@ lbl_8028D028:
/* 8028D028 00288C88 38 60 00 00 */ li r3, 0
/* 8028D02C 00288C8C 4B FE 0D 41 */ bl OSSetFontEncode
lbl_8028D030:
-/* 8028D030 00288C90 48 05 F4 19 */ bl func_802EC448
+/* 8028D030 00288C90 48 05 F4 19 */ bl SCGetLanguage
/* 8028D034 00288C94 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 8028D038 00288C98 28 00 00 06 */ cmplwi r0, 6
/* 8028D03C 00288C9C 40 81 00 14 */ ble lbl_8028D050
@@ -35,7 +35,7 @@ lbl_8028D030:
/* 8028D048 00288CA8 80 A3 00 04 */ lwz r5, 4(r3)
/* 8028D04C 00288CAC 48 00 00 18 */ b lbl_8028D064
lbl_8028D050:
-/* 8028D050 00288CB0 48 05 F3 F9 */ bl func_802EC448
+/* 8028D050 00288CB0 48 05 F3 F9 */ bl SCGetLanguage
/* 8028D054 00288CB4 3C 80 80 40 */ lis r4, lbl_803FD9B8@ha
/* 8028D058 00288CB8 54 60 15 BA */ rlwinm r0, r3, 2, 0x16, 0x1d
/* 8028D05C 00288CBC 38 84 D9 B8 */ addi r4, r4, lbl_803FD9B8@l
diff --git a/asm/SDK/HBM/HBMRemoteSpk.s b/asm/SDK/HBM/HBMRemoteSpk.s
index 0850e68..f9fd5c4 100644
--- a/asm/SDK/HBM/HBMRemoteSpk.s
+++ b/asm/SDK/HBM/HBMRemoteSpk.s
@@ -130,7 +130,7 @@ lbl_803A5A98:
/* 803A5AA8 003A1708 7C 00 00 34 */ cntlzw r0, r0
/* 803A5AAC 003A170C 38 C0 00 28 */ li r6, 0x28
/* 803A5AB0 003A1710 54 04 D9 7E */ srwi r4, r0, 5
-/* 803A5AB4 003A1714 4B F4 6F 6D */ bl func_802ECA20
+/* 803A5AB4 003A1714 4B F4 6F 6D */ bl WENCGetEncodeData
/* 803A5AB8 003A1718 7F 83 E3 78 */ mr r3, r28
/* 803A5ABC 003A171C 38 81 00 08 */ addi r4, r1, 8
/* 803A5AC0 003A1720 38 A0 00 14 */ li r5, 0x14
@@ -203,7 +203,7 @@ __ct__Q210homebutton9RemoteSpkFPv:
/* 803A5BA4 003A1804 41 82 00 24 */ beq lbl_803A5BC8
/* 803A5BA8 003A1808 7C 83 23 78 */ mr r3, r4
/* 803A5BAC 003A180C 38 9A 01 D0 */ addi r4, r26, 0x1d0
-/* 803A5BB0 003A1810 4B F4 71 49 */ bl func_802ECCF8
+/* 803A5BB0 003A1810 4B F4 71 49 */ bl ARCInitHandle
/* 803A5BB4 003A1814 7C 03 00 D0 */ neg r0, r3
/* 803A5BB8 003A1818 7C 00 1B 78 */ or r0, r0, r3
/* 803A5BBC 003A181C 54 00 0F FE */ srwi r0, r0, 0x1f
@@ -525,15 +525,15 @@ Play__Q210homebutton9RemoteSpkFliSc:
/* 803A6008 003A1C68 7F 84 E3 78 */ mr r4, r28
/* 803A600C 003A1C6C 38 A1 00 08 */ addi r5, r1, 8
/* 803A6010 003A1C70 38 63 01 D0 */ addi r3, r3, 0x1d0
-/* 803A6014 003A1C74 4B F4 6D 85 */ bl func_802ECD98
+/* 803A6014 003A1C74 4B F4 6D 85 */ bl ARCFastOpen
/* 803A6018 003A1C78 38 61 00 08 */ addi r3, r1, 8
-/* 803A601C 003A1C7C 4B F4 70 31 */ bl func_802ED04C
+/* 803A601C 003A1C7C 4B F4 70 31 */ bl ARCGetStartAddrInMem
/* 803A6020 003A1C80 7C 7E 1B 78 */ mr r30, r3
/* 803A6024 003A1C84 38 61 00 08 */ addi r3, r1, 8
-/* 803A6028 003A1C88 4B F4 70 39 */ bl func_802ED060
+/* 803A6028 003A1C88 4B F4 70 39 */ bl ARCGetLength
/* 803A602C 003A1C8C 7C 7F 1B 78 */ mr r31, r3
/* 803A6030 003A1C90 38 61 00 08 */ addi r3, r1, 8
-/* 803A6034 003A1C94 4B F4 70 35 */ bl func_802ED068
+/* 803A6034 003A1C94 4B F4 70 35 */ bl ARCClose
/* 803A6038 003A1C98 1C 7B 00 68 */ mulli r3, r27, 0x68
/* 803A603C 003A1C9C 38 00 00 00 */ li r0, 0
/* 803A6040 003A1CA0 7C 7A 1A 14 */ add r3, r26, r3
diff --git a/asm/SDK/OS/OSReset.s b/asm/SDK/OS/OSReset.s
index eb427c6..dc489de 100644
--- a/asm/SDK/OS/OSReset.s
+++ b/asm/SDK/OS/OSReset.s
@@ -283,7 +283,7 @@ lbl_80270020:
/* 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 func_802EC43C
+/* 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
diff --git a/asm/SDK/SC/scapi.s b/asm/SDK/SC/scapi.s
new file mode 100644
index 0000000..1700de2
--- /dev/null
+++ b/asm/SDK/SC/scapi.s
@@ -0,0 +1,363 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global SCGetAspectRatio
+SCGetAspectRatio:
+/* 802EC320 002E7F80 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC324 002E7F84 7C 08 02 A6 */ mflr r0
+/* 802EC328 002E7F88 38 80 00 01 */ li r4, 1
+/* 802EC32C 002E7F8C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC330 002E7F90 38 61 00 08 */ addi r3, r1, 8
+/* 802EC334 002E7F94 4B FF F7 75 */ bl SCFindU8Item
+/* 802EC338 002E7F98 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC33C 002E7F9C 40 82 00 10 */ bne lbl_802EC34C
+/* 802EC340 002E7FA0 38 00 00 00 */ li r0, 0
+/* 802EC344 002E7FA4 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC348 002E7FA8 48 00 00 18 */ b lbl_802EC360
+lbl_802EC34C:
+/* 802EC34C 002E7FAC 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC350 002E7FB0 28 00 00 01 */ cmplwi r0, 1
+/* 802EC354 002E7FB4 41 82 00 0C */ beq lbl_802EC360
+/* 802EC358 002E7FB8 38 00 00 00 */ li r0, 0
+/* 802EC35C 002E7FBC 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC360:
+/* 802EC360 002E7FC0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC364 002E7FC4 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC368 002E7FC8 7C 08 03 A6 */ mtlr r0
+/* 802EC36C 002E7FCC 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC370 002E7FD0 4E 80 00 20 */ blr
+
+.global SCGetDisplayOffsetH
+SCGetDisplayOffsetH:
+/* 802EC374 002E7FD4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC378 002E7FD8 7C 08 02 A6 */ mflr r0
+/* 802EC37C 002E7FDC 38 80 00 05 */ li r4, 5
+/* 802EC380 002E7FE0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC384 002E7FE4 38 61 00 08 */ addi r3, r1, 8
+/* 802EC388 002E7FE8 4B FF F7 F5 */ bl SCFindS8Item
+/* 802EC38C 002E7FEC 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC390 002E7FF0 40 82 00 10 */ bne lbl_802EC3A0
+/* 802EC394 002E7FF4 38 00 00 00 */ li r0, 0
+/* 802EC398 002E7FF8 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC39C 002E7FFC 48 00 00 30 */ b lbl_802EC3CC
+lbl_802EC3A0:
+/* 802EC3A0 002E8000 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC3A4 002E8004 7C 00 07 74 */ extsb r0, r0
+/* 802EC3A8 002E8008 2C 00 FF E0 */ cmpwi r0, -32
+/* 802EC3AC 002E800C 40 80 00 10 */ bge lbl_802EC3BC
+/* 802EC3B0 002E8010 38 00 FF E0 */ li r0, -32
+/* 802EC3B4 002E8014 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC3B8 002E8018 48 00 00 14 */ b lbl_802EC3CC
+lbl_802EC3BC:
+/* 802EC3BC 002E801C 2C 00 00 20 */ cmpwi r0, 0x20
+/* 802EC3C0 002E8020 40 81 00 0C */ ble lbl_802EC3CC
+/* 802EC3C4 002E8024 38 00 00 20 */ li r0, 0x20
+/* 802EC3C8 002E8028 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC3CC:
+/* 802EC3CC 002E802C 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC3D0 002E8030 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
+/* 802EC3D4 002E8034 7C 03 07 74 */ extsb r3, r0
+/* 802EC3D8 002E8038 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC3DC 002E803C 7C 08 03 A6 */ mtlr r0
+/* 802EC3E0 002E8040 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC3E4 002E8044 4E 80 00 20 */ blr
+
+.global SCGetEuRgb60Mode
+SCGetEuRgb60Mode:
+/* 802EC3E8 002E8048 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC3EC 002E804C 7C 08 02 A6 */ mflr r0
+/* 802EC3F0 002E8050 38 80 00 06 */ li r4, 6
+/* 802EC3F4 002E8054 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC3F8 002E8058 38 61 00 08 */ addi r3, r1, 8
+/* 802EC3FC 002E805C 4B FF F6 AD */ bl SCFindU8Item
+/* 802EC400 002E8060 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC404 002E8064 40 82 00 10 */ bne lbl_802EC414
+/* 802EC408 002E8068 38 00 00 00 */ li r0, 0
+/* 802EC40C 002E806C 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC410 002E8070 48 00 00 18 */ b lbl_802EC428
+lbl_802EC414:
+/* 802EC414 002E8074 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC418 002E8078 28 00 00 01 */ cmplwi r0, 1
+/* 802EC41C 002E807C 41 82 00 0C */ beq lbl_802EC428
+/* 802EC420 002E8080 38 00 00 00 */ li r0, 0
+/* 802EC424 002E8084 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC428:
+/* 802EC428 002E8088 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC42C 002E808C 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC430 002E8090 7C 08 03 A6 */ mtlr r0
+/* 802EC434 002E8094 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC438 002E8098 4E 80 00 20 */ blr
+
+.global SCGetIdleMode
+SCGetIdleMode:
+/* 802EC43C 002E809C 38 80 00 02 */ li r4, 2
+/* 802EC440 002E80A0 38 A0 00 09 */ li r5, 9
+/* 802EC444 002E80A4 4B FF F3 48 */ b SCFindByteArrayItem
+
+.global SCGetLanguage
+SCGetLanguage:
+/* 802EC448 002E80A8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC44C 002E80AC 7C 08 02 A6 */ mflr r0
+/* 802EC450 002E80B0 38 80 00 0B */ li r4, 0xb
+/* 802EC454 002E80B4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC458 002E80B8 38 61 00 08 */ addi r3, r1, 8
+/* 802EC45C 002E80BC 4B FF F6 4D */ bl SCFindU8Item
+/* 802EC460 002E80C0 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC464 002E80C4 40 82 00 28 */ bne lbl_802EC48C
+/* 802EC468 002E80C8 48 00 04 91 */ bl SCGetProductArea
+/* 802EC46C 002E80CC 7C 60 07 75 */ extsb. r0, r3
+/* 802EC470 002E80D0 40 82 00 10 */ bne lbl_802EC480
+/* 802EC474 002E80D4 38 00 00 00 */ li r0, 0
+/* 802EC478 002E80D8 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC47C 002E80DC 48 00 00 24 */ b lbl_802EC4A0
+lbl_802EC480:
+/* 802EC480 002E80E0 38 00 00 01 */ li r0, 1
+/* 802EC484 002E80E4 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC488 002E80E8 48 00 00 18 */ b lbl_802EC4A0
+lbl_802EC48C:
+/* 802EC48C 002E80EC 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC490 002E80F0 28 00 00 09 */ cmplwi r0, 9
+/* 802EC494 002E80F4 40 81 00 0C */ ble lbl_802EC4A0
+/* 802EC498 002E80F8 38 00 00 01 */ li r0, 1
+/* 802EC49C 002E80FC 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC4A0:
+/* 802EC4A0 002E8100 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC4A4 002E8104 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC4A8 002E8108 7C 08 03 A6 */ mtlr r0
+/* 802EC4AC 002E810C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC4B0 002E8110 4E 80 00 20 */ blr
+
+.global SCGetProgressiveMode
+SCGetProgressiveMode:
+/* 802EC4B4 002E8114 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC4B8 002E8118 7C 08 02 A6 */ mflr r0
+/* 802EC4BC 002E811C 38 80 00 0E */ li r4, 0xe
+/* 802EC4C0 002E8120 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC4C4 002E8124 38 61 00 08 */ addi r3, r1, 8
+/* 802EC4C8 002E8128 4B FF F5 E1 */ bl SCFindU8Item
+/* 802EC4CC 002E812C 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC4D0 002E8130 40 82 00 10 */ bne lbl_802EC4E0
+/* 802EC4D4 002E8134 38 00 00 00 */ li r0, 0
+/* 802EC4D8 002E8138 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC4DC 002E813C 48 00 00 18 */ b lbl_802EC4F4
+lbl_802EC4E0:
+/* 802EC4E0 002E8140 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC4E4 002E8144 28 00 00 01 */ cmplwi r0, 1
+/* 802EC4E8 002E8148 41 82 00 0C */ beq lbl_802EC4F4
+/* 802EC4EC 002E814C 38 00 00 00 */ li r0, 0
+/* 802EC4F0 002E8150 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC4F4:
+/* 802EC4F4 002E8154 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC4F8 002E8158 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC4FC 002E815C 7C 08 03 A6 */ mtlr r0
+/* 802EC500 002E8160 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC504 002E8164 4E 80 00 20 */ blr
+
+.global SCGetScreenSaverMode
+SCGetScreenSaverMode:
+/* 802EC508 002E8168 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC50C 002E816C 7C 08 02 A6 */ mflr r0
+/* 802EC510 002E8170 38 80 00 0F */ li r4, 0xf
+/* 802EC514 002E8174 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC518 002E8178 38 61 00 08 */ addi r3, r1, 8
+/* 802EC51C 002E817C 4B FF F5 8D */ bl SCFindU8Item
+/* 802EC520 002E8180 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC524 002E8184 40 82 00 10 */ bne lbl_802EC534
+/* 802EC528 002E8188 38 00 00 01 */ li r0, 1
+/* 802EC52C 002E818C 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC530 002E8190 48 00 00 18 */ b lbl_802EC548
+lbl_802EC534:
+/* 802EC534 002E8194 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC538 002E8198 28 00 00 01 */ cmplwi r0, 1
+/* 802EC53C 002E819C 41 82 00 0C */ beq lbl_802EC548
+/* 802EC540 002E81A0 38 00 00 00 */ li r0, 0
+/* 802EC544 002E81A4 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC548:
+/* 802EC548 002E81A8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC54C 002E81AC 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC550 002E81B0 7C 08 03 A6 */ mtlr r0
+/* 802EC554 002E81B4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC558 002E81B8 4E 80 00 20 */ blr
+
+.global SCGetSoundMode
+SCGetSoundMode:
+/* 802EC55C 002E81BC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC560 002E81C0 7C 08 02 A6 */ mflr r0
+/* 802EC564 002E81C4 38 80 00 11 */ li r4, 0x11
+/* 802EC568 002E81C8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC56C 002E81CC 38 61 00 08 */ addi r3, r1, 8
+/* 802EC570 002E81D0 4B FF F5 39 */ bl SCFindU8Item
+/* 802EC574 002E81D4 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC578 002E81D8 40 82 00 10 */ bne lbl_802EC588
+/* 802EC57C 002E81DC 38 00 00 01 */ li r0, 1
+/* 802EC580 002E81E0 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC584 002E81E4 48 00 00 28 */ b lbl_802EC5AC
+lbl_802EC588:
+/* 802EC588 002E81E8 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC58C 002E81EC 2C 00 00 00 */ cmpwi r0, 0
+/* 802EC590 002E81F0 41 82 00 1C */ beq lbl_802EC5AC
+/* 802EC594 002E81F4 28 00 00 01 */ cmplwi r0, 1
+/* 802EC598 002E81F8 41 82 00 14 */ beq lbl_802EC5AC
+/* 802EC59C 002E81FC 28 00 00 02 */ cmplwi r0, 2
+/* 802EC5A0 002E8200 41 82 00 0C */ beq lbl_802EC5AC
+/* 802EC5A4 002E8204 38 00 00 01 */ li r0, 1
+/* 802EC5A8 002E8208 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC5AC:
+/* 802EC5AC 002E820C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC5B0 002E8210 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC5B4 002E8214 7C 08 03 A6 */ mtlr r0
+/* 802EC5B8 002E8218 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC5BC 002E821C 4E 80 00 20 */ blr
+
+.global SCGetCounterBias
+SCGetCounterBias:
+/* 802EC5C0 002E8220 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC5C4 002E8224 7C 08 02 A6 */ mflr r0
+/* 802EC5C8 002E8228 38 80 00 00 */ li r4, 0
+/* 802EC5CC 002E822C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC5D0 002E8230 38 61 00 08 */ addi r3, r1, 8
+/* 802EC5D4 002E8234 4B FF F6 7D */ bl SCFindU32Item
+/* 802EC5D8 002E8238 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC5DC 002E823C 40 82 00 10 */ bne lbl_802EC5EC
+/* 802EC5E0 002E8240 3C 60 0B 4A */ lis r3, 0x0B49D800@ha
+/* 802EC5E4 002E8244 38 03 D8 00 */ addi r0, r3, 0x0B49D800@l
+/* 802EC5E8 002E8248 90 01 00 08 */ stw r0, 8(r1)
+lbl_802EC5EC:
+/* 802EC5EC 002E824C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC5F0 002E8250 80 61 00 08 */ lwz r3, 8(r1)
+/* 802EC5F4 002E8254 7C 08 03 A6 */ mtlr r0
+/* 802EC5F8 002E8258 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC5FC 002E825C 4E 80 00 20 */ blr
+
+.global SCGetBtDeviceInfoArray
+SCGetBtDeviceInfoArray:
+/* 802EC600 002E8260 38 80 04 61 */ li r4, 0x461
+/* 802EC604 002E8264 38 A0 00 1C */ li r5, 0x1c
+/* 802EC608 002E8268 4B FF F1 84 */ b SCFindByteArrayItem
+
+.global SCSetBtDeviceInfoArray
+SCSetBtDeviceInfoArray:
+/* 802EC60C 002E826C 38 80 04 61 */ li r4, 0x461
+/* 802EC610 002E8270 38 A0 00 1C */ li r5, 0x1c
+/* 802EC614 002E8274 4B FF F2 58 */ b SCReplaceByteArrayItem
+
+.global SCGetBtDpdSensibility
+SCGetBtDpdSensibility:
+/* 802EC618 002E8278 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC61C 002E827C 7C 08 02 A6 */ mflr r0
+/* 802EC620 002E8280 38 80 00 1D */ li r4, 0x1d
+/* 802EC624 002E8284 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC628 002E8288 38 61 00 08 */ addi r3, r1, 8
+/* 802EC62C 002E828C 4B FF F6 25 */ bl SCFindU32Item
+/* 802EC630 002E8290 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC634 002E8294 40 82 00 10 */ bne lbl_802EC644
+/* 802EC638 002E8298 38 00 00 02 */ li r0, 2
+/* 802EC63C 002E829C 90 01 00 08 */ stw r0, 8(r1)
+/* 802EC640 002E82A0 48 00 00 2C */ b lbl_802EC66C
+lbl_802EC644:
+/* 802EC644 002E82A4 80 01 00 08 */ lwz r0, 8(r1)
+/* 802EC648 002E82A8 28 00 00 01 */ cmplwi r0, 1
+/* 802EC64C 002E82AC 40 80 00 10 */ bge lbl_802EC65C
+/* 802EC650 002E82B0 38 00 00 01 */ li r0, 1
+/* 802EC654 002E82B4 90 01 00 08 */ stw r0, 8(r1)
+/* 802EC658 002E82B8 48 00 00 14 */ b lbl_802EC66C
+lbl_802EC65C:
+/* 802EC65C 002E82BC 28 00 00 05 */ cmplwi r0, 5
+/* 802EC660 002E82C0 40 81 00 0C */ ble lbl_802EC66C
+/* 802EC664 002E82C4 38 00 00 05 */ li r0, 5
+/* 802EC668 002E82C8 90 01 00 08 */ stw r0, 8(r1)
+lbl_802EC66C:
+/* 802EC66C 002E82CC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC670 002E82D0 80 61 00 08 */ lwz r3, 8(r1)
+/* 802EC674 002E82D4 7C 08 03 A6 */ mtlr r0
+/* 802EC678 002E82D8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC67C 002E82DC 4E 80 00 20 */ blr
+
+.global SCGetWpadMotorMode
+SCGetWpadMotorMode:
+/* 802EC680 002E82E0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC684 002E82E4 7C 08 02 A6 */ mflr r0
+/* 802EC688 002E82E8 38 80 00 1F */ li r4, 0x1f
+/* 802EC68C 002E82EC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC690 002E82F0 38 61 00 08 */ addi r3, r1, 8
+/* 802EC694 002E82F4 4B FF F4 15 */ bl SCFindU8Item
+/* 802EC698 002E82F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC69C 002E82FC 40 82 00 10 */ bne lbl_802EC6AC
+/* 802EC6A0 002E8300 38 00 00 01 */ li r0, 1
+/* 802EC6A4 002E8304 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC6A8 002E8308 48 00 00 18 */ b lbl_802EC6C0
+lbl_802EC6AC:
+/* 802EC6AC 002E830C 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC6B0 002E8310 28 00 00 01 */ cmplwi r0, 1
+/* 802EC6B4 002E8314 41 82 00 0C */ beq lbl_802EC6C0
+/* 802EC6B8 002E8318 38 00 00 00 */ li r0, 0
+/* 802EC6BC 002E831C 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC6C0:
+/* 802EC6C0 002E8320 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC6C4 002E8324 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC6C8 002E8328 7C 08 03 A6 */ mtlr r0
+/* 802EC6CC 002E832C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC6D0 002E8330 4E 80 00 20 */ blr
+
+.global SCSetWpadMotorMode
+SCSetWpadMotorMode:
+/* 802EC6D4 002E8334 38 80 00 1F */ li r4, 0x1f
+/* 802EC6D8 002E8338 4B FF F6 4C */ b SCReplaceU8Item
+
+.global SCGetWpadSensorBarPosition
+SCGetWpadSensorBarPosition:
+/* 802EC6DC 002E833C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC6E0 002E8340 7C 08 02 A6 */ mflr r0
+/* 802EC6E4 002E8344 38 80 00 20 */ li r4, 0x20
+/* 802EC6E8 002E8348 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC6EC 002E834C 38 61 00 08 */ addi r3, r1, 8
+/* 802EC6F0 002E8350 4B FF F3 B9 */ bl SCFindU8Item
+/* 802EC6F4 002E8354 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC6F8 002E8358 40 82 00 10 */ bne lbl_802EC708
+/* 802EC6FC 002E835C 38 00 00 00 */ li r0, 0
+/* 802EC700 002E8360 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC704 002E8364 48 00 00 18 */ b lbl_802EC71C
+lbl_802EC708:
+/* 802EC708 002E8368 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC70C 002E836C 28 00 00 01 */ cmplwi r0, 1
+/* 802EC710 002E8370 41 82 00 0C */ beq lbl_802EC71C
+/* 802EC714 002E8374 38 00 00 00 */ li r0, 0
+/* 802EC718 002E8378 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC71C:
+/* 802EC71C 002E837C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC720 002E8380 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC724 002E8384 7C 08 03 A6 */ mtlr r0
+/* 802EC728 002E8388 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC72C 002E838C 4E 80 00 20 */ blr
+
+.global SCGetWpadSpeakerVolume
+SCGetWpadSpeakerVolume:
+/* 802EC730 002E8390 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC734 002E8394 7C 08 02 A6 */ mflr r0
+/* 802EC738 002E8398 38 80 00 1E */ li r4, 0x1e
+/* 802EC73C 002E839C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC740 002E83A0 38 61 00 08 */ addi r3, r1, 8
+/* 802EC744 002E83A4 4B FF F3 65 */ bl SCFindU8Item
+/* 802EC748 002E83A8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC74C 002E83AC 40 82 00 10 */ bne lbl_802EC75C
+/* 802EC750 002E83B0 38 00 00 59 */ li r0, 0x59
+/* 802EC754 002E83B4 98 01 00 08 */ stb r0, 8(r1)
+/* 802EC758 002E83B8 48 00 00 18 */ b lbl_802EC770
+lbl_802EC75C:
+/* 802EC75C 002E83BC 88 01 00 08 */ lbz r0, 8(r1)
+/* 802EC760 002E83C0 28 00 00 7F */ cmplwi r0, 0x7f
+/* 802EC764 002E83C4 40 81 00 0C */ ble lbl_802EC770
+/* 802EC768 002E83C8 38 00 00 7F */ li r0, 0x7f
+/* 802EC76C 002E83CC 98 01 00 08 */ stb r0, 8(r1)
+lbl_802EC770:
+/* 802EC770 002E83D0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC774 002E83D4 88 61 00 08 */ lbz r3, 8(r1)
+/* 802EC778 002E83D8 7C 08 03 A6 */ mtlr r0
+/* 802EC77C 002E83DC 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC780 002E83E0 4E 80 00 20 */ blr
+
+.global SCSetWpadSpeakerVolume
+SCSetWpadSpeakerVolume:
+/* 802EC784 002E83E4 38 80 00 1E */ li r4, 0x1e
+/* 802EC788 002E83E8 4B FF F5 9C */ b SCReplaceU8Item
diff --git a/asm/SDK/SC/scapi_prdinfo.s b/asm/SDK/SC/scapi_prdinfo.s
new file mode 100644
index 0000000..c242d6c
--- /dev/null
+++ b/asm/SDK/SC/scapi_prdinfo.s
@@ -0,0 +1,200 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __SCF1
+__SCF1:
+/* 802EC78C 002E83EC 3C C0 73 B6 */ lis r6, 0x73B5DBFA@ha
+/* 802EC790 002E83F0 38 00 00 80 */ li r0, 0x80
+/* 802EC794 002E83F4 39 66 DB FA */ addi r11, r6, 0x73B5DBFA@l
+/* 802EC798 002E83F8 39 20 00 00 */ li r9, 0
+/* 802EC79C 002E83FC 39 80 00 00 */ li r12, 0
+/* 802EC7A0 002E8400 38 C0 00 00 */ li r6, 0
+/* 802EC7A4 002E8404 39 40 00 00 */ li r10, 0
+/* 802EC7A8 002E8408 7C 09 03 A6 */ mtctr r0
+lbl_802EC7AC:
+/* 802EC7AC 002E840C 3D 0A 80 00 */ addis r8, r10, 0x8000
+/* 802EC7B0 002E8410 89 08 38 00 */ lbz r8, 0x3800(r8)
+/* 802EC7B4 002E8414 2C 08 00 00 */ cmpwi r8, 0
+/* 802EC7B8 002E8418 41 82 00 48 */ beq lbl_802EC800
+/* 802EC7BC 002E841C 7C E3 60 AE */ lbzx r7, r3, r12
+/* 802EC7C0 002E8420 7D 00 5A 78 */ xor r0, r8, r11
+/* 802EC7C4 002E8424 54 08 06 3E */ clrlwi r8, r0, 0x18
+/* 802EC7C8 002E8428 7C E0 07 75 */ extsb. r0, r7
+/* 802EC7CC 002E842C 40 82 00 14 */ bne lbl_802EC7E0
+/* 802EC7D0 002E8430 28 08 00 3D */ cmplwi r8, 0x3d
+/* 802EC7D4 002E8434 40 82 00 0C */ bne lbl_802EC7E0
+/* 802EC7D8 002E8438 39 20 00 01 */ li r9, 1
+/* 802EC7DC 002E843C 48 00 00 9C */ b lbl_802EC878
+lbl_802EC7E0:
+/* 802EC7E0 002E8440 7C E7 07 74 */ extsb r7, r7
+/* 802EC7E4 002E8444 38 0C 00 01 */ addi r0, r12, 1
+/* 802EC7E8 002E8448 7D 07 3A 78 */ xor r7, r8, r7
+/* 802EC7EC 002E844C 70 E7 00 DF */ andi. r7, r7, 0xdf
+/* 802EC7F0 002E8450 7C E7 00 34 */ cntlzw r7, r7
+/* 802EC7F4 002E8454 54 E7 DF FE */ rlwinm r7, r7, 0x1b, 0x1f, 0x1f
+/* 802EC7F8 002E8458 7C E7 00 D0 */ neg r7, r7
+/* 802EC7FC 002E845C 7C 0C 38 38 */ and r12, r0, r7
+lbl_802EC800:
+/* 802EC800 002E8460 39 4A 00 01 */ addi r10, r10, 1
+/* 802EC804 002E8464 55 67 0F FE */ srwi r7, r11, 0x1f
+/* 802EC808 002E8468 3D 0A 80 00 */ addis r8, r10, 0x8000
+/* 802EC80C 002E846C 55 60 08 3C */ slwi r0, r11, 1
+/* 802EC810 002E8470 89 08 38 00 */ lbz r8, 0x3800(r8)
+/* 802EC814 002E8474 7C EB 03 78 */ or r11, r7, r0
+/* 802EC818 002E8478 2C 08 00 00 */ cmpwi r8, 0
+/* 802EC81C 002E847C 41 82 00 48 */ beq lbl_802EC864
+/* 802EC820 002E8480 7C E3 60 AE */ lbzx r7, r3, r12
+/* 802EC824 002E8484 7D 00 5A 78 */ xor r0, r8, r11
+/* 802EC828 002E8488 54 08 06 3E */ clrlwi r8, r0, 0x18
+/* 802EC82C 002E848C 7C E0 07 75 */ extsb. r0, r7
+/* 802EC830 002E8490 40 82 00 14 */ bne lbl_802EC844
+/* 802EC834 002E8494 28 08 00 3D */ cmplwi r8, 0x3d
+/* 802EC838 002E8498 40 82 00 0C */ bne lbl_802EC844
+/* 802EC83C 002E849C 39 20 00 01 */ li r9, 1
+/* 802EC840 002E84A0 48 00 00 38 */ b lbl_802EC878
+lbl_802EC844:
+/* 802EC844 002E84A4 7C E7 07 74 */ extsb r7, r7
+/* 802EC848 002E84A8 38 0C 00 01 */ addi r0, r12, 1
+/* 802EC84C 002E84AC 7D 07 3A 78 */ xor r7, r8, r7
+/* 802EC850 002E84B0 70 E7 00 DF */ andi. r7, r7, 0xdf
+/* 802EC854 002E84B4 7C E7 00 34 */ cntlzw r7, r7
+/* 802EC858 002E84B8 54 E7 DF FE */ rlwinm r7, r7, 0x1b, 0x1f, 0x1f
+/* 802EC85C 002E84BC 7C E7 00 D0 */ neg r7, r7
+/* 802EC860 002E84C0 7C 0C 38 38 */ and r12, r0, r7
+lbl_802EC864:
+/* 802EC864 002E84C4 55 67 0F FE */ srwi r7, r11, 0x1f
+/* 802EC868 002E84C8 55 60 08 3C */ slwi r0, r11, 1
+/* 802EC86C 002E84CC 7C EB 03 78 */ or r11, r7, r0
+/* 802EC870 002E84D0 39 4A 00 01 */ addi r10, r10, 1
+/* 802EC874 002E84D4 42 00 FF 38 */ bdnz lbl_802EC7AC
+lbl_802EC878:
+/* 802EC878 002E84D8 2C 09 00 00 */ cmpwi r9, 0
+/* 802EC87C 002E84DC 41 82 00 74 */ beq lbl_802EC8F0
+/* 802EC880 002E84E0 39 4A 00 01 */ addi r10, r10, 1
+/* 802EC884 002E84E4 48 00 00 5C */ b lbl_802EC8E0
+lbl_802EC888:
+/* 802EC888 002E84E8 3C 6A 80 00 */ addis r3, r10, 0x8000
+/* 802EC88C 002E84EC 55 67 0F FE */ srwi r7, r11, 0x1f
+/* 802EC890 002E84F0 88 63 38 00 */ lbz r3, 0x3800(r3)
+/* 802EC894 002E84F4 55 60 08 3C */ slwi r0, r11, 1
+/* 802EC898 002E84F8 7C EB 03 78 */ or r11, r7, r0
+/* 802EC89C 002E84FC 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC8A0 002E8500 41 82 00 20 */ beq lbl_802EC8C0
+/* 802EC8A4 002E8504 7C 60 5A 78 */ xor r0, r3, r11
+/* 802EC8A8 002E8508 54 03 06 3E */ clrlwi r3, r0, 0x18
+/* 802EC8AC 002E850C 28 03 00 0D */ cmplwi r3, 0xd
+/* 802EC8B0 002E8510 41 82 00 0C */ beq lbl_802EC8BC
+/* 802EC8B4 002E8514 28 03 00 0A */ cmplwi r3, 0xa
+/* 802EC8B8 002E8518 40 82 00 08 */ bne lbl_802EC8C0
+lbl_802EC8BC:
+/* 802EC8BC 002E851C 38 60 00 00 */ li r3, 0
+lbl_802EC8C0:
+/* 802EC8C0 002E8520 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC8C4 002E8524 98 64 00 00 */ stb r3, 0(r4)
+/* 802EC8C8 002E8528 38 C6 00 01 */ addi r6, r6, 1
+/* 802EC8CC 002E852C 38 84 00 01 */ addi r4, r4, 1
+/* 802EC8D0 002E8530 40 82 00 0C */ bne lbl_802EC8DC
+/* 802EC8D4 002E8534 38 60 00 01 */ li r3, 1
+/* 802EC8D8 002E8538 4E 80 00 20 */ blr
+lbl_802EC8DC:
+/* 802EC8DC 002E853C 39 4A 00 01 */ addi r10, r10, 1
+lbl_802EC8E0:
+/* 802EC8E0 002E8540 28 0A 01 00 */ cmplwi r10, 0x100
+/* 802EC8E4 002E8544 40 80 00 0C */ bge lbl_802EC8F0
+/* 802EC8E8 002E8548 7C 06 28 40 */ cmplw r6, r5
+/* 802EC8EC 002E854C 41 80 FF 9C */ blt lbl_802EC888
+lbl_802EC8F0:
+/* 802EC8F0 002E8550 38 60 00 00 */ li r3, 0
+/* 802EC8F4 002E8554 4E 80 00 20 */ blr
+
+.global SCGetProductArea
+SCGetProductArea:
+/* 802EC8F8 002E8558 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EC8FC 002E855C 7C 08 02 A6 */ mflr r0
+/* 802EC900 002E8560 38 6D 8B C0 */ addi r3, r13, lbl_8063DE80-_SDA_BASE_
+/* 802EC904 002E8564 38 A0 00 04 */ li r5, 4
+/* 802EC908 002E8568 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EC90C 002E856C 38 81 00 08 */ addi r4, r1, 8
+/* 802EC910 002E8570 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EC914 002E8574 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EC918 002E8578 3F C0 80 44 */ lis r30, lbl_80445A38@ha
+/* 802EC91C 002E857C 3B DE 5A 38 */ addi r30, r30, lbl_80445A38@l
+/* 802EC920 002E8580 4B FF FE 6D */ bl __SCF1
+/* 802EC924 002E8584 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC928 002E8588 41 82 00 38 */ beq lbl_802EC960
+/* 802EC92C 002E858C 48 00 00 24 */ b lbl_802EC950
+lbl_802EC930:
+/* 802EC930 002E8590 38 7E 00 01 */ addi r3, r30, 1
+/* 802EC934 002E8594 38 81 00 08 */ addi r4, r1, 8
+/* 802EC938 002E8598 4B EE 1B 15 */ bl strcmp
+/* 802EC93C 002E859C 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC940 002E85A0 40 82 00 0C */ bne lbl_802EC94C
+/* 802EC944 002E85A4 7F E3 FB 78 */ mr r3, r31
+/* 802EC948 002E85A8 48 00 00 1C */ b lbl_802EC964
+lbl_802EC94C:
+/* 802EC94C 002E85AC 3B DE 00 05 */ addi r30, r30, 5
+lbl_802EC950:
+/* 802EC950 002E85B0 8B FE 00 00 */ lbz r31, 0(r30)
+/* 802EC954 002E85B4 7F E0 07 74 */ extsb r0, r31
+/* 802EC958 002E85B8 2C 00 FF FF */ cmpwi r0, -1
+/* 802EC95C 002E85BC 40 82 FF D4 */ bne lbl_802EC930
+lbl_802EC960:
+/* 802EC960 002E85C0 38 60 FF FF */ li r3, -1
+lbl_802EC964:
+/* 802EC964 002E85C4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EC968 002E85C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EC96C 002E85CC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EC970 002E85D0 7C 08 03 A6 */ mtlr r0
+/* 802EC974 002E85D4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EC978 002E85D8 4E 80 00 20 */ blr
+
+.global SCGetProductCode
+SCGetProductCode:
+/* 802EC97C 002E85DC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EC980 002E85E0 7C 08 02 A6 */ mflr r0
+/* 802EC984 002E85E4 38 6D 8B C8 */ addi r3, r13, lbl_8063DE88-_SDA_BASE_
+/* 802EC988 002E85E8 38 8D AF 28 */ addi r4, r13, lbl_806401E8-_SDA_BASE_
+/* 802EC98C 002E85EC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EC990 002E85F0 38 A0 00 06 */ li r5, 6
+/* 802EC994 002E85F4 4B FF FD F9 */ bl __SCF1
+/* 802EC998 002E85F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC99C 002E85FC 38 60 00 00 */ li r3, 0
+/* 802EC9A0 002E8600 41 82 00 08 */ beq lbl_802EC9A8
+/* 802EC9A4 002E8604 38 6D AF 28 */ addi r3, r13, lbl_806401E8-_SDA_BASE_
+lbl_802EC9A8:
+/* 802EC9A8 002E8608 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EC9AC 002E860C 7C 08 03 A6 */ mtlr r0
+/* 802EC9B0 002E8610 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EC9B4 002E8614 4E 80 00 20 */ blr
+
+.global SCGetProductSN
+SCGetProductSN:
+/* 802EC9B8 002E8618 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EC9BC 002E861C 7C 08 02 A6 */ mflr r0
+/* 802EC9C0 002E8620 38 A0 00 0B */ li r5, 0xb
+/* 802EC9C4 002E8624 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EC9C8 002E8628 38 81 00 08 */ addi r4, r1, 8
+/* 802EC9CC 002E862C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EC9D0 002E8630 7C 7F 1B 78 */ mr r31, r3
+/* 802EC9D4 002E8634 38 6D 8B D0 */ addi r3, r13, lbl_8063DE90-_SDA_BASE_
+/* 802EC9D8 002E8638 4B FF FD B5 */ bl __SCF1
+/* 802EC9DC 002E863C 2C 03 00 00 */ cmpwi r3, 0
+/* 802EC9E0 002E8640 41 82 00 28 */ beq lbl_802ECA08
+/* 802EC9E4 002E8644 7F E5 FB 78 */ mr r5, r31
+/* 802EC9E8 002E8648 38 61 00 08 */ addi r3, r1, 8
+/* 802EC9EC 002E864C 38 8D 8B D8 */ addi r4, r13, lbl_8063DE98-_SDA_BASE_
+/* 802EC9F0 002E8650 4C C6 31 82 */ crclr 6
+/* 802EC9F4 002E8654 4B EE 18 15 */ bl sscanf
+/* 802EC9F8 002E8658 2C 03 00 01 */ cmpwi r3, 1
+/* 802EC9FC 002E865C 40 82 00 0C */ bne lbl_802ECA08
+/* 802ECA00 002E8660 38 60 00 01 */ li r3, 1
+/* 802ECA04 002E8664 48 00 00 08 */ b lbl_802ECA0C
+lbl_802ECA08:
+/* 802ECA08 002E8668 38 60 00 00 */ li r3, 0
+lbl_802ECA0C:
+/* 802ECA0C 002E866C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802ECA10 002E8670 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802ECA14 002E8674 7C 08 03 A6 */ mtlr r0
+/* 802ECA18 002E8678 38 21 00 20 */ addi r1, r1, 0x20
+/* 802ECA1C 002E867C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VI/vi.s b/asm/SDK/VI/vi.s
index c1708c0..e2ae773 100644
--- a/asm/SDK/VI/vi.s
+++ b/asm/SDK/VI/vi.s
@@ -1063,7 +1063,7 @@ lbl_80278224:
/* 8027836C 00273FCC 7C A3 1B 78 */ or r3, r5, r3
/* 80278370 00273FD0 B0 7E 20 64 */ sth r3, 0x2064(r30)
/* 80278374 00273FD4 B0 1E 20 70 */ sth r0, 0x2070(r30)
-/* 80278378 00273FD8 48 07 3F FD */ bl func_802EC374
+/* 80278378 00273FD8 48 07 3F FD */ bl SCGetDisplayOffsetH
/* 8027837C 00273FDC 7C 60 07 74 */ extsb r0, r3
/* 80278380 00273FE0 B3 AD A8 EE */ sth r29, lbl_8063FBAE-_SDA_BASE_(r13)
/* 80278384 00273FE4 3C 60 80 00 */ lis r3, 0x800000CC@ha
@@ -1294,7 +1294,7 @@ lbl_802786C4:
/* 802786DC 0027433C 90 0D A8 CC */ stw r0, lbl_8063FB8C-_SDA_BASE_(r13)
/* 802786E0 00274340 90 6D A8 E4 */ stw r3, lbl_8063FBA4-_SDA_BASE_(r13)
/* 802786E4 00274344 80 0D A9 60 */ lwz r0, lbl_8063FC20-_SDA_BASE_(r13)
-/* 802786E8 00274348 48 07 3E 21 */ bl func_802EC508
+/* 802786E8 00274348 48 07 3E 21 */ bl SCGetScreenSaverMode
/* 802786EC 0027434C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802786F0 00274350 40 82 00 08 */ bne lbl_802786F8
/* 802786F4 00274354 3B 60 00 00 */ li r27, 0
@@ -2852,7 +2852,7 @@ VIEnableDimming:
/* 80279D1C 0027597C 7C 7E 1B 78 */ mr r30, r3
/* 80279D20 00275980 83 ED A9 60 */ lwz r31, lbl_8063FC20-_SDA_BASE_(r13)
/* 80279D24 00275984 40 82 00 14 */ bne lbl_80279D38
-/* 80279D28 00275988 48 07 27 E1 */ bl func_802EC508
+/* 80279D28 00275988 48 07 27 E1 */ bl SCGetScreenSaverMode
/* 80279D2C 0027598C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80279D30 00275990 40 82 00 08 */ bne lbl_80279D38
/* 80279D34 00275994 3B C0 00 00 */ li r30, 0
diff --git a/asm/SDK/WENC/wenc.s b/asm/SDK/WENC/wenc.s
new file mode 100644
index 0000000..2182756
--- /dev/null
+++ b/asm/SDK/WENC/wenc.s
@@ -0,0 +1,202 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global WENCGetEncodeData
+WENCGetEncodeData:
+/* 802ECA20 002E8680 94 21 FF 70 */ stwu r1, -0x90(r1)
+/* 802ECA24 002E8684 7C 08 02 A6 */ mflr r0
+/* 802ECA28 002E8688 90 01 00 94 */ stw r0, 0x94(r1)
+/* 802ECA2C 002E868C 39 61 00 90 */ addi r11, r1, 0x90
+/* 802ECA30 002E8690 4B ED A6 D5 */ bl _savegpr_18
+/* 802ECA34 002E8694 3D 40 80 40 */ lis r10, lbl_80400004@ha
+/* 802ECA38 002E8698 85 2A E0 B8 */ lwzu r9, -0x1f48(r10)
+/* 802ECA3C 002E869C 39 66 00 01 */ addi r11, r6, 1
+/* 802ECA40 002E86A0 7C 99 23 78 */ mr r25, r4
+/* 802ECA44 002E86A4 55 64 0F FE */ srwi r4, r11, 0x1f
+/* 802ECA48 002E86A8 81 0A 00 04 */ lwz r8, lbl_80400004@l(r10)
+/* 802ECA4C 002E86AC 7C FF 3B 78 */ mr r31, r7
+/* 802ECA50 002E86B0 80 0A 00 08 */ lwz r0, 8(r10)
+/* 802ECA54 002E86B4 7C 84 5A 14 */ add r4, r4, r11
+/* 802ECA58 002E86B8 82 4A 00 0C */ lwz r18, 0xc(r10)
+/* 802ECA5C 002E86BC 83 6A 00 10 */ lwz r27, 0x10(r10)
+/* 802ECA60 002E86C0 7C DE 33 78 */ mr r30, r6
+/* 802ECA64 002E86C4 83 4A 00 14 */ lwz r26, 0x14(r10)
+/* 802ECA68 002E86C8 7C 7C 1B 78 */ mr r28, r3
+/* 802ECA6C 002E86CC 83 0A 00 18 */ lwz r24, 0x18(r10)
+/* 802ECA70 002E86D0 7C BD 2B 78 */ mr r29, r5
+/* 802ECA74 002E86D4 82 EA 00 1C */ lwz r23, 0x1c(r10)
+/* 802ECA78 002E86D8 7C 85 0E 70 */ srawi r5, r4, 1
+/* 802ECA7C 002E86DC 82 CA 00 20 */ lwz r22, 0x20(r10)
+/* 802ECA80 002E86E0 7F E3 FB 78 */ mr r3, r31
+/* 802ECA84 002E86E4 82 AA 00 24 */ lwz r21, 0x24(r10)
+/* 802ECA88 002E86E8 38 80 00 00 */ li r4, 0
+/* 802ECA8C 002E86EC 82 8A 00 28 */ lwz r20, 0x28(r10)
+/* 802ECA90 002E86F0 82 6A 00 2C */ lwz r19, 0x2c(r10)
+/* 802ECA94 002E86F4 81 8A 00 30 */ lwz r12, 0x30(r10)
+/* 802ECA98 002E86F8 81 6A 00 34 */ lwz r11, 0x34(r10)
+/* 802ECA9C 002E86FC 80 EA 00 38 */ lwz r7, 0x38(r10)
+/* 802ECAA0 002E8700 80 CA 00 3C */ lwz r6, 0x3c(r10)
+/* 802ECAA4 002E8704 91 21 00 08 */ stw r9, 8(r1)
+/* 802ECAA8 002E8708 91 01 00 0C */ stw r8, 0xc(r1)
+/* 802ECAAC 002E870C 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802ECAB0 002E8710 92 41 00 14 */ stw r18, 0x14(r1)
+/* 802ECAB4 002E8714 93 61 00 18 */ stw r27, 0x18(r1)
+/* 802ECAB8 002E8718 93 41 00 1C */ stw r26, 0x1c(r1)
+/* 802ECABC 002E871C 93 01 00 20 */ stw r24, 0x20(r1)
+/* 802ECAC0 002E8720 92 E1 00 24 */ stw r23, 0x24(r1)
+/* 802ECAC4 002E8724 92 C1 00 28 */ stw r22, 0x28(r1)
+/* 802ECAC8 002E8728 92 A1 00 2C */ stw r21, 0x2c(r1)
+/* 802ECACC 002E872C 92 81 00 30 */ stw r20, 0x30(r1)
+/* 802ECAD0 002E8730 92 61 00 34 */ stw r19, 0x34(r1)
+/* 802ECAD4 002E8734 91 81 00 38 */ stw r12, 0x38(r1)
+/* 802ECAD8 002E8738 91 61 00 3C */ stw r11, 0x3c(r1)
+/* 802ECADC 002E873C 90 E1 00 40 */ stw r7, 0x40(r1)
+/* 802ECAE0 002E8740 90 C1 00 44 */ stw r6, 0x44(r1)
+/* 802ECAE4 002E8744 4B D1 76 21 */ bl memset
+/* 802ECAE8 002E8748 57 20 07 FF */ clrlwi. r0, r25, 0x1f
+/* 802ECAEC 002E874C 40 82 00 20 */ bne lbl_802ECB0C
+/* 802ECAF0 002E8750 39 60 00 00 */ li r11, 0
+/* 802ECAF4 002E8754 39 80 00 7F */ li r12, 0x7f
+/* 802ECAF8 002E8758 38 A0 00 00 */ li r5, 0
+/* 802ECAFC 002E875C 3B 60 00 00 */ li r27, 0
+/* 802ECB00 002E8760 3B 40 00 00 */ li r26, 0
+/* 802ECB04 002E8764 3B 20 00 00 */ li r25, 0
+/* 802ECB08 002E8768 48 00 00 1C */ b lbl_802ECB24
+lbl_802ECB0C:
+/* 802ECB0C 002E876C 81 7C 00 00 */ lwz r11, 0(r28)
+/* 802ECB10 002E8770 81 9C 00 04 */ lwz r12, 4(r28)
+/* 802ECB14 002E8774 80 BC 00 08 */ lwz r5, 8(r28)
+/* 802ECB18 002E8778 83 7C 00 0C */ lwz r27, 0xc(r28)
+/* 802ECB1C 002E877C 83 5C 00 10 */ lwz r26, 0x10(r28)
+/* 802ECB20 002E8780 83 3C 00 14 */ lwz r25, 0x14(r28)
+lbl_802ECB24:
+/* 802ECB24 002E8784 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
+/* 802ECB28 002E8788 3B 01 00 08 */ addi r24, r1, 8
+/* 802ECB2C 002E878C C8 42 A4 90 */ lfd f2, lbl_80642A90-_SDA2_BASE_(r2)
+/* 802ECB30 002E8790 38 83 FF FF */ addi r4, r3, 0x0000FFFF@l
+/* 802ECB34 002E8794 38 C0 00 00 */ li r6, 0
+/* 802ECB38 002E8798 3C 00 FF FF */ lis r0, 0xffff
+/* 802ECB3C 002E879C 3E E0 43 30 */ lis r23, 0x4330
+/* 802ECB40 002E87A0 7F C9 03 A6 */ mtctr r30
+/* 802ECB44 002E87A4 2C 1E 00 00 */ cmpwi r30, 0
+/* 802ECB48 002E87A8 40 81 01 7C */ ble lbl_802ECCC4
+lbl_802ECB4C:
+/* 802ECB4C 002E87AC A8 BD 00 00 */ lha r5, 0(r29)
+/* 802ECB50 002E87B0 39 40 00 00 */ li r10, 0
+/* 802ECB54 002E87B4 39 20 00 00 */ li r9, 0
+/* 802ECB58 002E87B8 39 00 00 00 */ li r8, 0
+/* 802ECB5C 002E87BC 7C 05 58 00 */ cmpw r5, r11
+/* 802ECB60 002E87C0 38 E0 00 00 */ li r7, 0
+/* 802ECB64 002E87C4 3B BD 00 02 */ addi r29, r29, 2
+/* 802ECB68 002E87C8 40 80 00 08 */ bge lbl_802ECB70
+/* 802ECB6C 002E87CC 38 E0 00 01 */ li r7, 1
+lbl_802ECB70:
+/* 802ECB70 002E87D0 7E 6B 28 50 */ subf r19, r11, r5
+/* 802ECB74 002E87D4 7E 65 FE 70 */ srawi r5, r19, 0x1f
+/* 802ECB78 002E87D8 7C BB 9A 78 */ xor r27, r5, r19
+/* 802ECB7C 002E87DC 7F 65 D8 50 */ subf r27, r5, r27
+/* 802ECB80 002E87E0 7C 1B 60 00 */ cmpw r27, r12
+/* 802ECB84 002E87E4 41 80 00 0C */ blt lbl_802ECB90
+/* 802ECB88 002E87E8 39 00 00 01 */ li r8, 1
+/* 802ECB8C 002E87EC 7F 6C D8 50 */ subf r27, r12, r27
+lbl_802ECB90:
+/* 802ECB90 002E87F0 55 85 0F FE */ srwi r5, r12, 0x1f
+/* 802ECB94 002E87F4 7C A5 62 14 */ add r5, r5, r12
+/* 802ECB98 002E87F8 7C BA 0E 70 */ srawi r26, r5, 1
+/* 802ECB9C 002E87FC 7C 1B D0 00 */ cmpw r27, r26
+/* 802ECBA0 002E8800 41 80 00 0C */ blt lbl_802ECBAC
+/* 802ECBA4 002E8804 39 20 00 01 */ li r9, 1
+/* 802ECBA8 002E8808 7F 7A D8 50 */ subf r27, r26, r27
+lbl_802ECBAC:
+/* 802ECBAC 002E880C 57 45 0F FE */ srwi r5, r26, 0x1f
+/* 802ECBB0 002E8810 7C A5 D2 14 */ add r5, r5, r26
+/* 802ECBB4 002E8814 7C B9 0E 70 */ srawi r25, r5, 1
+/* 802ECBB8 002E8818 7C 1B C8 00 */ cmpw r27, r25
+/* 802ECBBC 002E881C 41 80 00 0C */ blt lbl_802ECBC8
+/* 802ECBC0 002E8820 39 40 00 01 */ li r10, 1
+/* 802ECBC4 002E8824 7F 79 D8 50 */ subf r27, r25, r27
+lbl_802ECBC8:
+/* 802ECBC8 002E8828 7E 99 51 D6 */ mullw r20, r25, r10
+/* 802ECBCC 002E882C 54 E5 08 3C */ slwi r5, r7, 1
+/* 802ECBD0 002E8830 57 33 0F FE */ srwi r19, r25, 0x1f
+/* 802ECBD4 002E8834 20 A5 00 01 */ subfic r5, r5, 1
+/* 802ECBD8 002E8838 7E 73 CA 14 */ add r19, r19, r25
+/* 802ECBDC 002E883C 7E AC 41 D6 */ mullw r21, r12, r8
+/* 802ECBE0 002E8840 7E 73 0E 70 */ srawi r19, r19, 1
+/* 802ECBE4 002E8844 7E DA 49 D6 */ mullw r22, r26, r9
+/* 802ECBE8 002E8848 7E B4 AA 14 */ add r21, r20, r21
+/* 802ECBEC 002E884C 7E D3 B2 14 */ add r22, r19, r22
+/* 802ECBF0 002E8850 7E D5 B2 14 */ add r22, r21, r22
+/* 802ECBF4 002E8854 7C A5 B1 D6 */ mullw r5, r5, r22
+/* 802ECBF8 002E8858 7C 05 20 00 */ cmpw r5, r4
+/* 802ECBFC 002E885C 40 81 00 08 */ ble lbl_802ECC04
+/* 802ECC00 002E8860 38 A3 FF FF */ addi r5, r3, -1
+lbl_802ECC04:
+/* 802ECC04 002E8864 7C 05 00 00 */ cmpw r5, r0
+/* 802ECC08 002E8868 40 80 00 08 */ bge lbl_802ECC10
+/* 802ECC0C 002E886C 3C A0 FF FF */ lis r5, 0xffff
+lbl_802ECC10:
+/* 802ECC10 002E8870 7D 6B 2A 14 */ add r11, r11, r5
+/* 802ECC14 002E8874 2C 0B 7F FF */ cmpwi r11, 0x7fff
+/* 802ECC18 002E8878 40 81 00 08 */ ble lbl_802ECC20
+/* 802ECC1C 002E887C 39 60 7F FF */ li r11, 0x7fff
+lbl_802ECC20:
+/* 802ECC20 002E8880 2C 0B 80 00 */ cmpwi r11, -32768
+/* 802ECC24 002E8884 40 80 00 08 */ bge lbl_802ECC2C
+/* 802ECC28 002E8888 39 60 80 00 */ li r11, -32768
+lbl_802ECC2C:
+/* 802ECC2C 002E888C 6D 8C 80 00 */ xoris r12, r12, 0x8000
+/* 802ECC30 002E8890 55 12 10 3A */ slwi r18, r8, 2
+/* 802ECC34 002E8894 91 81 00 4C */ stw r12, 0x4c(r1)
+/* 802ECC38 002E8898 54 D6 07 FE */ clrlwi r22, r6, 0x1f
+/* 802ECC3C 002E889C 55 29 08 3C */ slwi r9, r9, 1
+/* 802ECC40 002E88A0 7D 0A 92 14 */ add r8, r10, r18
+/* 802ECC44 002E88A4 92 E1 00 48 */ stw r23, 0x48(r1)
+/* 802ECC48 002E88A8 7D 09 42 14 */ add r8, r9, r8
+/* 802ECC4C 002E88AC 55 08 18 38 */ slwi r8, r8, 3
+/* 802ECC50 002E88B0 54 CC 0F FE */ srwi r12, r6, 0x1f
+/* 802ECC54 002E88B4 C8 21 00 48 */ lfd f1, 0x48(r1)
+/* 802ECC58 002E88B8 7D 29 92 14 */ add r9, r9, r18
+/* 802ECC5C 002E88BC 7C 18 44 AE */ lfdx f0, r24, r8
+/* 802ECC60 002E88C0 7D 0C 32 14 */ add r8, r12, r6
+/* 802ECC64 002E88C4 FC 21 10 28 */ fsub f1, f1, f2
+/* 802ECC68 002E88C8 7D 0C 0E 70 */ srawi r12, r8, 1
+/* 802ECC6C 002E88CC 54 E8 18 38 */ slwi r8, r7, 3
+/* 802ECC70 002E88D0 7C EA 4A 14 */ add r7, r10, r9
+/* 802ECC74 002E88D4 7C E8 3A 14 */ add r7, r8, r7
+/* 802ECC78 002E88D8 3A D6 FF FF */ addi r22, r22, -1
+/* 802ECC7C 002E88DC FC 01 00 32 */ fmul f0, f1, f0
+/* 802ECC80 002E88E0 56 C9 07 7A */ rlwinm r9, r22, 0, 0x1d, 0x1d
+/* 802ECC84 002E88E4 54 E7 06 3E */ clrlwi r7, r7, 0x18
+/* 802ECC88 002E88E8 7D 1F 60 AE */ lbzx r8, r31, r12
+/* 802ECC8C 002E88EC 7C E7 48 30 */ slw r7, r7, r9
+/* 802ECC90 002E88F0 7D 07 3B 78 */ or r7, r8, r7
+/* 802ECC94 002E88F4 FC 00 00 1E */ fctiwz f0, f0
+/* 802ECC98 002E88F8 7C FF 61 AE */ stbx r7, r31, r12
+/* 802ECC9C 002E88FC D8 01 00 50 */ stfd f0, 0x50(r1)
+/* 802ECCA0 002E8900 81 81 00 54 */ lwz r12, 0x54(r1)
+/* 802ECCA4 002E8904 2C 0C 00 7F */ cmpwi r12, 0x7f
+/* 802ECCA8 002E8908 41 81 00 08 */ bgt lbl_802ECCB0
+/* 802ECCAC 002E890C 39 80 00 7F */ li r12, 0x7f
+lbl_802ECCB0:
+/* 802ECCB0 002E8910 2C 0C 60 00 */ cmpwi r12, 0x6000
+/* 802ECCB4 002E8914 41 80 00 08 */ blt lbl_802ECCBC
+/* 802ECCB8 002E8918 39 80 60 00 */ li r12, 0x6000
+lbl_802ECCBC:
+/* 802ECCBC 002E891C 38 C6 00 01 */ addi r6, r6, 1
+/* 802ECCC0 002E8920 42 00 FE 8C */ bdnz lbl_802ECB4C
+lbl_802ECCC4:
+/* 802ECCC4 002E8924 91 7C 00 00 */ stw r11, 0(r28)
+/* 802ECCC8 002E8928 39 61 00 90 */ addi r11, r1, 0x90
+/* 802ECCCC 002E892C 7F C3 F3 78 */ mr r3, r30
+/* 802ECCD0 002E8930 91 9C 00 04 */ stw r12, 4(r28)
+/* 802ECCD4 002E8934 90 BC 00 08 */ stw r5, 8(r28)
+/* 802ECCD8 002E8938 93 7C 00 0C */ stw r27, 0xc(r28)
+/* 802ECCDC 002E893C 93 5C 00 10 */ stw r26, 0x10(r28)
+/* 802ECCE0 002E8940 93 3C 00 14 */ stw r25, 0x14(r28)
+/* 802ECCE4 002E8944 4B ED A4 6D */ bl _restgpr_18
+/* 802ECCE8 002E8948 80 01 00 94 */ lwz r0, 0x94(r1)
+/* 802ECCEC 002E894C 7C 08 03 A6 */ mtlr r0
+/* 802ECCF0 002E8950 38 21 00 90 */ addi r1, r1, 0x90
+/* 802ECCF4 002E8954 4E 80 00 20 */ blr
diff --git a/asm/SDK/WPAD/WPAD.s b/asm/SDK/WPAD/WPAD.s
index 0dca761..638cbe5 100644
--- a/asm/SDK/WPAD/WPAD.s
+++ b/asm/SDK/WPAD/WPAD.s
@@ -1793,7 +1793,7 @@ lbl_802A748C:
/* 802A750C 002A316C 40 82 00 28 */ bne lbl_802A7534
/* 802A7510 002A3170 3C 60 80 54 */ lis r3, lbl_8053AC28@ha
/* 802A7514 002A3174 38 63 AC 28 */ addi r3, r3, lbl_8053AC28@l
-/* 802A7518 002A3178 48 04 50 F5 */ bl func_802EC60C
+/* 802A7518 002A3178 48 04 50 F5 */ bl SCSetBtDeviceInfoArray
/* 802A751C 002A317C 2C 03 00 01 */ cmpwi r3, 1
/* 802A7520 002A3180 40 82 00 14 */ bne lbl_802A7534
/* 802A7524 002A3184 38 60 00 00 */ li r3, 0
@@ -1807,7 +1807,7 @@ lbl_802A7534:
/* 802A7540 002A31A0 48 04 34 AD */ bl SCCheckStatus
/* 802A7544 002A31A4 2C 03 00 00 */ cmpwi r3, 0
/* 802A7548 002A31A8 40 82 00 88 */ bne lbl_802A75D0
-/* 802A754C 002A31AC 48 04 50 CD */ bl func_802EC618
+/* 802A754C 002A31AC 48 04 50 CD */ bl SCGetBtDpdSensibility
/* 802A7550 002A31B0 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 802A7554 002A31B4 28 00 00 01 */ cmplwi r0, 1
/* 802A7558 002A31B8 40 80 00 08 */ bge ENCiCheckBreakType
@@ -1818,19 +1818,19 @@ ENCiCheckBreakType:
/* 802A7568 002A31C8 38 00 00 05 */ li r0, 5
lbl_802A756C:
/* 802A756C 002A31CC 98 0D AE 61 */ stb r0, lbl_80640121-_SDA_BASE_(r13)
-/* 802A7570 002A31D0 48 04 51 6D */ bl func_802EC6DC
+/* 802A7570 002A31D0 48 04 51 6D */ bl SCGetWpadSensorBarPosition
/* 802A7574 002A31D4 54 63 06 3E */ clrlwi r3, r3, 0x18
/* 802A7578 002A31D8 38 03 FF FF */ addi r0, r3, -1
/* 802A757C 002A31DC 7C 00 00 34 */ cntlzw r0, r0
/* 802A7580 002A31E0 54 00 DE 3E */ rlwinm r0, r0, 0x1b, 0x18, 0x1f
/* 802A7584 002A31E4 98 0D AE 60 */ stb r0, lbl_80640120-_SDA_BASE_(r13)
-/* 802A7588 002A31E8 48 04 50 F9 */ bl func_802EC680
+/* 802A7588 002A31E8 48 04 50 F9 */ bl SCGetWpadMotorMode
/* 802A758C 002A31EC 54 63 06 3E */ clrlwi r3, r3, 0x18
/* 802A7590 002A31F0 38 03 FF FF */ addi r0, r3, -1
/* 802A7594 002A31F4 7C 00 00 34 */ cntlzw r0, r0
/* 802A7598 002A31F8 54 00 D9 7E */ srwi r0, r0, 5
/* 802A759C 002A31FC 90 0D AE 5C */ stw r0, lbl_8064011C-_SDA_BASE_(r13)
-/* 802A75A0 002A3200 48 04 51 91 */ bl func_802EC730
+/* 802A75A0 002A3200 48 04 51 91 */ bl SCGetWpadSpeakerVolume
/* 802A75A4 002A3204 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802A75A8 002A3208 7C 64 1B 78 */ mr r4, r3
/* 802A75AC 002A320C 40 82 00 08 */ bne lbl_802A75B4
@@ -2091,7 +2091,7 @@ lbl_802A7924:
/* 802A7978 002A35D8 90 6D AE 54 */ stw r3, lbl_80640114-_SDA_BASE_(r13)
/* 802A797C 002A35DC 4B FC 1D 31 */ bl OSGetAppType
/* 802A7980 002A35E0 98 6D AE 58 */ stb r3, lbl_80640118-_SDA_BASE_(r13)
-/* 802A7984 002A35E4 48 04 4C 95 */ bl func_802EC618
+/* 802A7984 002A35E4 48 04 4C 95 */ bl SCGetBtDpdSensibility
/* 802A7988 002A35E8 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 802A798C 002A35EC 28 00 00 01 */ cmplwi r0, 1
/* 802A7990 002A35F0 40 80 00 08 */ bge lbl_802A7998
@@ -2102,19 +2102,19 @@ lbl_802A7998:
/* 802A79A0 002A3600 38 00 00 05 */ li r0, 5
lbl_802A79A4:
/* 802A79A4 002A3604 98 0D AE 61 */ stb r0, lbl_80640121-_SDA_BASE_(r13)
-/* 802A79A8 002A3608 48 04 4D 35 */ bl func_802EC6DC
+/* 802A79A8 002A3608 48 04 4D 35 */ bl SCGetWpadSensorBarPosition
/* 802A79AC 002A360C 54 63 06 3E */ clrlwi r3, r3, 0x18
/* 802A79B0 002A3610 38 03 FF FF */ addi r0, r3, -1
/* 802A79B4 002A3614 7C 00 00 34 */ cntlzw r0, r0
/* 802A79B8 002A3618 54 00 DE 3E */ rlwinm r0, r0, 0x1b, 0x18, 0x1f
/* 802A79BC 002A361C 98 0D AE 60 */ stb r0, lbl_80640120-_SDA_BASE_(r13)
-/* 802A79C0 002A3620 48 04 4C C1 */ bl func_802EC680
+/* 802A79C0 002A3620 48 04 4C C1 */ bl SCGetWpadMotorMode
/* 802A79C4 002A3624 54 63 06 3E */ clrlwi r3, r3, 0x18
/* 802A79C8 002A3628 38 03 FF FF */ addi r0, r3, -1
/* 802A79CC 002A362C 7C 00 00 34 */ cntlzw r0, r0
/* 802A79D0 002A3630 54 00 D9 7E */ srwi r0, r0, 5
/* 802A79D4 002A3634 90 0D AE 5C */ stw r0, lbl_8064011C-_SDA_BASE_(r13)
-/* 802A79D8 002A3638 48 04 4D 59 */ bl func_802EC730
+/* 802A79D8 002A3638 48 04 4D 59 */ bl SCGetWpadSpeakerVolume
/* 802A79DC 002A363C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802A79E0 002A3640 7C 66 1B 78 */ mr r6, r3
/* 802A79E4 002A3644 40 82 00 08 */ bne lbl_802A79EC
@@ -4089,10 +4089,10 @@ lbl_802A95F4:
/* 802A9608 002A5268 54 1F 0F FE */ srwi r31, r0, 0x1f
/* 802A960C 002A526C 4B FC 51 79 */ bl OSRestoreInterrupts
/* 802A9610 002A5270 7F C3 F3 78 */ mr r3, r30
-/* 802A9614 002A5274 48 04 31 71 */ bl func_802EC784
+/* 802A9614 002A5274 48 04 31 71 */ bl SCSetWpadSpeakerVolume
/* 802A9618 002A5278 54 7E 07 FE */ clrlwi r30, r3, 0x1f
/* 802A961C 002A527C 7F E3 FB 78 */ mr r3, r31
-/* 802A9620 002A5280 48 04 30 B5 */ bl func_802EC6D4
+/* 802A9620 002A5280 48 04 30 B5 */ bl SCSetWpadMotorMode
/* 802A9624 002A5284 7F DE 18 39 */ and. r30, r30, r3
/* 802A9628 002A5288 41 82 00 10 */ beq lbl_802A9638
/* 802A962C 002A528C 7F A3 EB 78 */ mr r3, r29
diff --git a/asm/SDK/WUD/WUD.s b/asm/SDK/WUD/WUD.s
index 124808a..9a03248 100644
--- a/asm/SDK/WUD/WUD.s
+++ b/asm/SDK/WUD/WUD.s
@@ -296,7 +296,7 @@ lbl_802B50A8:
/* 802B50C0 002B0D20 48 00 44 BD */ bl WUD_DEBUGPrint
/* 802B50C4 002B0D24 3C 60 80 54 */ lis r3, lbl_8053AC28@ha
/* 802B50C8 002B0D28 38 63 AC 28 */ addi r3, r3, lbl_8053AC28@l
-/* 802B50CC 002B0D2C 48 03 75 41 */ bl func_802EC60C
+/* 802B50CC 002B0D2C 48 03 75 41 */ bl SCSetBtDeviceInfoArray
/* 802B50D0 002B0D30 2C 03 00 00 */ cmpwi r3, 0
/* 802B50D4 002B0D34 38 60 00 16 */ li r3, 0x16
/* 802B50D8 002B0D38 41 82 00 08 */ beq lbl_802B50E0
@@ -1156,7 +1156,7 @@ DeleteAllHandler:
/* 802B5CA0 002B1900 38 A0 04 61 */ li r5, 0x461
/* 802B5CA4 002B1904 4B D4 E4 61 */ bl memset
/* 802B5CA8 002B1908 38 7F AC 28 */ addi r3, r31, -21464
-/* 802B5CAC 002B190C 48 03 69 61 */ bl func_802EC60C
+/* 802B5CAC 002B190C 48 03 69 61 */ bl SCSetBtDeviceInfoArray
/* 802B5CB0 002B1910 2C 03 00 00 */ cmpwi r3, 0
/* 802B5CB4 002B1914 41 82 00 70 */ beq lbl_802B5D24
/* 802B5CB8 002B1918 38 00 00 06 */ li r0, 6
@@ -1439,7 +1439,7 @@ WUDiGetRegisteredDevice:
/* 802B6090 002B1CF0 38 A0 04 61 */ li r5, 0x461
/* 802B6094 002B1CF4 4B D4 E0 71 */ bl memset
/* 802B6098 002B1CF8 38 7A AC 28 */ addi r3, r26, -21464
-/* 802B609C 002B1CFC 48 03 65 65 */ bl func_802EC600
+/* 802B609C 002B1CFC 48 03 65 65 */ bl SCGetBtDeviceInfoArray
/* 802B60A0 002B1D00 38 7A AC 28 */ addi r3, r26, -21464
/* 802B60A4 002B1D04 3A C0 00 00 */ li r22, 0
/* 802B60A8 002B1D08 3B 03 00 01 */ addi r24, r3, 1
@@ -1598,7 +1598,7 @@ lbl_802B62C4:
/* 802B62CC 002B1F2C 41 82 00 2C */ beq lbl_802B62F8
/* 802B62D0 002B1F30 3C 60 80 54 */ lis r3, lbl_8053AC28@ha
/* 802B62D4 002B1F34 38 63 AC 28 */ addi r3, r3, lbl_8053AC28@l
-/* 802B62D8 002B1F38 48 03 63 35 */ bl func_802EC60C
+/* 802B62D8 002B1F38 48 03 63 35 */ bl SCSetBtDeviceInfoArray
/* 802B62DC 002B1F3C 2C 03 00 00 */ cmpwi r3, 0
/* 802B62E0 002B1F40 41 82 00 18 */ beq lbl_802B62F8
/* 802B62E4 002B1F44 3C 60 80 2B */ lis r3, ShutFlushCallback@ha