summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/FUN_020C9C0C.s14299
-rw-r--r--asm/rom2.s3
-rw-r--r--asm/secure.s10
-rw-r--r--undefined_syms.txt15
4 files changed, 11708 insertions, 2619 deletions
diff --git a/asm/FUN_020C9C0C.s b/asm/FUN_020C9C0C.s
index ec92f002..50fcd3d5 100644
--- a/asm/FUN_020C9C0C.s
+++ b/asm/FUN_020C9C0C.s
@@ -5,207 +5,1021 @@
.text
+.extern FUN_020005F2
+.extern FUN_020EBBE8
+.extern FUN_020EBC80
+.extern FUN_020EBC80
+.extern FUN_020EBC80
+.extern FUN_020DBC80
+.extern FUN_020D7228
+.extern FUN_020D5764
+.extern FUN_020EBBE8
+.extern FUN_020D7228
+.extern FUN_020D66C0
+.extern FUN_020D72AC
+.extern FUN_02000950
+.extern FUN_020D5338
+.extern FUN_020D5338
+.extern FUN_020D66E0
+.extern FUN_020CD380
+.extern FUN_020D58C4
+.extern FUN_020D5374
+.extern FUN_020D5498
+.extern FUN_01FF857C
+.extern FUN_01FF84E4
+.extern FUN_01FF85F0
+
+
arm_func_start OS_WaitIrq
-OS_WaitIrq: ; 0x020C9C0C
+OS_WaitIrq:
stmdb sp!, {r4-r6,lr}
mov r5, r0
mov r4, r1
- bl FUN_020CD310
-_020C9C1C:
- .byte 0x00, 0x00, 0x55, 0xE3
- .byte 0x05, 0x00, 0x00, 0x0A, 0x54, 0x10, 0x9F, 0xE5, 0x04, 0x20, 0xE0, 0xE1, 0x03, 0x1A, 0x81, 0xE2
- .byte 0xF8, 0x3F, 0x91, 0xE5, 0x02, 0x20, 0x03, 0xE0, 0xF8, 0x2F, 0x81, 0xE5, 0xB8, 0x0D, 0x00, 0xEB
- .byte 0x38, 0x10, 0x9F, 0xE5, 0x03, 0x0A, 0x81, 0xE2, 0xF8, 0x0F, 0x90, 0xE5, 0x00, 0x00, 0x14, 0xE0
- .byte 0x70, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x24, 0x00, 0x9F, 0xE5, 0x00, 0x60, 0x81, 0xE0
- .byte 0x20, 0x50, 0x9F, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x9D, 0x05, 0x00, 0xEB, 0x00, 0x00, 0x96, 0xE5
- .byte 0x00, 0x00, 0x14, 0xE0, 0xFA, 0xFF, 0xFF, 0x0A, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x7E, 0x02, 0xF8, 0x3F, 0x00, 0x00, 0x60, 0x00, 0x7E, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x07, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x06, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x05, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x04, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x03, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x02, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x0C, 0x9D, 0x0C, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x0C, 0x10, 0xA0, 0xE3, 0x90, 0x01, 0x04, 0xE0, 0x70, 0x20, 0x9F, 0xE5
- .byte 0x70, 0x30, 0x9F, 0xE5, 0x80, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0x92, 0xE7, 0xB0, 0x30, 0x93, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0x82, 0xE7, 0x00, 0x00, 0x51, 0xE3
- .byte 0x15, 0x53, 0xA0, 0xE1, 0x02, 0x00, 0x00, 0x0A, 0x4C, 0x00, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE7
- .byte 0x31, 0xFF, 0x2F, 0xE1, 0x44, 0x00, 0x9F, 0xE5, 0x44, 0x10, 0x9F, 0xE5, 0x03, 0x0A, 0x80, 0xE2
- .byte 0xF8, 0x2F, 0x90, 0xE5, 0x05, 0x20, 0x82, 0xE1, 0xF8, 0x2F, 0x80, 0xE5, 0x04, 0x00, 0x91, 0xE7
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x22, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x1C, 0x34, 0x1D, 0x02, 0x18, 0x68, 0x10, 0x02, 0x24, 0x34, 0x1D, 0x02
- .byte 0x00, 0x00, 0x7E, 0x02, 0x20, 0x34, 0x1D, 0x02, 0x1E, 0xFF, 0x2F, 0xE1, 0x1C, 0xC0, 0x9F, 0xE5
- .byte 0x1C, 0x30, 0x9F, 0xE5, 0x03, 0x0A, 0x8C, 0xE2, 0x18, 0x20, 0x9F, 0xE5, 0x18, 0x10, 0x9F, 0xE5
- .byte 0x7C, 0x3F, 0x80, 0xE5, 0xFE, 0x0D, 0x8C, 0xE2, 0x01, 0x20, 0x00, 0xE7, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x7E, 0x02, 0x7D, 0x59, 0xDB, 0xFD, 0x5B, 0xDD, 0xF9, 0x7B, 0x00, 0x04, 0x00, 0x00
- .byte 0x24, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0xB0, 0x30, 0xDC, 0xE1, 0x1C, 0x20, 0x9F, 0xE5
- .byte 0xB0, 0x10, 0xCC, 0xE1, 0x00, 0x10, 0x92, 0xE5, 0x00, 0x00, 0x82, 0xE5, 0xB0, 0x00, 0xDC, 0xE1
- .byte 0x01, 0x00, 0xA0, 0xE1, 0xB0, 0x30, 0xCC, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x02, 0x00, 0x04
- .byte 0x14, 0x02, 0x00, 0x04, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x30, 0xE0, 0x9F, 0xE5
- .byte 0x00, 0x30, 0xA0, 0xE3, 0xB0, 0xC0, 0xDE, 0xE1, 0x28, 0x20, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE1
- .byte 0xB0, 0x30, 0xCE, 0xE1, 0x00, 0x00, 0x92, 0xE5, 0x01, 0x10, 0x00, 0xE0, 0x00, 0x10, 0x82, 0xE5
- .byte 0xB0, 0x10, 0xDE, 0xE1, 0xB0, 0xC0, 0xCE, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x02, 0x00, 0x04, 0x10, 0x02, 0x00, 0x04, 0x28, 0xC0, 0x9F, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0xB0, 0x30, 0xDC, 0xE1, 0x20, 0x20, 0x9F, 0xE5, 0xB0, 0x10, 0xCC, 0xE1
- .byte 0x00, 0x10, 0x92, 0xE5, 0x00, 0x00, 0x81, 0xE1, 0x00, 0x00, 0x82, 0xE5, 0xB0, 0x00, 0xDC, 0xE1
- .byte 0x01, 0x00, 0xA0, 0xE1, 0xB0, 0x30, 0xCC, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x02, 0x00, 0x04
- .byte 0x10, 0x02, 0x00, 0x04, 0x24, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0xB0, 0x30, 0xDC, 0xE1
- .byte 0x1C, 0x20, 0x9F, 0xE5, 0xB0, 0x10, 0xCC, 0xE1, 0x00, 0x10, 0x92, 0xE5, 0x00, 0x00, 0x82, 0xE5
- .byte 0xB0, 0x00, 0xDC, 0xE1, 0x01, 0x00, 0xA0, 0xE1, 0xB0, 0x30, 0xCC, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0x02, 0x00, 0x04, 0x10, 0x02, 0x00, 0x04, 0x10, 0x40, 0x2D, 0xE9, 0x0C, 0x30, 0xA0, 0xE3
- .byte 0x90, 0x03, 0x04, 0xE0, 0x2C, 0xC0, 0x9F, 0xE5, 0x03, 0x00, 0x80, 0xE2, 0x01, 0x30, 0xA0, 0xE3
- .byte 0x13, 0x00, 0xA0, 0xE1, 0x20, 0x30, 0x9F, 0xE5, 0x04, 0x10, 0x8C, 0xE7, 0x04, 0x20, 0x83, 0xE7
- .byte 0xD9, 0xFF, 0xFF, 0xEB, 0x14, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE7
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x4C, 0x34, 0x1D, 0x02, 0x54, 0x34, 0x1D, 0x02
- .byte 0x50, 0x34, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x0C, 0x30, 0xA0, 0xE3, 0x90, 0x03, 0x06, 0xE0
- .byte 0x2C, 0xC0, 0x9F, 0xE5, 0x08, 0x40, 0x80, 0xE2, 0x01, 0x50, 0xA0, 0xE3, 0x15, 0x04, 0xA0, 0xE1
- .byte 0x20, 0x30, 0x9F, 0xE5, 0x06, 0x10, 0x8C, 0xE7, 0x06, 0x20, 0x83, 0xE7, 0xC6, 0xFF, 0xFF, 0xEB
- .byte 0x15, 0x14, 0x00, 0xE0, 0x10, 0x00, 0x9F, 0xE5, 0x06, 0x10, 0x80, 0xE7, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x1C, 0x34, 0x1D, 0x02, 0x24, 0x34, 0x1D, 0x02, 0x20, 0x34, 0x1D, 0x02
- .byte 0x7C, 0x20, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x01, 0x10, 0x10, 0xE2, 0x15, 0x00, 0x00, 0x0A
- .byte 0x08, 0x00, 0x53, 0xE3, 0x07, 0x00, 0x00, 0xBA, 0x0B, 0x00, 0x53, 0xE3, 0x05, 0x00, 0x00, 0xCA
- .byte 0x08, 0x10, 0x43, 0xE2, 0x0C, 0x00, 0xA0, 0xE3, 0x91, 0x00, 0x02, 0xE0, 0x54, 0x00, 0x9F, 0xE5
- .byte 0x02, 0x00, 0x90, 0xE7, 0x1E, 0xFF, 0x2F, 0xE1, 0x03, 0x00, 0x53, 0xE3, 0x07, 0x00, 0x00, 0xBA
- .byte 0x06, 0x00, 0x53, 0xE3, 0x05, 0x00, 0x00, 0xCA, 0x01, 0x10, 0x83, 0xE2, 0x0C, 0x00, 0xA0, 0xE3
- .byte 0x91, 0x00, 0x02, 0xE0, 0x2C, 0x00, 0x9F, 0xE5, 0x02, 0x00, 0x90, 0xE7, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x92, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x30, 0x83, 0xE2, 0x16, 0x00, 0x53, 0xE3
- .byte 0xA0, 0x00, 0xA0, 0xE1, 0x04, 0x20, 0x82, 0xE2, 0xE2, 0xFF, 0xFF, 0xBA, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x7E, 0x02, 0x1C, 0x34, 0x1D, 0x02, 0xF0, 0x41, 0x2D, 0xE9
- .byte 0x00, 0x80, 0xA0, 0xE3, 0x78, 0xE0, 0x9F, 0xE5, 0x78, 0x50, 0x9F, 0xE5, 0x08, 0x60, 0xA0, 0xE1
- .byte 0x08, 0xC0, 0xA0, 0xE1, 0x01, 0x30, 0xA0, 0xE3, 0x0C, 0x20, 0xA0, 0xE3, 0x01, 0x40, 0x10, 0xE2
- .byte 0x11, 0x00, 0x00, 0x0A, 0x06, 0x70, 0xA0, 0xE1, 0x08, 0x00, 0x58, 0xE3, 0x03, 0x00, 0x00, 0xBA
- .byte 0x0B, 0x00, 0x58, 0xE3, 0x08, 0x40, 0x48, 0xD2, 0x94, 0x52, 0x27, 0xD0, 0x06, 0x00, 0x00, 0xDA
- .byte 0x03, 0x00, 0x58, 0xE3, 0x03, 0x00, 0x00, 0xBA, 0x06, 0x00, 0x58, 0xE3, 0x01, 0x40, 0x88, 0xD2
- .byte 0x94, 0x52, 0x27, 0xD0, 0x00, 0x00, 0x00, 0xDA, 0x08, 0x11, 0x8E, 0xE7, 0x00, 0x00, 0x57, 0xE3
- .byte 0x00, 0x10, 0x87, 0x15, 0x08, 0xC0, 0x87, 0x15, 0x04, 0x30, 0x87, 0x15, 0x01, 0x80, 0x88, 0xE2
- .byte 0x16, 0x00, 0x58, 0xE3, 0xA0, 0x00, 0xA0, 0xE1, 0xE7, 0xFF, 0xFF, 0xBA, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x7E, 0x02, 0x1C, 0x34, 0x1D, 0x02, 0x0C, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5, 0x00, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x60, 0x00, 0x7E, 0x02, 0x00, 0x10, 0x9F, 0xE5, 0x11, 0xFF, 0x2F, 0xE1, 0xE8, 0xA1, 0x0C, 0x02
- .byte 0x48, 0x30, 0x9F, 0xE5, 0x00, 0x10, 0x93, 0xE5, 0x11, 0x2F, 0x6F, 0xE1, 0x20, 0x00, 0x52, 0xE3
- .byte 0x40, 0x00, 0xA0, 0x13, 0x06, 0x00, 0x00, 0x1A, 0x04, 0x30, 0x83, 0xE2, 0x00, 0x10, 0x93, 0xE5
- .byte 0x11, 0x2F, 0x6F, 0xE1, 0x20, 0x00, 0x52, 0xE3, 0x24, 0x00, 0x9F, 0xE5, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x60, 0x00, 0xA0, 0xE3, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x11, 0xA0, 0xE3, 0x31, 0x12, 0xA0, 0xE1
- .byte 0x00, 0x20, 0x93, 0xE5, 0x01, 0x20, 0xC2, 0xE1, 0x00, 0x20, 0x83, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xB0, 0xFF, 0x7F, 0x02, 0xFD, 0xFF, 0xFF, 0xFF, 0x24, 0x30, 0x9F, 0xE5, 0x60, 0x00, 0x50, 0xE3
- .byte 0x04, 0x30, 0x83, 0x52, 0x60, 0x00, 0x40, 0x52, 0x40, 0x00, 0x40, 0x42, 0x02, 0x11, 0xA0, 0xE3
- .byte 0x31, 0x10, 0xA0, 0xE1, 0x00, 0x20, 0x93, 0xE5, 0x01, 0x20, 0x82, 0xE1, 0x00, 0x20, 0x83, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0xFF, 0x7F, 0x02, 0xB4, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x0C, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xD1, 0xE1, 0x02, 0x0B, 0x80, 0xE3, 0xB0, 0x00, 0xC1, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x02, 0x00, 0x04, 0x0C, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xD1, 0xE1
- .byte 0x02, 0x0B, 0xC0, 0xE3, 0xB0, 0x00, 0xC1, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x02, 0x00, 0x04
- .byte 0x08, 0xC0, 0x9F, 0xE5, 0x08, 0x10, 0x9F, 0xE5, 0x08, 0x20, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1
- .byte 0xA8, 0xA2, 0x0C, 0x02, 0xE0, 0xFF, 0x7F, 0x02, 0x30, 0xA1, 0x0C, 0x02, 0x08, 0xC0, 0x9F, 0xE5
- .byte 0x08, 0x10, 0x9F, 0xE5, 0x08, 0x20, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x48, 0xA3, 0x0C, 0x02
- .byte 0xE0, 0xFF, 0x7F, 0x02, 0x48, 0xA1, 0x0C, 0x02, 0x0C, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xD1, 0xE1
- .byte 0x80, 0x00, 0x80, 0xE3, 0xB0, 0x00, 0xC1, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x02, 0x00, 0x04
- .byte 0x0C, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xD1, 0xE1, 0x80, 0x00, 0xC0, 0xE3, 0xB0, 0x00, 0xC1, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x02, 0x00, 0x04, 0x0C, 0xC0, 0x9F, 0xE5, 0x0C, 0x10, 0x9F, 0xE5
- .byte 0x0C, 0x20, 0x9F, 0xE5, 0x01, 0x30, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x28, 0xA2, 0x0C, 0x02
- .byte 0xE8, 0xFF, 0x7F, 0x02, 0xB0, 0xA1, 0x0C, 0x02, 0x0C, 0xC0, 0x9F, 0xE5, 0x0C, 0x10, 0x9F, 0xE5
- .byte 0x0C, 0x20, 0x9F, 0xE5, 0x01, 0x30, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0xB8, 0xA2, 0x0C, 0x02
- .byte 0xE8, 0xFF, 0x7F, 0x02, 0x98, 0xA1, 0x0C, 0x02, 0x0C, 0xC0, 0x9F, 0xE5, 0x0C, 0x10, 0x9F, 0xE5
- .byte 0x0C, 0x20, 0x9F, 0xE5, 0x01, 0x30, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x58, 0xA3, 0x0C, 0x02
- .byte 0xE8, 0xFF, 0x7F, 0x02, 0xB0, 0xA1, 0x0C, 0x02, 0xF0, 0x43, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x03, 0x60, 0xB0, 0xE1, 0x00, 0x90, 0xA0, 0xE1, 0x01, 0x80, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1
- .byte 0x02, 0x00, 0x00, 0x0A, 0x3C, 0x0C, 0x00, 0xEB, 0x00, 0x50, 0xA0, 0xE1, 0x01, 0x00, 0x00, 0xEA
- .byte 0x2E, 0x0C, 0x00, 0xEB, 0x00, 0x50, 0xA0, 0xE1, 0x09, 0x00, 0xA0, 0xE1, 0x08, 0x10, 0xA0, 0xE1
- .byte 0xAE, 0x10, 0x00, 0xEB, 0x00, 0x40, 0xB0, 0xE1, 0x03, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x57, 0xE3
- .byte 0x00, 0x00, 0x00, 0x0A, 0x37, 0xFF, 0x2F, 0xE1, 0xB4, 0x90, 0xC8, 0xE1, 0x00, 0x00, 0x56, 0xE3
- .byte 0x02, 0x00, 0x00, 0x0A, 0x05, 0x00, 0xA0, 0xE1, 0x30, 0x0C, 0x00, 0xEB, 0x01, 0x00, 0x00, 0xEA
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x22, 0x0C, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0xB8, 0xA2, 0x0C, 0x02, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x01, 0x70, 0xA0, 0xE1, 0xB4, 0x10, 0xD7, 0xE1, 0x02, 0x60, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1
- .byte 0x01, 0x00, 0x50, 0xE1, 0x04, 0xD0, 0x8D, 0x12, 0x01, 0x00, 0xE0, 0x13, 0xF0, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x00, 0x55, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x12, 0x0C, 0x00, 0xEB
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x00, 0x00, 0xEA, 0x04, 0x0C, 0x00, 0xEB, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x00, 0x00, 0xA0, 0xE3, 0xB4, 0x00, 0xC7, 0xE1, 0x00, 0x00, 0x56, 0xE3, 0x00, 0x00, 0x00, 0x0A
- .byte 0x36, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x87, 0xE5, 0x00, 0x00, 0x55, 0xE3
- .byte 0x02, 0x00, 0x00, 0x0A, 0x04, 0x00, 0xA0, 0xE1, 0x08, 0x0C, 0x00, 0xEB, 0x01, 0x00, 0x00, 0xEA
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xFA, 0x0B, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0x58, 0xA3, 0x0C, 0x02, 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x80, 0xA0, 0xE1
- .byte 0x01, 0x70, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1, 0xAD, 0xFF, 0xFF, 0xEB
- .byte 0x00, 0x00, 0x50, 0xE3, 0xF0, 0x41, 0xBD, 0xD8, 0x1E, 0xFF, 0x2F, 0xD1, 0x01, 0x4B, 0xA0, 0xE3
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x99, 0xD8, 0xFC, 0xFB, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1
- .byte 0x06, 0x20, 0xA0, 0xE1, 0x05, 0x30, 0xA0, 0xE1, 0xA2, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
- .byte 0xF6, 0xFF, 0xFF, 0xCA, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0xC8, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x00, 0x00, 0x51, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x20, 0xA0, 0xE3
- .byte 0xB0, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x80, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x7E, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x20, 0x81, 0xE5, 0xD7, 0xFF, 0xFF, 0xEB, 0x98, 0x50, 0x9F, 0xE5, 0xB6, 0x00, 0xD5, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x01, 0x4B, 0xA0, 0xE3, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x7A, 0xD8, 0xFC, 0xFB, 0xB6, 0x00, 0xD5, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x1A
- .byte 0x74, 0x20, 0x9F, 0xE5, 0x00, 0xC0, 0xE0, 0xE3, 0x01, 0x08, 0xA0, 0xE3, 0x6C, 0x30, 0x9F, 0xE5
- .byte 0x6C, 0x10, 0x9F, 0xE5, 0x00, 0xC0, 0x82, 0xE5, 0x00, 0xC0, 0x60, 0xE2, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x28, 0x20, 0xA0, 0xE3, 0x00, 0xC0, 0x83, 0xE5, 0x6F, 0x0F, 0x00, 0xEB, 0x54, 0xC0, 0x9F, 0xE5
- .byte 0x40, 0x10, 0x9F, 0xE5, 0xB0, 0x30, 0xDC, 0xE1, 0x7E, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x02, 0x3B, 0x83, 0xE3, 0xB0, 0x30, 0xCC, 0xE1, 0xB0, 0x30, 0xDC, 0xE1, 0x80, 0x30, 0x83, 0xE3
- .byte 0xB0, 0x30, 0xCC, 0xE1, 0x8F, 0xFF, 0xFF, 0xEB, 0x18, 0x10, 0x9F, 0xE5, 0x7F, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x20, 0xA0, 0xE3, 0xB3, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x34, 0x1D, 0x02, 0xF0, 0xFF, 0x7F, 0x02, 0xB0, 0xFF, 0x7F, 0x02
- .byte 0xB4, 0xFF, 0x7F, 0x02, 0xC0, 0xFF, 0x7F, 0x02, 0x04, 0x02, 0x00, 0x04, 0xF0, 0x4F, 0x2D, 0xE9
- .byte 0x64, 0xD0, 0x4D, 0xE2, 0x02, 0x90, 0xA0, 0xE1, 0x54, 0x10, 0x8D, 0xE5, 0x5C, 0x00, 0x8D, 0xE5
- .byte 0x58, 0x00, 0x8D, 0xE5, 0xD0, 0x00, 0xD9, 0xE1, 0x00, 0x10, 0x8D, 0xE5, 0x03, 0xB0, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x13, 0x02, 0x00, 0x0A, 0x0A, 0x00, 0xA0, 0xE3, 0x0C, 0x00, 0x8D, 0xE5
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0x8D, 0xE5, 0x20, 0x00, 0xA0, 0xE3, 0x1C, 0x00, 0x8D, 0xE5
- .byte 0x30, 0x00, 0xA0, 0xE3, 0x20, 0x00, 0x8D, 0xE5, 0x00, 0x00, 0xE0, 0xE3, 0x08, 0x00, 0x8D, 0xE5
- .byte 0x57, 0x00, 0xA0, 0xE3, 0x10, 0x00, 0x8D, 0xE5, 0x08, 0x00, 0xA0, 0xE3, 0x14, 0x00, 0x8D, 0xE5
- .byte 0x37, 0x00, 0xA0, 0xE3, 0x18, 0x00, 0x8D, 0xE5, 0x10, 0x00, 0xA0, 0xE3, 0x24, 0x00, 0x8D, 0xE5
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x28, 0x00, 0x8D, 0xE5, 0x2B, 0x00, 0xA0, 0xE3, 0x34, 0x00, 0x8D, 0xE5
- .byte 0x2D, 0x00, 0xA0, 0xE3, 0x30, 0x00, 0x8D, 0xE5, 0x02, 0x00, 0xA0, 0xE3, 0x2C, 0x00, 0x8D, 0xE5
- .byte 0xD0, 0x10, 0xD9, 0xE1, 0xFF, 0x00, 0x01, 0xE2, 0x20, 0x00, 0x20, 0xE2, 0xA1, 0x00, 0x40, 0xE2
- .byte 0x3C, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x2A, 0x54, 0x00, 0x8D, 0xE2, 0x54, 0x02, 0x00, 0xEB
- .byte 0xD1, 0x10, 0xF9, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0xEB, 0x01, 0x00, 0x0A, 0x54, 0x00, 0x8D, 0xE2
- .byte 0x01, 0x90, 0x89, 0xE2, 0x4E, 0x02, 0x00, 0xEB, 0xE7, 0x01, 0x00, 0xEA, 0x25, 0x00, 0x51, 0xE3
- .byte 0x03, 0x00, 0x00, 0x0A, 0x54, 0x00, 0x8D, 0xE2, 0x01, 0x90, 0x89, 0xE2, 0x48, 0x02, 0x00, 0xEB
- .byte 0xE1, 0x01, 0x00, 0xEA, 0x04, 0x60, 0x9D, 0xE5, 0x08, 0x50, 0x9D, 0xE5, 0x0C, 0x20, 0x9D, 0xE5
- .byte 0x10, 0x00, 0x9D, 0xE5, 0x06, 0xA0, 0xA0, 0xE1, 0x09, 0x30, 0xA0, 0xE1, 0xD1, 0x40, 0xF9, 0xE1
- .byte 0x20, 0x00, 0x54, 0xE3, 0x02, 0x00, 0x00, 0xCA, 0x20, 0x00, 0x54, 0xE3, 0x10, 0x00, 0x00, 0x0A
- .byte 0x15, 0x00, 0x00, 0xEA, 0x30, 0x00, 0x54, 0xE3, 0x13, 0x00, 0x00, 0xCA, 0x2B, 0x00, 0x54, 0xE3
- .byte 0x11, 0x00, 0x00, 0xBA, 0x2B, 0x00, 0x54, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x2D, 0x00, 0x54, 0xE3
- .byte 0x09, 0x00, 0x00, 0x0A, 0x30, 0x00, 0x54, 0xE3, 0x09, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x00, 0xEA
- .byte 0xD1, 0x10, 0x59, 0xE1, 0x20, 0x00, 0x51, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x02, 0x60, 0x86, 0xE3
- .byte 0xE9, 0xFF, 0xFF, 0xEA, 0x01, 0x60, 0x86, 0xE3, 0xE7, 0xFF, 0xFF, 0xEA, 0x08, 0x60, 0x86, 0xE3
- .byte 0xE5, 0xFF, 0xFF, 0xEA, 0x10, 0x60, 0x86, 0xE3, 0xE3, 0xFF, 0xFF, 0xEA, 0x2A, 0x00, 0x54, 0xE3
- .byte 0x0A, 0x00, 0x00, 0x1A, 0x04, 0xB0, 0x8B, 0xE2, 0x04, 0xA0, 0x1B, 0xE5, 0x01, 0x90, 0x89, 0xE2
- .byte 0x00, 0x00, 0x5A, 0xE3, 0x00, 0xA0, 0x6A, 0xB2, 0x08, 0x60, 0x86, 0xB3, 0x08, 0x00, 0x00, 0xEA
- .byte 0xD1, 0x40, 0xD9, 0xE0, 0x0A, 0x10, 0xA0, 0xE3, 0x9A, 0x41, 0x21, 0xE0, 0x30, 0xA0, 0x41, 0xE2
- .byte 0xD0, 0x10, 0xD9, 0xE1, 0x30, 0x00, 0x51, 0xE3, 0x01, 0x00, 0x00, 0xBA, 0x39, 0x00, 0x51, 0xE3
- .byte 0xF6, 0xFF, 0xFF, 0xDA, 0xD0, 0x10, 0xD9, 0xE1, 0x2E, 0x00, 0x51, 0xE3, 0x12, 0x00, 0x00, 0x1A
- .byte 0xD1, 0x10, 0xF9, 0xE1, 0x04, 0x50, 0x9D, 0xE5, 0x2A, 0x00, 0x51, 0xE3, 0x09, 0x00, 0x00, 0x1A
- .byte 0x04, 0xB0, 0x8B, 0xE2, 0x04, 0x50, 0x1B, 0xE5, 0x01, 0x90, 0x89, 0xE2, 0x00, 0x00, 0x55, 0xE3
- .byte 0x08, 0x50, 0x9D, 0xB5, 0x08, 0x00, 0x00, 0xEA, 0xD1, 0x40, 0xD9, 0xE0, 0x0A, 0x10, 0xA0, 0xE3
- .byte 0x95, 0x41, 0x21, 0xE0, 0x30, 0x50, 0x41, 0xE2, 0xD0, 0x10, 0xD9, 0xE1, 0x30, 0x00, 0x51, 0xE3
- .byte 0x01, 0x00, 0x00, 0xBA, 0x39, 0x00, 0x51, 0xE3, 0xF6, 0xFF, 0xFF, 0xDA, 0xD0, 0x10, 0xD9, 0xE1
- .byte 0x68, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x6C, 0x00, 0x51, 0xE3, 0x06, 0x00, 0x00, 0x0A
- .byte 0x0A, 0x00, 0x00, 0xEA, 0xD1, 0x10, 0xF9, 0xE1, 0x68, 0x00, 0x51, 0xE3, 0x40, 0x60, 0x86, 0x13
- .byte 0x01, 0x90, 0x89, 0x02, 0x01, 0x6C, 0x86, 0x03, 0x04, 0x00, 0x00, 0xEA, 0xD1, 0x10, 0xF9, 0xE1
- .byte 0x6C, 0x00, 0x51, 0xE3, 0x20, 0x60, 0x86, 0x13, 0x01, 0x90, 0x89, 0x02, 0x80, 0x60, 0x86, 0x03
- .byte 0xD0, 0x10, 0xD9, 0xE1, 0x69, 0x00, 0x51, 0xE3, 0x10, 0x00, 0x00, 0xCA, 0x63, 0x00, 0x51, 0xE3
- .byte 0x06, 0x00, 0x00, 0xBA, 0x63, 0x00, 0x51, 0xE3, 0x29, 0x00, 0x00, 0x0A, 0x64, 0x00, 0x51, 0xE3
- .byte 0x95, 0x00, 0x00, 0x0A, 0x69, 0x00, 0x51, 0xE3, 0x93, 0x00, 0x00, 0x0A, 0x8B, 0x00, 0x00, 0xEA
- .byte 0x25, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0xCA, 0x25, 0x00, 0x51, 0xE3, 0x80, 0x00, 0x00, 0x0A
- .byte 0x86, 0x00, 0x00, 0xEA, 0x58, 0x00, 0x51, 0xE3, 0x18, 0x00, 0x00, 0x0A, 0x83, 0x00, 0x00, 0xEA
- .byte 0x6E, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0xCA, 0x6E, 0x00, 0x51, 0xE3, 0x62, 0x00, 0x00, 0x0A
- .byte 0x7E, 0x00, 0x00, 0xEA, 0x6F, 0x10, 0x41, 0xE2, 0x09, 0x00, 0x51, 0xE3, 0x01, 0xF1, 0x8F, 0x90
- .byte 0x7A, 0x00, 0x00, 0xEA, 0x08, 0x00, 0x00, 0xEA, 0x0E, 0x00, 0x00, 0xEA, 0x77, 0x00, 0x00, 0xEA
+ bl OS_DisableInterrupts
+
+ arm_func_start FUN_020C9C1C
+FUN_020C9C1C: ; 0x020C9C1C
+ cmp r5, #0x0
+ beq _020C9C3C
+ ldr r1, _020C9C80 ; =0x027E0000
+ mvn r2, r4
+ add r1, r1, #0x3000
+ ldr r3, [r1, #0xff8]
+ and r2, r3, r2
+ str r2, [r1, #0xff8]
+_020C9C3C:
+ bl OS_RestoreInterrupts
+ ldr r1, _020C9C80 ; =0x027E0000
+ add r0, r1, #0x3000
+ ldr r0, [r0, #0xff8]
+ ands r0, r4, r0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr r0, _020C9C84 ; =0x00003FF8
+ add r6, r1, r0
+ ldr r5, _020C9C88 ; =0x027E0060
+_020C9C64:
+ mov r0, r5
+ bl OS_SleepThread
+
+ arm_func_start FUN_020C9C6C
+FUN_020C9C6C: ; 0x020C9C6C
+ ldr r0, [r6, #0x0]
+ ands r0, r4, r0
+ beq _020C9C64
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020C9C80: .word 0x027E0000
+_020C9C84: .word 0x00003FF8
+_020C9C88: .word 0x027E0060
+
+ arm_func_start OSi_IrqTimer3
+OSi_IrqTimer3: ; 0x020C9C8C
+ ldr ip, _020C9C98 ; =OSi_IrqCallback
+ mov r0, #0x7
+ bx r12
+ .balign 4
+_020C9C98: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqTimer2
+OSi_IrqTimer2: ; 0x020C9C9C
+ ldr ip, _020C9CA8 ; =OSi_IrqCallback
+ mov r0, #0x6
+ bx r12
+ .balign 4
+_020C9CA8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqTimer1
+OSi_IrqTimer1: ; 0x020C9CAC
+ ldr ip, _020C9CB8 ; =OSi_IrqCallback
+ mov r0, #0x5
+ bx r12
+ .balign 4
+_020C9CB8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqTimer0
+OSi_IrqTimer0: ; 0x020C9CBC
+ ldr ip, _020C9CC8 ; =OSi_IrqCallback
+ mov r0, #0x4
+ bx r12
+ .balign 4
+_020C9CC8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma3
+OSi_IrqDma3: ; 0x020C9CCC
+ ldr ip, _020C9CD8 ; =OSi_IrqCallback
+ mov r0, #0x3
+ bx r12
+ .balign 4
+_020C9CD8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma2
+OSi_IrqDma2: ; 0x020C9CDC
+ ldr ip, _020C9CE8 ; =OSi_IrqCallback
+ mov r0, #0x2
+ bx r12
+ .balign 4
+_020C9CE8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma1
+OSi_IrqDma1: ; 0x020C9CEC
+ ldr ip, _020C9CF8 ; =OSi_IrqCallback
+ mov r0, #0x1
+ bx r12
+ .balign 4
+_020C9CF8: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqDma0
+OSi_IrqDma0: ; 0x020C9CFC
+ ldr ip, _020C9D08 ; =OSi_IrqCallback
+ mov r0, #0x0
+ bx r12
+ .balign 4
+_020C9D08: .word OSi_IrqCallback
+
+ arm_func_start OSi_IrqCallback
+OSi_IrqCallback: ; 0x020C9D0C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r1, #0xc
+ mul r4, r0, r1
+ ldr r2, _020C9D94 ; =0x021D341C
+ ldr r3, _020C9D98 ; =0x02106818
+ mov r0, r0, lsl #0x1
+ ldr r1, [r2, r4]
+ ldrh r3, [r3, r0]
+ mov r5, #0x1
+ mov r0, #0x0
+ str r0, [r2, r4]
+ cmp r1, #0x0
+ mov r5, r5, lsl r3
+ beq _020C9D54
+ ldr r0, _020C9D9C ; =0x021D3424
+ ldr r0, [r0, r4]
+ blx r1
+_020C9D54:
+ ldr r0, _020C9DA0 ; =0x027E0000
+ ldr r1, _020C9DA4 ; =0x021D3420
+ add r0, r0, #0x3000
+ ldr r2, [r0, #0xff8]
+ orr r2, r2, r5
+ str r2, [r0, #0xff8]
+ ldr r0, [r1, r4]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r0, r5
+ bl OS_DisableIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020C9D94: .word 0x021D341C
+_020C9D98: .word 0x02106818
+_020C9D9C: .word 0x021D3424
+_020C9DA0: .word 0x027E0000
+_020C9DA4: .word 0x021D3420
+
+ arm_func_start OS_IrqDummy
+OS_IrqDummy: ; 0x020C9DA8
+ bx lr
+
+ arm_func_start OS_SetIrqStackChecker
+OS_SetIrqStackChecker: ; 0x020C9DAC
+ ldr ip, _020C9DD0 ; =0x027E0000
+ ldr r3, _020C9DD4 ; =0xFDDB597D
+ add r0, r12, #0x3000
+ ldr r2, _020C9DD8 ; =0x7BF9DD5B
+ ldr r1, _020C9DDC ; =0x00000400
+ str r3, [r0, #0xf7c]
+ add r0, r12, #0x3f80
+ str r2, [r0, -r1]
+ bx lr
+ .balign 4
+_020C9DD0: .word 0x027E0000
+_020C9DD4: .word 0xFDDB597D
+_020C9DD8: .word 0x7BF9DD5B
+_020C9DDC: .word 0x00000400
+
+ arm_func_start OS_ResetRequestIrqMask
+OS_ResetRequestIrqMask: ; 0x020C9DE0
+ ldr ip, _020C9E0C ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9E10 ; =0x04000214
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9E0C: .word 0x04000208
+_020C9E10: .word 0x04000214
+
+ arm_func_start OS_DisableIrqMask
+OS_DisableIrqMask: ; 0x020C9E14
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr lr, _020C9E54 ; =0x04000208
+ mov r3, #0x0
+ ldrh r12, [lr, #0x0]
+ ldr r2, _020C9E58 ; =0x04000210
+ mvn r1, r0
+ strh r3, [lr, #0x0]
+ ldr r0, [r2, #0x0]
+ and r1, r0, r1
+ str r1, [r2, #0x0]
+ ldrh r1, [lr, #0x0]
+ strh r12, [lr, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020C9E54: .word 0x04000208
+_020C9E58: .word 0x04000210
+
+ arm_func_start OS_EnableIrqMask
+OS_EnableIrqMask: ; 0x020C9E5C
+ ldr ip, _020C9E8C ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9E90 ; =0x04000210
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ orr r0, r1, r0
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9E8C: .word 0x04000208
+_020C9E90: .word 0x04000210
+
+ arm_func_start OS_SetIrqMask
+OS_SetIrqMask: ; 0x020C9E94
+ ldr ip, _020C9EC0 ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9EC4 ; =0x04000210
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9EC0: .word 0x04000208
+_020C9EC4: .word 0x04000210
+
+ arm_func_start OSi_EnterTimerCallback
+OSi_EnterTimerCallback: ; 0x020C9EC8
+ stmdb sp!, {r4,lr}
+ mov r3, #0xc
+ mul r4, r0, r3
+ ldr ip, _020C9F08 ; =0x021D344C
+ add r0, r0, #0x3
+ mov r3, #0x1
+ mov r0, r3, lsl r0
+ ldr r3, _020C9F0C ; =0x021D3454
+ str r1, [r12, r4]
+ str r2, [r3, r4]
+ bl OS_EnableIrqMask
+ ldr r0, _020C9F10 ; =0x021D3450
+ mov r1, #0x1
+ str r1, [r0, r4]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020C9F08: .word 0x021D344C
+_020C9F0C: .word 0x021D3454
+_020C9F10: .word 0x021D3450
+
+ arm_func_start OSi_EnterDmaCallback
+OSi_EnterDmaCallback: ; 0x020C9F14
+ stmdb sp!, {r4-r6,lr}
+ mov r3, #0xc
+ mul r6, r0, r3
+ ldr ip, _020C9F54 ; =0x021D341C
+ add r4, r0, #0x8
+ mov r5, #0x1
+ mov r0, r5, lsl r4
+ ldr r3, _020C9F58 ; =0x021D3424
+ str r1, [r12, r6]
+ str r2, [r3, r6]
+ bl OS_EnableIrqMask
+ and r1, r0, r5, lsl r4
+ ldr r0, _020C9F5C ; =0x021D3420
+ str r1, [r0, r6]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020C9F54: .word 0x021D341C
+_020C9F58: .word 0x021D3424
+_020C9F5C: .word 0x021D3420
+
+ arm_func_start OS_GetIrqFunction
+OS_GetIrqFunction: ; 0x020C9F60
+ ldr r2, _020C9FE4 ; =0x027E0000
+ mov r3, #0x0
+_020C9F68:
+ ands r1, r0, #0x1
+ beq _020C9FC8
+ cmp r3, #0x8
+ blt _020C9F98
+ cmp r3, #0xb
+ bgt _020C9F98
+ sub r1, r3, #0x8
+ mov r0, #0xc
+ mul r2, r1, r0
+ ldr r0, _020C9FE8 ; =0x021D341C
+ ldr r0, [r0, r2]
+ bx lr
+_020C9F98:
+ cmp r3, #0x3
+ blt _020C9FC0
+ cmp r3, #0x6
+ bgt _020C9FC0
+ add r1, r3, #0x1
+ mov r0, #0xc
+ mul r2, r1, r0
+ ldr r0, _020C9FE8 ; =0x021D341C
+ ldr r0, [r0, r2]
+ bx lr
+_020C9FC0:
+ ldr r0, [r2, #0x0]
+ bx lr
+_020C9FC8:
+ add r3, r3, #0x1
+ cmp r3, #0x16
+ mov r0, r0, lsr #0x1
+ add r2, r2, #0x4
+ blt _020C9F68
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_020C9FE4: .word 0x027E0000
+_020C9FE8: .word 0x021D341C
+
+ arm_func_start OS_SetIrqFunction
+OS_SetIrqFunction: ; 0x020C9FEC
+ stmdb sp!, {r4-r8,lr}
+ mov r8, #0x0
+ ldr lr, _020CA074 ; =0x027E0000
+ ldr r5, _020CA078 ; =0x021D341C
+ mov r6, r8
+ mov r12, r8
+ mov r3, #0x1
+ mov r2, #0xc
+_020CA00C:
+ ands r4, r0, #0x1
+ beq _020CA05C
+ mov r7, r6
+ cmp r8, #0x8
+ blt _020CA030
+ cmp r8, #0xb
+ suble r4, r8, #0x8
+ mlale r7, r4, r2, r5
+ ble _020CA04C
+_020CA030:
+ cmp r8, #0x3
+ blt _020CA048
+ cmp r8, #0x6
+ addle r4, r8, #0x1
+ mlale r7, r4, r2, r5
+ ble _020CA04C
+_020CA048:
+ str r1, [lr, r8, lsl #0x2]
+_020CA04C:
+ cmp r7, #0x0
+ strne r1, [r7, #0x0]
+ strne r12, [r7, #0x8]
+ strne r3, [r7, #0x4]
+_020CA05C:
+ add r8, r8, #0x1
+ cmp r8, #0x16
+ mov r0, r0, lsr #0x1
+ blt _020CA00C
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CA074: .word 0x027E0000
+_020CA078: .word 0x021D341C
+
+ arm_func_start OS_InitIrqTable
+OS_InitIrqTable: ; 0x020CA07C
+ ldr r0, _020CA090 ; =0x027E0060
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CA090: .word 0x027E0060
+
+ arm_func_start OS_UnlockCartridge
+OS_UnlockCartridge: ; 0x020CA094
+ ldr r1, _020CA09C ; =OS_UnlockCartridge2
+ bx r1
+ .balign 4
+_020CA09C: .word OS_UnlockCartridge2
+
+ arm_func_start OS_GetLockID
+OS_GetLockID: ; 0x020CA0A0
+ ldr r3, _020CA0F0 ; =0x027FFFB0
+ ldr r1, [r3, #0x0]
+ clz r2, r1
+ cmp r2, #0x20
+ movne r0, #0x40
+ bne _020CA0D4
+ add r3, r3, #0x4
+ ldr r1, [r3, #0x0]
+ clz r2, r1
+ cmp r2, #0x20
+ ldr r0, _020CA0F4 ; =0xFFFFFFFD
+ bxeq lr
+ mov r0, #0x60
+_020CA0D4:
+ add r0, r0, r2
+ mov r1, #0x80000000
+ mov r1, r1, lsr r2
+ ldr r2, [r3, #0x0]
+ bic r2, r2, r1
+ str r2, [r3, #0x0]
+ bx lr
+ .balign 4
+_020CA0F0: .word 0x027FFFB0
+_020CA0F4: .word 0xFFFFFFFD
+
+ arm_func_start OS_ReleaseLockID
+OS_ReleaseLockID: ; 0x020CA0F8
+ ldr r3, _020CA124 ; =0x027FFFB0
+ cmp r0, #0x60
+ addpl r3, r3, #0x4
+ subpl r0, r0, #0x60
+ submi r0, r0, #0x40
+ mov r1, #0x80000000
+ mov r1, r1, lsr r0
+ ldr r2, [r3, #0x0]
+ orr r2, r2, r1
+ str r2, [r3, #0x0]
+ bx lr
+ .balign 4
+_020CA124: .word 0x027FFFB0
+
+ arm_func_start OS_ReadOwnerOfLockWord
+OS_ReadOwnerOfLockWord: ; 0x020CA128
+ ldrh r0, [r0, #0x4]
+ bx lr
+
+ arm_func_start OSi_FreeCardBus
+OSi_FreeCardBus: ; 0x020CA130
+ ldr r1, _020CA144 ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x800
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA144: .word 0x04000204
+
+ arm_func_start OSi_AllocateCardBus
+OSi_AllocateCardBus: ; 0x020CA148
+ ldr r1, _020CA15C ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ bic r0, r0, #0x800
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA15C: .word 0x04000204
+
+ arm_func_start OS_UnlockCard
+OS_UnlockCard: ; 0x020CA160
+ ldr ip, _020CA170 ; =OS_UnlockByWord
+ ldr r1, _020CA174 ; =0x027FFFE0
+ ldr r2, _020CA178 ; =OSi_FreeCardBus
+ bx r12
+ .balign 4
+_020CA170: .word OS_UnlockByWord
+_020CA174: .word 0x027FFFE0
+_020CA178: .word OSi_FreeCardBus
+
+ arm_func_start OS_TryLockCard
+OS_TryLockCard: ; 0x020CA17C
+ ldr ip, _020CA18C ; =OS_TryLockByWord
+ ldr r1, _020CA190 ; =0x027FFFE0
+ ldr r2, _020CA194 ; =OSi_AllocateCardBus
+ bx r12
+ .balign 4
+_020CA18C: .word OS_TryLockByWord
+_020CA190: .word 0x027FFFE0
+_020CA194: .word OSi_AllocateCardBus
+
+ arm_func_start OSi_FreeCartridgeBus
+OSi_FreeCartridgeBus: ; 0x020CA198
+ ldr r1, _020CA1AC ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x80
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA1AC: .word 0x04000204
+
+ arm_func_start OSi_AllocateCartridgeBus
+OSi_AllocateCartridgeBus: ; 0x020CA1B0
+ ldr r1, _020CA1C4 ; =0x04000204
+ ldrh r0, [r1, #0x0]
+ bic r0, r0, #0x80
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CA1C4: .word 0x04000204
+
+ arm_func_start OS_TryLockCartridge
+OS_TryLockCartridge: ; 0x020CA1C8
+ ldr ip, _020CA1DC ; =OSi_DoTryLockByWord
+ ldr r1, _020CA1E0 ; =0x027FFFE8
+ ldr r2, _020CA1E4 ; =OSi_AllocateCartridgeBus
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CA1DC: .word OSi_DoTryLockByWord
+_020CA1E0: .word 0x027FFFE8
+_020CA1E4: .word OSi_AllocateCartridgeBus
+
+ arm_func_start OS_UnlockCartridge2
+OS_UnlockCartridge2: ; 0x020CA1E8
+ ldr ip, _020CA1FC ; =FUN_020CA2B8
+ ldr r1, _020CA200 ; =0x027FFFE8
+ ldr r2, _020CA204 ; =OSi_FreeCartridgeBus
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CA1FC: .word FUN_020CA2B8
+_020CA200: .word 0x027FFFE8
+_020CA204: .word OSi_FreeCartridgeBus
+
+ arm_func_start OS_LockCartridge
+OS_LockCartridge: ; 0x020CA208
+ ldr ip, _020CA21C ; =FUN_020CA358
+ ldr r1, _020CA220 ; =0x027FFFE8
+ ldr r2, _020CA224 ; =OSi_AllocateCartridgeBus
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CA21C: .word FUN_020CA358
+_020CA220: .word 0x027FFFE8
+_020CA224: .word OSi_AllocateCartridgeBus
+
+ arm_func_start OSi_DoTryLockByWord
+OSi_DoTryLockByWord:
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ movs r6, r3
+ mov r9, r0
+ mov r8, r1
+ mov r7, r2
+ beq _020CA250
+ bl OS_DisableInterrupts_IrqAndFiq
+ mov r5, r0
+ b _020CA258
+_020CA250:
+ bl OS_DisableInterrupts
+ mov r5, r0
+_020CA258:
+ mov r0, r9
+ mov r1, r8
+ bl MI_SwapWord
+ movs r4, r0
+ bne _020CA27C
+ cmp r7, #0x0
+ beq _020CA278
+ blx r7
+_020CA278:
+ strh r9, [r8, #0x4]
+_020CA27C:
+ cmp r6, #0x0
+ beq _020CA290
+ mov r0, r5
+ bl OS_RestoreInterrupts_IrqAndFiq
+ b _020CA298
+_020CA290:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020CA298:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start OS_UnlockByWord
+OS_UnlockByWord: ; 0x020CA2A8
+ ldr ip, _020CA2B4 ; =FUN_020CA2B8
+ mov r3, #0x0
+ bx r12
+ .balign 4
+_020CA2B4: .word FUN_020CA2B8
+
+ arm_func_start FUN_020CA2B8
+FUN_020CA2B8: ; 0x020CA2B8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r1
+ ldrh r1, [r7, #0x4]
+ mov r6, r2
+ mov r5, r3
+ cmp r0, r1
+ addne sp, sp, #0x4
+ mvnne r0, #0x1
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r5, #0x0
+ beq _020CA2F8
+ bl OS_DisableInterrupts_IrqAndFiq
+ mov r4, r0
+ b _020CA300
+_020CA2F8:
+ bl OS_DisableInterrupts
+ mov r4, r0
+_020CA300:
+ mov r0, #0x0
+ strh r0, [r7, #0x4]
+ cmp r6, #0x0
+ beq _020CA314
+ blx r6
+_020CA314:
+ mov r0, #0x0
+ str r0, [r7, #0x0]
+ cmp r5, #0x0
+ beq _020CA330
+ mov r0, r4
+ bl OS_RestoreInterrupts_IrqAndFiq
+ b _020CA338
+_020CA330:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CA338:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_TryLockByWord
+OS_TryLockByWord: ; 0x020CA348
+ ldr ip, _020CA354 ; =FUN_020CA358
+ mov r3, #0x0
+ bx r12
+ .balign 4
+_020CA354: .word FUN_020CA358
+
+ arm_func_start FUN_020CA358
+FUN_020CA358: ; 0x020CA358
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ bl OSi_DoTryLockByWord
+
+ arm_func_start FUN_020CA370
+FUN_020CA370: ; 0x020CA370
+ cmp r0, #0x0
+ ldmleia sp!, {r4-r8,lr}
+ bxle lr
+ mov r4, #0x400
+_020CA380:
+ mov r0, r4
+ blx FUN_020005F2
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ mov r3, r5
+ bl OSi_DoTryLockByWord
+
+ arm_func_start FUN_020CA39C
+FUN_020CA39C: ; 0x020CA39C
+ cmp r0, #0x0
+ bgt _020CA380
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start OS_InitLock
+OS_InitLock: ; 0x020CA3AC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CA484 ; =0x021D347C
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r2, #0x1
+ ldr r1, _020CA488 ; =0x027FFFF0
+ str r2, [r0, #0x0]
+ mov r2, #0x0
+ mov r0, #0x7e
+ str r2, [r1, #0x0]
+ bl OS_TryLockByWord
+ ldr r5, _020CA488 ; =0x027FFFF0
+ ldrh r0, [r5, #0x6]
+ cmp r0, #0x0
+ beq _020CA410
+ mov r4, #0x400
+_020CA3FC:
+ mov r0, r4
+ blx FUN_020005F2
+ ldrh r0, [r5, #0x6]
+ cmp r0, #0x0
+ bne _020CA3FC
+_020CA410:
+ ldr r2, _020CA48C ; =0x027FFFB0
+ mvn r12, #0x0
+ mov r0, #0x10000
+ ldr r3, _020CA490 ; =0x027FFFB4
+ ldr r1, _020CA494 ; =0x027FFFC0
+ str r12, [r2, #0x0]
+ rsb r12, r0, #0x0
+ mov r0, #0x0
+ mov r2, #0x28
+ str r12, [r3, #0x0]
+ bl MIi_CpuClear32
+ ldr ip, _020CA498 ; =0x04000204
+ ldr r1, _020CA488 ; =0x027FFFF0
+ ldrh r3, [r12, #0x0]
+ mov r0, #0x7e
+ mov r2, #0x0
+ orr r3, r3, #0x800
+ strh r3, [r12, #0x0]
+ ldrh r3, [r12, #0x0]
+ orr r3, r3, #0x80
+ strh r3, [r12, #0x0]
+ bl OS_UnlockByWord
+ ldr r1, _020CA488 ; =0x027FFFF0
+ mov r0, #0x7f
+ mov r2, #0x0
+ bl OS_TryLockByWord
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CA484: .word 0x021D347C
+_020CA488: .word 0x027FFFF0
+_020CA48C: .word 0x027FFFB0
+_020CA490: .word 0x027FFFB4
+_020CA494: .word 0x027FFFC0
+_020CA498: .word 0x04000204
+
+ arm_func_start OS_VSNPrintf
+OS_VSNPrintf: ; 0x020CA49C
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x64
+ mov r9, r2
+ str r1, [sp, #0x54]
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0x58]
+ ldrsb r0, [r9, #0x0]
+ str r1, [sp, #0x0]
+ mov r11, r3
+ cmp r0, #0x0
+ beq _020CAD18
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x1c]
+ mov r0, #0x30
+ str r0, [sp, #0x20]
+ mvn r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x57
+ str r0, [sp, #0x10]
+ mov r0, #0x8
+ str r0, [sp, #0x14]
+ mov r0, #0x37
+ str r0, [sp, #0x18]
+ mov r0, #0x10
+ str r0, [sp, #0x24]
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+ mov r0, #0x2b
+ str r0, [sp, #0x34]
+ mov r0, #0x2d
+ str r0, [sp, #0x30]
+ mov r0, #0x2
+ str r0, [sp, #0x2c]
+_020CA530:
+ ldrsb r1, [r9, #0x0]
+ and r0, r1, #0xff
+ eor r0, r0, #0x20
+ sub r0, r0, #0xa1
+ cmp r0, #0x3c
+ bhs _020CA56C
+ add r0, sp, #0x54
+ bl string_put_char
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x0
+ beq _020CAD0C
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA56C:
+ cmp r1, #0x25
+ beq _020CA584
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA584:
+ ldr r6, [sp, #0x4]
+ ldr r5, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ mov r10, r6
+ mov r3, r9
+_020CA59C:
+ ldrsb r4, [r9, #0x1]!
+ cmp r4, #0x20
+ bgt _020CA5B4
+ cmp r4, #0x20
+ beq _020CA5F4
+ b _020CA60C
+_020CA5B4:
+ cmp r4, #0x30
+ bgt _020CA60C
+ cmp r4, #0x2b
+ blt _020CA60C
+ cmp r4, #0x2b
+ beq _020CA5E0
+ cmp r4, #0x2d
+ beq _020CA5FC
+ cmp r4, #0x30
+ beq _020CA604
+ b _020CA60C
+_020CA5E0:
+ ldrsb r1, [r9, #-0x1]
+ cmp r1, #0x20
+ bne _020CA60C
+ orr r6, r6, #0x2
+ b _020CA59C
+_020CA5F4:
+ orr r6, r6, #0x1
+ b _020CA59C
+_020CA5FC:
+ orr r6, r6, #0x8
+ b _020CA59C
+_020CA604:
+ orr r6, r6, #0x10
+ b _020CA59C
+_020CA60C:
+ cmp r4, #0x2a
+ bne _020CA640
+ add r11, r11, #0x4
+ ldr r10, [r11, #-0x4]
+ add r9, r9, #0x1
+ cmp r10, #0x0
+ rsblt r10, r10, #0x0
+ orrlt r6, r6, #0x8
+ b _020CA654
+_020CA630:
+ ldrsb r4, [r9], #0x1
+ mov r1, #0xa
+ mla r1, r10, r1, r4
+ sub r10, r1, #0x30
+_020CA640:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x30
+ blt _020CA654
+ cmp r1, #0x39
+ ble _020CA630
+_020CA654:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x2e
+ bne _020CA6AC
+ ldrsb r1, [r9, #0x1]!
+ ldr r5, [sp, #0x4]
+ cmp r1, #0x2a
+ bne _020CA698
+ add r11, r11, #0x4
+ ldr r5, [r11, #-0x4]
+ add r9, r9, #0x1
+ cmp r5, #0x0
+ ldrlt r5, [sp, #0x8]
+ b _020CA6AC
+_020CA688:
+ ldrsb r4, [r9], #0x1
+ mov r1, #0xa
+ mla r1, r5, r1, r4
+ sub r5, r1, #0x30
+_020CA698:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x30
+ blt _020CA6AC
+ cmp r1, #0x39
+ ble _020CA688
+_020CA6AC:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x68
+ beq _020CA6C4
+ cmp r1, #0x6c
+ beq _020CA6DC
+ b _020CA6F0
+_020CA6C4:
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x68
+ orrne r6, r6, #0x40
+ addeq r9, r9, #0x1
+ orreq r6, r6, #0x100
+ b _020CA6F0
+_020CA6DC:
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x6c
+ orrne r6, r6, #0x20
+ addeq r9, r9, #0x1
+ orreq r6, r6, #0x80
+_020CA6F0:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x69
+ bgt _020CA740
+ cmp r1, #0x63
+ blt _020CA720
+ cmp r1, #0x63
+ beq _020CA7B4
+ cmp r1, #0x64
+ beq _020CA96C
+ cmp r1, #0x69
+ beq _020CA96C
+ b _020CA950
+_020CA720:
+ cmp r1, #0x25
+ bgt _020CA734
+ cmp r1, #0x25
+ beq _020CA934
+ b _020CA950
+_020CA734:
+ cmp r1, #0x58
+ beq _020CA7A0
+ b _020CA950
+_020CA740:
+ cmp r1, #0x6e
+ bgt _020CA754
+ cmp r1, #0x6e
+ beq _020CA8DC
+ b _020CA950
+_020CA754:
+ sub r1, r1, #0x6f
+ cmp r1, #0x9
+ addls pc, pc, r1, lsl #0x2
+ b _020CA950
+_020CA764:
+ .byte 0x08, 0x00, 0x00, 0xEA, 0x0E, 0x00, 0x00, 0xEA, 0x77, 0x00, 0x00, 0xEA
.byte 0x76, 0x00, 0x00, 0xEA, 0x2B, 0x00, 0x00, 0xEA, 0x74, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA
.byte 0x72, 0x00, 0x00, 0xEA, 0x71, 0x00, 0x00, 0xEA, 0x75, 0x00, 0x00, 0xEA, 0x14, 0x20, 0x9D, 0xE5
.byte 0x01, 0x6A, 0x86, 0xE3, 0x74, 0x00, 0x00, 0xEA, 0x01, 0x6A, 0x86, 0xE3, 0x72, 0x00, 0x00, 0xEA
- .byte 0x18, 0x00, 0x9D, 0xE5, 0x6E, 0x00, 0x00, 0xEA, 0x04, 0x60, 0x86, 0xE3, 0x14, 0x50, 0x9D, 0xE5
- .byte 0x6B, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x55, 0xE3, 0x64, 0x00, 0x00, 0xAA, 0x08, 0x00, 0x16, 0xE2
- .byte 0x04, 0xB0, 0x8B, 0xE2, 0x04, 0x40, 0x1B, 0xE5, 0x08, 0x00, 0x00, 0x0A, 0x04, 0x0C, 0xA0, 0xE1
- .byte 0x40, 0x1C, 0xA0, 0xE1, 0x54, 0x00, 0x8D, 0xE2, 0xB1, 0x01, 0x00, 0xEB, 0x1C, 0x10, 0x9D, 0xE5
- .byte 0x01, 0x20, 0x4A, 0xE2, 0x54, 0x00, 0x8D, 0xE2, 0x93, 0x01, 0x00, 0xEB, 0x0B, 0x00, 0x00, 0xEA
- .byte 0x10, 0x00, 0x16, 0xE2, 0x20, 0x00, 0x9D, 0x15, 0x01, 0x20, 0x4A, 0xE2, 0x1C, 0x00, 0x9D, 0x05
- .byte 0x00, 0x0C, 0xA0, 0xE1, 0x40, 0x1C, 0xA0, 0xE1, 0x54, 0x00, 0x8D, 0xE2, 0x8A, 0x01, 0x00, 0xEB
- .byte 0x04, 0x0C, 0xA0, 0xE1, 0x40, 0x1C, 0xA0, 0xE1, 0x54, 0x00, 0x8D, 0xE2, 0xA0, 0x01, 0x00, 0xEB
- .byte 0x01, 0x90, 0x89, 0xE2, 0x38, 0x01, 0x00, 0xEA, 0x04, 0xB0, 0x8B, 0xE2, 0x00, 0x00, 0x55, 0xE3
+_020CA7A0:
+ ldr r0, [sp, #0x18]
+ b _020CA964
+_020CA7A8:
+ .byte 0x04, 0x60, 0x86, 0xE3, 0x14, 0x50, 0x9D, 0xE5
+ .byte 0x6B, 0x00, 0x00, 0xEA
+_020CA7B4:
+ cmp r5, #0x0
+ bge _020CA950
+ ands r0, r6, #0x8
+ add r11, r11, #0x4
+ ldr r4, [r11, #-0x4]
+ beq _020CA7F0
+ mov r0, r4, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_put_char
+ ldr r1, [sp, #0x1c]
+ sub r2, r10, #0x1
+ add r0, sp, #0x54
+ bl string_fill_char
+ b _020CA820
+_020CA7F0:
+ ands r0, r6, #0x10
+ ldrne r0, [sp, #0x20]
+ sub r2, r10, #0x1
+ ldreq r0, [sp, #0x1c]
+ mov r0, r0, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_fill_char
+ mov r0, r4, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_put_char
+_020CA820:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA828:
+ .byte 0x04, 0xB0, 0x8B, 0xE2, 0x00, 0x00, 0x55, 0xE3
.byte 0x04, 0x70, 0x9D, 0xE5, 0x04, 0x40, 0x1B, 0xE5, 0x08, 0x00, 0x00, 0xAA, 0xD0, 0x00, 0xD4, 0xE1
.byte 0x00, 0x00, 0x50, 0xE3, 0x0A, 0x00, 0x00, 0x0A, 0x01, 0x70, 0x87, 0xE2, 0xD7, 0x00, 0x94, 0xE1
.byte 0x00, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A, 0x05, 0x00, 0x00, 0xEA, 0x01, 0x70, 0x87, 0xE2
@@ -216,428 +1030,1985 @@ _020C9C1C:
.byte 0x0B, 0x00, 0x00, 0xEA, 0x10, 0x00, 0x16, 0xE2, 0x20, 0x00, 0x9D, 0x15, 0x0A, 0x20, 0xA0, 0xE1
.byte 0x1C, 0x00, 0x9D, 0x05, 0x00, 0x0C, 0xA0, 0xE1, 0x40, 0x1C, 0xA0, 0xE1, 0x54, 0x00, 0x8D, 0xE2
.byte 0x5D, 0x01, 0x00, 0xEB, 0x04, 0x10, 0xA0, 0xE1, 0x07, 0x20, 0xA0, 0xE1, 0x54, 0x00, 0x8D, 0xE2
- .byte 0x41, 0x01, 0x00, 0xEB, 0x01, 0x90, 0x89, 0xE2, 0x0B, 0x01, 0x00, 0xEA, 0x01, 0x0C, 0x16, 0xE2
- .byte 0x58, 0x10, 0x9D, 0xE5, 0x5C, 0x00, 0x9D, 0xE5, 0x00, 0x20, 0x41, 0xE0, 0x0E, 0x00, 0x00, 0x1A
- .byte 0x40, 0x00, 0x16, 0xE2, 0x04, 0xB0, 0x8B, 0x12, 0x04, 0x00, 0x1B, 0x15, 0xB0, 0x20, 0xC0, 0x11
- .byte 0x09, 0x00, 0x00, 0x1A, 0x80, 0x00, 0x16, 0xE2, 0x04, 0xB0, 0x8B, 0x02, 0x04, 0x00, 0x1B, 0x05
- .byte 0x00, 0x20, 0x80, 0x05, 0x04, 0x00, 0x00, 0x0A, 0x04, 0xB0, 0x8B, 0xE2, 0x04, 0x00, 0x1B, 0xE5
- .byte 0xC2, 0x1F, 0xA0, 0xE1, 0x00, 0x20, 0x80, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x01, 0x90, 0x89, 0xE2
- .byte 0xF5, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x83, 0xE2, 0x09, 0x00, 0x50, 0xE1, 0x03, 0x00, 0x00, 0x1A
- .byte 0x54, 0x00, 0x8D, 0xE2, 0x01, 0x90, 0x89, 0xE2, 0x55, 0x01, 0x00, 0xEB, 0xEE, 0x00, 0x00, 0xEA
- .byte 0x54, 0x00, 0x8D, 0xE2, 0x03, 0x10, 0xA0, 0xE1, 0x03, 0x20, 0x49, 0xE0, 0x1E, 0x01, 0x00, 0xEB
- .byte 0xE9, 0x00, 0x00, 0xEA, 0x24, 0x20, 0x9D, 0xE5, 0x01, 0x6A, 0x86, 0xE3, 0x08, 0x10, 0x16, 0xE2
- .byte 0x10, 0x60, 0xC6, 0x13, 0x00, 0x00, 0x55, 0xE3, 0x10, 0x60, 0xC6, 0xA3, 0x28, 0x50, 0x9D, 0xB5
- .byte 0x04, 0x70, 0x9D, 0xE5, 0x01, 0x1A, 0x16, 0xE2, 0x24, 0x00, 0x00, 0x0A, 0x01, 0x1C, 0x16, 0xE2
- .byte 0x04, 0xB0, 0x8B, 0x12, 0x04, 0x40, 0x5B, 0x15, 0x00, 0x10, 0xA0, 0x13, 0x0B, 0x00, 0x00, 0x1A
- .byte 0x40, 0x10, 0x16, 0xE2, 0x04, 0xB0, 0x8B, 0x12, 0xB4, 0x40, 0x5B, 0x11, 0x00, 0x10, 0xA0, 0x13
- .byte 0x06, 0x00, 0x00, 0x1A, 0x80, 0x10, 0x16, 0xE2, 0x08, 0xB0, 0x8B, 0x12, 0x04, 0x10, 0x1B, 0x15
- .byte 0x08, 0x40, 0x1B, 0x15, 0x04, 0xB0, 0x8B, 0x02, 0x04, 0x40, 0x1B, 0x05, 0x00, 0x10, 0xA0, 0x03
- .byte 0x03, 0x60, 0xC6, 0xE3, 0x04, 0x30, 0x16, 0xE2, 0x3E, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x52, 0xE3
- .byte 0x09, 0x00, 0x00, 0x1A, 0x00, 0x30, 0xA0, 0xE3, 0x03, 0x00, 0x51, 0xE1, 0x03, 0x00, 0x54, 0x01
- .byte 0x38, 0x00, 0x00, 0x0A, 0x20, 0x30, 0x9D, 0xE5, 0x2C, 0x70, 0x9D, 0xE5, 0x39, 0x30, 0xCD, 0xE5
- .byte 0x21, 0x30, 0x80, 0xE2, 0x38, 0x30, 0xCD, 0xE5, 0x32, 0x00, 0x00, 0xEA, 0x08, 0x00, 0x52, 0xE3
- .byte 0x20, 0x30, 0x9D, 0x05, 0x28, 0x70, 0x9D, 0x05, 0x38, 0x30, 0xCD, 0x05, 0x2D, 0x00, 0x00, 0xEA
- .byte 0x01, 0x1C, 0x16, 0xE2, 0x04, 0xB0, 0x8B, 0x12, 0xD4, 0x40, 0x5B, 0x11, 0xC4, 0x1F, 0xA0, 0x11
- .byte 0x0B, 0x00, 0x00, 0x1A, 0x40, 0x10, 0x16, 0xE2, 0x04, 0xB0, 0x8B, 0x12, 0xF4, 0x40, 0x5B, 0x11
- .byte 0xC4, 0x1F, 0xA0, 0x11, 0x06, 0x00, 0x00, 0x1A, 0x80, 0x10, 0x16, 0xE2, 0x08, 0xB0, 0x8B, 0x12
- .byte 0x08, 0x40, 0x1B, 0x15, 0x04, 0x10, 0x1B, 0x15, 0x04, 0xB0, 0x8B, 0x02, 0x04, 0x40, 0x1B, 0x05
- .byte 0xC4, 0x1F, 0xA0, 0x01, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x80, 0x03, 0xE2, 0x03, 0x00, 0x58, 0xE1
- .byte 0x02, 0x81, 0x01, 0xE2, 0x03, 0x00, 0x58, 0x01, 0x08, 0x00, 0x00, 0x0A, 0x30, 0x70, 0x9D, 0xE5
- .byte 0x04, 0x40, 0xE0, 0xE1, 0x38, 0x70, 0xCD, 0xE5, 0x01, 0x70, 0xE0, 0xE1, 0x01, 0x10, 0xA0, 0xE3
- .byte 0x01, 0x40, 0x94, 0xE0, 0x03, 0x10, 0xA7, 0xE0, 0x28, 0x70, 0x9D, 0xE5, 0x0D, 0x00, 0x00, 0xEA
- .byte 0x03, 0x00, 0x51, 0xE1, 0x03, 0x00, 0x54, 0x01, 0x01, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x55, 0xE3
- .byte 0x08, 0x00, 0x00, 0x0A, 0x02, 0x30, 0x16, 0xE2, 0x34, 0x30, 0x9D, 0x15, 0x28, 0x70, 0x9D, 0x15
- .byte 0x38, 0x30, 0xCD, 0x15, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x30, 0x16, 0xE2, 0x1C, 0x30, 0x9D, 0x15
- .byte 0x28, 0x70, 0x9D, 0x15, 0x38, 0x30, 0xCD, 0x15, 0x08, 0x00, 0x52, 0xE3, 0x04, 0x80, 0x9D, 0xE5
- .byte 0x04, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x52, 0xE3, 0x14, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x52, 0xE3
- .byte 0x39, 0x00, 0x00, 0x0A, 0x4B, 0x00, 0x00, 0xEA, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x51, 0xE1
- .byte 0x00, 0x00, 0x54, 0x01, 0x47, 0x00, 0x00, 0x0A, 0x07, 0x00, 0x04, 0xE2, 0x30, 0x30, 0x80, 0xE2
- .byte 0x3A, 0x00, 0x8D, 0xE2, 0x08, 0x30, 0xC0, 0xE7, 0xA4, 0x41, 0xA0, 0xE1, 0x00, 0x20, 0xA0, 0xE3
- .byte 0xA1, 0x01, 0xA0, 0xE1, 0x81, 0x4E, 0x84, 0xE1, 0x02, 0x00, 0x50, 0xE1, 0x02, 0x00, 0x54, 0x01
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x01, 0x80, 0x88, 0xE2, 0xF2, 0xFF, 0xFF, 0x1A, 0x39, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x50, 0xE1, 0x00, 0x00, 0x51, 0x01, 0x0E, 0x00, 0x00, 0x1A
- .byte 0x00, 0x00, 0x54, 0xE3, 0x33, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x9F, 0xE5, 0x94, 0x10, 0x80, 0xE0
- .byte 0xA0, 0x01, 0xB0, 0xE1, 0x0A, 0x10, 0xA0, 0xE3, 0x90, 0x01, 0x01, 0xE0, 0x01, 0x10, 0x44, 0xE0
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x30, 0x10, 0x81, 0xE2, 0x3A, 0x00, 0x8D, 0xE2, 0x08, 0x10, 0xC0, 0xE7
- .byte 0x01, 0x80, 0x88, 0xE2, 0xF3, 0xFF, 0xFF, 0x1A, 0x26, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x51, 0xE1
- .byte 0x00, 0x00, 0x54, 0x01, 0x23, 0x00, 0x00, 0x0A, 0x0C, 0x20, 0x9D, 0xE5, 0x04, 0x30, 0x9D, 0xE5
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x0F, 0x84, 0x00, 0xEB, 0x0A, 0x30, 0xA0, 0xE3, 0x90, 0x33, 0x8C, 0xE0
- .byte 0x03, 0x30, 0x54, 0xE0, 0x00, 0x20, 0xA0, 0xE3, 0x30, 0x40, 0x83, 0xE2, 0x3A, 0x30, 0x8D, 0xE2
- .byte 0x08, 0x40, 0xC3, 0xE7, 0x02, 0x00, 0x51, 0xE1, 0x02, 0x00, 0x50, 0x01, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x01, 0x80, 0x88, 0xE2, 0xEF, 0xFF, 0xFF, 0x1A, 0x12, 0x00, 0x00, 0xEA, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x02, 0x00, 0x51, 0xE1, 0x02, 0x00, 0x54, 0x01, 0x0E, 0x00, 0x00, 0x0A, 0x0F, 0x30, 0x04, 0xE2
- .byte 0x0A, 0x00, 0x53, 0xE3, 0x24, 0x42, 0xA0, 0xE1, 0x30, 0x30, 0x83, 0xB2, 0x21, 0x22, 0xA0, 0xE1
- .byte 0x01, 0x4E, 0x84, 0xE1, 0x02, 0x10, 0xA0, 0xE1, 0x00, 0x30, 0x83, 0xA0, 0x3A, 0x20, 0x8D, 0xE2
- .byte 0x08, 0x30, 0xC2, 0xE7, 0x00, 0x20, 0xA0, 0xE3, 0x02, 0x00, 0x51, 0xE1, 0x01, 0x80, 0x88, 0xE2
- .byte 0x02, 0x00, 0x54, 0x01, 0xF0, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x57, 0xE3, 0x06, 0x00, 0x00, 0xDA
- .byte 0xD8, 0x03, 0xDD, 0xE1, 0x30, 0x00, 0x50, 0xE3, 0x20, 0x10, 0x9D, 0x05, 0x3A, 0x00, 0x8D, 0x02
- .byte 0x08, 0x10, 0xC0, 0x07, 0x04, 0x70, 0x9D, 0x05, 0x01, 0x80, 0x88, 0x02, 0x08, 0x50, 0x45, 0xE0
- .byte 0x10, 0x00, 0x16, 0xE2, 0x03, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x4A, 0xE0, 0x07, 0x00, 0x40, 0xE0
- .byte 0x00, 0x00, 0x55, 0xE1, 0x00, 0x50, 0xA0, 0xB1, 0x00, 0x00, 0x55, 0xE3, 0x05, 0xA0, 0x4A, 0xC0
- .byte 0x08, 0x00, 0x87, 0xE0, 0x08, 0x60, 0x16, 0xE2, 0x00, 0xA0, 0x4A, 0xE0, 0x03, 0x00, 0x00, 0x1A
- .byte 0x1C, 0x10, 0x9D, 0xE5, 0x54, 0x00, 0x8D, 0xE2, 0x0A, 0x20, 0xA0, 0xE1, 0x6A, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x57, 0xE3, 0x07, 0x00, 0x00, 0xDA, 0x38, 0x00, 0x8D, 0xE2, 0x07, 0x40, 0x80, 0xE0
- .byte 0xD1, 0x10, 0x74, 0xE1, 0x01, 0x70, 0x47, 0xE2, 0x54, 0x00, 0x8D, 0xE2, 0x7C, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x57, 0xE3, 0xF9, 0xFF, 0xFF, 0xCA, 0x20, 0x10, 0x9D, 0xE5, 0x05, 0x20, 0xA0, 0xE1
- .byte 0x54, 0x00, 0x8D, 0xE2, 0x5C, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x58, 0xE3, 0x07, 0x00, 0x00, 0xDA
+ .byte 0x41, 0x01, 0x00, 0xEB, 0x01, 0x90, 0x89, 0xE2, 0x0B, 0x01, 0x00, 0xEA
+_020CA8DC:
+ ands r0, r6, #0x100
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ sub r2, r1, r0
+ bne _020CA92C
+ ands r0, r6, #0x40
+ addne r11, r11, #0x4
+ ldrne r0, [r11, #-0x4]
+ strneh r2, [r0, #0x0]
+ bne _020CA92C
+ ands r0, r6, #0x80
+ addeq r11, r11, #0x4
+ ldreq r0, [r11, #-0x4]
+ streq r2, [r0, #0x0]
+ beq _020CA92C
+ add r11, r11, #0x4
+ ldr r0, [r11, #-0x4]
+ mov r1, r2, asr #0x1f
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+_020CA92C:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA934:
+ add r0, r3, #0x1
+ cmp r0, r9
+ bne _020CA950
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA950:
+ add r0, sp, #0x54
+ mov r1, r3
+ sub r2, r9, r3
+ bl string_put_string
+ b _020CAD0C
+_020CA964:
+ ldr r2, [sp, #0x24]
+ orr r6, r6, #0x1000
+_020CA96C:
+ ands r1, r6, #0x8
+ bicne r6, r6, #0x10
+ cmp r5, #0x0
+ bicge r6, r6, #0x10
+ ldrlt r5, [sp, #0x28]
+ ldr r7, [sp, #0x4]
+ ands r1, r6, #0x1000
+ beq _020CAA20
+ ands r1, r6, #0x100
+ addne r11, r11, #0x4
+ ldrneb r4, [r11, #-0x4]
+ movne r1, #0x0
+ bne _020CA9D0
+ ands r1, r6, #0x40
+ addne r11, r11, #0x4
+ ldrneh r4, [r11, #-0x4]
+ movne r1, #0x0
+ bne _020CA9D0
+ ands r1, r6, #0x80
+ addne r11, r11, #0x8
+ ldrne r1, [r11, #-0x4]
+ ldrne r4, [r11, #-0x8]
+ addeq r11, r11, #0x4
+ ldreq r4, [r11, #-0x4]
+ moveq r1, #0x0
+_020CA9D0:
+ bic r6, r6, #0x3
+ ands r3, r6, #0x4
+ beq _020CAAD8
+ cmp r2, #0x10
+ bne _020CAA0C
+ mov r3, #0x0
+ cmp r1, r3
+ cmpeq r4, r3
+ beq _020CAAD8
+ ldr r3, [sp, #0x20]
+ ldr r7, [sp, #0x2c]
+ strb r3, [sp, #0x39]
+ add r3, r0, #0x21
+ strb r3, [sp, #0x38]
+ b _020CAAD8
+_020CAA0C:
+ cmp r2, #0x8
+ ldreq r3, [sp, #0x20]
+ ldreq r7, [sp, #0x28]
+ streqb r3, [sp, #0x38]
+ b _020CAAD8
+_020CAA20:
+ ands r1, r6, #0x100
+ addne r11, r11, #0x4
+ ldrnesb r4, [r11, #-0x4]
+ movne r1, r4, asr #0x1f
+ bne _020CAA64
+ ands r1, r6, #0x40
+ addne r11, r11, #0x4
+ ldrnesh r4, [r11, #-0x4]
+ movne r1, r4, asr #0x1f
+ bne _020CAA64
+ ands r1, r6, #0x80
+ addne r11, r11, #0x8
+ ldrne r4, [r11, #-0x8]
+ ldrne r1, [r11, #-0x4]
+ addeq r11, r11, #0x4
+ ldreq r4, [r11, #-0x4]
+ moveq r1, r4, asr #0x1f
+_020CAA64:
+ mov r3, #0x0
+ and r8, r3, #0x0
+ cmp r8, r3
+ and r8, r1, #0x80000000
+ cmpeq r8, r3
+ beq _020CAAA0
+ ldr r7, [sp, #0x30]
+ mvn r4, r4
+ strb r7, [sp, #0x38]
+ mvn r7, r1
+ mov r1, #0x1
+ adds r4, r4, r1
+ adc r1, r7, r3
+ ldr r7, [sp, #0x28]
+ b _020CAAD8
+_020CAAA0:
+ cmp r1, r3
+ cmpeq r4, r3
+ bne _020CAAB4
+ cmp r5, #0x0
+ beq _020CAAD8
+_020CAAB4:
+ ands r3, r6, #0x2
+ ldrne r3, [sp, #0x34]
+ ldrne r7, [sp, #0x28]
+ strneb r3, [sp, #0x38]
+ bne _020CAAD8
+ ands r3, r6, #0x1
+ ldrne r3, [sp, #0x1c]
+ ldrne r7, [sp, #0x28]
+ strneb r3, [sp, #0x38]
+_020CAAD8:
+ cmp r2, #0x8
+ ldr r8, [sp, #0x4]
+ beq _020CAAF8
+ cmp r2, #0xa
+ beq _020CAB40
+ cmp r2, #0x10
+ beq _020CABDC
+ b _020CAC28
+_020CAAF8:
+ mov r0, #0x0
+ cmp r1, r0
+ cmpeq r4, r0
+ beq _020CAC28
+_020CAB08:
+ and r0, r4, #0x7
+ add r3, r0, #0x30
+ add r0, sp, #0x3a
+ strb r3, [r0, r8]
+ mov r4, r4, lsr #0x3
+ mov r2, #0x0
+ mov r0, r1, lsr #0x3
+ orr r4, r4, r1, lsl #0x1d
+ cmp r0, r2
+ cmpeq r4, r2
+ mov r1, r0
+ add r8, r8, #0x1
+ bne _020CAB08
+ b _020CAC28
+_020CAB40:
+ mov r0, #0x0
+ cmp r0, r0
+ cmpeq r1, r0
+ bne _020CAB8C
+ cmp r4, #0x0
+ beq _020CAC28
+_020CAB58:
+ ldr r0, _020CAD60 ; =0xCCCCCCCD
+ umull r1, r0, r4, r0
+ movs r0, r0, lsr #0x3
+ mov r1, #0xa
+ mul r1, r0, r1
+ sub r1, r4, r1
+ mov r4, r0
+ add r1, r1, #0x30
+ add r0, sp, #0x3a
+ strb r1, [r0, r8]
+ add r8, r8, #0x1
+ bne _020CAB58
+ b _020CAC28
+_020CAB8C:
+ cmp r1, r0
+ cmpeq r4, r0
+ beq _020CAC28
+_020CAB98:
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x4]
+ mov r0, r4
+ bl FUN_020EBBE8
+ mov r3, #0xa
+ umull r3, r12, r0, r3
+ subs r3, r4, r3
+ mov r2, #0x0
+ add r4, r3, #0x30
+ add r3, sp, #0x3a
+ strb r4, [r3, r8]
+ cmp r1, r2
+ cmpeq r0, r2
+ mov r4, r0
+ add r8, r8, #0x1
+ bne _020CAB98
+ b _020CAC28
+_020CABDC:
+ mov r2, #0x0
+ cmp r1, r2
+ cmpeq r4, r2
+ beq _020CAC28
+_020CABEC:
+ and r3, r4, #0xf
+ cmp r3, #0xa
+ mov r4, r4, lsr #0x4
+ addlt r3, r3, #0x30
+ mov r2, r1, lsr #0x4
+ orr r4, r4, r1, lsl #0x1c
+ mov r1, r2
+ addge r3, r3, r0
+ add r2, sp, #0x3a
+ strb r3, [r2, r8]
+ mov r2, #0x0
+ cmp r1, r2
+ add r8, r8, #0x1
+ cmpeq r4, r2
+ bne _020CABEC
+_020CAC28:
+ cmp r7, #0x0
+ ble _020CAC4C
+ ldrsb r0, [sp, #0x38]
+ cmp r0, #0x30
+ ldreq r1, [sp, #0x20]
+ addeq r0, sp, #0x3a
+ streqb r1, [r0, r8]
+ ldreq r7, [sp, #0x4]
+ addeq r8, r8, #0x1
+_020CAC4C:
+ sub r5, r5, r8
+ ands r0, r6, #0x10
+ beq _020CAC68
+ sub r0, r10, r8
+ sub r0, r0, r7
+ cmp r5, r0
+ movlt r5, r0
+_020CAC68:
+ cmp r5, #0x0
+ subgt r10, r10, r5
+ add r0, r7, r8
+ ands r6, r6, #0x8
+ sub r10, r10, r0
+ bne _020CAC90
+ ldr r1, [sp, #0x1c]
+ add r0, sp, #0x54
+ mov r2, r10
+ bl string_fill_char
+_020CAC90:
+ cmp r7, #0x0
+ ble _020CACB8
+ add r0, sp, #0x38
+ add r4, r0, r7
+ ldrsb r1, [r4, #-0x1]!
+ sub r7, r7, #0x1
+ add r0, sp, #0x54
+ bl string_put_char
+_020CACB0:
+ .byte 0x00, 0x00, 0x57, 0xE3, 0xF9, 0xFF, 0xFF, 0xCA
+_020CACB8:
+ ldr r1, [sp, #0x20]
+ mov r2, r5
+ add r0, sp, #0x54
+ bl string_fill_char
+_020CACC8:
+ .byte 0x00, 0x00, 0x58, 0xE3, 0x07, 0x00, 0x00, 0xDA
.byte 0x3A, 0x00, 0x8D, 0xE2, 0x08, 0x40, 0x80, 0xE0, 0xD1, 0x10, 0x74, 0xE1, 0x01, 0x80, 0x48, 0xE2
.byte 0x54, 0x00, 0x8D, 0xE2, 0x6E, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x58, 0xE3, 0xF9, 0xFF, 0xFF, 0xCA
.byte 0x00, 0x00, 0x56, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x1C, 0x10, 0x9D, 0xE5, 0x0A, 0x20, 0xA0, 0xE1
- .byte 0x54, 0x00, 0x8D, 0xE2, 0x4C, 0x00, 0x00, 0xEB, 0x01, 0x90, 0x89, 0xE2, 0xD0, 0x00, 0xD9, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x05, 0xFE, 0xFF, 0x1A, 0x54, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x58, 0x00, 0x9D, 0x15, 0x00, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xC0, 0x15, 0x05, 0x00, 0x00, 0x1A
- .byte 0x00, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x5C, 0x10, 0x9D, 0x15, 0x00, 0x20, 0xA0, 0x13
- .byte 0x00, 0x00, 0x81, 0x10, 0x01, 0x20, 0x40, 0x15, 0x58, 0x10, 0x9D, 0xE5, 0x5C, 0x00, 0x9D, 0xE5
- .byte 0x00, 0x00, 0x41, 0xE0, 0x64, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xCD, 0xCC, 0xCC, 0xCC, 0x0F, 0x00, 0x2D, 0xE9, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x10, 0x30, 0x8D, 0xE2, 0x03, 0x30, 0xC3, 0xE3, 0x10, 0x20, 0x9D, 0xE5, 0x04, 0x30, 0x83, 0xE2
- .byte 0xC5, 0xFD, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x10, 0xD0, 0x8D, 0xE2
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0xC0, 0x9F, 0xE5, 0x02, 0x30, 0xA0, 0xE1, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x02, 0x11, 0xE0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x9C, 0xA4, 0x0C, 0x02, 0x0F, 0x00, 0x2D, 0xE9
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x0C, 0x20, 0x8D, 0xE2, 0x03, 0x20, 0xC2, 0xE3
- .byte 0x0C, 0x10, 0x9D, 0xE5, 0x04, 0x20, 0x82, 0xE2, 0xF1, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x10, 0xD0, 0x8D, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x00, 0x52, 0xE3, 0x10, 0x40, 0xBD, 0xD8, 0x1E, 0xFF, 0x2F, 0xD1, 0x00, 0xE0, 0x90, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE3, 0x02, 0x00, 0x5E, 0xE1, 0x02, 0xE0, 0xA0, 0x81, 0x00, 0x00, 0x5E, 0xE3
- .byte 0x05, 0x00, 0x00, 0x9A, 0xD4, 0xC0, 0x91, 0xE1, 0x04, 0x30, 0x90, 0xE5, 0x04, 0xC0, 0xC3, 0xE7
- .byte 0x01, 0x40, 0x84, 0xE2, 0x0E, 0x00, 0x54, 0xE1, 0xF9, 0xFF, 0xFF, 0x3A, 0x00, 0x10, 0x90, 0xE5
- .byte 0x0E, 0x10, 0x41, 0xE0, 0x00, 0x10, 0x80, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x02, 0x10, 0x81, 0xE0
- .byte 0x04, 0x10, 0x80, 0xE5, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x00, 0x52, 0xE3, 0x04, 0xD0, 0x8D, 0xD2, 0x00, 0x40, 0xBD, 0xD8
- .byte 0x1E, 0xFF, 0x2F, 0xD1, 0x00, 0xC0, 0x90, 0xE5, 0x00, 0xE0, 0xA0, 0xE3, 0x02, 0x00, 0x5C, 0xE1
- .byte 0x02, 0xC0, 0xA0, 0x81, 0x00, 0x00, 0x5C, 0xE3, 0x04, 0x00, 0x00, 0x9A, 0x04, 0x30, 0x90, 0xE5
- .byte 0x0E, 0x10, 0xC3, 0xE7, 0x01, 0xE0, 0x8E, 0xE2, 0x0C, 0x00, 0x5E, 0xE1, 0xFA, 0xFF, 0xFF, 0x3A
- .byte 0x00, 0x10, 0x90, 0xE5, 0x0C, 0x10, 0x41, 0xE0, 0x00, 0x10, 0x80, 0xE5, 0x04, 0x10, 0x90, 0xE5
- .byte 0x02, 0x10, 0x81, 0xE0, 0x04, 0x10, 0x80, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0x90, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x04, 0x20, 0x90, 0x15
- .byte 0x00, 0x10, 0xC2, 0x15, 0x00, 0x10, 0x90, 0x15, 0x01, 0x10, 0x41, 0x12, 0x00, 0x10, 0x80, 0x15
- .byte 0x04, 0x10, 0x90, 0xE5, 0x01, 0x10, 0x81, 0xE2, 0x04, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x94, 0x34, 0x1D, 0x02
- .byte 0xB4, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9, 0x07, 0x09, 0x00, 0xEB
- .byte 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE3, 0x00, 0x30, 0x91, 0xE5, 0x00, 0x00, 0x53, 0xE3
- .byte 0x01, 0x20, 0x43, 0x12, 0x03, 0x40, 0xA0, 0x11, 0x00, 0x20, 0x81, 0x15, 0x04, 0x09, 0x00, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x84, 0x34, 0x1D, 0x02
- .byte 0x10, 0x40, 0x2D, 0xE9, 0xF9, 0x08, 0x00, 0xEB, 0x24, 0x20, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE3
- .byte 0x00, 0x30, 0x92, 0xE5, 0x01, 0x00, 0x53, 0xE1, 0x01, 0x10, 0x83, 0x32, 0x03, 0x40, 0xA0, 0x31
- .byte 0x00, 0x10, 0x82, 0x35, 0xF6, 0x08, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x84, 0x34, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0xE5, 0x08, 0x00, 0xEB, 0x36, 0x0A, 0x00, 0xEB, 0xFD, 0xFF, 0xFF, 0xEA, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0xE4, 0x08, 0x00, 0xEB, 0x18, 0x10, 0x9F, 0xE5
- .byte 0x0C, 0x40, 0x91, 0xE5, 0x0C, 0x50, 0x81, 0xE5, 0xE5, 0x08, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02
- .byte 0x00, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x08, 0xC0, 0x9F, 0xE5
- .byte 0x02, 0x00, 0xA0, 0xE1, 0xB0, 0x10, 0x82, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x30, 0xB2, 0x0C, 0x02
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x34, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x08, 0x00, 0x8D, 0xE2
- .byte 0x68, 0x08, 0x00, 0xEB, 0x84, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x04, 0x00, 0x8D, 0xE5, 0xC9, 0x08, 0x00, 0xEB, 0x74, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x94, 0x51, 0x83, 0xE0, 0x94, 0x32, 0x23, 0xE0, 0x92, 0x31, 0x23, 0xE0, 0x25, 0x13, 0xA0, 0xE1
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x50, 0x9D, 0xE5, 0x08, 0x00, 0x8D, 0xE2, 0x04, 0x20, 0x8D, 0xE2
- .byte 0xB0, 0x00, 0x85, 0xE5, 0x00, 0x20, 0x8D, 0xE5, 0x23, 0x23, 0xA0, 0xE1, 0x03, 0x1D, 0x81, 0xE1
- .byte 0x40, 0x30, 0x9F, 0xE5, 0xE5, 0x07, 0x00, 0xEB, 0x04, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x05, 0x00, 0x00, 0x0A, 0x00, 0x50, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0xA8, 0x00, 0x00, 0xEB
- .byte 0x04, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x1A, 0x04, 0x00, 0xA0, 0xE1
- .byte 0xB3, 0x08, 0x00, 0xEB, 0x34, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x90, 0x34, 0x1D, 0x02, 0xEA, 0x82, 0x00, 0x00, 0xA0, 0xAF, 0x0C, 0x02, 0x70, 0x00, 0x90, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0xA0, 0x20, 0x9F, 0xE5, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x08, 0x80, 0x92, 0xE5, 0x00, 0x70, 0xA0, 0xE3, 0x9F, 0x08, 0x00, 0xEB
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x00, 0x00, 0xEA, 0x08, 0x70, 0xA0, 0xE1, 0x68, 0x80, 0x98, 0xE5
- .byte 0x00, 0x00, 0x58, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x58, 0xE1, 0xF9, 0xFF, 0xFF, 0x1A
- .byte 0x00, 0x00, 0x58, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x64, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x58, 0xE1
- .byte 0x04, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0x95, 0x08, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x00, 0x98, 0xE5, 0x05, 0x00, 0x50, 0xE1
- .byte 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x57, 0xE3, 0x68, 0x10, 0x96, 0x05, 0x2C, 0x00, 0x9F, 0x05
- .byte 0x08, 0x10, 0x80, 0x05, 0x68, 0x00, 0x96, 0x15, 0x68, 0x00, 0x87, 0x15, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x70, 0x50, 0x86, 0xE5, 0x02, 0x02, 0x00, 0xEB, 0xB4, 0x01, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x83, 0x08, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x98, 0x34, 0x1D, 0x02, 0xA8, 0x34, 0x1D, 0x02, 0xF0, 0x41, 0x2D, 0xE9, 0xAC, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x70, 0xA0, 0xE3, 0x07, 0x60, 0xA0, 0xE1, 0x07, 0x50, 0xA0, 0xE1, 0x04, 0x80, 0x90, 0xE5
- .byte 0x72, 0x08, 0x00, 0xEB, 0x94, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x08, 0x20, 0x91, 0xE5
- .byte 0x07, 0x00, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE3, 0x0A, 0x00, 0x00, 0x0A, 0x70, 0x10, 0x98, 0xE5
- .byte 0x08, 0x00, 0x52, 0xE1, 0x00, 0x70, 0xA0, 0x01, 0x70, 0x00, 0x92, 0xE5, 0x00, 0x00, 0x51, 0xE1
- .byte 0x02, 0x60, 0xA0, 0x01, 0x02, 0x00, 0xA0, 0xE1, 0x68, 0x20, 0x92, 0xE5, 0x01, 0x50, 0x85, 0x02
- .byte 0x00, 0x00, 0x52, 0xE3, 0xF5, 0xFF, 0xFF, 0x1A, 0x01, 0x00, 0x55, 0xE3, 0x01, 0x00, 0x00, 0xDA
- .byte 0x08, 0x00, 0x56, 0xE1, 0x03, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0x60, 0x08, 0x00, 0xEB
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x57, 0xE3, 0x68, 0x10, 0x98, 0x05
- .byte 0x28, 0x00, 0x9F, 0x05, 0x08, 0x10, 0x80, 0x05, 0x68, 0x00, 0x98, 0x15, 0x68, 0x00, 0x87, 0x15
- .byte 0x68, 0x00, 0x96, 0xE5, 0x68, 0x00, 0x88, 0xE5, 0x68, 0x80, 0x86, 0xE5, 0x83, 0x01, 0x00, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x52, 0x08, 0x00, 0xEB, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x98, 0x34, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x48, 0x08, 0x00, 0xEB, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x7A, 0x01, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x49, 0x08, 0x00, 0xEB, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0x00, 0x9F, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x00, 0xEA
- .byte 0x68, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x1E, 0xFF, 0x2F, 0x01, 0x64, 0x10, 0x90, 0xE5
- .byte 0x01, 0x00, 0x51, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0x33, 0x08, 0x00, 0xEB
- .byte 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE1, 0x64, 0x10, 0x85, 0xE5, 0x63, 0x01, 0x00, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x32, 0x08, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x26, 0x08, 0x00, 0xEB, 0x00, 0x10, 0x95, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x51, 0xE3
- .byte 0x12, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x51, 0xE3, 0x0B, 0x00, 0x00, 0x0A, 0x01, 0x70, 0xA0, 0xE3
- .byte 0x00, 0x60, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0xD8, 0x01, 0x00, 0xEB, 0x64, 0x70, 0x80, 0xE5
- .byte 0x78, 0x60, 0x80, 0xE5, 0x80, 0x60, 0x80, 0xE5, 0x80, 0x10, 0x90, 0xE5, 0x7C, 0x10, 0x80, 0xE5
- .byte 0x00, 0x00, 0x95, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xF5, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x04, 0x00, 0x85, 0xE5, 0x04, 0x00, 0x95, 0xE5, 0x00, 0x00, 0x85, 0xE5, 0x43, 0x01, 0x00, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x12, 0x08, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1, 0x07, 0x08, 0x00, 0xEB
- .byte 0x3C, 0x10, 0x9F, 0xE5, 0x00, 0x50, 0xA0, 0xE1, 0x00, 0x00, 0x91, 0xE5, 0x00, 0x00, 0x56, 0xE3
- .byte 0x00, 0x40, 0x90, 0xE5, 0x03, 0x00, 0x00, 0x0A, 0x06, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE1
- .byte 0x78, 0x60, 0x84, 0xE5, 0xC6, 0x01, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x64, 0x00, 0x84, 0xE5
- .byte 0x2E, 0x01, 0x00, 0xEB, 0x05, 0x00, 0xA0, 0xE1, 0xFD, 0x07, 0x00, 0xEB, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x90, 0x34, 0x1D, 0x02, 0x64, 0x00, 0x90, 0xE5, 0x02, 0x00, 0x50, 0xE3
- .byte 0x01, 0x00, 0xA0, 0x03, 0x00, 0x00, 0xA0, 0x13, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0xEC, 0x07, 0x00, 0xEB, 0x64, 0x10, 0x95, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x02, 0x00, 0x51, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x9C, 0x00, 0x85, 0xE2
- .byte 0xDB, 0xFF, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0xE9, 0x07, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0xB0, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0xDF, 0x06, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1
- .byte 0xD2, 0x07, 0x00, 0xEB, 0x6C, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0x91, 0xE5
- .byte 0x05, 0x00, 0x50, 0xE1, 0x00, 0x00, 0x00, 0x1A, 0x17, 0x00, 0x00, 0xEB, 0xCF, 0xFE, 0xFF, 0xEB
- .byte 0x05, 0x00, 0xA0, 0xE1, 0xDB, 0x02, 0x00, 0xEB, 0x05, 0x00, 0xA0, 0xE1, 0xE5, 0xFF, 0xFF, 0xEB
- .byte 0x78, 0x00, 0x95, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x05, 0x10, 0xA0, 0xE1
- .byte 0x69, 0x01, 0x00, 0xEB, 0x05, 0x00, 0xA0, 0xE1, 0x2F, 0x01, 0x00, 0xEB, 0x02, 0x10, 0xA0, 0xE3
- .byte 0x9C, 0x00, 0x85, 0xE2, 0x64, 0x10, 0x85, 0xE5, 0x91, 0xFF, 0xFF, 0xEB, 0xB1, 0xFE, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xBE, 0x07, 0x00, 0xEB, 0x6D, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x50, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x40, 0x90, 0xE5, 0xB3, 0xFE, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xBF, 0x02, 0x00, 0xEB, 0x78, 0x00, 0x94, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x01, 0x00, 0x00, 0x0A, 0x04, 0x10, 0xA0, 0xE1, 0x4F, 0x01, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x15, 0x01, 0x00, 0xEB, 0x02, 0x10, 0xA0, 0xE3, 0x9C, 0x00, 0x84, 0xE2, 0x64, 0x10, 0x84, 0xE5
- .byte 0x77, 0xFF, 0xFF, 0xEB, 0x97, 0xFE, 0xFF, 0xEB, 0x55, 0xFF, 0xFF, 0xEB, 0xEF, 0x08, 0x00, 0xEB
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x90, 0x34, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x30, 0x10, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x00, 0x30, 0x91, 0xE5
- .byte 0xB4, 0x20, 0x93, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x10, 0xA0, 0xE3
- .byte 0xB4, 0x10, 0x83, 0xE5, 0x32, 0xFF, 0x2F, 0xE1, 0x90, 0x07, 0x00, 0xEB, 0xDA, 0xFF, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x90, 0x34, 0x1D, 0x02
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x58, 0x20, 0x9F, 0xE5, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x00, 0x20, 0x92, 0xE5, 0x01, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE3, 0x0C, 0x00, 0x00, 0x0A
- .byte 0x44, 0x10, 0x9F, 0xE5, 0x6E, 0x01, 0x00, 0xEB, 0x04, 0x40, 0x85, 0xE5, 0x00, 0x10, 0x95, 0xE5
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x80, 0x10, 0x81, 0xE3, 0x00, 0x10, 0x85, 0xE5, 0x01, 0x10, 0xA0, 0xE3
- .byte 0x64, 0x10, 0x85, 0xE5, 0x94, 0x01, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x00, 0xA0, 0xE1, 0xD7, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x80, 0x34, 0x1D, 0x02, 0x9C, 0xB4, 0x0C, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x6C, 0x07, 0x00, 0xEB, 0x14, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x90, 0xE5, 0xDC, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02, 0xF0, 0x41, 0x2D, 0xE9
- .byte 0x00, 0x80, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1, 0x03, 0x60, 0xA0, 0xE1
- .byte 0x5E, 0x07, 0x00, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0x43, 0x01, 0x00, 0xEB, 0x1C, 0x20, 0x9D, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x70, 0x20, 0x88, 0xE5, 0x6C, 0x00, 0x88, 0xE5, 0x64, 0x10, 0x88, 0xE5
- .byte 0x74, 0x10, 0x88, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0xD5, 0x00, 0x00, 0xEB, 0x05, 0x10, 0xA0, 0xE1
- .byte 0x94, 0x60, 0x88, 0xE5, 0x18, 0x00, 0x9D, 0xE5, 0x00, 0xC0, 0xA0, 0xE3, 0x00, 0x50, 0x46, 0xE0
- .byte 0x04, 0x20, 0x46, 0xE2, 0x90, 0x50, 0x88, 0xE5, 0x98, 0xC0, 0x88, 0xE5, 0x94, 0x30, 0x9F, 0xE5
- .byte 0x94, 0x00, 0x98, 0xE5, 0x90, 0x60, 0x9F, 0xE5, 0x04, 0x30, 0x00, 0xE5, 0x90, 0x30, 0x98, 0xE5
- .byte 0x08, 0x00, 0xA0, 0xE1, 0x00, 0x60, 0x83, 0xE5, 0xA0, 0xC0, 0x88, 0xE5, 0xA0, 0x30, 0x98, 0xE5
- .byte 0x9C, 0x30, 0x88, 0xE5, 0x2E, 0x01, 0x00, 0xEB, 0x04, 0x70, 0x88, 0xE5, 0x04, 0x10, 0x85, 0xE2
- .byte 0x68, 0x20, 0x9F, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x3C, 0x20, 0x88, 0xE5, 0x18, 0x20, 0x9D, 0xE5
- .byte 0x08, 0x20, 0x42, 0xE2, 0xF4, 0x0A, 0x00, 0xEB, 0x00, 0x10, 0xA0, 0xE3, 0x84, 0x10, 0x88, 0xE5
- .byte 0x88, 0x10, 0x88, 0xE5, 0x8C, 0x10, 0x88, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0x27, 0xFE, 0xFF, 0xEB
+ .byte 0x54, 0x00, 0x8D, 0xE2, 0x4C, 0x00, 0x00, 0xEB, 0x01, 0x90, 0x89, 0xE2
+_020CAD0C:
+ ldrsb r0, [r9, #0x0]
+ cmp r0, #0x0
+ bne _020CA530
+_020CAD18:
+ ldr r0, [sp, #0x54]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x58]
+ movne r1, #0x0
+ strneb r1, [r0, #0x0]
+ bne _020CAD48
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ ldrne r1, [sp, #0x5c]
+ movne r2, #0x0
+ addne r0, r1, r0
+ strneb r2, [r0, #-0x1]
+_020CAD48:
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ sub r0, r1, r0
+ add sp, sp, #0x64
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020CAD60: .word 0xCCCCCCCD
+
+ arm_func_start OS_SNPrintf
+OS_SNPrintf: ; 0x020CAD64
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl OS_VSNPrintf
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start OS_VSPrintf
+OS_VSPrintf: ; 0x020CAD94
+ ldr ip, _020CADA8 ; =OS_VSNPrintf
+ mov r3, r2
+ mov r2, r1
+ mvn r1, #0x80000000
+ bx r12
+ .balign 4
+_020CADA8: .word OS_VSNPrintf
+
+ arm_func_start OS_SPrintf
+OS_SPrintf: ; 0x020CADAC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ add r2, sp, #0xc
+ bic r2, r2, #0x3
+ ldr r1, [sp, #0xc]
+ add r2, r2, #0x4
+ bl OS_VSPrintf
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start string_put_string
+string_put_string: ; 0x020CADDC
+ stmdb sp!, {r4,lr}
+ cmp r2, #0x0
+ ldmleia sp!, {r4,lr}
+ bxle lr
+ ldr lr, [r0, #0x0]
+ mov r4, #0x0
+ cmp lr, r2
+ movhi lr, r2
+ cmp lr, #0x0
+ bls _020CAE1C
+_020CAE04:
+ ldrsb r12, [r1, r4]
+ ldr r3, [r0, #0x4]
+ strb r12, [r3, r4]
+ add r4, r4, #0x1
+ cmp r4, lr
+ blo _020CAE04
+_020CAE1C:
+ ldr r1, [r0, #0x0]
+ sub r1, r1, lr
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r2
+ str r1, [r0, #0x4]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start string_fill_char
+string_fill_char:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ addle sp, sp, #0x4
+ ldmleia sp!, {lr}
+ bxle lr
+ ldr r12, [r0, #0x0]
+ mov lr, #0x0
+ cmp r12, r2
+ movhi r12, r2
+ cmp r12, #0x0
+ bls _020CAE80
+_020CAE6C:
+ ldr r3, [r0, #0x4]
+ strb r1, [r3, lr]
+ add lr, lr, #0x1
+ cmp lr, r12
+ blo _020CAE6C
+_020CAE80:
+ ldr r1, [r0, #0x0]
+ sub r1, r1, r12
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r2
+ str r1, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start string_fill_char
+string_put_char:
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ ldrne r2, [r0, #0x4]
+ strneb r1, [r2, #0x0]
+ ldrne r1, [r0, #0x0]
+ subne r1, r1, #0x1
+ strne r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, #0x1
+ str r1, [r0, #0x4]
+ bx lr
+
+ arm_func_start FUN_020CAED0
+FUN_020CAED0: ; 0x020CAED0
+ ldr r0, _020CAEDC ; =0x021D3494
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CAEDC: .word 0x021D3494
+OS_SetThreadDestructor:
+ str r1, [r0, #0xb4]
+ bx lr
+
+ arm_func_start OS_EnableScheduler
+OS_EnableScheduler: ; 0x020CAEE8
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CAF1C ; =0x021D3484
+ mov r4, #0x0
+ ldr r3, [r1, #0x0]
+ cmp r3, #0x0
+ subne r2, r3, #0x1
+ movne r4, r3
+ strne r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CAF1C: .word 0x021D3484
+
+ arm_func_start OS_DisableScheduler
+OS_DisableScheduler: ; 0x020CAF20
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r2, _020CAF54 ; =0x021D3484
+ mvn r1, #0x0
+ ldr r3, [r2, #0x0]
+ cmp r3, r1
+ addcc r1, r3, #0x1
+ movcc r4, r3
+ strcc r1, [r2, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CAF54: .word 0x021D3484
+
+ arm_func_start OSi_IdleThreadProc
+OSi_IdleThreadProc: ; 0x020CAF58
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_EnableInterrupts
+_020CAF64:
+ bl OS_Halt
+ b _020CAF64
+
+ arm_func_start OS_SetSwitchThreadCallback
+OS_SetSwitchThreadCallback: ; 0x020CAF6C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CAF9C ; =0x021D3498
+ ldr r4, [r1, #0xc]
+ str r5, [r1, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CAF9C: .word 0x021D3498
+
+ arm_func_start OSi_SleepAlarmCallback
+OSi_SleepAlarmCallback: ; 0x020CAFA0
+ ldr r2, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ ldr ip, _020CAFBC ; =OS_WakeupThreadDirect
+ mov r0, r2
+ str r1, [r2, #0xb0]
+ bx r12
+ .balign 4
+_020CAFBC: .word OS_WakeupThreadDirect
+
+ arm_func_start OS_Sleep
+OS_Sleep: ; 0x020CAFC0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x34
+ mov r4, r0
+ add r0, sp, #0x8
+ bl OS_CreateAlarm
+ ldr r0, _020CB060 ; =0x021D3490
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ str r0, [sp, #0x4]
+ bl OS_DisableInterrupts
+ ldr r1, _020CB064 ; =0x000082EA
+ mov r2, #0x0
+ umull r5, r3, r4, r1
+ mla r3, r4, r2, r3
+ mla r3, r2, r1, r3
+ mov r1, r5, lsr #0x6
+ mov r4, r0
+ ldr r5, [sp, #0x4]
+ add r0, sp, #0x8
+ add r2, sp, #0x4
+ str r0, [r5, #0xb0]
+ str r2, [sp, #0x0]
+ mov r2, r3, lsr #0x6
+ orr r1, r1, r3, lsl #0x1a
+ ldr r3, _020CB068 ; =OSi_SleepAlarmCallback
+ bl OS_SetAlarm
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020CB04C
+ mov r5, #0x0
+_020CB038:
+ mov r0, r5
+ bl OS_SleepThread
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _020CB038
+_020CB04C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CB060: .word 0x021D3490
+_020CB064: .word 0x000082EA
+_020CB068: .word OSi_SleepAlarmCallback
+
+ arm_func_start OS_GetThreadPriority
+OS_GetThreadPriority: ; 0x020CB06C
+ ldr r0, [r0, #0x70]
+ bx lr
+
+ arm_func_start OS_SetThreadPriority
+OS_SetThreadPriority: ; 0x020CB074
+ stmdb sp!, {r4-r8,lr}
+ ldr r2, _020CB120 ; =0x021D3498
+ mov r6, r0
+ mov r5, r1
+ ldr r8, [r2, #0x8]
+ mov r7, #0x0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ b _020CB0A0
+_020CB098:
+ mov r7, r8
+ ldr r8, [r8, #0x68]
+_020CB0A0:
+ cmp r8, #0x0
+ beq _020CB0B0
+ cmp r8, r6
+ bne _020CB098
+_020CB0B0:
+ cmp r8, #0x0
+ beq _020CB0C4
+ ldr r0, _020CB124 ; =0x021D34A8
+ cmp r8, r0
+ bne _020CB0D8
+_020CB0C4:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CB0CC:
+ .byte 0x00, 0x00, 0xA0, 0xE3
+ .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CB0D8:
+ ldr r0, [r8, #0x70]
+ cmp r0, r5
+ beq _020CB10C
+ cmp r7, #0x0
+ ldreq r1, [r6, #0x68]
+ ldreq r0, _020CB120 ; =0x021D3498
+ streq r1, [r0, #0x8]
+ ldrne r0, [r6, #0x68]
+ strne r0, [r7, #0x68]
+ mov r0, r6
+ str r5, [r6, #0x70]
+ bl OSi_InsertThreadToList
+ bl OSi_RescheduleThread
+_020CB10C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CB120: .word 0x021D3498
+_020CB124: .word 0x021D34A8
+
+ arm_func_start OS_YieldThread
+OS_YieldThread: ; 0x020CB128
+ stmdb sp!, {r4-r8,lr}
+ ldr r0, _020CB1E0 ; =0x021D3498
+ mov r7, #0x0
+ mov r6, r7
+ mov r5, r7
+ ldr r8, [r0, #0x4]
+ bl OS_DisableInterrupts
+ ldr r1, _020CB1E0 ; =0x021D3498
+ mov r4, r0
+ ldr r2, [r1, #0x8]
+ mov r0, r7
+ cmp r2, #0x0
+ beq _020CB188
+ ldr r1, [r8, #0x70]
+_020CB160:
+ cmp r2, r8
+ moveq r7, r0
+ ldr r0, [r2, #0x70]
+ cmp r1, r0
+ moveq r6, r2
+ mov r0, r2
+ ldr r2, [r2, #0x68]
+ addeq r5, r5, #0x1
+ cmp r2, #0x0
+ bne _020CB160
+_020CB188:
+ cmp r5, #0x1
+ ble _020CB198
+ cmp r6, r8
+ bne _020CB1A8
+_020CB198:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CB1A8:
+ cmp r7, #0x0
+ ldreq r1, [r8, #0x68]
+ ldreq r0, _020CB1E0 ; =0x021D3498
+ streq r1, [r0, #0x8]
+ ldrne r0, [r8, #0x68]
+ strne r0, [r7, #0x68]
+ ldr r0, [r6, #0x68]
+ str r0, [r8, #0x68]
+ str r8, [r6, #0x68]
+ bl OSi_RescheduleThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CB1E0: .word 0x021D3498
+
+ arm_func_start OS_RescheduleThread
+OS_RescheduleThread: ; 0x020CB1E4
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ bl OSi_RescheduleThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start OS_SelectThread
+OS_SelectThread: ; 0x020CB204
+ ldr r0, _020CB22C ; =0x021D3498
+ ldr r0, [r0, #0x8]
+ b _020CB214
+_020CB210:
+ ldr r0, [r0, #0x68]
+_020CB214:
+ cmp r0, #0x0
+ bxeq lr
+ ldr r1, [r0, #0x64]
+ cmp r1, #0x1
+ bne _020CB210
+ bx lr
+ .balign 4
+_020CB22C: .word 0x021D3498
+
+ arm_func_start OS_WakeupThreadDirect
+OS_WakeupThreadDirect: ; 0x020CB230
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ mov r1, #0x1
+ mov r4, r0
+ str r1, [r5, #0x64]
+ bl OSi_RescheduleThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start OS_WakeupThread
+OS_WakeupThread: ; 0x020CB264
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x0]
+ mov r4, r0
+ cmp r1, #0x0
+ beq _020CB2D0
+ cmp r1, #0x0
+ beq _020CB2BC
+ mov r7, #0x1
+ mov r6, #0x0
+_020CB294:
+ mov r0, r5
+ bl OSi_RemoveLinkFromQueue
+ str r7, [r0, #0x64]
+ str r6, [r0, #0x78]
+ str r6, [r0, #0x80]
+ ldr r1, [r0, #0x80]
+ str r1, [r0, #0x7c]
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ bne _020CB294
+_020CB2BC:
+ mov r0, #0x0
+ str r0, [r5, #0x4]
+ ldr r0, [r5, #0x4]
+ str r0, [r5, #0x0]
+ bl OSi_RescheduleThread
+_020CB2D0:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_SleepThread
+OS_SleepThread:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CB334 ; =0x021D3490
+ mov r5, r0
+ ldr r0, [r1, #0x0]
+ cmp r6, #0x0
+ ldr r4, [r0, #0x0]
+ beq _020CB318
+ mov r0, r6
+ mov r1, r4
+ str r6, [r4, #0x78]
+ bl OSi_InsertLinkToQueue
+_020CB318:
+ mov r0, #0x0
+ str r0, [r4, #0x64]
+ bl OSi_RescheduleThread
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CB334: .word 0x021D3490
+
+ arm_func_start OS_IsThreadTerminated
+OS_IsThreadTerminated: ; 0x020CB338
+ ldr r0, [r0, #0x64]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+
+ arm_func_start OS_JoinThread
+OS_JoinThread: ; 0x020CB34C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x64]
+ mov r4, r0
+ cmp r1, #0x2
+ beq _020CB374
+ add r0, r5, #0x9c
+ bl OS_SleepThread
+_020CB374:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start OSi_CancelThreadAlarmForSleep
+OSi_CancelThreadAlarmForSleep: ; 0x020CB388
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0xb0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl OS_CancelAlarm
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start OS_DestroyThread
+OS_DestroyThread: ; 0x020CB3B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CB438 ; =0x021D3498
+ mov r4, r0
+ ldr r0, [r1, #0x4]
+ cmp r0, r5
+ bne _020CB3DC
+ bl OSi_ExitThread_Destroy
+_020CB3DC:
+ bl OS_DisableScheduler
+ mov r0, r5
+ bl OSi_UnlockAllMutex
+ mov r0, r5
+ bl OSi_CancelThreadAlarmForSleep
+ ldr r0, [r5, #0x78]
+ cmp r0, #0x0
+ beq _020CB404
+ mov r1, r5
+ bl OSi_RemoveSpecifiedLinkFromQueue
+_020CB404:
+ mov r0, r5
+ bl OSi_RemoveThreadFromList
+ mov r1, #0x2
+ add r0, r5, #0x9c
+ str r1, [r5, #0x64]
+ bl OS_WakeupThread
+ bl OS_EnableScheduler
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ bl OS_RescheduleThread
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CB438: .word 0x021D3498
+
+ arm_func_start OSi_ExitThread_Destroy
+OSi_ExitThread_Destroy: ; 0x020CB43C
+ stmdb sp!, {r4,lr}
+ ldr r0, _020CB498 ; =0x021D3490
+ ldr r0, [r0, #0x0]
+ ldr r4, [r0, #0x0]
+ bl OS_DisableScheduler
+ mov r0, r4
+ bl OSi_UnlockAllMutex
+ ldr r0, [r4, #0x78]
+ cmp r0, #0x0
+ beq _020CB46C
+ mov r1, r4
+ bl OSi_RemoveSpecifiedLinkFromQueue
+_020CB46C:
+ mov r0, r4
+ bl OSi_RemoveThreadFromList
+ mov r1, #0x2
+ add r0, r4, #0x9c
+ str r1, [r4, #0x64]
+ bl OS_WakeupThread
+ bl OS_EnableScheduler
+ bl OS_RescheduleThread
+ bl OS_Terminate
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CB498: .word 0x021D3490
+
+ arm_func_start OSi_ExitThread_Destroy2
+OSi_ExitThread_Destroy2: ; 0x020CB49C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CB4DC ; =0x021D3490
+ ldr r1, [r1, #0x0]
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0xb4]
+ cmp r2, #0x0
+ beq _020CB4CC
+ mov r1, #0x0
+ str r1, [r3, #0xb4]
+ blx r2
+ bl OS_DisableInterrupts
+_020CB4CC:
+ bl OSi_ExitThread_Destroy
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CB4DC: .word 0x021D3490
+
+ arm_func_start OSi_ExitThread_ArgSpecified
+OSi_ExitThread_ArgSpecified: ; 0x020CB4E0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r2, _020CB548 ; =0x021D3480
+ mov r5, r0
+ ldr r2, [r2, #0x0]
+ mov r4, r1
+ cmp r2, #0x0
+ beq _020CB534
+ ldr r1, _020CB54C ; =OSi_ExitThread_Destroy2
+ bl OS_InitContext
+ str r4, [r5, #0x4]
+ ldr r1, [r5, #0x0]
+ mov r0, r5
+ orr r1, r1, #0x80
+ str r1, [r5, #0x0]
+ mov r1, #0x1
+ str r1, [r5, #0x64]
+ bl OS_LoadContext
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CB534:
+ mov r0, r4
+ bl OSi_ExitThread_Destroy2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CB548: .word 0x021D3480
+_020CB54C: .word OSi_ExitThread_Destroy2
+
+ arm_func_start OS_ExitThread
+OS_ExitThread: ; 0x020CB550
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r0, _020CB578 ; =0x021D3498
+ mov r1, #0x0
+ ldr r0, [r0, #0x4]
+ bl OSi_ExitThread_ArgSpecified
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CB578: .word 0x021D3498
+
+ arm_func_start OS_CreateThread
+OS_CreateThread: ; 0x020CB57C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ mov r5, r1
+ mov r7, r2
+ mov r6, r3
+ bl OS_DisableInterrupts
+ mov r4, r0
+ bl OSi_GetUnusedThreadId
+ ldr r2, [sp, #0x1c]
+ mov r1, #0x0
+ str r2, [r8, #0x70]
+ str r0, [r8, #0x6c]
+ str r1, [r8, #0x64]
+ str r1, [r8, #0x74]
+ mov r0, r8
+ bl OSi_InsertThreadToList
+ mov r1, r5
+ str r6, [r8, #0x94]
+ ldr r0, [sp, #0x18]
+ mov r12, #0x0
+ sub r5, r6, r0
+ sub r2, r6, #0x4
+ str r5, [r8, #0x90]
+ str r12, [r8, #0x98]
+ ldr r3, _020CB678 ; =0xFDDB597D
+ ldr r0, [r8, #0x94]
+ ldr r6, _020CB67C ; =0x7BF9DD5B
+ str r3, [r0, #-0x4]
+ ldr r3, [r8, #0x90]
+ mov r0, r8
+ str r6, [r3, #0x0]
+ str r12, [r8, #0xa0]
+ ldr r3, [r8, #0xa0]
+ str r3, [r8, #0x9c]
+ bl OS_InitContext
+ str r7, [r8, #0x4]
+ add r1, r5, #0x4
+ ldr r2, _020CB680 ; =OS_ExitThread
+ mov r0, #0x0
+ str r2, [r8, #0x3c]
+ ldr r2, [sp, #0x18]
+ sub r2, r2, #0x8
+ bl MIi_CpuClear32
+ mov r1, #0x0
+ str r1, [r8, #0x84]
+ str r1, [r8, #0x88]
+ str r1, [r8, #0x8c]
+ mov r0, r8
+ bl OS_SetThreadDestructor
+_020CB640:
.byte 0x00, 0x00, 0xA0, 0xE3, 0x78, 0x00, 0x88, 0xE5, 0x80, 0x00, 0x88, 0xE5, 0x80, 0x20, 0x98, 0xE5
.byte 0xA4, 0x10, 0x88, 0xE2, 0x7C, 0x20, 0x88, 0xE5, 0x0C, 0x20, 0xA0, 0xE3, 0xE6, 0x0A, 0x00, 0xEB
.byte 0x04, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0xA0, 0xE3, 0xB0, 0x10, 0x88, 0xE5, 0x2C, 0x07, 0x00, 0xEB
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x7D, 0x59, 0xDB, 0xFD, 0x5B, 0xDD, 0xF9, 0x7B
- .byte 0x50, 0xB5, 0x0C, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x10, 0x31, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x93, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x08, 0xD0, 0x8D, 0x12, 0x70, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0xFC, 0xC0, 0x9F, 0xE5, 0xFC, 0x10, 0x9F, 0xE5, 0x00, 0xE0, 0xA0, 0xE3
- .byte 0xF8, 0x00, 0x9F, 0xE5, 0x01, 0x60, 0xA0, 0xE3, 0x10, 0x40, 0xA0, 0xE3, 0x08, 0x10, 0x80, 0xE5
- .byte 0x04, 0x10, 0x80, 0xE5, 0x00, 0x00, 0x5C, 0xE3, 0xE4, 0x00, 0x9F, 0xD5, 0x70, 0x40, 0x81, 0xE5
- .byte 0x0C, 0x40, 0x40, 0xD0, 0x6C, 0xE0, 0x81, 0xE5, 0x64, 0x60, 0x81, 0xE5, 0x68, 0xE0, 0x81, 0xE5
- .byte 0x74, 0xE0, 0x81, 0xE5, 0xCC, 0x10, 0x9F, 0xC5, 0xCC, 0x00, 0x9F, 0xC5, 0xFE, 0x1D, 0x81, 0xC2
- .byte 0x00, 0x00, 0x41, 0xC0, 0x0C, 0x40, 0x40, 0xC0, 0xB8, 0x10, 0x9F, 0xE5, 0xBC, 0x50, 0x9F, 0xE5
- .byte 0xBC, 0x20, 0x9F, 0xE5, 0xB0, 0x00, 0x9F, 0xE5, 0x00, 0x50, 0x82, 0xE5, 0x98, 0x20, 0x9F, 0xE5
- .byte 0xFE, 0x1D, 0x81, 0xE2, 0x00, 0x60, 0x83, 0xE5, 0x00, 0x30, 0x41, 0xE0, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xA0, 0x10, 0x9F, 0xE5, 0x94, 0x30, 0x82, 0xE5, 0x90, 0x40, 0x82, 0xE5, 0x98, 0x00, 0x82, 0xE5
- .byte 0x04, 0x10, 0x03, 0xE5, 0x90, 0x30, 0x92, 0xE5, 0x8C, 0xC0, 0x9F, 0xE5, 0x6C, 0x10, 0x9F, 0xE5
- .byte 0x00, 0xC0, 0x83, 0xE5, 0x84, 0x30, 0x9F, 0xE5, 0xA0, 0x00, 0x82, 0xE5, 0x9C, 0x00, 0x82, 0xE5
- .byte 0xB0, 0x00, 0xC1, 0xE1, 0xB2, 0x00, 0xC1, 0xE1, 0x00, 0x10, 0x83, 0xE5, 0x02, 0xFE, 0xFF, 0xEB
- .byte 0xC8, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0x8D, 0xE5, 0x1F, 0xC0, 0xA0, 0xE3, 0x60, 0x00, 0x9F, 0xE5
- .byte 0x60, 0x10, 0x9F, 0xE5, 0x60, 0x30, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x04, 0xC0, 0x8D, 0xE5
- .byte 0x7D, 0xFF, 0xFF, 0xEB, 0x48, 0x00, 0x9F, 0xE5, 0x20, 0x20, 0xA0, 0xE3, 0x01, 0x10, 0xA0, 0xE3
- .byte 0x70, 0x20, 0x80, 0xE5, 0x64, 0x10, 0x80, 0xE5, 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x94, 0x34, 0x1D, 0x02, 0x00, 0x00, 0x00, 0x00, 0x68, 0x35, 0x1D, 0x02
- .byte 0x98, 0x34, 0x1D, 0x02, 0x80, 0x00, 0x7E, 0x02, 0x00, 0x00, 0x7E, 0x02, 0x00, 0x04, 0x00, 0x00
- .byte 0x9C, 0x34, 0x1D, 0x02, 0x90, 0x34, 0x1D, 0x02, 0x7D, 0x59, 0xDB, 0xFD, 0x5B, 0xDD, 0xF9, 0x7B
- .byte 0xA0, 0xFF, 0x7F, 0x02, 0xA8, 0x34, 0x1D, 0x02, 0x58, 0xAF, 0x0C, 0x02, 0xF0, 0x36, 0x1D, 0x02
- .byte 0x70, 0x40, 0x2D, 0xE9, 0xD0, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x70, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0xC0, 0x40, 0x9F, 0xE5, 0xB2, 0x00, 0xD4, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x1A, 0xD9, 0x06, 0x00, 0xEB, 0x12, 0x00, 0x50, 0xE3
- .byte 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 0xA0, 0xE3, 0xB0, 0x00, 0xC4, 0xE1, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x60, 0x90, 0xE5
- .byte 0x73, 0xFE, 0xFF, 0xEB, 0x00, 0x50, 0xA0, 0xE1, 0x05, 0x00, 0x56, 0xE1, 0x70, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x55, 0xE3, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x64, 0x00, 0x96, 0xE5, 0x02, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x06, 0x00, 0xA0, 0xE1
- .byte 0xB2, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x50, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x02, 0x00, 0x00, 0x0A
- .byte 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0x32, 0xFF, 0x2F, 0xE1, 0x0C, 0x20, 0x94, 0xE5
- .byte 0x00, 0x00, 0x52, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1
- .byte 0x32, 0xFF, 0x2F, 0xE1, 0x14, 0x10, 0x9F, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x04, 0x50, 0x81, 0xE5
- .byte 0xB1, 0x00, 0x00, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x84, 0x34, 0x1D, 0x02
- .byte 0x98, 0x34, 0x1D, 0x02, 0x90, 0x34, 0x1D, 0x02, 0x8C, 0x34, 0x1D, 0x02, 0x3C, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x08, 0x10, 0x91, 0xE5, 0x01, 0x00, 0x00, 0xEA, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x68, 0x10, 0x91, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x51, 0xE1
- .byte 0xF9, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x52, 0xE3, 0x68, 0x10, 0x90, 0x05, 0x0C, 0x00, 0x9F, 0x05
- .byte 0x08, 0x10, 0x80, 0x05, 0x68, 0x00, 0x90, 0x15, 0x68, 0x00, 0x82, 0x15, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x98, 0x34, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x54, 0x10, 0x9F, 0xE5
- .byte 0x00, 0xC0, 0xA0, 0xE3, 0x08, 0x30, 0x91, 0xE5, 0x03, 0xE0, 0xA0, 0xE1, 0x01, 0x00, 0x00, 0xEA
- .byte 0x0E, 0xC0, 0xA0, 0xE1, 0x68, 0xE0, 0x9E, 0xE5, 0x00, 0x00, 0x5E, 0xE3, 0x03, 0x00, 0x00, 0x0A
- .byte 0x70, 0x20, 0x9E, 0xE5, 0x70, 0x10, 0x90, 0xE5, 0x01, 0x00, 0x52, 0xE1, 0xF7, 0xFF, 0xFF, 0x3A
- .byte 0x00, 0x00, 0x5C, 0xE3, 0x1C, 0x10, 0x9F, 0x05, 0x68, 0x30, 0x80, 0x05, 0x08, 0x00, 0x81, 0x05
- .byte 0x68, 0x10, 0x9C, 0x15, 0x68, 0x10, 0x80, 0x15, 0x68, 0x00, 0x8C, 0x15, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02, 0x00, 0x20, 0x90, 0xE5
- .byte 0x00, 0x00, 0x52, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x92, 0xE5, 0x00, 0x10, 0x80, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x14, 0x00, 0x81, 0x15, 0x00, 0x10, 0xA0, 0x03
- .byte 0x04, 0x10, 0x80, 0x05, 0x02, 0x00, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0x90, 0xE5
- .byte 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE3, 0x0E, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x5C, 0xE1
- .byte 0x80, 0x30, 0x9C, 0xE5, 0x08, 0x00, 0x00, 0x1A, 0x0C, 0x00, 0x52, 0xE1, 0x7C, 0x20, 0x9C, 0xE5
- .byte 0x00, 0x30, 0x80, 0x05, 0x80, 0x30, 0x82, 0x15, 0x04, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0x51, 0xE1
- .byte 0x04, 0x20, 0x80, 0x05, 0x7C, 0x20, 0x83, 0x15, 0x02, 0x00, 0x00, 0xEA, 0x03, 0xC0, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x53, 0xE3, 0xF0, 0xFF, 0xFF, 0x1A, 0x0C, 0x00, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x20, 0x90, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x07, 0x00, 0x00, 0x0A, 0x80, 0x10, 0x92, 0xE5
- .byte 0x00, 0x10, 0x80, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x7C, 0x00, 0x81, 0x15
- .byte 0x00, 0x10, 0xA0, 0x03, 0x04, 0x10, 0x80, 0x05, 0x78, 0x10, 0x82, 0x05, 0x02, 0x00, 0xA0, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0xC0, 0x90, 0xE5, 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x5C, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x80, 0xC0, 0x9C, 0xE5, 0x00, 0x00, 0x5C, 0xE3, 0x03, 0x00, 0x00, 0x0A
- .byte 0x70, 0x30, 0x9C, 0xE5, 0x70, 0x20, 0x91, 0xE5, 0x02, 0x00, 0x53, 0xE1, 0xF6, 0xFF, 0xFF, 0x9A
- .byte 0x00, 0x00, 0x5C, 0xE3, 0x08, 0x00, 0x00, 0x1A, 0x04, 0x20, 0x90, 0xE5, 0x00, 0x00, 0x52, 0xE3
- .byte 0x00, 0x10, 0x80, 0x05, 0x80, 0x10, 0x82, 0x15, 0x7C, 0x20, 0x81, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x80, 0x20, 0x81, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x20, 0x9C, 0xE5
- .byte 0x00, 0x00, 0x52, 0xE3, 0x00, 0x10, 0x80, 0x05, 0x80, 0x10, 0x82, 0x15, 0x7C, 0x20, 0x81, 0xE5
- .byte 0x80, 0xC0, 0x81, 0xE5, 0x7C, 0x10, 0x8C, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x91, 0xE5, 0x01, 0x00, 0x80, 0xE2, 0x00, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x88, 0x34, 0x1D, 0x02, 0x04, 0x10, 0x81, 0xE2, 0x40, 0x10, 0x80, 0xE5, 0x44, 0x20, 0x80, 0xE5
- .byte 0x40, 0x20, 0x42, 0xE2, 0x04, 0x00, 0x12, 0xE3, 0x04, 0x20, 0x42, 0x12, 0x38, 0x20, 0x80, 0xE5
- .byte 0x01, 0x10, 0x11, 0xE2, 0x3F, 0x10, 0xA0, 0x13, 0x1F, 0x10, 0xA0, 0x03, 0x00, 0x10, 0x80, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x80, 0xE5, 0x08, 0x10, 0x80, 0xE5, 0x0C, 0x10, 0x80, 0xE5
- .byte 0x10, 0x10, 0x80, 0xE5, 0x14, 0x10, 0x80, 0xE5, 0x18, 0x10, 0x80, 0xE5, 0x1C, 0x10, 0x80, 0xE5
- .byte 0x20, 0x10, 0x80, 0xE5, 0x24, 0x10, 0x80, 0xE5, 0x28, 0x10, 0x80, 0xE5, 0x2C, 0x10, 0x80, 0xE5
- .byte 0x30, 0x10, 0x80, 0xE5, 0x34, 0x10, 0x80, 0xE5, 0x3C, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x01, 0x40, 0x2D, 0xE9, 0x48, 0x00, 0x80, 0xE2, 0x38, 0x10, 0x9F, 0xE5, 0x31, 0xFF, 0x2F, 0xE1
- .byte 0x01, 0x40, 0xBD, 0xE8, 0x00, 0x10, 0x80, 0xE2, 0x00, 0x20, 0x0F, 0xE1, 0x04, 0x20, 0x81, 0xE4
- .byte 0xD3, 0x00, 0xA0, 0xE3, 0x00, 0xF0, 0x21, 0xE1, 0x40, 0xD0, 0x81, 0xE5, 0x02, 0xF0, 0x21, 0xE1
- .byte 0x01, 0x00, 0xA0, 0xE3, 0xFF, 0x7F, 0x81, 0xE8, 0x08, 0x00, 0x8F, 0xE2, 0x3C, 0x00, 0x81, 0xE5
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0x48, 0x36, 0x0D, 0x02, 0x01, 0x40, 0x2D, 0xE9
- .byte 0x48, 0x00, 0x80, 0xE2, 0x30, 0x10, 0x9F, 0xE5, 0x31, 0xFF, 0x2F, 0xE1, 0x01, 0x40, 0xBD, 0xE8
- .byte 0x00, 0x10, 0x0F, 0xE1, 0x1F, 0x10, 0xC1, 0xE3, 0xD3, 0x10, 0x81, 0xE3, 0x01, 0xF0, 0x21, 0xE1
- .byte 0x04, 0x10, 0x90, 0xE4, 0x01, 0xF0, 0x6F, 0xE1, 0x40, 0xD0, 0x90, 0xE5, 0x3C, 0xE0, 0x90, 0xE5
- .byte 0xFF, 0x7F, 0xD0, 0xE8, 0x00, 0x00, 0xA0, 0xE1, 0x04, 0xF0, 0x5E, 0xE2, 0x88, 0x36, 0x0D, 0x02
- .byte 0x08, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x01, 0x00, 0x00, 0x82, 0x28, 0x68, 0x10, 0x02, 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1
- .byte 0xC6, 0x05, 0x00, 0xEB, 0x1C, 0x10, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x51, 0xE3
- .byte 0x0D, 0x00, 0x00, 0x1A, 0x01, 0x80, 0x07, 0xE2, 0x08, 0x70, 0x86, 0xE2, 0x00, 0x00, 0x58, 0xE3
- .byte 0x04, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0xC1, 0x05, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x07, 0x00, 0xA0, 0xE1, 0xAC, 0xFD, 0xFF, 0xEB
- .byte 0x1C, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xF3, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x55, 0xE3
- .byte 0x10, 0x10, 0x96, 0x15, 0x18, 0x00, 0x96, 0x15, 0x00, 0x01, 0x91, 0x17, 0x00, 0x00, 0x85, 0x15
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xB2, 0x05, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1, 0xA4, 0x05, 0x00, 0xEB, 0x14, 0x10, 0x96, 0xE5
- .byte 0x1C, 0x20, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x02, 0x00, 0x51, 0xE1, 0x0E, 0x00, 0x00, 0xCA
- .byte 0x01, 0x70, 0x07, 0xE2, 0x00, 0x00, 0x57, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x9F, 0x05, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x06, 0x00, 0xA0, 0xE1, 0x89, 0xFD, 0xFF, 0xEB, 0x14, 0x10, 0x96, 0xE5
- .byte 0x1C, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x51, 0xE1, 0xF1, 0xFF, 0xFF, 0xDA, 0x18, 0x00, 0x96, 0xE5
- .byte 0x01, 0x00, 0x80, 0xE0, 0x01, 0x00, 0x40, 0xE2, 0xE8, 0x7F, 0x00, 0xEB, 0x18, 0x10, 0x86, 0xE5
- .byte 0x10, 0x20, 0x96, 0xE5, 0x18, 0x10, 0x96, 0xE5, 0x08, 0x00, 0x86, 0xE2, 0x01, 0x51, 0x82, 0xE7
- .byte 0x1C, 0x10, 0x96, 0xE5, 0x01, 0x10, 0x81, 0xE2, 0x1C, 0x10, 0x86, 0xE5, 0x58, 0xFD, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x86, 0x05, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1, 0x78, 0x05, 0x00, 0xEB, 0x1C, 0x10, 0x96, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0x0D, 0x00, 0x00, 0x1A, 0x01, 0x80, 0x07, 0xE2
- .byte 0x08, 0x70, 0x86, 0xE2, 0x00, 0x00, 0x58, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x73, 0x05, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x07, 0x00, 0xA0, 0xE1, 0x5E, 0xFD, 0xFF, 0xEB, 0x1C, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0xF3, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x55, 0xE3, 0x10, 0x10, 0x96, 0x15, 0x18, 0x00, 0x96, 0x15
- .byte 0x00, 0x01, 0x91, 0x17, 0x00, 0x00, 0x85, 0x15, 0x18, 0x00, 0x96, 0xE5, 0x14, 0x10, 0x96, 0xE5
- .byte 0x01, 0x00, 0x80, 0xE2, 0xB9, 0x7F, 0x00, 0xEB, 0x18, 0x10, 0x86, 0xE5, 0x1C, 0x10, 0x96, 0xE5
- .byte 0x06, 0x00, 0xA0, 0xE1, 0x01, 0x10, 0x41, 0xE2, 0x1C, 0x10, 0x86, 0xE5, 0x2C, 0xFD, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x5A, 0x05, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1, 0x4C, 0x05, 0x00, 0xEB, 0x1C, 0x20, 0x96, 0xE5
- .byte 0x14, 0x10, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x02, 0x00, 0x51, 0xE1, 0x0E, 0x00, 0x00, 0xCA
- .byte 0x01, 0x70, 0x07, 0xE2, 0x00, 0x00, 0x57, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x47, 0x05, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x06, 0x00, 0xA0, 0xE1, 0x31, 0xFD, 0xFF, 0xEB, 0x1C, 0x20, 0x96, 0xE5
- .byte 0x14, 0x10, 0x96, 0xE5, 0x02, 0x00, 0x51, 0xE1, 0xF1, 0xFF, 0xFF, 0xDA, 0x18, 0x00, 0x96, 0xE5
- .byte 0x02, 0x00, 0x80, 0xE0, 0x91, 0x7F, 0x00, 0xEB, 0x10, 0x20, 0x96, 0xE5, 0x08, 0x00, 0x86, 0xE2
- .byte 0x01, 0x51, 0x82, 0xE7, 0x1C, 0x10, 0x96, 0xE5, 0x01, 0x10, 0x81, 0xE2, 0x1C, 0x10, 0x86, 0xE5
- .byte 0x03, 0xFD, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x31, 0x05, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0xC0, 0xA0, 0xE3
- .byte 0x04, 0xC0, 0x80, 0xE5, 0x04, 0x30, 0x90, 0xE5, 0x00, 0x30, 0x80, 0xE5, 0x0C, 0xC0, 0x80, 0xE5
- .byte 0x0C, 0x30, 0x90, 0xE5, 0x08, 0x30, 0x80, 0xE5, 0x10, 0x10, 0x80, 0xE5, 0x14, 0x20, 0x80, 0xE5
- .byte 0x18, 0xC0, 0x80, 0xE5, 0x1C, 0xC0, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x20, 0x91, 0xE5
- .byte 0x14, 0x10, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x8C, 0x10, 0x80, 0x05, 0x14, 0x10, 0x82, 0x15
- .byte 0x00, 0x00, 0x51, 0xE3, 0x88, 0x20, 0x80, 0x05, 0x10, 0x20, 0x81, 0x15, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x8C, 0x20, 0x90, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x88, 0x10, 0x80, 0x05, 0x10, 0x10, 0x82, 0x15
- .byte 0x14, 0x20, 0x81, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x10, 0x20, 0x81, 0xE5, 0x8C, 0x10, 0x80, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x50, 0xA0, 0xE1, 0x07, 0x05, 0x00, 0xEB
- .byte 0x08, 0x20, 0x95, 0xE5, 0x58, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE3
- .byte 0x04, 0x00, 0x91, 0xE5, 0x07, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x85, 0xE5, 0x0C, 0x20, 0x95, 0xE5
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x01, 0x20, 0x82, 0xE2, 0x0C, 0x20, 0x85, 0xE5, 0xE7, 0xFF, 0xFF, 0xEB
- .byte 0x01, 0x60, 0xA0, 0xE3, 0x05, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x52, 0xE1, 0x0C, 0x00, 0x95, 0x05
- .byte 0x01, 0x60, 0xA0, 0x03, 0x01, 0x00, 0x80, 0x02, 0x0C, 0x00, 0x85, 0x05, 0x00, 0x60, 0xA0, 0x13
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xF6, 0x04, 0x00, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x88, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x88, 0x50, 0x86, 0xE2, 0x00, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0x7E, 0xFE, 0xFF, 0xEB
- .byte 0x0C, 0x40, 0x80, 0xE5, 0x08, 0x40, 0x80, 0xE5, 0xB5, 0xFC, 0xFF, 0xEB, 0x88, 0x00, 0x96, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0xF7, 0xFF, 0xFF, 0x1A, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0xD7, 0x04, 0x00, 0xEB
- .byte 0x54, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0x91, 0xE5, 0x08, 0x10, 0x95, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE1, 0x0B, 0x00, 0x00, 0x1A, 0x0C, 0x10, 0x95, 0xE5, 0x01, 0x10, 0x41, 0xE2
- .byte 0x0C, 0x10, 0x85, 0xE5, 0x0C, 0x10, 0x95, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x05, 0x00, 0x00, 0x1A
- .byte 0x05, 0x10, 0xA0, 0xE1, 0xAC, 0xFF, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x08, 0x10, 0x85, 0xE5, 0x9A, 0xFC, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0xC8, 0x04, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0xBB, 0x04, 0x00, 0xEB
- .byte 0x70, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x70, 0x91, 0xE5, 0x00, 0x60, 0xA0, 0xE3
- .byte 0x08, 0x00, 0x95, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x08, 0x70, 0x85, 0xE5
- .byte 0x0C, 0x10, 0x95, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x01, 0x20, 0x81, 0xE2, 0x05, 0x10, 0xA0, 0xE1
- .byte 0x0C, 0x20, 0x85, 0xE5, 0x99, 0xFF, 0xFF, 0xEB, 0x09, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x50, 0xE1
- .byte 0x0C, 0x00, 0x95, 0x05, 0x01, 0x00, 0x80, 0x02, 0x0C, 0x00, 0x85, 0x05, 0x04, 0x00, 0x00, 0x0A
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x84, 0x50, 0x87, 0xE5, 0x99, 0xFC, 0xFF, 0xEB, 0x84, 0x60, 0x87, 0xE5
- .byte 0xEA, 0xFF, 0xFF, 0xEA, 0x04, 0x00, 0xA0, 0xE1, 0xA5, 0x04, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x98, 0x34, 0x1D, 0x02, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x04, 0x20, 0x80, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x00, 0x10, 0x80, 0xE5, 0x08, 0x20, 0x80, 0xE5
- .byte 0x0C, 0x20, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x16, 0x0F, 0x07, 0xEE
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0x81, 0xE1
- .byte 0x5A, 0x2F, 0x07, 0xEE, 0x20, 0x00, 0x80, 0xE2, 0x01, 0x0B, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0xBA
- .byte 0x01, 0x11, 0x81, 0xE2, 0x00, 0x00, 0x51, 0xE3, 0xF6, 0xFF, 0xFF, 0x1A, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0xC0, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0x81, 0xE1
- .byte 0x9A, 0xCF, 0x07, 0xEE, 0x5E, 0x2F, 0x07, 0xEE, 0x20, 0x00, 0x80, 0xE2, 0x01, 0x0B, 0x50, 0xE3
- .byte 0xF9, 0xFF, 0xFF, 0xBA, 0x01, 0x11, 0x81, 0xE2, 0x00, 0x00, 0x51, 0xE3, 0xF5, 0xFF, 0xFF, 0x1A
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x10, 0x81, 0xE0, 0x1F, 0x00, 0xC0, 0xE3, 0x36, 0x0F, 0x07, 0xEE
- .byte 0x20, 0x00, 0x80, 0xE2, 0x01, 0x00, 0x50, 0xE1, 0xFB, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x10, 0x81, 0xE0, 0x1F, 0x00, 0xC0, 0xE3, 0x3A, 0x0F, 0x07, 0xEE, 0x20, 0x00, 0x80, 0xE2
- .byte 0x01, 0x00, 0x50, 0xE1, 0xFB, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0xC0, 0xA0, 0xE3
- .byte 0x00, 0x10, 0x81, 0xE0, 0x1F, 0x00, 0xC0, 0xE3, 0x9A, 0xCF, 0x07, 0xEE, 0x3E, 0x0F, 0x07, 0xEE
- .byte 0x20, 0x00, 0x80, 0xE2, 0x01, 0x00, 0x50, 0xE1, 0xFA, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x9A, 0x0F, 0x07, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x15, 0x0F, 0x07, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x10, 0x81, 0xE0, 0x1F, 0x00, 0xC0, 0xE3
- .byte 0x35, 0x0F, 0x07, 0xEE, 0x20, 0x00, 0x80, 0xE2, 0x01, 0x00, 0x50, 0xE1, 0xFB, 0xFF, 0xFF, 0xBA
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x07, 0x01, 0x00, 0xEB
- .byte 0x7A, 0x0E, 0x00, 0xEB, 0x78, 0xF8, 0xFF, 0xEB, 0xE4, 0x00, 0x00, 0xEB, 0xAA, 0xF7, 0xFF, 0xEB
- .byte 0xF5, 0xF6, 0xFF, 0xEB, 0x69, 0x02, 0x00, 0xEB, 0x1A, 0x09, 0x00, 0xEB, 0x2A, 0x04, 0x00, 0xEB
- .byte 0x4E, 0x05, 0x00, 0xEB, 0x26, 0xFD, 0xFF, 0xEB, 0xAE, 0x04, 0x00, 0xEB, 0xA3, 0x3E, 0x00, 0xEB
- .byte 0x0C, 0x2C, 0x00, 0xEB, 0x5A, 0x25, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x02, 0x50, 0xA0, 0xE1, 0xCC, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03
+ .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CB678: .word 0xFDDB597D
+_020CB67C: .word 0x7BF9DD5B
+_020CB680: .word OS_ExitThread
+
+ arm_func_start OS_InitThread
+OS_InitThread: ; 0x020CB684
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ ldr r3, _020CB7A4 ; =0x021D3494
+ ldr r0, [r3, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x8
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr ip, _020CB7A8 ; =0x00000000
+ ldr r1, _020CB7AC ; =0x021D3568
+ mov lr, #0x0
+ ldr r0, _020CB7B0 ; =0x021D3498
+ mov r6, #0x1
+ mov r4, #0x10
+ str r1, [r0, #0x8]
+ str r1, [r0, #0x4]
+ cmp r12, #0x0
+ ldrle r0, _020CB7B4 ; =0x027E0080
+ str r4, [r1, #0x70]
+ suble r4, r0, r12
+ str lr, [r1, #0x6c]
+ str r6, [r1, #0x64]
+ str lr, [r1, #0x68]
+ str lr, [r1, #0x74]
+ ldrgt r1, _020CB7B8 ; =0x027E0000
+ ldrgt r0, _020CB7BC ; =0x00000400
+ addgt r1, r1, #0x3f80
+ subgt r0, r1, r0
+ subgt r4, r0, r12
+ ldr r1, _020CB7B8 ; =0x027E0000
+ ldr r5, _020CB7C0 ; =0x021D349C
+ ldr r2, _020CB7C4 ; =0x021D3490
+ ldr r0, _020CB7BC ; =0x00000400
+ str r5, [r2, #0x0]
+ ldr r2, _020CB7AC ; =0x021D3568
+ add r1, r1, #0x3f80
+ str r6, [r3, #0x0]
+ sub r3, r1, r0
+ mov r0, #0x0
+ ldr r1, _020CB7C8 ; =0xFDDB597D
+ str r3, [r2, #0x94]
+ str r4, [r2, #0x90]
+ str r0, [r2, #0x98]
+ str r1, [r3, #-0x4]
+ ldr r3, [r2, #0x90]
+ ldr ip, _020CB7CC ; =0x7BF9DD5B
+ ldr r1, _020CB7B0 ; =0x021D3498
+ str r12, [r3, #0x0]
+ ldr r3, _020CB7D0 ; =0x027FFFA0
+ str r0, [r2, #0xa0]
+ str r0, [r2, #0x9c]
+ strh r0, [r1, #0x0]
+ strh r0, [r1, #0x2]
+ str r1, [r3, #0x0]
+ bl OS_SetSwitchThreadCallback
+ mov r2, #0xc8
+ str r2, [sp, #0x0]
+ mov r12, #0x1f
+ ldr r0, _020CB7D4 ; =0x021D34A8
+ ldr r1, _020CB7D8 ; =OSi_IdleThreadProc
+ ldr r3, _020CB7DC ; =0x021D36F0
+ mov r2, #0x0
+ str r12, [sp, #0x4]
+ bl OS_CreateThread
+ ldr r0, _020CB7D4 ; =0x021D34A8
+ mov r2, #0x20
+ mov r1, #0x1
+ str r2, [r0, #0x70]
+ str r1, [r0, #0x64]
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CB7A4: .word 0x021D3494
+_020CB7A8: .word 0x00000000
+_020CB7AC: .word 0x021D3568
+_020CB7B0: .word 0x021D3498
+_020CB7B4: .word 0x027E0080
+_020CB7B8: .word 0x027E0000
+_020CB7BC: .word 0x00000400
+_020CB7C0: .word 0x021D349C
+_020CB7C4: .word 0x021D3490
+_020CB7C8: .word 0xFDDB597D
+_020CB7CC: .word 0x7BF9DD5B
+_020CB7D0: .word 0x027FFFA0
+_020CB7D4: .word 0x021D34A8
+_020CB7D8: .word OSi_IdleThreadProc
+_020CB7DC: .word 0x021D36F0
+
+ arm_func_start OSi_RescheduleThread
+OSi_RescheduleThread: ; 0x020CB7E0
+ stmdb sp!, {r4-r6,lr}
+ ldr r0, _020CB8BC ; =0x021D3484
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ ldr r4, _020CB8C0 ; =0x021D3498
+ ldrh r0, [r4, #0x2]
+ cmp r0, #0x0
+ bne _020CB814
+ bl OS_GetProcMode
+ cmp r0, #0x12
+ bne _020CB824
+_020CB814:
+ mov r0, #0x1
+ strh r0, [r4, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020CB824:
+ ldr r0, _020CB8C4 ; =0x021D3490
+ ldr r0, [r0, #0x0]
+ ldr r6, [r0, #0x0]
+ bl OS_SelectThread
+ mov r5, r0
+ cmp r6, r5
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ cmp r5, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r0, [r6, #0x64]
+ cmp r0, #0x2
+ beq _020CB870
+ mov r0, r6
+ bl OS_SaveContext
+_020CB864:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
+_020CB870:
+ ldr r0, _020CB8C8 ; =0x021D348C
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020CB88C
+ mov r0, r6
+ mov r1, r5
+ blx r2
+_020CB88C:
+ ldr r2, [r4, #0xc]
+ cmp r2, #0x0
+ beq _020CB8A4
+ mov r0, r6
+ mov r1, r5
+ blx r2
+_020CB8A4:
+ ldr r1, _020CB8C0 ; =0x021D3498
+ mov r0, r5
+ str r5, [r1, #0x4]
+ bl OS_LoadContext
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CB8BC: .word 0x021D3484
+_020CB8C0: .word 0x021D3498
+_020CB8C4: .word 0x021D3490
+_020CB8C8: .word 0x021D348C
+
+ arm_func_start OSi_RemoveThreadFromList
+OSi_RemoveThreadFromList: ; 0x020CB8CC
+ ldr r1, _020CB910 ; =0x021D3498
+ mov r2, #0x0
+ ldr r1, [r1, #0x8]
+ b _020CB8E4
+_020CB8DC:
+ mov r2, r1
+ ldr r1, [r1, #0x68]
+_020CB8E4:
+ cmp r1, #0x0
+ beq _020CB8F4
+ cmp r1, r0
+ bne _020CB8DC
+_020CB8F4:
+ cmp r2, #0x0
+ ldreq r1, [r0, #0x68]
+ ldreq r0, _020CB910 ; =0x021D3498
+ streq r1, [r0, #0x8]
+ ldrne r0, [r0, #0x68]
+ strne r0, [r2, #0x68]
+ bx lr
+ .balign 4
+_020CB910: .word 0x021D3498
+
+ arm_func_start OSi_InsertThreadToList
+OSi_InsertThreadToList: ; 0x020CB914
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CB978 ; =0x021D3498
+ mov r12, #0x0
+ ldr r3, [r1, #0x8]
+ mov lr, r3
+ b _020CB938
+_020CB930:
+ mov r12, lr
+ ldr lr, [lr, #0x68]
+_020CB938:
+ cmp lr, #0x0
+ beq _020CB950
+ ldr r2, [lr, #0x70]
+ ldr r1, [r0, #0x70]
+ cmp r2, r1
+ blo _020CB930
+_020CB950:
+ cmp r12, #0x0
+ ldreq r1, _020CB978 ; =0x021D3498
+ streq r3, [r0, #0x68]
+ streq r0, [r1, #0x8]
+ ldrne r1, [r12, #0x68]
+ strne r1, [r0, #0x68]
+ strne r0, [r12, #0x68]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CB978: .word 0x021D3498
+
+ arm_func_start OSi_RemoveMutexLinkFromQueue
+OSi_RemoveMutexLinkFromQueue: ; 0x020CB97C
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020CB9A4
+ ldr r1, [r2, #0x10]
+ str r1, [r0, #0x0]
+ cmp r1, #0x0
+ movne r0, #0x0
+ strne r0, [r1, #0x14]
+ moveq r1, #0x0
+ streq r1, [r0, #0x4]
+_020CB9A4:
+ mov r0, r2
+ bx lr
+
+ arm_func_start OSi_RemoveSpecifiedLinkFromQueue
+OSi_RemoveSpecifiedLinkFromQueue: ; 0x020CB9AC
+ ldr r2, [r0, #0x0]
+ mov r12, r2
+ cmp r2, #0x0
+ beq _020CB9F8
+_020CB9BC:
+ cmp r12, r1
+ ldr r3, [r12, #0x80]
+ bne _020CB9EC
+ cmp r2, r12
+ ldr r2, [r12, #0x7c]
+ streq r3, [r0, #0x0]
+ strne r3, [r2, #0x80]
+ ldr r1, [r0, #0x4]
+ cmp r1, r12
+ streq r2, [r0, #0x4]
+ strne r2, [r3, #0x7c]
+ b _020CB9F8
+_020CB9EC:
+ mov r12, r3
+ cmp r3, #0x0
+ bne _020CB9BC
+_020CB9F8:
+ mov r0, r12
+ bx lr
+
+ arm_func_start OSi_RemoveLinkFromQueue
+OSi_RemoveLinkFromQueue: ; 0x020CBA00
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ beq _020CBA2C
+ ldr r1, [r2, #0x80]
+ str r1, [r0, #0x0]
+ cmp r1, #0x0
+ movne r0, #0x0
+ strne r0, [r1, #0x7c]
+ moveq r1, #0x0
+ streq r1, [r0, #0x4]
+ streq r1, [r2, #0x78]
+_020CBA2C:
+ mov r0, r2
+ bx lr
+
+ arm_func_start OSi_InsertLinkToQueue
+OSi_InsertLinkToQueue:
+ ldr r12, [r0, #0x0]
+ b _020CBA48
+_020CBA3C:
+ cmp r12, r1
+ bxeq lr
+ ldr r12, [r12, #0x80]
+_020CBA48:
+ cmp r12, #0x0
+ beq _020CBA60
+ ldr r3, [r12, #0x70]
+ ldr r2, [r1, #0x70]
+ cmp r3, r2
+ bls _020CBA3C
+_020CBA60:
+ cmp r12, #0x0
+ bne _020CBA8C
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ streq r1, [r0, #0x0]
+ strne r1, [r2, #0x80]
+ str r2, [r1, #0x7c]
+ mov r2, #0x0
+ str r2, [r1, #0x80]
+ str r1, [r0, #0x4]
+ bx lr
+_020CBA8C:
+ ldr r2, [r12, #0x7c]
+ cmp r2, #0x0
+ streq r1, [r0, #0x0]
+ strne r1, [r2, #0x80]
+ str r2, [r1, #0x7c]
+ str r12, [r1, #0x80]
+ str r1, [r12, #0x7c]
+ bx lr
+
+ arm_func_start OSi_GetUnusedThreadId
+OSi_GetUnusedThreadId: ; 0x020CBAAC
+ ldr r1, _020CBAC0 ; =0x021D3488
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x1
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CBAC0: .word 0x021D3488
+
+ arm_func_start OS_InitContext
+OS_InitContext: ; 0x020CBAC4
+ add r1, r1, #0x4
+ str r1, [r0, #0x40]
+ str r2, [r0, #0x44]
+ sub r2, r2, #0x40
+ tst r2, #0x4
+ subne r2, r2, #0x4
+ str r2, [r0, #0x38]
+ ands r1, r1, #0x1
+ movne r1, #0x3f
+ moveq r1, #0x1f
+ str r1, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ str r1, [r0, #0x20]
+ str r1, [r0, #0x24]
+ str r1, [r0, #0x28]
+ str r1, [r0, #0x2c]
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x34]
+ str r1, [r0, #0x3c]
+ bx lr
+
+ arm_func_start OS_SaveContext
+OS_SaveContext:
+ stmdb sp!, {r0,lr}
+ add r0, r0, #0x48
+ ldr r1, _020CBB78 ; =CP_SaveContext
+ blx r1
+ ldmia sp!, {r0,lr}
+ add r1, r0, #0x0
+ mrs r2, cpsr
+ str r2, [r1], #0x4
+ mov r0, #0xd3
+ msr cpsr_c, r0
+ str sp, [r1, #0x40]
+ msr cpsr_c, r2
+ mov r0, #0x1
+ stmia r1, {r0-lr}
+ add r0, pc, #0x8 ; =_020CBB78
+ str r0, [r1, #0x3c]
+ mov r0, #0x0
+ bx lr
+ .balign 4
+_020CBB78: .word CP_SaveContext
+
+ arm_func_start OS_LoadContext
+OS_LoadContext: ; 0x020CBB7C
+ stmdb sp!, {r0,lr}
+ add r0, r0, #0x48
+ ldr r1, _020CBBBC ; =CP_RestoreContext
+ blx r1
+ ldmia sp!, {r0,lr}
+ mrs r1, cpsr
+ bic r1, r1, #0x1f
+ orr r1, r1, #0xd3
+ msr cpsr_c, r1
+ ldr r1, [r0], #0x4
+ msr spsr_fsxc, r1
+ ldr sp, [r0, #0x40]
+ ldr lr, [r0, #0x3c]
+ ldmia r0, {r0-lr}^
+ mov r0, r0
+ subs pc, lr, #0x4
+ .balign 4
+_020CBBBC: .word CP_RestoreContext
+
+ arm_func_start OS_GetConsoleType
+OS_GetConsoleType: ; 0x020CBBC0
+ ldr r0, _020CBBD0 ; =0x82000001
+ ldr r1, _020CBBD4 ; =0x02106828
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CBBD0: .word 0x82000001
+_020CBBD4: .word 0x02106828
+
+ arm_func_start OS_IsRunOnEmulator
+OS_IsRunOnEmulator:
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start OS_ReadMessage
+OS_ReadMessage: ; 0x020CBBE0
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ cmp r1, #0x0
+ bne _020CBC3C
+ and r8, r7, #0x1
+ add r7, r6, #0x8
+_020CBC0C:
+ cmp r8, #0x0
+ bne _020CBC28
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CBC1C:
+ .byte 0x00, 0x00, 0xA0, 0xE3
+ .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CBC28:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0x0
+ beq _020CBC0C
+_020CBC3C:
+ cmp r5, #0x0
+ ldrne r1, [r6, #0x10]
+ ldrne r0, [r6, #0x18]
+ ldrne r0, [r1, r0, lsl #0x2]
+ strne r0, [r5, #0x0]
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start OS_JamMessage
+OS_JamMessage: ; 0x020CBC64
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x14]
+ ldr r2, [r6, #0x1c]
+ mov r4, r0
+ cmp r1, r2
+ bgt _020CBCCC
+ and r7, r7, #0x1
+_020CBC94:
+ cmp r7, #0x0
+ bne _020CBCB4
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CBCB4:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r1, [r6, #0x14]
+ ldr r0, [r6, #0x1c]
+ cmp r1, r0
+ ble _020CBC94
+_020CBCCC:
+ ldr r0, [r6, #0x18]
+ add r0, r0, r1
+ sub r0, r0, #0x1
+ bl FUN_020EBC80
+ str r1, [r6, #0x18]
+ ldr r2, [r6, #0x10]
+ ldr r1, [r6, #0x18]
+ add r0, r6, #0x8
+ str r5, [r2, r1, lsl #0x2]
+ ldr r1, [r6, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_ReceiveMessage
+OS_ReceiveMessage: ; 0x020CBD18
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ cmp r1, #0x0
+ bne _020CBD74
+ and r8, r7, #0x1
+ add r7, r6, #0x8
+_020CBD44:
+ cmp r8, #0x0
+ bne _020CBD60
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CBD54:
+ .byte 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CBD60:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0x0
+ beq _020CBD44
+_020CBD74:
+ cmp r5, #0x0
+ ldrne r1, [r6, #0x10]
+ ldrne r0, [r6, #0x18]
+ ldrne r0, [r1, r0, lsl #0x2]
+ strne r0, [r5, #0x0]
+ ldr r0, [r6, #0x18]
+ ldr r1, [r6, #0x14]
+ add r0, r0, #0x1
+ bl FUN_020EBC80
+ str r1, [r6, #0x18]
+ ldr r1, [r6, #0x1c]
+ mov r0, r6
+ sub r1, r1, #0x1
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start OS_SendMessage
+OS_SendMessage: ; 0x020CBDC4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r2, [r6, #0x1c]
+ ldr r1, [r6, #0x14]
+ mov r4, r0
+ cmp r1, r2
+ bgt _020CBE2C
+ and r7, r7, #0x1
+_020CBDF4:
+ cmp r7, #0x0
+ bne _020CBE14
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CBE14:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r2, [r6, #0x1c]
+ ldr r1, [r6, #0x14]
+ cmp r1, r2
+ ble _020CBDF4
+_020CBE2C:
+ ldr r0, [r6, #0x18]
+ add r0, r0, r2
+ bl FUN_020EBC80
+ ldr r2, [r6, #0x10]
+ add r0, r6, #0x8
+ str r5, [r2, r1, lsl #0x2]
+ ldr r1, [r6, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OS_InitMessageQueue
+OS_InitMessageQueue: ; 0x020CBE6C
+ mov r12, #0x0
+ str r12, [r0, #0x4]
+ ldr r3, [r0, #0x4]
+ str r3, [r0, #0x0]
+ str r12, [r0, #0xc]
+ ldr r3, [r0, #0xc]
+ str r3, [r0, #0x8]
+ str r1, [r0, #0x10]
+ str r2, [r0, #0x14]
+ str r12, [r0, #0x18]
+ str r12, [r0, #0x1c]
+ bx lr
+
+ arm_func_start OSi_DequeueItem
+OSi_DequeueItem: ; 0x020CBE9C
+ ldr r2, [r1, #0x10]
+ ldr r1, [r1, #0x14]
+ cmp r2, #0x0
+ streq r1, [r0, #0x8c]
+ strne r1, [r2, #0x14]
+ cmp r1, #0x0
+ streq r2, [r0, #0x88]
+ strne r2, [r1, #0x10]
+ bx lr
+
+ arm_func_start OSi_EnqueueTail
+OSi_EnqueueTail: ; 0x020CBEC0
+ ldr r2, [r0, #0x8c]
+ cmp r2, #0x0
+ streq r1, [r0, #0x88]
+ strne r1, [r2, #0x10]
+ str r2, [r1, #0x14]
+ mov r2, #0x0
+ str r2, [r1, #0x10]
+ str r1, [r0, #0x8c]
+ bx lr
+
+ arm_func_start OS_TryLockMutex
+OS_TryLockMutex: ; 0x020CBEE4
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r2, [r5, #0x8]
+ ldr r1, _020CBF54 ; =0x021D3498
+ mov r4, r0
+ cmp r2, #0x0
+ ldr r0, [r1, #0x4]
+ bne _020CBF28
+ str r0, [r5, #0x8]
+ ldr r2, [r5, #0xc]
+ mov r1, r5
+ add r2, r2, #0x1
+ str r2, [r5, #0xc]
+ bl OSi_EnqueueTail
+ mov r6, #0x1
+ b _020CBF40
+_020CBF28:
+ cmp r2, r0
+ ldreq r0, [r5, #0xc]
+ moveq r6, #0x1
+ addeq r0, r0, #0x1
+ streq r0, [r5, #0xc]
+ movne r6, #0x0
+_020CBF40:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r6
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CBF54: .word 0x021D3498
+
+ arm_func_start OSi_UnlockAllMutex
+OSi_UnlockAllMutex: ; 0x020CBF58
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldr r0, [r6, #0x88]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ add r5, r6, #0x88
+ mov r4, #0x0
+_020CBF78:
+ mov r0, r5
+ bl OSi_RemoveMutexLinkFromQueue
+ str r4, [r0, #0xc]
+ str r4, [r0, #0x8]
+ bl OS_WakeupThread
+ ldr r0, [r6, #0x88]
+ cmp r0, #0x0
+ bne _020CBF78
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start OS_UnlockMutex
+OS_UnlockMutex: ; 0x020CBFA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CC00C ; =0x021D3498
+ mov r4, r0
+ ldr r0, [r1, #0x4]
+ ldr r1, [r5, #0x8]
+ cmp r1, r0
+ bne _020CBFF8
+ ldr r1, [r5, #0xc]
+ sub r1, r1, #0x1
+ str r1, [r5, #0xc]
+ ldr r1, [r5, #0xc]
+ cmp r1, #0x0
+ bne _020CBFF8
+ mov r1, r5
+ bl OSi_DequeueItem
+ mov r1, #0x0
+ mov r0, r5
+ str r1, [r5, #0x8]
+ bl OS_WakeupThread
+_020CBFF8:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CC00C: .word 0x021D3498
+
+ arm_func_start OS_LockMutex
+OS_LockMutex: ; 0x020CC010
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CC098 ; =0x021D3498
+ mov r4, r0
+ ldr r7, [r1, #0x4]
+ mov r6, #0x0
+_020CC030:
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ bne _020CC05C
+ str r7, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ mov r0, r7
+ add r2, r1, #0x1
+ mov r1, r5
+ str r2, [r5, #0xc]
+ bl OSi_EnqueueTail
+ b _020CC084
+_020CC05C:
+ cmp r0, r7
+ ldreq r0, [r5, #0xc]
+ addeq r0, r0, #0x1
+ streq r0, [r5, #0xc]
+ beq _020CC084
+ mov r0, r5
+ str r5, [r7, #0x84]
+ bl OS_SleepThread
+ str r6, [r7, #0x84]
+ b _020CC030
+_020CC084:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CC098: .word 0x021D3498
+
+ arm_func_start OS_InitMutex
+OS_InitMutex: ; 0x020CC09C
+ mov r2, #0x0
+ str r2, [r0, #0x4]
+ ldr r1, [r0, #0x4]
+ str r1, [r0, #0x0]
+ str r2, [r0, #0x8]
+ str r2, [r0, #0xc]
+ bx lr
+
+ arm_func_start DC_InvalidateAll
+DC_InvalidateAll: ; 0x020CC0B8
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c6, 0x0
+ bx lr
+
+ arm_func_start DC_StoreAll
+DC_StoreAll: ; 0x020CC0C4
+ mov r1, #0x0
+_020CC0C8:
+ mov r0, #0x0
+_020CC0CC:
+ orr r2, r1, r0
+ mcr p15, 0x0, r2, c7, c10, 0x2
+ add r0, r0, #0x20
+ cmp r0, #0x400
+ blt _020CC0CC
+ add r1, r1, #0x40000000
+ cmp r1, #0x0
+ bne _020CC0C8
+ bx lr
+
+ arm_func_start DC_FlushAll
+DC_FlushAll: ; 0x020CC0F0
+ mov r12, #0x0
+ mov r1, #0x0
+_020CC0F8:
+ mov r0, #0x0
+_020CC0FC:
+ orr r2, r1, r0
+ mcr p15, 0x0, r12, c7, c10, 0x4
+ mcr p15, 0x0, r2, c7, c14, 0x2
+ add r0, r0, #0x20
+ cmp r0, #0x400
+ blt _020CC0FC
+ add r1, r1, #0x40000000
+ cmp r1, #0x0
+ bne _020CC0F8
+ bx lr
+
+ arm_func_start DC_InvalidateRange
+DC_InvalidateRange: ; 0x020CC124
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC12C:
+ mcr p15, 0x0, r0, c7, c6, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC12C
+ bx lr
+
+ arm_func_start DC_StoreRange
+DC_StoreRange: ; 0x020CC140
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC148:
+ mcr p15, 0x0, r0, c7, c10, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC148
+ bx lr
+
+ arm_func_start DC_FlushRange
+DC_FlushRange: ; 0x020CC15C
+ mov r12, #0x0
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC168:
+ mcr p15, 0x0, r12, c7, c10, 0x4
+ mcr p15, 0x0, r0, c7, c14, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC168
+ bx lr
+
+ arm_func_start DC_WaitWriteBufferEmpty
+DC_WaitWriteBufferEmpty: ; 0x020CC180
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c10, 0x4
+ bx lr
+
+ arm_func_start IC_InvalidateAll
+IC_InvalidateAll: ; 0x020CC18C
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c5, 0x0
+ bx lr
+
+ arm_func_start IC_InvalidateRange
+IC_InvalidateRange:
+ add r1, r1, r0
+ bic r0, r0, #0x1f
+_020CC1A0:
+ mcr p15, 0x0, r0, c7, c5, 0x1
+ add r0, r0, #0x20
+ cmp r0, r1
+ blt _020CC1A0
+ bx lr
+
+ arm_func_start OS_Init
+OS_Init: ; 0x020CC1B4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl OS_InitArena
+ bl PXI_Init
+ bl OS_InitLock
+ bl OS_InitArenaEx
+ bl OS_InitIrqTable
+ bl OS_SetIrqStackChecker
+ bl OS_InitException
+ bl MI_Init
+ bl OS_InitVAlarm
+ bl OSi_InitVramExclusive
+ bl OS_InitThread
+ bl OS_InitReset
+ bl FUN_020DBC80
+ bl FUN_020D7228
+ bl FUN_020D5764
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start OS_AllocFromArenaHi
+OS_AllocFromArenaHi: ; 0x020CC204
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ mov r6, r1
+ mov r5, r2
+ bl OS_GetArenaHi
+_020CC218:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03
.byte 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x01, 0x10, 0x45, 0xE2, 0x01, 0x20, 0xE0, 0xE1
.byte 0x02, 0x00, 0x00, 0xE0, 0x06, 0x10, 0x40, 0xE0, 0x04, 0x00, 0xA0, 0xE1, 0x02, 0x50, 0x01, 0xE0
.byte 0xBC, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x55, 0xE1, 0x00, 0x00, 0xA0, 0x33, 0x70, 0x40, 0xBD, 0x38
.byte 0x1E, 0xFF, 0x2F, 0x31, 0x04, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0x29, 0x00, 0x00, 0xEB
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1, 0x02, 0x50, 0xA0, 0xE1
- .byte 0xAC, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03
+ .byte 0x05, 0x00, 0xA0, 0xE1, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start OS_AllocFromArenaLo
+OS_AllocFromArenaLo: ; 0x020CC26C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl OS_GetArenaLo
+_020CC284:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03
.byte 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x05, 0x00, 0x80, 0xE0, 0x01, 0x10, 0x45, 0xE2
.byte 0x01, 0x20, 0xE0, 0xE1, 0x01, 0x00, 0x40, 0xE2, 0x00, 0x40, 0x02, 0xE0, 0x06, 0x00, 0x84, 0xE0
.byte 0x05, 0x00, 0x80, 0xE0, 0x01, 0x10, 0x40, 0xE2, 0x07, 0x00, 0xA0, 0xE1, 0x01, 0x50, 0x02, 0xE0
.byte 0xA1, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x55, 0xE1, 0x04, 0xD0, 0x8D, 0x82, 0x00, 0x00, 0xA0, 0x83
.byte 0xF0, 0x40, 0xBD, 0x88, 0x1E, 0xFF, 0x2F, 0x81, 0x07, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1
.byte 0x03, 0x00, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x01, 0xA0, 0xE1, 0x27, 0x06, 0x80, 0xE2, 0xFF, 0x0A, 0x80, 0xE2
- .byte 0xA0, 0x1D, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x01, 0xA0, 0xE1, 0x27, 0x06, 0x80, 0xE2
- .byte 0xFF, 0x0A, 0x80, 0xE2, 0xC4, 0x1D, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x06, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x2A, 0x00, 0x00, 0xEA
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start OS_SetArenaLo
+OS_SetArenaLo: ; 0x020CC2F4
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ str r1, [r0, #0xda0]
+ bx lr
+
+ arm_func_start OS_SetArenaHi
+OS_SetArenaHi:
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ str r1, [r0, #0xdc4]
+ bx lr
+
+ arm_func_start OS_GetInitArenaLo
+OS_GetInitArenaLo: ; 0x020CC31C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x6
+ addls pc, pc, r0, lsl #0x2
+ b _020CC3DC
+_020CC330:
.byte 0x05, 0x00, 0x00, 0xEA, 0x28, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0x16, 0x00, 0x00, 0xEA
.byte 0x19, 0x00, 0x00, 0xEA, 0x1C, 0x00, 0x00, 0xEA, 0x1F, 0x00, 0x00, 0xEA, 0x04, 0xD0, 0x8D, 0xE2
.byte 0x94, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x8C, 0x00, 0x9F, 0xE5
@@ -648,11 +3019,26 @@ _020C9C1C:
.byte 0x50, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
.byte 0x44, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
.byte 0x38, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x2C, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xA0, 0xFF, 0x25, 0x02
+ .byte 0x2C, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CC3DC:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020CC3EC:
+ .byte 0xA0, 0xFF, 0x25, 0x02
.byte 0xF4, 0x36, 0x1D, 0x02, 0x00, 0x00, 0x3E, 0x02, 0x20, 0x87, 0xFF, 0x01, 0x80, 0x00, 0x7E, 0x02
- .byte 0x00, 0xF0, 0x7F, 0x02, 0x00, 0x80, 0x7F, 0x03, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x06, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x3A, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA
+ .byte 0x00, 0xF0, 0x7F, 0x02, 0x00, 0x80, 0x7F, 0x03
+
+ arm_func_start OS_GetInitArenaHi
+OS_GetInitArenaHi: ; 0x020CC408
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x6
+ addls pc, pc, r0, lsl #0x2
+ b _020CC508
+_020CC41C:
+ .byte 0x05, 0x00, 0x00, 0xEA
.byte 0x38, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0x16, 0x00, 0x00, 0xEA, 0x19, 0x00, 0x00, 0xEA
.byte 0x2C, 0x00, 0x00, 0xEA, 0x2F, 0x00, 0x00, 0xEA, 0x04, 0xD0, 0x8D, 0xE2, 0xD4, 0x00, 0x9F, 0xE5
.byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xCC, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
@@ -667,24 +3053,89 @@ _020C9C1C:
.byte 0x54, 0x00, 0x9F, 0xB5, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0x40, 0xB0, 0x01, 0x00, 0x42, 0xA0
.byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x3C, 0x00, 0x9F, 0xE5
.byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x3E, 0x02, 0xF4, 0x36, 0x1D, 0x02
+ .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CC508:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020CC518:
+ .byte 0x00, 0x00, 0x3E, 0x02, 0xF4, 0x36, 0x1D, 0x02
.byte 0x00, 0x00, 0x7E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x7E, 0x02
- .byte 0x80, 0xF6, 0x7F, 0x02, 0x00, 0x80, 0x7F, 0x03, 0x00, 0x01, 0xA0, 0xE1, 0x27, 0x06, 0x80, 0xE2
- .byte 0xFF, 0x0A, 0x80, 0xE2, 0xA0, 0x0D, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x01, 0xA0, 0xE1
- .byte 0x27, 0x06, 0x80, 0xE2, 0xFF, 0x0A, 0x80, 0xE2, 0xC4, 0x0D, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x02, 0x00, 0xA0, 0xE3, 0xA5, 0xFF, 0xFF, 0xEB
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x02, 0x00, 0xA0, 0xE3, 0x62, 0xFF, 0xFF, 0xEB, 0x02, 0x00, 0xA0, 0xE3
- .byte 0x65, 0xFF, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE1, 0x02, 0x00, 0xA0, 0xE3, 0x58, 0xFF, 0xFF, 0xEB
- .byte 0x3C, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x0A
- .byte 0x86, 0xFD, 0xFF, 0xEB, 0x03, 0x00, 0x00, 0xE2, 0x01, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x18, 0x00, 0x9F, 0xE5, 0x0A, 0x01, 0x00, 0xEB
- .byte 0x14, 0x00, 0x9F, 0xE5, 0x0A, 0x01, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF4, 0x36, 0x1D, 0x02, 0x2B, 0x00, 0x00, 0x02, 0x21, 0x00, 0x3E, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x04, 0x11, 0x9F, 0xE5, 0x00, 0x00, 0x91, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0x81, 0xE5, 0x7D, 0xFF, 0xFF, 0xEB
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x3A, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3
+ .byte 0x80, 0xF6, 0x7F, 0x02, 0x00, 0x80, 0x7F, 0x03
+
+ arm_func_start OS_GetArenaLo
+OS_GetArenaLo:
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ ldr r0, [r0, #0xda0]
+ bx lr
+
+ arm_func_start OS_GetArenaHi
+OS_GetArenaHi:
+ mov r0, r0, lsl #0x2
+ add r0, r0, #0x2700000
+ add r0, r0, #0xff000
+ ldr r0, [r0, #0xdc4]
+ bx lr
+
+ arm_func_start OS_InitArenaEx
+OS_InitArenaEx: ; 0x020CC560
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x2
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x2
+ bl OS_SetArenaHi
+ mov r0, #0x2
+ bl OS_GetInitArenaLo
+ mov r1, r0
+ mov r0, #0x2
+ bl OS_SetArenaLo
+ ldr r0, _020CC5D4 ; =0x021D36F4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020CC5B8
+ bl OS_GetConsoleType
+ and r0, r0, #0x3
+ cmp r0, #0x1
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+_020CC5B8:
+ ldr r0, _020CC5D8 ; =0x0200002B
+ bl OS_SetProtectionRegion1
+ ldr r0, _020CC5DC ; =0x023E0021
+ bl OS_SetProtectionRegion2
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CC5D4: .word 0x021D36F4
+_020CC5D8: .word 0x0200002B
+_020CC5DC: .word 0x023E0021
+
+ arm_func_start OS_InitArena
+OS_InitArena: ; 0x020CC5E0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CC6F4 ; =0x021D36F0
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r2, #0x1
+ mov r0, #0x0
+ str r2, [r1, #0x0]
+ bl OS_GetInitArenaHi
+ mov r1, r0
+ mov r0, #0x0
+ bl OS_SetArenaHi
+_020CC61C:
+ .byte 0x00, 0x00, 0xA0, 0xE3
.byte 0x3D, 0xFF, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x30, 0xFF, 0xFF, 0xEB
.byte 0x02, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE3, 0x2D, 0xFF, 0xFF, 0xEB, 0x02, 0x00, 0xA0, 0xE3
.byte 0x00, 0x10, 0xA0, 0xE3, 0x2F, 0xFF, 0xFF, 0xEB, 0x03, 0x00, 0xA0, 0xE3, 0x6D, 0xFF, 0xFF, 0xEB
@@ -698,338 +3149,1515 @@ _020C9C1C:
.byte 0x06, 0x00, 0xA0, 0xE3, 0x4F, 0xFF, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE1, 0x06, 0x00, 0xA0, 0xE3
.byte 0x0C, 0xFF, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE3, 0x0F, 0xFF, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE1
.byte 0x06, 0x00, 0xA0, 0xE3, 0x02, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x36, 0x1D, 0x02, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0xFF, 0x02, 0x00, 0xEB
- .byte 0x50, 0x10, 0x9F, 0xE5, 0x00, 0x60, 0xA0, 0xE1, 0x07, 0x01, 0x91, 0xE7, 0x00, 0x00, 0x55, 0xE3
- .byte 0x00, 0x50, 0x90, 0xB5, 0x10, 0x10, 0x90, 0xE5, 0x0C, 0x00, 0xA0, 0xE3, 0x95, 0x10, 0x27, 0xE0
- .byte 0x20, 0x40, 0x44, 0xE2, 0x08, 0x00, 0x97, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x87, 0x00, 0x00, 0xEB
- .byte 0x08, 0x00, 0x87, 0xE5, 0x04, 0x00, 0x97, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x51, 0x00, 0x00, 0xEB
- .byte 0x04, 0x00, 0x87, 0xE5, 0x06, 0x00, 0xA0, 0xE1, 0xF1, 0x02, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF8, 0x36, 0x1D, 0x02, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1
- .byte 0xE2, 0x02, 0x00, 0xEB, 0x08, 0x11, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x06, 0x11, 0x91, 0xE7
- .byte 0x00, 0x00, 0x51, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0xE1, 0x02, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x55, 0xE3
- .byte 0x00, 0x50, 0x91, 0xB5, 0x10, 0x10, 0x91, 0xE5, 0x0C, 0x00, 0xA0, 0xE3, 0x95, 0x10, 0x26, 0xE0
- .byte 0x04, 0x00, 0x96, 0xE5, 0x20, 0x10, 0x87, 0xE2, 0x1F, 0x10, 0x81, 0xE2, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x1F, 0x70, 0xC1, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x08, 0x10, 0x95, 0xE5
- .byte 0x01, 0x00, 0x57, 0xE1, 0x02, 0x00, 0x00, 0xDA, 0x04, 0x50, 0x95, 0xE5, 0x00, 0x00, 0x55, 0xE3
- .byte 0xF9, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x55, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1
- .byte 0xC7, 0x02, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x10, 0x95, 0xE5, 0x07, 0x10, 0x41, 0xE0, 0x40, 0x00, 0x51, 0xE3
- .byte 0x03, 0x00, 0x00, 0x2A, 0x05, 0x10, 0xA0, 0xE1, 0x4C, 0x00, 0x00, 0xEB, 0x04, 0x00, 0x86, 0xE5
- .byte 0x0D, 0x00, 0x00, 0xEA, 0x08, 0x70, 0x85, 0xE5, 0x07, 0x20, 0x85, 0xE0, 0x08, 0x10, 0x82, 0xE5
- .byte 0x00, 0x00, 0x95, 0xE5, 0x07, 0x00, 0x85, 0xE7, 0x04, 0x00, 0x95, 0xE5, 0x04, 0x00, 0x82, 0xE5
- .byte 0x04, 0x00, 0x92, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x20, 0x80, 0x15, 0x00, 0x00, 0x92, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0x20, 0x80, 0x15, 0x04, 0x20, 0x86, 0x05, 0x08, 0x00, 0x96, 0xE5
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x43, 0x00, 0x00, 0xEB, 0x08, 0x00, 0x86, 0xE5, 0x04, 0x00, 0xA0, 0xE1
- .byte 0xA7, 0x02, 0x00, 0xEB, 0x20, 0x00, 0x85, 0xE2, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF8, 0x36, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0xC0, 0xA0, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x00, 0xE0, 0xA0, 0xE3, 0x05, 0x00, 0x00, 0x0A
- .byte 0x0C, 0x00, 0x51, 0xE1, 0x03, 0x00, 0x00, 0x9A, 0x0C, 0xE0, 0xA0, 0xE1, 0x04, 0xC0, 0x9C, 0xE5
- .byte 0x00, 0x00, 0x5C, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A, 0x04, 0xC0, 0x81, 0xE5, 0x00, 0xE0, 0x81, 0xE5
- .byte 0x00, 0x00, 0x5C, 0xE3, 0x0B, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x8C, 0xE5, 0x08, 0x30, 0x91, 0xE5
- .byte 0x03, 0x20, 0x81, 0xE0, 0x0C, 0x00, 0x52, 0xE1, 0x06, 0x00, 0x00, 0x1A, 0x08, 0x20, 0x9C, 0xE5
- .byte 0x02, 0x20, 0x83, 0xE0, 0x08, 0x20, 0x81, 0xE5, 0x04, 0xC0, 0x9C, 0xE5, 0x04, 0xC0, 0x81, 0xE5
- .byte 0x00, 0x00, 0x5C, 0xE3, 0x00, 0x10, 0x8C, 0x15, 0x00, 0x00, 0x5E, 0xE3, 0x0F, 0x00, 0x00, 0x0A
- .byte 0x04, 0x10, 0x8E, 0xE5, 0x08, 0x20, 0x9E, 0xE5, 0x02, 0x30, 0x8E, 0xE0, 0x01, 0x00, 0x53, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x08, 0x10, 0x91, 0xE5
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x10, 0x82, 0xE0, 0x08, 0x10, 0x8E, 0xE5, 0x04, 0xC0, 0x8E, 0xE5
- .byte 0x00, 0x00, 0x5C, 0xE3, 0x00, 0xE0, 0x8C, 0x15, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x01, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0x30, 0x91, 0xE5, 0x00, 0x00, 0x53, 0xE3, 0x00, 0x20, 0x91, 0x15, 0x00, 0x20, 0x83, 0x15
- .byte 0x00, 0x20, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x91, 0x05, 0x04, 0x10, 0x91, 0x15
- .byte 0x04, 0x10, 0x82, 0x15, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x00, 0x81, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x00, 0x20, 0x81, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x10, 0x80, 0x15, 0x01, 0x00, 0xA0, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x11, 0x0F, 0x19, 0xEE, 0x04, 0x10, 0x9F, 0xE5, 0x01, 0x00, 0x00, 0xE0
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0xF0, 0xFF, 0xFF, 0x10, 0x0F, 0x11, 0xEE, 0x01, 0x00, 0x80, 0xE3
- .byte 0x10, 0x0F, 0x01, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x0F, 0x11, 0xEE, 0x01, 0x00, 0xC0, 0xE3
- .byte 0x10, 0x0F, 0x01, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1, 0x50, 0x2F, 0x15, 0xEE, 0x00, 0x20, 0xC2, 0xE1
- .byte 0x01, 0x20, 0x82, 0xE1, 0x50, 0x2F, 0x05, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1, 0x11, 0x0F, 0x06, 0xEE
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x12, 0x0F, 0x06, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1, 0x64, 0xC0, 0x9F, 0xE5
- .byte 0x00, 0xC0, 0x9C, 0xE5, 0x00, 0x00, 0x5C, 0xE3, 0x0F, 0xE0, 0xA0, 0x11, 0x1C, 0xFF, 0x2F, 0x11
- .byte 0x54, 0xC0, 0x9F, 0xE5, 0x0F, 0x60, 0x2C, 0xE9, 0x01, 0x00, 0x0D, 0xE2, 0x0C, 0xD0, 0xA0, 0xE1
- .byte 0x00, 0x10, 0x0F, 0xE1, 0x1F, 0x10, 0x01, 0xE2, 0x17, 0x00, 0x31, 0xE3, 0x01, 0x00, 0x00, 0x1A
- .byte 0x0E, 0x00, 0x00, 0xEB, 0x02, 0x00, 0x00, 0xEA, 0x1B, 0x00, 0x31, 0xE3, 0x00, 0x00, 0x00, 0x1A
- .byte 0x0A, 0x00, 0x00, 0xEB, 0x1C, 0xC0, 0x9F, 0xE5, 0x00, 0xC0, 0x9C, 0xE5, 0x00, 0x00, 0x5C, 0xE3
- .byte 0xFE, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xA0, 0xE1, 0xFD, 0xFF, 0xFF, 0xEA, 0x0F, 0x50, 0xBD, 0xE8
- .byte 0x0C, 0xD0, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x37, 0x1D, 0x02, 0x00, 0x00, 0x00, 0x02
- .byte 0x01, 0x40, 0x2D, 0xE9, 0x02, 0x00, 0x00, 0xEB, 0x25, 0x00, 0x00, 0xEB, 0x01, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x84, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x0F, 0xE1, 0x74, 0x20, 0x81, 0xE5
- .byte 0x6C, 0x00, 0x81, 0xE5, 0x00, 0x00, 0x9C, 0xE5, 0x04, 0x00, 0x81, 0xE5, 0x04, 0x00, 0x9C, 0xE5
- .byte 0x08, 0x00, 0x81, 0xE5, 0x08, 0x00, 0x9C, 0xE5, 0x0C, 0x00, 0x81, 0xE5, 0x0C, 0x00, 0x9C, 0xE5
- .byte 0x10, 0x00, 0x81, 0xE5, 0x10, 0x20, 0x9C, 0xE5, 0x01, 0x20, 0xC2, 0xE3, 0x14, 0x00, 0x81, 0xE2
- .byte 0xF0, 0x0F, 0x80, 0xE8, 0x70, 0xC0, 0x81, 0xE5, 0x00, 0x00, 0x92, 0xE5, 0x64, 0x00, 0x81, 0xE5
- .byte 0x04, 0x30, 0x92, 0xE5, 0x00, 0x30, 0x81, 0xE5, 0x08, 0x00, 0x92, 0xE5, 0x34, 0x00, 0x81, 0xE5
- .byte 0x0C, 0x00, 0x92, 0xE5, 0x40, 0x00, 0x81, 0xE5, 0x00, 0x00, 0x0F, 0xE1, 0x80, 0x30, 0x83, 0xE3
- .byte 0x20, 0x30, 0xC3, 0xE3, 0x03, 0xF0, 0x2F, 0xE1, 0x38, 0xD0, 0x81, 0xE5, 0x3C, 0xE0, 0x81, 0xE5
- .byte 0x00, 0x20, 0x4F, 0xE1, 0x7C, 0x20, 0x81, 0xE5, 0x00, 0xF0, 0x2F, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x28, 0x37, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x4C, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x0D, 0x00, 0xA0, 0xE1, 0x34, 0x10, 0x9F, 0xE5, 0x01, 0xF0, 0x2F, 0xE1
- .byte 0x00, 0xD0, 0xA0, 0xE1, 0x9B, 0xFF, 0xFF, 0xEB, 0x28, 0x10, 0x9F, 0xE5, 0x1C, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x10, 0x91, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0x1C, 0x00, 0x9F, 0xE5, 0x32, 0xFF, 0x2F, 0xE1
- .byte 0x98, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x1C, 0x37, 0x1D, 0x02, 0x9F, 0x00, 0x00, 0x00, 0x20, 0x37, 0x1D, 0x02, 0x28, 0x37, 0x1D, 0x02
- .byte 0x54, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x90, 0xE5, 0x26, 0x06, 0x51, 0xE3, 0x03, 0x00, 0x00, 0x3A
- .byte 0x0A, 0x05, 0x51, 0xE3, 0x44, 0x00, 0x9F, 0x35, 0x00, 0x10, 0x80, 0x35, 0x02, 0x00, 0x00, 0x3A
- .byte 0x38, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x2C, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x24, 0x20, 0x9F, 0x05, 0x18, 0x10, 0x9F, 0x05
- .byte 0x20, 0x00, 0x9F, 0x05, 0x00, 0x20, 0x81, 0x05, 0xDC, 0x2F, 0x80, 0x05, 0x18, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x9C, 0xFD, 0x7F, 0x02
- .byte 0x24, 0x37, 0x1D, 0x02, 0xFC, 0xC9, 0x0C, 0x02, 0x00, 0x30, 0x7E, 0x02, 0x1C, 0x37, 0x1D, 0x02
- .byte 0x10, 0x10, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0xB0, 0x30, 0xD1, 0xE1, 0x12, 0x00, 0x83, 0xE1
- .byte 0xB0, 0x00, 0xC1, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0xA8, 0x37, 0x1D, 0x02, 0x04, 0x00, 0x9F, 0xE5
- .byte 0xB0, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x01, 0x00, 0x04, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x0C, 0xD0, 0x4D, 0xE2, 0xB9, 0x01, 0x00, 0xEB, 0x8C, 0x10, 0x9F, 0xE5, 0x8C, 0x30, 0x9F, 0xE5
- .byte 0xB0, 0xC0, 0xD1, 0xE1, 0x88, 0x20, 0x9F, 0xE5, 0x00, 0x10, 0xE0, 0xE3, 0xB0, 0xC0, 0xCD, 0xE1
- .byte 0x00, 0xC0, 0x93, 0xE5, 0x04, 0x30, 0x93, 0xE5, 0x01, 0x10, 0x0C, 0xE0, 0x02, 0x20, 0x03, 0xE0
- .byte 0x04, 0x10, 0x8D, 0xE5, 0x6C, 0x10, 0x9F, 0xE5, 0x08, 0x20, 0x8D, 0xE5, 0x00, 0x10, 0x91, 0xE5
- .byte 0x08, 0x10, 0x11, 0xE2, 0x09, 0x00, 0x00, 0x0A, 0xB0, 0x10, 0xDD, 0xE1, 0x02, 0x19, 0x11, 0xE2
- .byte 0x06, 0x00, 0x00, 0x1A, 0x04, 0x30, 0x9D, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x08, 0x20, 0x9D, 0xE5
- .byte 0x01, 0x30, 0x93, 0xE0, 0x00, 0x10, 0xA2, 0xE2, 0x04, 0x30, 0x8D, 0xE5, 0x08, 0x10, 0x8D, 0xE5
- .byte 0xA3, 0x01, 0x00, 0xEB, 0x04, 0x20, 0x9D, 0xE5, 0x08, 0x10, 0x9D, 0xE5, 0xB0, 0x00, 0xDD, 0xE1
- .byte 0x01, 0x18, 0xA0, 0xE1, 0x22, 0x18, 0x81, 0xE1, 0xC0, 0x1F, 0x81, 0xE1, 0x02, 0x08, 0x80, 0xE1
- .byte 0x0C, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x01, 0x00, 0x04
- .byte 0xB4, 0x37, 0x1D, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x14, 0x02, 0x00, 0x04, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x64, 0x20, 0x9F, 0xE5, 0x64, 0x10, 0x9F, 0xE5, 0x00, 0xC0, 0x92, 0xE5
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x04, 0x30, 0x92, 0xE5, 0x00, 0xC0, 0x9C, 0xE0, 0x00, 0x00, 0x91, 0xE5
- .byte 0x00, 0x30, 0xA3, 0xE2, 0x00, 0xC0, 0x82, 0xE5, 0x04, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x38, 0x20, 0x9F, 0xE5, 0x38, 0x00, 0x9F, 0xE5
- .byte 0xB0, 0x30, 0xC2, 0xE1, 0xB0, 0x30, 0xC0, 0xE1, 0xC1, 0x00, 0xA0, 0xE3, 0xB0, 0x00, 0xC2, 0xE1
- .byte 0x00, 0x30, 0x81, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x20, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE1
- .byte 0x64, 0xF4, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xB4, 0x37, 0x1D, 0x02, 0xB0, 0x37, 0x1D, 0x02, 0x02, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04
- .byte 0xCC, 0xCC, 0x0C, 0x02, 0x04, 0x00, 0x9F, 0xE5, 0xB0, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xAC, 0x37, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x74, 0x10, 0x9F, 0xE5
- .byte 0xB0, 0x00, 0xD1, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x00, 0xA0, 0xE3, 0xB0, 0x20, 0xC1, 0xE1
- .byte 0x96, 0xFF, 0xFF, 0xEB, 0x50, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0x80, 0xE5
- .byte 0x48, 0x30, 0x9F, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x44, 0x00, 0x9F, 0xE5, 0xB0, 0x20, 0xC3, 0xE1
- .byte 0x40, 0x10, 0x9F, 0xE5, 0xB0, 0x20, 0xC0, 0xE1, 0xC1, 0x20, 0xA0, 0xE3, 0x08, 0x00, 0xA0, 0xE3
- .byte 0xB0, 0x20, 0xC3, 0xE1, 0x88, 0xF4, 0xFF, 0xEB, 0x08, 0x00, 0xA0, 0xE3, 0x22, 0xF4, 0xFF, 0xEB
- .byte 0x24, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xAC, 0x37, 0x1D, 0x02, 0xB4, 0x37, 0x1D, 0x02
- .byte 0x02, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0xCC, 0xCC, 0x0C, 0x02, 0xB0, 0x37, 0x1D, 0x02
- .byte 0x01, 0x40, 0x2D, 0xE9, 0x01, 0x00, 0x00, 0xEB, 0x01, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0xFC, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x10, 0x00, 0xA0, 0xE3, 0xB0, 0x20, 0xC1, 0xE1, 0xF9, 0xF3, 0xFF, 0xEB, 0xEC, 0x00, 0x9F, 0xE5
- .byte 0x03, 0x0A, 0x80, 0xE2, 0xF8, 0x1F, 0x90, 0xE5, 0x10, 0x10, 0x81, 0xE3, 0xF8, 0x1F, 0x80, 0xE5
- .byte 0x75, 0xFF, 0xFF, 0xEB, 0xD8, 0x20, 0x9F, 0xE5, 0x00, 0x40, 0x92, 0xE5, 0x00, 0x00, 0x54, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x10, 0x30, 0x94, 0xE5
- .byte 0x0C, 0xC0, 0x94, 0xE5, 0x03, 0x00, 0x51, 0xE1, 0x0C, 0x00, 0x50, 0x01, 0x04, 0x00, 0x00, 0x2A
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xDD, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x18, 0x10, 0x94, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0xA0, 0x03
- .byte 0x04, 0x00, 0x82, 0x05, 0x00, 0x10, 0x82, 0xE5, 0x00, 0x00, 0xA0, 0x13, 0x14, 0x00, 0x81, 0x15
- .byte 0x1C, 0x20, 0x94, 0xE5, 0x20, 0x10, 0x94, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x51, 0xE1
- .byte 0x00, 0x50, 0x94, 0xE5, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x84, 0x05, 0x00, 0x00, 0x55, 0xE3
- .byte 0x01, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x94, 0xE5, 0x35, 0xFF, 0x2F, 0xE1, 0x1C, 0x20, 0x94, 0xE5
- .byte 0x20, 0x00, 0x94, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x01, 0x00, 0x50, 0xE1, 0x01, 0x00, 0x52, 0x01
- .byte 0x03, 0x00, 0x00, 0x0A, 0x04, 0x00, 0xA0, 0xE1, 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x50, 0x84, 0xE5
- .byte 0x50, 0x00, 0x00, 0xEB, 0x28, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0xB7, 0x00, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x06, 0x01, 0x00, 0x04
- .byte 0x00, 0x00, 0x7E, 0x02, 0xC0, 0x37, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x50, 0xA0, 0xE1, 0xF5, 0x00, 0x00, 0xEB, 0x00, 0x10, 0x95, 0xE5, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x51, 0xE3, 0x03, 0x00, 0x00, 0x1A, 0xF5, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x18, 0x00, 0x95, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x14, 0x20, 0x95, 0x05, 0x50, 0x10, 0x9F, 0x05, 0x04, 0x20, 0x81, 0x05, 0x14, 0x10, 0x95, 0x15
- .byte 0x14, 0x10, 0x80, 0x15, 0x14, 0x10, 0x95, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x18, 0x00, 0x81, 0x15
- .byte 0x04, 0x00, 0x00, 0x1A, 0x30, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x81, 0xE5
- .byte 0x00, 0x00, 0x00, 0x0A, 0x95, 0x00, 0x00, 0xEB, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x85, 0xE5
- .byte 0x1C, 0x10, 0x85, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0x20, 0x10, 0x85, 0xE5, 0xDC, 0x00, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xC0, 0x37, 0x1D, 0x02
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xB0, 0xE1, 0x01, 0x50, 0xA0, 0xE1
- .byte 0x02, 0x40, 0xA0, 0xE1, 0x03, 0x70, 0xA0, 0xE1, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x96, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x0A, 0x18, 0x02, 0x00, 0xEB, 0xC7, 0x00, 0x00, 0xEB
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x1C, 0x10, 0x86, 0xE5, 0x20, 0x10, 0x86, 0xE5, 0x00, 0x70, 0x86, 0xE5
- .byte 0x18, 0x10, 0x9D, 0xE5, 0x00, 0x70, 0xA0, 0xE1, 0x04, 0x10, 0x86, 0xE5, 0x02, 0xFF, 0xFF, 0xEB
- .byte 0x00, 0x30, 0x95, 0xE0, 0x01, 0x20, 0xA4, 0xE0, 0x06, 0x00, 0xA0, 0xE1, 0x03, 0x10, 0xA0, 0xE1
- .byte 0x04, 0x00, 0x00, 0xEB, 0x07, 0x00, 0xA0, 0xE1, 0xBD, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x80, 0xA0, 0xE1
- .byte 0x1C, 0x40, 0x98, 0xE5, 0x20, 0x30, 0x98, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x53, 0xE1
- .byte 0x01, 0x70, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1, 0x00, 0x00, 0x54, 0x01, 0x14, 0x00, 0x00, 0x0A
- .byte 0xED, 0xFE, 0xFF, 0xEB, 0x28, 0x60, 0x98, 0xE5, 0x24, 0x70, 0x98, 0xE5, 0x01, 0x00, 0x56, 0xE1
- .byte 0x00, 0x00, 0x57, 0x01, 0x0E, 0x00, 0x00, 0x2A, 0x1C, 0x50, 0x98, 0xE5, 0x20, 0x40, 0x98, 0xE5
- .byte 0x07, 0x00, 0x50, 0xE0, 0x05, 0x20, 0xA0, 0xE1, 0x04, 0x30, 0xA0, 0xE1, 0x06, 0x10, 0xC1, 0xE0
- .byte 0xD4, 0x7A, 0x00, 0xEB, 0x01, 0x20, 0xA0, 0xE3, 0x02, 0x20, 0x90, 0xE0, 0x00, 0x00, 0xA1, 0xE2
- .byte 0x95, 0x32, 0x81, 0xE0, 0x95, 0x10, 0x21, 0xE0, 0x94, 0x12, 0x21, 0xE0, 0x03, 0x70, 0x97, 0xE0
- .byte 0x01, 0x60, 0xA6, 0xE0, 0x0C, 0x70, 0x88, 0xE5, 0xB4, 0x00, 0x9F, 0xE5, 0x10, 0x60, 0x88, 0xE5
- .byte 0x00, 0x40, 0x90, 0xE5, 0x00, 0x00, 0x54, 0xE3, 0x19, 0x00, 0x00, 0x0A, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x0C, 0x20, 0x94, 0xE5, 0x10, 0x00, 0x94, 0xE5, 0x02, 0x30, 0x57, 0xE0, 0x00, 0x20, 0xC6, 0xE0
- .byte 0x01, 0x00, 0x53, 0xE0, 0x01, 0x00, 0xD2, 0xE0, 0x0E, 0x00, 0x00, 0xAA, 0x14, 0x00, 0x94, 0xE5
- .byte 0x14, 0x00, 0x88, 0xE5, 0x14, 0x80, 0x84, 0xE5, 0x18, 0x40, 0x88, 0xE5, 0x14, 0x00, 0x98, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x18, 0x80, 0x80, 0x15, 0xF0, 0x41, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x5C, 0x10, 0x9F, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0x00, 0x80, 0x81, 0xE5, 0x33, 0x00, 0x00, 0xEB
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x18, 0x40, 0x94, 0xE5, 0x00, 0x00, 0x54, 0xE3
- .byte 0xE6, 0xFF, 0xFF, 0x1A, 0x38, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x18, 0x00, 0x88, 0xE5
- .byte 0x04, 0x00, 0x91, 0xE5, 0x04, 0x80, 0x81, 0xE5, 0x14, 0x00, 0x88, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x18, 0x80, 0x80, 0x15, 0xF0, 0x41, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x08, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x80, 0x81, 0xE5, 0x00, 0x80, 0x81, 0xE5, 0x20, 0x00, 0x00, 0xEB, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xC0, 0x37, 0x1D, 0x02, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5
- .byte 0x08, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x00, 0x9F, 0xE5, 0xB0, 0x00, 0xD0, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xBC, 0x37, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x40, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xD1, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x00, 0xA0, 0xE3, 0xB0, 0x00, 0xC1, 0xE1
- .byte 0x8A, 0xFE, 0xFF, 0xEB, 0x20, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x10, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x20, 0x81, 0xE5, 0x04, 0x20, 0x81, 0xE5, 0x0D, 0xF3, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xBC, 0x37, 0x1D, 0x02, 0xC0, 0x37, 0x1D, 0x02
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x86, 0xFE, 0xFF, 0xEB
- .byte 0x74, 0x30, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0xB0, 0x20, 0xC3, 0xE1, 0x0C, 0xC0, 0x94, 0xE5
- .byte 0x10, 0x30, 0x94, 0xE5, 0x00, 0x50, 0x5C, 0xE0, 0x01, 0x40, 0xC3, 0xE0, 0x5C, 0x10, 0x9F, 0xE5
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x27, 0xF3, 0xFF, 0xEB, 0x00, 0x20, 0xA0, 0xE3, 0x02, 0x00, 0x55, 0xE0
- .byte 0x02, 0x00, 0xD4, 0xE0, 0x48, 0x20, 0x9F, 0xB5, 0x05, 0x00, 0x00, 0xBA, 0x01, 0x08, 0xA0, 0xE3
- .byte 0x00, 0x00, 0x55, 0xE0, 0x02, 0x00, 0xD4, 0xE0, 0x05, 0x00, 0xE0, 0xB1, 0x00, 0x08, 0xA0, 0xB1
- .byte 0x20, 0x28, 0xA0, 0xB1, 0x2C, 0x00, 0x9F, 0xE5, 0x1C, 0x10, 0x9F, 0xE5, 0xB0, 0x20, 0xC0, 0xE1
- .byte 0xC1, 0x20, 0xA0, 0xE3, 0x10, 0x00, 0xA0, 0xE3, 0xB0, 0x20, 0xC1, 0xE1, 0xFA, 0xF2, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x06, 0x01, 0x00, 0x04
- .byte 0x00, 0xCE, 0x0C, 0x02, 0xFE, 0xFF, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x50, 0x20, 0x9F, 0xE5, 0xB0, 0x00, 0xD2, 0xE1, 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x3C, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x01, 0xC0, 0xA0, 0xE3, 0x04, 0x00, 0xA0, 0xE3, 0xB0, 0xC0, 0xC2, 0xE1
- .byte 0x00, 0x30, 0x81, 0xE5, 0x04, 0x30, 0x81, 0xE5, 0xD1, 0xF2, 0xFF, 0xEB, 0x20, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x1C, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0x00, 0x20, 0x80, 0xE5
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xC8, 0x37, 0x1D, 0x02
- .byte 0xD4, 0x37, 0x1D, 0x02, 0xD0, 0x37, 0x1D, 0x02, 0xCC, 0x37, 0x1D, 0x02, 0x00, 0x00, 0x0F, 0xE1
- .byte 0x80, 0x10, 0xC0, 0xE3, 0x01, 0xF0, 0x21, 0xE1, 0x80, 0x00, 0x00, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1
-
- arm_func_start FUN_020CD310
-FUN_020CD310: ; 0x020CD310
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020CC6F4: .word 0x021D36F0
+
+ arm_func_start OS_FreeToHeap
+OS_FreeToHeap: ; 0x020CC6F8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r5, r1
+ mov r4, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020CC768 ; =0x021D36F8
+ mov r6, r0
+ ldr r0, [r1, r7, lsl #0x2]
+ cmp r5, #0x0
+ ldrlt r5, [r0, #0x0]
+ ldr r1, [r0, #0x10]
+ mov r0, #0xc
+ mla r7, r5, r0, r1
+ sub r4, r4, #0x20
+ ldr r0, [r7, #0x8]
+ mov r1, r4
+ bl DLExtract
+ str r0, [r7, #0x8]
+ ldr r0, [r7, #0x4]
+ mov r1, r4
+ bl DLInsert
+ str r0, [r7, #0x4]
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CC768: .word 0x021D36F8
+
+ arm_func_start OS_AllocFromHeap
+OS_AllocFromHeap: ; 0x020CC76C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r7, r2
+ bl OS_DisableInterrupts
+ ldr r1, _020CC894 ; =0x021D36F8
+ mov r4, r0
+ ldr r1, [r1, r6, lsl #0x2]
+ cmp r1, #0x0
+ bne _020CC7AC
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CC7AC:
+ cmp r5, #0x0
+ ldrlt r5, [r1, #0x0]
+ ldr r1, [r1, #0x10]
+ mov r0, #0xc
+ mla r6, r5, r0, r1
+ ldr r0, [r6, #0x4]
+ add r1, r7, #0x20
+ add r1, r1, #0x1f
+ mov r5, r0
+ cmp r0, #0x0
+ bic r7, r1, #0x1f
+ beq _020CC7F4
+_020CC7DC:
+ ldr r1, [r5, #0x8]
+ cmp r7, r1
+ ble _020CC7F4
+ ldr r5, [r5, #0x4]
+ cmp r5, #0x0
+ bne _020CC7DC
+_020CC7F4:
+ cmp r5, #0x0
+ bne _020CC814
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020CC814:
+ ldr r1, [r5, #0x8]
+ sub r1, r1, r7
+ cmp r1, #0x40
+ bhs _020CC834
+ mov r1, r5
+ bl DLExtract
+ str r0, [r6, #0x4]
+ b _020CC86C
+_020CC834:
+ str r7, [r5, #0x8]
+ add r2, r5, r7
+ str r1, [r2, #0x8]
+ ldr r0, [r5, #0x0]
+ str r0, [r5, r7]
+ ldr r0, [r5, #0x4]
+ str r0, [r2, #0x4]
+ ldr r0, [r2, #0x4]
+ cmp r0, #0x0
+ strne r2, [r0, #0x0]
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ strne r2, [r0, #0x4]
+ streq r2, [r6, #0x4]
+_020CC86C:
+ ldr r0, [r6, #0x8]
+ mov r1, r5
+ bl DLAddFront
+ str r0, [r6, #0x8]
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add r0, r5, #0x20
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CC894: .word 0x021D36F8
+
+ arm_func_start DLInsert
+DLInsert: ; 0x020CC898
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r12, r0
+ cmp r0, #0x0
+ mov lr, #0x0
+ beq _020CC8C8
+_020CC8B0:
+ cmp r1, r12
+ bls _020CC8C8
+ mov lr, r12
+ ldr r12, [r12, #0x4]
+ cmp r12, #0x0
+ bne _020CC8B0
+_020CC8C8:
+ str r12, [r1, #0x4]
+ str lr, [r1, #0x0]
+ cmp r12, #0x0
+ beq _020CC908
+ str r1, [r12, #0x0]
+ ldr r3, [r1, #0x8]
+ add r2, r1, r3
+ cmp r2, r12
+ bne _020CC908
+ ldr r2, [r12, #0x8]
+ add r2, r3, r2
+ str r2, [r1, #0x8]
+ ldr r12, [r12, #0x4]
+ str r12, [r1, #0x4]
+ cmp r12, #0x0
+ strne r1, [r12, #0x0]
+_020CC908:
+ cmp lr, #0x0
+ beq _020CC950
+ str r1, [lr, #0x4]
+ ldr r2, [lr, #0x8]
+ add r3, lr, r2
+ cmp r3, r1
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, [r1, #0x8]
+ add sp, sp, #0x4
+ add r1, r2, r1
+ str r1, [lr, #0x8]
+ str r12, [lr, #0x4]
+ cmp r12, #0x0
+ strne lr, [r12, #0x0]
+ ldmia sp!, {lr}
+ bx lr
+_020CC950:
+ mov r0, r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start DLExtract
+DLExtract: ; 0x020CC960
+ ldr r3, [r1, #0x4]
+ cmp r3, #0x0
+ ldrne r2, [r1, #0x0]
+ strne r2, [r3, #0x0]
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldreq r0, [r1, #0x4]
+ ldrne r1, [r1, #0x4]
+ strne r1, [r2, #0x4]
+ bx lr
+
+ arm_func_start DLAddFront
+DLAddFront: ; 0x020CC988
+ str r0, [r1, #0x4]
+ mov r2, #0x0
+ str r2, [r1, #0x0]
+ cmp r0, #0x0
+ strne r1, [r0, #0x0]
+ mov r0, r1
+ bx lr
+
+ arm_func_start OS_GetDTCMAddress
+OS_GetDTCMAddress: ; 0x020CC9A4
+ mrc p15, 0x0, r0, c9, c1, 0x0
+ ldr r1, _020CC9B4 ; =0xFFFFF000
+ and r0, r0, r1
+ bx lr
+ .balign 4
+_020CC9B4: .word 0xFFFFF000
+
+ arm_func_start OS_EnableProtectionUnit
+OS_EnableProtectionUnit: ; 0x020CC9B8
+ mrc p15, 0x0, r0, c1, c0, 0x0
+ orr r0, r0, #0x1
+ mcr p15, 0x0, r0, c1, c0, 0x0
+ bx lr
+
+ arm_func_start OS_DisableProtectionUnit
+OS_DisableProtectionUnit: ; 0x020CC9C8
+ mrc p15, 0x0, r0, c1, c0, 0x0
+ bic r0, r0, #0x1
+ mcr p15, 0x0, r0, c1, c0, 0x0
+ bx lr
+
+ arm_func_start OS_SetDPermissionsForProtectionRegion
+OS_SetDPermissionsForProtectionRegion: ; 0x020CC9D8
+ mrc p15, 0x0, r2, c5, c0, 0x2
+ bic r2, r2, r0
+ orr r2, r2, r1
+ mcr p15, 0x0, r2, c5, c0, 0x2
+ bx lr
+
+ arm_func_start OS_SetProtectionRegion1
+OS_SetProtectionRegion1: ; 0x020CC9EC
+ mcr p15, 0x0, r0, c6, c1, 0x0
+ bx lr
+
+ arm_func_start OS_SetProtectionRegion2
+OS_SetProtectionRegion2: ; 0x020CC9F4
+ mcr p15, 0x0, r0, c6, c2, 0x0
+ bx lr
+
+ arm_func_start OSi_ExceptionHandler
+OSi_ExceptionHandler: ; 0x020CC9FC
+ ldr ip, _020CCA68 ; =0x021D3724
+ ldr r12, [r12, #0x0]
+ cmp r12, #0x0
+ movne lr, pc
+ bxne r12
+ ldr ip, _020CCA6C ; =0x02000000
+ stmdb r12!, {r0-r3,sp-lr}
+ and r0, sp, #0x1
+ mov sp, r12
+ mrs r1, cpsr
+ and r1, r1, #0x1f
+ teq r1, #0x17
+ bne _020CCA38
+ bl OSi_GetAndDisplayContext
+ b _020CCA44
+_020CCA38:
+ teq r1, #0x1b
+ bne _020CCA44
+ bl OSi_GetAndDisplayContext
+_020CCA44:
+ ldr ip, _020CCA68 ; =0x021D3724
+ ldr r12, [r12, #0x0]
+ cmp r12, #0x0
+_020CCA50:
+ beq _020CCA50
+_020CCA54:
+ mov r0, r0
+ b _020CCA54
+_020CCA5C:
+ .byte 0x0F, 0x50, 0xBD, 0xE8
+ .byte 0x0C, 0xD0, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
+_020CCA68: .word 0x021D3724
+_020CCA6C: .word 0x02000000
+
+ arm_func_start OSi_GetAndDisplayContext
+OSi_GetAndDisplayContext: ; 0x020CCA70
+ stmdb sp!, {r0,lr}
+ bl OSi_SetExContext
+ bl OSi_DisplayExContext
+ ldmia sp!, {r0,lr}
+ bx lr
+
+ arm_func_start OSi_SetExContext
+OSi_SetExContext: ; 0x020CCA84
+ ldr r1, _020CCB10 ; =0x021D3728
+ mrs r2, cpsr
+ str r2, [r1, #0x74]
+ str r0, [r1, #0x6c]
+ ldr r0, [r12, #0x0]
+ str r0, [r1, #0x4]
+ ldr r0, [r12, #0x4]
+ str r0, [r1, #0x8]
+ ldr r0, [r12, #0x8]
+ str r0, [r1, #0xc]
+ ldr r0, [r12, #0xc]
+ str r0, [r1, #0x10]
+ ldr r2, [r12, #0x10]
+ bic r2, r2, #0x1
+ add r0, r1, #0x14
+ stmia r0, {r4-r11}
+ str r12, [r1, #0x70]
+ ldr r0, [r2, #0x0]
+ str r0, [r1, #0x64]
+ ldr r3, [r2, #0x4]
+ str r3, [r1, #0x0]
+ ldr r0, [r2, #0x8]
+ str r0, [r1, #0x34]
+ ldr r0, [r2, #0xc]
+ str r0, [r1, #0x40]
+ mrs r0, cpsr
+ orr r3, r3, #0x80
+ bic r3, r3, #0x20
+ msr cpsr_fsxc, r3
+ str sp, [r1, #0x38]
+ str lr, [r1, #0x3c]
+ mrs r2, spsr
+ str r2, [r1, #0x7c]
+ msr cpsr_fsxc, r0
+ bx lr
+ .balign 4
+_020CCB10: .word 0x021D3728
+
+ arm_func_start OSi_DisplayExContext
+OSi_DisplayExContext: ; 0x020CCB14
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CCB70 ; =0x021D371C
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ mov r0, sp
+ ldr r1, _020CCB74 ; =0x0000009F
+ msr cpsr_fsxc, r1
+ mov sp, r0
+ bl OS_EnableProtectionUnit
+ ldr r1, _020CCB78 ; =0x021D3720
+ ldr r0, _020CCB70 ; =0x021D371C
+ ldr r1, [r1, #0x0]
+ ldr r2, [r0, #0x0]
+ ldr r0, _020CCB7C ; =0x021D3728
+ blx r2
+ bl OS_DisableProtectionUnit
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCB70: .word 0x021D371C
+_020CCB74: .word 0x0000009F
+_020CCB78: .word 0x021D3720
+_020CCB7C: .word 0x021D3728
+
+ arm_func_start OS_InitException
+OS_InitException: ; 0x020CCB80
+ ldr r0, _020CCBDC ; =0x027FFD9C
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x2600000
+ blo _020CCBA0
+ cmp r1, #0x2800000
+ ldrlo r0, _020CCBE0 ; =0x021D3724
+ strcc r1, [r0, #0x0]
+ blo _020CCBAC
+_020CCBA0:
+ ldr r0, _020CCBE0 ; =0x021D3724
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020CCBAC:
+ ldr r0, _020CCBE0 ; =0x021D3724
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r2, _020CCBE4 ; =OSi_ExceptionHandler
+ ldreq r1, _020CCBDC ; =0x027FFD9C
+ ldreq r0, _020CCBE8 ; =0x027E3000
+ streq r2, [r1, #0x0]
+ streq r2, [r0, #0xfdc]
+ ldr r0, _020CCBEC ; =0x021D371C
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CCBDC: .word 0x027FFD9C
+_020CCBE0: .word 0x021D3724
+_020CCBE4: .word OSi_ExceptionHandler
+_020CCBE8: .word 0x027E3000
+_020CCBEC: .word 0x021D371C
+
+ arm_func_start OSi_SetTimerReserved
+OSi_SetTimerReserved: ; 0x020CCBF0
+ ldr r1, _020CCC08 ; =0x021D37A8
+ mov r2, #0x1
+ ldrh r3, [r1, #0x0]
+ orr r0, r3, r2, lsl r0
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CCC08: .word 0x021D37A8
+
+ arm_func_start OS_GetTickLo
+OS_GetTickLo: ; 0x020CCC0C
+ ldr r0, _020CCC18 ; =0x04000100
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CCC18: .word 0x04000100
+
+ arm_func_start OS_GetTick
+OS_GetTick: ; 0x020CCC1C
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ bl OS_DisableInterrupts
+ ldr r1, _020CCCBC ; =0x04000100
+ ldr r3, _020CCCC0 ; =0x021D37B4
+ ldrh r12, [r1, #0x0]
+ ldr r2, _020CCCC4 ; =0x0000FFFF
+ mvn r1, #0x0
+ strh r12, [sp, #0x0]
+ ldr r12, [r3, #0x0]
+ ldr r3, [r3, #0x4]
+ and r1, r12, r1
+ and r2, r3, r2
+ str r1, [sp, #0x4]
+ ldr r1, _020CCCC8 ; =0x04000214
+ str r2, [sp, #0x8]
+ ldr r1, [r1, #0x0]
+ ands r1, r1, #0x8
+ beq _020CCC90
+ ldrh r1, [sp, #0x0]
+ ands r1, r1, #0x8000
+ bne _020CCC90
+ ldr r3, [sp, #0x4]
+ mov r1, #0x1
+ ldr r2, [sp, #0x8]
+ adds r3, r3, r1
+ adc r1, r2, #0x0
+ str r3, [sp, #0x4]
+ str r1, [sp, #0x8]
+_020CCC90:
+ bl OS_RestoreInterrupts
+ ldr r2, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ ldrh r0, [sp, #0x0]
+ mov r1, r1, lsl #0x10
+ orr r1, r1, r2, lsr #0x10
+ orr r1, r1, r0, asr #0x1f
+ orr r0, r0, r2, lsl #0x10
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCCBC: .word 0x04000100
+_020CCCC0: .word 0x021D37B4
+_020CCCC4: .word 0x0000FFFF
+_020CCCC8: .word 0x04000214
+
+ arm_func_start OSi_CountUpTick
+OSi_CountUpTick: ; 0x020CCCCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020CCD40 ; =0x021D37B4
+ ldr r1, _020CCD44 ; =0x021D37B0
+ ldr r12, [r2, #0x0]
+ mov r0, #0x1
+ ldr r3, [r2, #0x4]
+ adds r12, r12, r0
+ ldr r0, [r1, #0x0]
+ adc r3, r3, #0x0
+ str r12, [r2, #0x0]
+ str r3, [r2, #0x4]
+ cmp r0, #0x0
+ mov r3, #0x0
+ beq _020CCD24
+ ldr r2, _020CCD48 ; =0x04000102
+ ldr r0, _020CCD4C ; =0x04000100
+ strh r3, [r2, #0x0]
+ strh r3, [r0, #0x0]
+ mov r0, #0xc1
+ strh r0, [r2, #0x0]
+ str r3, [r1, #0x0]
+_020CCD24:
+ mov r0, #0x0
+ ldr r1, _020CCD50 ; =OSi_CountUpTick
+ mov r2, r0
+ bl OSi_EnterTimerCallback
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCD40: .word 0x021D37B4
+_020CCD44: .word 0x021D37B0
+_020CCD48: .word 0x04000102
+_020CCD4C: .word 0x04000100
+_020CCD50: .word OSi_CountUpTick
+
+ arm_func_start OS_IsTickAvailable
+OS_IsTickAvailable: ; 0x020CCD54
+ ldr r0, _020CCD60 ; =0x021D37AC
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CCD60: .word 0x021D37AC
+
+ arm_func_start OS_InitTick
+OS_InitTick: ; 0x020CCD64
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CCDE8 ; =0x021D37AC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r2, #0x1
+ mov r0, #0x0
+ strh r2, [r1, #0x0]
+ bl OSi_SetTimerReserved
+ ldr r0, _020CCDEC ; =0x021D37B4
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ ldr r3, _020CCDF0 ; =0x04000102
+ str r2, [r0, #0x4]
+ ldr r0, _020CCDF4 ; =0x04000100
+ strh r2, [r3, #0x0]
+ ldr r1, _020CCDF8 ; =OSi_CountUpTick
+ strh r2, [r0, #0x0]
+ mov r2, #0xc1
+ mov r0, #0x8
+ strh r2, [r3, #0x0]
+ bl OS_SetIrqFunction
+ mov r0, #0x8
+ bl OS_EnableIrqMask
+ ldr r0, _020CCDFC ; =0x021D37B0
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CCDE8: .word 0x021D37AC
+_020CCDEC: .word 0x021D37B4
+_020CCDF0: .word 0x04000102
+_020CCDF4: .word 0x04000100
+_020CCDF8: .word OSi_CountUpTick
+_020CCDFC: .word 0x021D37B0
+
+ arm_func_start OSi_AlarmHandler
+OSi_AlarmHandler: ; 0x020CCE00
+ stmdb sp!, {r0,lr}
+ bl OSi_ArrangeTimer
+ ldmia sp!, {r0,lr}
+ bx lr
+
+ arm_func_start OSi_ArrangeTimer
+OSi_ArrangeTimer: ; 0x020CCE10
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CCF1C ; =0x04000106
+ mov r2, #0x0
+ mov r0, #0x10
+ strh r2, [r1, #0x0]
+ bl OS_DisableIrqMask
+ ldr r0, _020CCF20 ; =0x027E0000
+ add r0, r0, #0x3000
+ ldr r1, [r0, #0xff8]
+ orr r1, r1, #0x10
+ str r1, [r0, #0xff8]
+ bl OS_GetTick
+ ldr r2, _020CCF24 ; =0x021D37C0
+ ldr r4, [r2, #0x0]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r3, [r4, #0x10]
+ ldr r12, [r4, #0xc]
+ cmp r1, r3
+ cmpeq r0, r12
+ bhs _020CCE84
+ mov r0, r4
+ bl OSi_SetTimer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CCE84:
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ streq r0, [r2, #0x4]
+ str r1, [r2, #0x0]
+ movne r0, #0x0
+ strne r0, [r1, #0x14]
+ ldr r2, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ mov r0, #0x0
+ cmp r1, r0
+ ldr r5, [r4, #0x0]
+ cmpeq r2, r0
+ streq r0, [r4, #0x0]
+ cmp r5, #0x0
+ beq _020CCECC
+ ldr r0, [r4, #0x4]
+ blx r5
+_020CCECC:
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x20]
+ mov r1, #0x0
+ cmp r0, r1
+ cmpeq r2, r1
+ beq _020CCEF4
+ mov r0, r4
+ mov r2, r1
+ str r5, [r4, #0x0]
+ bl OSi_InsertAlarm
+_020CCEF4:
+ ldr r0, _020CCF24 ; =0x021D37C0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ bl OSi_SetTimer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CCF1C: .word 0x04000106
+_020CCF20: .word 0x027E0000
+_020CCF24: .word 0x021D37C0
+
+ arm_func_start OS_CancelAlarm
+OS_CancelAlarm: ; 0x020CCF28
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x0]
+ mov r4, r0
+ cmp r1, #0x0
+ bne _020CCF58
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CCF58:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x0
+ ldreq r2, [r5, #0x14]
+ ldreq r1, _020CCFBC ; =0x021D37C0
+ streq r2, [r1, #0x4]
+ ldrne r1, [r5, #0x14]
+ strne r1, [r0, #0x14]
+ ldr r1, [r5, #0x14]
+ cmp r1, #0x0
+ strne r0, [r1, #0x18]
+ bne _020CCF98
+ ldr r1, _020CCFBC ; =0x021D37C0
+ cmp r0, #0x0
+ str r0, [r1, #0x0]
+ beq _020CCF98
+ bl OSi_SetTimer
+_020CCF98:
+ mov r1, #0x0
+ str r1, [r5, #0x0]
+ str r1, [r5, #0x1c]
+ mov r0, r4
+ str r1, [r5, #0x20]
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CCFBC: .word 0x021D37C0
+
+ arm_func_start OS_SetAlarm
+OS_SetAlarm: ; 0x020CCFC0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ movs r6, r0
+ mov r5, r1
+ mov r4, r2
+ mov r7, r3
+ beq _020CCFE8
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _020CCFEC
+_020CCFE8:
+ bl OS_Terminate
+_020CCFEC:
+ bl OS_DisableInterrupts
+ mov r1, #0x0
+ str r1, [r6, #0x1c]
+ str r1, [r6, #0x20]
+ str r7, [r6, #0x0]
+ ldr r1, [sp, #0x18]
+ mov r7, r0
+ str r1, [r6, #0x4]
+ bl OS_GetTick
+ adds r3, r5, r0
+ adc r2, r4, r1
+ mov r0, r6
+ mov r1, r3
+ bl OSi_InsertAlarm
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start OSi_InsertAlarm
+OSi_InsertAlarm: ; 0x020CD038
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ ldr r4, [r8, #0x1c]
+ ldr r3, [r8, #0x20]
+ mov r0, #0x0
+ cmp r3, r0
+ mov r7, r1
+ mov r6, r2
+ cmpeq r4, r0
+ beq _020CD0B4
+ bl OS_GetTick
+ ldr r6, [r8, #0x28]
+ ldr r7, [r8, #0x24]
+ cmp r6, r1
+ cmpeq r7, r0
+ bhs _020CD0B4
+ ldr r5, [r8, #0x1c]
+ ldr r4, [r8, #0x20]
+ subs r0, r0, r7
+ mov r2, r5
+ mov r3, r4
+ sbc r1, r1, r6
+ bl FUN_020EBBE8
+ mov r2, #0x1
+ adds r2, r0, r2
+ adc r0, r1, #0x0
+ umull r3, r1, r5, r2
+ mla r1, r5, r0, r1
+ mla r1, r4, r2, r1
+ adds r7, r7, r3
+ adc r6, r6, r1
+_020CD0B4:
+ str r7, [r8, #0xc]
+ ldr r0, _020CD174 ; =0x021D37C0
+ str r6, [r8, #0x10]
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ beq _020CD134
+ mov r1, #0x0
+_020CD0D0:
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #0x10]
+ subs r3, r7, r2
+ sbc r2, r6, r0
+ subs r0, r3, r1
+ sbcs r0, r2, r1
+ bge _020CD128
+ ldr r0, [r4, #0x14]
+ str r0, [r8, #0x14]
+ str r8, [r4, #0x14]
+ str r4, [r8, #0x18]
+ ldr r0, [r8, #0x14]
+ cmp r0, #0x0
+ strne r8, [r0, #0x18]
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ ldr r1, _020CD174 ; =0x021D37C0
+ mov r0, r8
+ str r8, [r1, #0x0]
+ bl OSi_SetTimer
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CD128:
+ ldr r4, [r4, #0x18]
+ cmp r4, #0x0
+ bne _020CD0D0
+_020CD134:
+ ldr r1, _020CD174 ; =0x021D37C0
+ mov r0, #0x0
+ str r0, [r8, #0x18]
+ ldr r0, [r1, #0x4]
+ str r8, [r1, #0x4]
+ str r0, [r8, #0x14]
+ cmp r0, #0x0
+ strne r8, [r0, #0x18]
+ ldmneia sp!, {r4-r8,lr}
+ bxne lr
+ mov r0, r8
+ str r8, [r1, #0x4]
+ str r8, [r1, #0x0]
+ bl OSi_SetTimer
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020CD174: .word 0x021D37C0
+
+ arm_func_start OS_CreateAlarm
+OS_CreateAlarm: ; 0x020CD178
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x8]
+ bx lr
+
+ arm_func_start OS_IsAlarmAvailable
+OS_IsAlarmAvailable: ; 0x020CD188
+ ldr r0, _020CD194 ; =0x021D37BC
+ ldrh r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020CD194: .word 0x021D37BC
+
+ arm_func_start OS_InitAlarm
+OS_InitAlarm: ; 0x020CD198
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CD1E8 ; =0x021D37BC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r0, #0x1
+ strh r0, [r1, #0x0]
+ bl OSi_SetTimerReserved
+ ldr r1, _020CD1EC ; =0x021D37C0
+ mov r2, #0x0
+ mov r0, #0x10
+ str r2, [r1, #0x0]
+ str r2, [r1, #0x4]
+ bl OS_DisableIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CD1E8: .word 0x021D37BC
+_020CD1EC: .word 0x021D37C0
+
+ arm_func_start OSi_SetTimer
+OSi_SetTimer: ; 0x020CD1F0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ bl OS_GetTick
+ ldr r3, _020CD27C ; =0x04000106
+ mov r2, #0x0
+ strh r2, [r3, #0x0]
+ ldr r12, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ subs r5, r12, r0
+ sbc r4, r3, r1
+ ldr r1, _020CD280 ; =OSi_AlarmHandler
+ mov r0, #0x1
+ bl OSi_EnterTimerCallback
+ mov r2, #0x0
+ subs r0, r5, r2
+ sbcs r0, r4, r2
+ ldrlt r2, _020CD284 ; =0x0000FFFE
+ blt _020CD254
+ mov r0, #0x10000
+ subs r0, r5, r0
+ sbcs r0, r4, r2
+ mvnlt r0, r5
+ movlt r0, r0, lsl #0x10
+ movlt r2, r0, lsr #0x10
+_020CD254:
+ ldr r0, _020CD288 ; =0x04000104
+ ldr r1, _020CD27C ; =0x04000106
+ strh r2, [r0, #0x0]
+ mov r2, #0xc1
+ mov r0, #0x10
+ strh r2, [r1, #0x0]
+ bl OS_EnableIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CD27C: .word 0x04000106
+_020CD280: .word OSi_AlarmHandler
+_020CD284: .word 0x0000FFFE
+_020CD288: .word 0x04000104
+
+ arm_func_start OS_InitVAlarm
+OS_InitVAlarm: ; 0x020CD28C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020CD2EC ; =0x021D37C8
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, _020CD2F0 ; =0x021D37D4
+ mov r3, #0x0
+ mov r12, #0x1
+ mov r0, #0x4
+ strh r12, [r2, #0x0]
+ str r3, [r1, #0x0]
+ str r3, [r1, #0x4]
+ bl OS_DisableIrqMask
+ ldr r1, _020CD2F4 ; =0x021D37D0
+ mov r2, #0x0
+ ldr r0, _020CD2F8 ; =0x021D37CC
+ str r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CD2EC: .word 0x021D37C8
+_020CD2F0: .word 0x021D37D4
+_020CD2F4: .word 0x021D37D0
+_020CD2F8: .word 0x021D37CC
+
+ arm_func_start OS_EnableInterrupts
+OS_EnableInterrupts: ; 0x020CD2FC
+ mrs r0, cpsr
+ bic r1, r0, #0x80
+ msr cpsr_c, r1
+ and r0, r0, #0x80
+ bx lr
+
+ arm_func_start OS_DisableInterrupts
+OS_DisableInterrupts:
mrs r0, cpsr
orr r1, r0, #0x80
msr cpsr_c, r1
and r0, r0, #0x80
bx lr
- arm_func_start FUN_020CD324
-FUN_020CD324: ; 0x020CD324
+ arm_func_start OS_RestoreInterrupts
+OS_RestoreInterrupts:
mrs r1, cpsr
bic r2, r1, #0x80
orr r2, r2, r0
msr cpsr_c, r2
and r0, r1, #0x80
bx lr
-_020CD33C:
- .byte 0x00, 0x00, 0x0F, 0xE1
- .byte 0xC0, 0x10, 0x80, 0xE3, 0x01, 0xF0, 0x21, 0xE1, 0xC0, 0x00, 0x00, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x10, 0x0F, 0xE1, 0xC0, 0x20, 0xC1, 0xE3, 0x00, 0x20, 0x82, 0xE1, 0x02, 0xF0, 0x21, 0xE1
- .byte 0xC0, 0x00, 0x01, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x0F, 0xE1, 0x80, 0x00, 0x00, 0xE2
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x0F, 0xE1, 0x1F, 0x00, 0x00, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0x00, 0x50, 0xE2, 0xFD, 0xFF, 0xFF, 0x2A, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0x94, 0xCC, 0xFC, 0xFB, 0x01, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x18, 0xF2, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9, 0x6C, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1
- .byte 0xB0, 0x00, 0xD1, 0xE1, 0x02, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x1A, 0x1F, 0x01, 0x00, 0xEB
- .byte 0x32, 0xF3, 0xFF, 0xEB, 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1, 0xBF, 0x24, 0x00, 0xEB
+
+ arm_func_start OS_DisableInterrupts_IrqAndFiq
+OS_DisableInterrupts_IrqAndFiq: ; 0x020CD33C
+ mrs r0, cpsr
+ orr r1, r0, #0xc0
+ msr cpsr_c, r1
+ and r0, r0, #0xc0
+ bx lr
+
+ arm_func_start OS_RestoreInterrupts_IrqAndFiq
+OS_RestoreInterrupts_IrqAndFiq: ; 0x020CD350
+ mrs r1, cpsr
+ bic r2, r1, #0xc0
+ orr r2, r2, r0
+ msr cpsr_c, r2
+ and r0, r1, #0xc0
+ bx lr
+
+ arm_func_start OS_GetCpsrIrq
+OS_GetCpsrIrq: ; 0x020CD368
+ mrs r0, cpsr
+ and r0, r0, #0x80
+ bx lr
+
+ arm_func_start OS_GetProcMode
+OS_GetProcMode: ; 0x020CD374
+ mrs r0, cpsr
+ and r0, r0, #0x1f
+ bx lr
+_020CD380:
+ subs r0, r0, #0x4
+ bhs _020CD380
+ bx lr
+
+ arm_func_start OS_WaitVBlankIntr
+OS_WaitVBlankIntr: ; 0x020CD38C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x1
+ blx FUN_020005F2
+ mov r0, #0x1
+ mov r1, r0
+ bl OS_WaitIrq
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start OS_ResetSystem
+OS_ResetSystem: ; 0x020CD3B4
+ stmdb sp!, {r4,lr}
+ ldr r1, _020CD42C ; =0x027FFC40
+ mov r4, r0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x2
+ bne _020CD3D0
+ bl OS_Terminate
+_020CD3D0:
+ bl OS_GetLockID
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl FUN_020D66E0
+_020CD3E0:
.byte 0x00, 0x00, 0xA0, 0xE3, 0x6B, 0x01, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x69, 0x01, 0x00, 0xEB
.byte 0x02, 0x00, 0xA0, 0xE3, 0x67, 0x01, 0x00, 0xEB, 0x03, 0x00, 0xA0, 0xE3, 0x65, 0x01, 0x00, 0xEB
.byte 0x01, 0x07, 0xA0, 0xE3, 0xA2, 0xF2, 0xFF, 0xEB, 0x00, 0x00, 0xE0, 0xE3, 0x73, 0xF2, 0xFF, 0xEB
.byte 0x18, 0x10, 0x9F, 0xE5, 0x10, 0x00, 0xA0, 0xE3, 0x00, 0x40, 0x81, 0xE5, 0x04, 0x00, 0x00, 0xEB
- .byte 0x1F, 0xAC, 0xFC, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x40, 0xFC, 0x7F, 0x02
- .byte 0x20, 0xFC, 0x7F, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x64, 0xA0, 0xE1, 0x0C, 0x50, 0xA0, 0xE3
- .byte 0x00, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1
- .byte 0x22, 0x0A, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x7F, 0x0C, 0x01, 0xE2
- .byte 0x00, 0x04, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1, 0x10, 0x00, 0x50, 0xE3, 0x20, 0x00, 0x9F, 0x05
- .byte 0x01, 0x10, 0xA0, 0x03, 0xB0, 0x10, 0xC0, 0x01, 0x04, 0xD0, 0x8D, 0x02, 0x00, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0xED, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xE0, 0x37, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x50, 0x00, 0x9F, 0xE5, 0xB0, 0x10, 0xD0, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x10, 0xA0, 0xE3, 0xB0, 0x10, 0xC0, 0xE1
- .byte 0xB6, 0x09, 0x00, 0xEB, 0x0C, 0x50, 0xA0, 0xE3, 0x01, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x2A, 0x0A, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x0A
+ .byte 0x1F, 0xAC, 0xFC, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CD42C: .word 0x027FFC40
+_020CD430:
+ .byte 0x20, 0xFC, 0x7F, 0x02
+
+ arm_func_start OSi_SendToPxi
+OSi_SendToPxi: ; 0x020CD434
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0, lsl #0x8
+ mov r5, #0xc
+ mov r4, #0x0
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020CD454:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A, 0x70, 0x40, 0xBD, 0xE8
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start OSi_CommonCallback
+OSi_CommonCallback: ; 0x020CD464
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ and r0, r1, #0x7f00
+ mov r0, r0, lsl #0x8
+ mov r0, r0, lsr #0x10
+ cmp r0, #0x10
+ ldreq r0, _020CD4A4 ; =0x021D37E0
+ moveq r1, #0x1
+ streqh r1, [r0, #0x0]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CD4A4: .word 0x021D37E0
+
+ arm_func_start OS_InitReset
+OS_InitReset: ; 0x020CD4A8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CD508 ; =0x021D37DC
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ bl PXI_Init
+ mov r5, #0xc
+ mov r4, #0x1
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020CD4E8:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x0A
.byte 0x14, 0x10, 0x9F, 0xE5, 0x0C, 0x00, 0xA0, 0xE3, 0x2F, 0x0A, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xDC, 0x37, 0x1D, 0x02, 0x64, 0xD4, 0x0C, 0x02
- .byte 0x08, 0x10, 0x9F, 0xE5, 0x68, 0x00, 0x91, 0xE5, 0x6C, 0x10, 0x91, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x80, 0xFC, 0x7F, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x6C, 0xC0, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1
- .byte 0xB4, 0x26, 0xDC, 0xE1, 0x06, 0x00, 0x8C, 0xE2, 0x04, 0x10, 0x84, 0xE2, 0x82, 0x2E, 0xA0, 0xE1
- .byte 0xA2, 0x2E, 0xA0, 0xE1, 0x00, 0x20, 0xC4, 0xE5, 0x02, 0x30, 0xDC, 0xE5, 0x14, 0x20, 0xA0, 0xE3
- .byte 0x03, 0x3E, 0xA0, 0xE1, 0x23, 0x3E, 0xA0, 0xE1, 0x01, 0x30, 0xC4, 0xE5, 0x03, 0x30, 0xDC, 0xE5
- .byte 0x02, 0x30, 0xC4, 0xE5, 0x04, 0x30, 0xDC, 0xE5, 0x03, 0x30, 0xC4, 0xE5, 0x1A, 0x30, 0xDC, 0xE5
- .byte 0xB8, 0x31, 0xC4, 0xE1, 0x50, 0x30, 0xDC, 0xE5, 0xBE, 0x34, 0xC4, 0xE1, 0x17, 0x03, 0x00, 0xEB
- .byte 0x14, 0x00, 0x9F, 0xE5, 0x1A, 0x10, 0x84, 0xE2, 0x1C, 0x00, 0x80, 0xE2, 0x34, 0x20, 0xA0, 0xE3
- .byte 0x12, 0x03, 0x00, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x80, 0xFC, 0x7F, 0x02
- .byte 0x0C, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE1, 0x08, 0x00, 0x9F, 0xE5, 0x06, 0x20, 0xA0, 0xE3
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0xE0, 0xE3, 0x0C, 0x02, 0xF4, 0xFC, 0x7F, 0x02, 0x10, 0x0F, 0x6F, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x47, 0x2D, 0xE9, 0x00, 0x50, 0xA0, 0xE1, 0x01, 0xA0, 0xA0, 0xE1
- .byte 0x4E, 0xFF, 0xFF, 0xEB, 0x64, 0x40, 0x9F, 0xE5, 0x64, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x94, 0xE5
- .byte 0x00, 0x80, 0xA0, 0xE1, 0x02, 0x00, 0x05, 0xE0, 0x01, 0x90, 0x00, 0xE0, 0x54, 0x60, 0x9F, 0xE5
- .byte 0x01, 0x70, 0xA0, 0xE3, 0x00, 0x50, 0xA0, 0xE3, 0x09, 0x00, 0xA0, 0xE1, 0xEE, 0xFF, 0xFF, 0xEB
- .byte 0x1F, 0x20, 0x70, 0xE2, 0x09, 0x00, 0x00, 0x4A, 0x82, 0x10, 0xA0, 0xE1, 0xB1, 0x00, 0x96, 0xE1
- .byte 0x17, 0x22, 0xE0, 0xE1, 0x00, 0x00, 0x5A, 0xE1, 0x00, 0x00, 0x94, 0x05, 0x02, 0x90, 0x09, 0xE0
- .byte 0x02, 0x00, 0x00, 0x00, 0xB1, 0x50, 0x86, 0x01, 0x00, 0x00, 0x84, 0x05, 0xF1, 0xFF, 0xFF, 0xEA
- .byte 0x08, 0x00, 0xA0, 0xE1, 0x3A, 0xFF, 0xFF, 0xEB, 0xF0, 0x47, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xE4, 0x37, 0x1D, 0x02, 0xFF, 0x01, 0x00, 0x00, 0xE8, 0x37, 0x1D, 0x02, 0xF0, 0x43, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x80, 0xA0, 0xE1, 0x2B, 0xFF, 0xFF, 0xEB
- .byte 0xAC, 0x10, 0x9F, 0xE5, 0x00, 0x70, 0xA0, 0xE1, 0x00, 0x00, 0x91, 0xE5, 0x00, 0x50, 0x06, 0xE0
- .byte 0xA0, 0x90, 0x9F, 0xE5, 0x01, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0xCE, 0xFF, 0xFF, 0xEB
- .byte 0x1F, 0x10, 0x70, 0xE2, 0x0B, 0x00, 0x00, 0x4A, 0x81, 0x00, 0xA0, 0xE1, 0xB0, 0x00, 0x99, 0xE1
- .byte 0x14, 0x11, 0xE0, 0xE1, 0x00, 0x00, 0x58, 0xE1, 0x01, 0x50, 0x05, 0xE0, 0xF5, 0xFF, 0xFF, 0x0A
- .byte 0x07, 0x00, 0xA0, 0xE1, 0x1E, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x5C, 0x00, 0x9F, 0xE5, 0x00, 0x60, 0x06, 0xE0
- .byte 0x50, 0x40, 0x9F, 0xE5, 0x48, 0x90, 0x9F, 0xE5, 0x01, 0x50, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE1
- .byte 0xB9, 0xFF, 0xFF, 0xEB, 0x1F, 0x10, 0x70, 0xE2, 0x07, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x99, 0xE5
- .byte 0x15, 0x21, 0xE0, 0xE1, 0x15, 0x01, 0x80, 0xE1, 0x81, 0x10, 0xA0, 0xE1, 0xB1, 0x80, 0x84, 0xE1
- .byte 0x00, 0x00, 0x89, 0xE5, 0x02, 0x60, 0x06, 0xE0, 0xF3, 0xFF, 0xFF, 0xEA, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x07, 0xFF, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x43, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xE4, 0x37, 0x1D, 0x02, 0xE8, 0x37, 0x1D, 0x02, 0xFF, 0x01, 0x00, 0x00
- .byte 0x24, 0x00, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x30, 0x80, 0xE5, 0x1C, 0x00, 0x9F, 0xE5
- .byte 0x03, 0x20, 0xA0, 0xE1, 0x83, 0x10, 0xA0, 0xE1, 0x01, 0x30, 0x83, 0xE2, 0xB1, 0x20, 0x80, 0xE1
- .byte 0x09, 0x00, 0x53, 0xE3, 0xFA, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1, 0xE4, 0x37, 0x1D, 0x02
- .byte 0xE8, 0x37, 0x1D, 0x02, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0xC8, 0x10, 0x9F, 0xE5
- .byte 0xC8, 0x20, 0x9F, 0xE5, 0xB0, 0x70, 0xD1, 0xE1, 0x80, 0x40, 0x82, 0xE2, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x74, 0x50, 0x84, 0xE2, 0x24, 0xFD, 0xFF, 0xEB, 0x07, 0x08, 0x80, 0xE1, 0x00, 0x00, 0x86, 0xE5
- .byte 0xAC, 0x10, 0x9F, 0xE5, 0xA4, 0x00, 0x9F, 0xE5, 0x00, 0x30, 0x91, 0xE5, 0xB4, 0x50, 0xD5, 0xE1
- .byte 0x04, 0x20, 0x91, 0xE5, 0x9C, 0x20, 0x9F, 0xE5, 0x05, 0x38, 0x23, 0xE0, 0x04, 0x30, 0x86, 0xE5
- .byte 0x00, 0x30, 0x91, 0xE5, 0x04, 0x30, 0x91, 0xE5, 0x74, 0x10, 0x94, 0xE5, 0x3C, 0x40, 0x90, 0xE5
- .byte 0x01, 0x10, 0x23, 0xE0, 0x01, 0x10, 0x24, 0xE0, 0x08, 0x10, 0x86, 0xE5, 0x08, 0x30, 0x96, 0xE5
- .byte 0x00, 0x20, 0x92, 0xE5, 0x03, 0x1C, 0x80, 0xE2, 0x02, 0x20, 0x23, 0xE0, 0x08, 0x20, 0x86, 0xE5
- .byte 0xE8, 0x21, 0x90, 0xE5, 0x60, 0x30, 0x9F, 0xE5, 0x0C, 0x20, 0x86, 0xE5, 0xEC, 0x41, 0x90, 0xE5
- .byte 0x58, 0x20, 0x9F, 0xE5, 0x10, 0x40, 0x86, 0xE5, 0xB4, 0x49, 0xD1, 0xE1, 0x90, 0x03, 0x90, 0xE5
- .byte 0x04, 0x08, 0x20, 0xE0, 0x14, 0x00, 0x86, 0xE5, 0xBA, 0x4A, 0xD1, 0xE1, 0xBC, 0x0A, 0xD1, 0xE1
- .byte 0x04, 0x08, 0x80, 0xE1, 0x18, 0x00, 0x86, 0xE5, 0xB0, 0x30, 0xD3, 0xE1, 0xB0, 0x00, 0xD2, 0xE1
- .byte 0xB8, 0x19, 0xD1, 0xE1, 0x00, 0x00, 0x83, 0xE1, 0x01, 0x08, 0x80, 0xE1, 0x1C, 0x00, 0x86, 0xE5
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x06, 0x00, 0x00, 0x04
- .byte 0x00, 0xFC, 0x7F, 0x02, 0xB4, 0x37, 0x1D, 0x02, 0x00, 0x06, 0x00, 0x04, 0x30, 0x01, 0x00, 0x04
- .byte 0xA8, 0xFF, 0x7F, 0x02, 0x00, 0x00, 0xA0, 0xE3, 0x90, 0x0F, 0x07, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0xAC, 0xFE, 0xFF, 0xEB, 0xF8, 0xFF, 0xFF, 0xEB
- .byte 0xFC, 0xFF, 0xFF, 0xEA, 0x04, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0xC1, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x47, 0x02, 0x00, 0x04, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x00, 0x53, 0xE3
- .byte 0xFF, 0x04, 0x01, 0xE2, 0x02, 0x00, 0x00, 0x0A, 0x02, 0x05, 0x53, 0xE3, 0x02, 0x10, 0x41, 0x00
- .byte 0x00, 0x00, 0x00, 0xEA, 0x02, 0x10, 0x81, 0xE0, 0x01, 0x03, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A
- .byte 0x02, 0x03, 0x50, 0xE3, 0x06, 0x00, 0x00, 0x2A, 0xFF, 0x04, 0x01, 0xE2, 0x01, 0x03, 0x50, 0xE3
- .byte 0x03, 0x00, 0x00, 0x0A, 0x02, 0x03, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x32, 0x00, 0x40, 0xBD, 0x38
- .byte 0x1E, 0xFF, 0x2F, 0x31, 0xDD, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0xA0, 0x40, 0x9F, 0xE5
- .byte 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1, 0x00, 0x50, 0xA0, 0xE3, 0x07, 0x00, 0x55, 0xE1
- .byte 0x1C, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x94, 0xE5, 0x02, 0x01, 0x11, 0xE2, 0x19, 0x00, 0x00, 0x0A
- .byte 0x0E, 0x03, 0x01, 0xE2, 0x06, 0x00, 0x50, 0xE1, 0x16, 0x00, 0x00, 0x0A, 0x02, 0x03, 0x50, 0xE3
- .byte 0x01, 0x00, 0x00, 0x1A, 0x01, 0x02, 0x56, 0xE3, 0x12, 0x00, 0x00, 0x0A, 0x01, 0x02, 0x50, 0xE3
- .byte 0x01, 0x00, 0x00, 0x1A, 0x02, 0x03, 0x56, 0xE3, 0x0E, 0x00, 0x00, 0x0A, 0x06, 0x03, 0x50, 0xE3
- .byte 0x0B, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x50, 0xE3, 0x09, 0x00, 0x00, 0x0A, 0x0A, 0x03, 0x50, 0xE3
- .byte 0x07, 0x00, 0x00, 0x0A, 0x03, 0x02, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x0E, 0x03, 0x50, 0xE3
- .byte 0x03, 0x00, 0x00, 0x0A, 0x02, 0x03, 0x50, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x01, 0x02, 0x50, 0xE3
- .byte 0x00, 0x00, 0x00, 0x1A, 0xB5, 0xFF, 0xFF, 0xEB, 0x01, 0x50, 0x85, 0xE2, 0x03, 0x00, 0x55, 0xE3
- .byte 0x0C, 0x40, 0x84, 0xE2, 0xDC, 0xFF, 0xFF, 0xBA, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xB8, 0x00, 0x00, 0x04, 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x5A, 0xFE, 0xFF, 0xEB, 0x06, 0x10, 0xA0, 0xE3, 0x94, 0x01, 0x01, 0xE0, 0x05, 0x10, 0x81, 0xE2
- .byte 0x81, 0x10, 0xA0, 0xE1, 0x01, 0x13, 0x81, 0xE2, 0xB0, 0x2B, 0xD1, 0xE1, 0x00, 0x00, 0x54, 0xE3
- .byte 0x3A, 0x2C, 0xC2, 0xE3, 0xB0, 0x2B, 0xC1, 0xE1, 0xB0, 0x2B, 0xD1, 0xE1, 0x02, 0x29, 0xC2, 0xE3
- .byte 0xB0, 0x2B, 0xC1, 0xE1, 0xB0, 0x2B, 0xD1, 0xE1, 0xB0, 0x1B, 0xD1, 0xE1, 0x09, 0x00, 0x00, 0x1A
- .byte 0x0C, 0x10, 0xA0, 0xE3, 0x94, 0x01, 0x0C, 0xE0, 0x24, 0x10, 0x9F, 0xE5, 0x01, 0x23, 0x8C, 0xE2
- .byte 0x00, 0x30, 0xA0, 0xE3, 0xB0, 0x30, 0x82, 0xE5, 0x01, 0x20, 0x8C, 0xE0, 0x14, 0x10, 0x9F, 0xE5
- .byte 0x04, 0x30, 0x82, 0xE5, 0x08, 0x10, 0x82, 0xE5, 0x45, 0xFE, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x00, 0x00, 0x04, 0x01, 0x00, 0x40, 0x81, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x39, 0xFE, 0xFF, 0xEB, 0x03, 0x10, 0xA0, 0xE3, 0x94, 0x01, 0x02, 0xE0
- .byte 0x4C, 0x10, 0x9F, 0xE5, 0x02, 0x20, 0x82, 0xE2, 0x02, 0x21, 0x81, 0xE0, 0x00, 0x10, 0x92, 0xE5
- .byte 0x02, 0x11, 0x11, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x54, 0xE3, 0x09, 0x00, 0x00, 0x1A
- .byte 0x0C, 0x10, 0xA0, 0xE3, 0x94, 0x01, 0x0C, 0xE0, 0x24, 0x10, 0x9F, 0xE5, 0x01, 0x23, 0x8C, 0xE2
- .byte 0x00, 0x30, 0xA0, 0xE3, 0xB0, 0x30, 0x82, 0xE5, 0x01, 0x20, 0x8C, 0xE0, 0x14, 0x10, 0x9F, 0xE5
- .byte 0x04, 0x30, 0x82, 0xE5, 0x08, 0x10, 0x82, 0xE5, 0x29, 0xFE, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x00, 0x00, 0x04, 0x01, 0x00, 0x40, 0x81, 0xF0, 0x41, 0x2D, 0xE9
- .byte 0x03, 0x50, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x00, 0x80, 0xA0, 0xE1, 0x01, 0x70, 0xA0, 0xE1, 0x18, 0x40, 0x9D, 0xE5, 0x70, 0xFF, 0xFF, 0xEB
+ .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CD508: .word 0x021D37DC
+_020CD50C:
+ .byte 0x64, 0xD4, 0x0C, 0x02
+
+ arm_func_start OS_GetOwnerRtcOffset
+OS_GetOwnerRtcOffset: ; 0x020CD510
+ ldr r1, _020CD520 ; =0x027FFC80
+ ldr r0, [r1, #0x68]
+ ldr r1, [r1, #0x6c]
+ bx lr
+ .balign 4
+_020CD520: .word 0x027FFC80
+
+ arm_func_start OS_GetOwnerInfo
+OS_GetOwnerInfo: ; 0x020CD524
+ stmdb sp!, {r4,lr}
+ ldr ip, _020CD59C ; =0x027FFC80
+ mov r4, r0
+ ldrh r2, [r12, #0x64]
+ add r0, r12, #0x6
+ add r1, r4, #0x4
+ mov r2, r2, lsl #0x1d
+ mov r2, r2, lsr #0x1d
+ strb r2, [r4, #0x0]
+ ldrb r3, [r12, #0x2]
+ mov r2, #0x14
+ mov r3, r3, lsl #0x1c
+ mov r3, r3, lsr #0x1c
+ strb r3, [r4, #0x1]
+ ldrb r3, [r12, #0x3]
+ strb r3, [r4, #0x2]
+ ldrb r3, [r12, #0x4]
+ strb r3, [r4, #0x3]
+ ldrb r3, [r12, #0x1a]
+ strh r3, [r4, #0x18]
+ ldrb r3, [r12, #0x50]
+ strh r3, [r4, #0x4e]
+ bl MIi_CpuCopy16
+ ldr r0, _020CD59C ; =0x027FFC80
+ add r1, r4, #0x1a
+ add r0, r0, #0x1c
+ mov r2, #0x34
+ bl MIi_CpuCopy16
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CD59C: .word 0x027FFC80
+
+ arm_func_start OS_GetMacAddress
+OS_GetMacAddress: ; 0x020CD5A0
+ ldr ip, _020CD5B4 ; =MI_CpuCopy8
+ mov r1, r0
+ ldr r0, _020CD5B8 ; =0x027FFCF4
+ mov r2, #0x6
+ bx r12
+ .balign 4
+_020CD5B4: .word MI_CpuCopy8
+_020CD5B8: .word 0x027FFCF4
+
+ arm_func_start OsCountZeroBits
+OsCountZeroBits: ; 0x020CD5BC
+ clz r0, r0
+ bx lr
+
+ arm_func_start OSi_UnlockVram
+OSi_UnlockVram: ; 0x020CD5C4
+ stmdb sp!, {r4-r10,lr}
+ mov r5, r0
+ mov r10, r1
+ bl OS_DisableInterrupts
+ ldr r4, _020CD640 ; =0x021D37E4
+ ldr r1, _020CD644 ; =0x000001FF
+ ldr r2, [r4, #0x0]
+ mov r8, r0
+ and r0, r5, r2
+ and r9, r0, r1
+ ldr r6, _020CD648 ; =0x021D37E8
+ mov r7, #0x1
+ mov r5, #0x0
+_020CD5F8:
+ mov r0, r9
+ bl OsCountZeroBits
+ rsbs r2, r0, #0x1f
+ bmi _020CD630
+ mov r1, r2, lsl #0x1
+ ldrh r0, [r6, r1]
+ mvn r2, r7, lsl r2
+ cmp r10, r0
+ ldreq r0, [r4, #0x0]
+ and r9, r9, r2
+ andeq r0, r0, r2
+ streqh r5, [r6, r1]
+ streq r0, [r4, #0x0]
+ b _020CD5F8
+_020CD630:
+ mov r0, r8
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r10,lr}
+ bx lr
+ .balign 4
+_020CD640: .word 0x021D37E4
+_020CD644: .word 0x000001FF
+_020CD648: .word 0x021D37E8
+
+ arm_func_start OSi_TryLockVram
+OSi_TryLockVram: ; 0x020CD64C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r8, r1
+ bl OS_DisableInterrupts
+ ldr r1, _020CD714 ; =0x021D37E4
+ mov r7, r0
+ ldr r0, [r1, #0x0]
+ and r5, r6, r0
+ ldr sb, _020CD718 ; =0x021D37E8
+ mov r4, #0x1
+_020CD678:
+ mov r0, r5
+ bl OsCountZeroBits
+ rsbs r1, r0, #0x1f
+ bmi _020CD6B8
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r9, r0]
+ mvn r1, r4, lsl r1
+ cmp r8, r0
+ and r5, r5, r1
+ beq _020CD678
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020CD6B8:
+ ldr r0, _020CD71C ; =0x000001FF
+ and r6, r6, r0
+ ldr r4, _020CD718 ; =0x021D37E8
+ ldr sb, _020CD714 ; =0x021D37E4
+ mov r5, #0x1
+_020CD6CC:
+ mov r0, r6
+ bl OsCountZeroBits
+ rsbs r1, r0, #0x1f
+ bmi _020CD6FC
+ ldr r0, [r9, #0x0]
+ mvn r2, r5, lsl r1
+ orr r0, r0, r5, lsl r1
+ mov r1, r1, lsl #0x1
+ strh r8, [r4, r1]
+ str r0, [r9, #0x0]
+ and r6, r6, r2
+ b _020CD6CC
+_020CD6FC:
+ mov r0, r7
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020CD714: .word 0x021D37E4
+_020CD718: .word 0x021D37E8
+_020CD71C: .word 0x000001FF
+
+ arm_func_start OSi_InitVramExclusive
+OSi_InitVramExclusive: ; 0x020CD720
+ ldr r0, _020CD74C ; =0x021D37E4
+ mov r3, #0x0
+ str r3, [r0, #0x0]
+ ldr r0, _020CD750 ; =0x021D37E8
+ mov r2, r3
+_020CD734:
+ mov r1, r3, lsl #0x1
+ add r3, r3, #0x1
+ strh r2, [r0, r1]
+ cmp r3, #0x9
+ blt _020CD734
+ bx lr
+ .balign 4
+_020CD74C: .word 0x021D37E4
+_020CD750: .word 0x021D37E8
+
+ arm_func_start OS_GetLowEntropyData
+OS_GetLowEntropyData: ; 0x020CD754
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CD82C ; =0x04000006
+ ldr r2, _020CD830 ; =0x027FFC00
+ ldrh r7, [r1, #0x0]
+ add r4, r2, #0x80
+ mov r6, r0
+ add r5, r4, #0x74
+ bl OS_GetTickLo
+ orr r0, r0, r7, lsl #0x10
+ str r0, [r6, #0x0]
+ ldr r1, _020CD834 ; =0x021D37B4
+ ldr r0, _020CD830 ; =0x027FFC00
+ ldr r3, [r1, #0x0]
+ ldrh r5, [r5, #0x4]
+ ldr r2, [r1, #0x4]
+ ldr r2, _020CD838 ; =0x04000600
+ eor r3, r3, r5, lsl #0x10
+ str r3, [r6, #0x4]
+ ldr r3, [r1, #0x0]
+ ldr r3, [r1, #0x4]
+ ldr r1, [r4, #0x74]
+ ldr r4, [r0, #0x3c]
+ eor r1, r3, r1
+ eor r1, r4, r1
+ str r1, [r6, #0x8]
+ ldr r3, [r6, #0x8]
+ ldr r2, [r2, #0x0]
+ add r1, r0, #0x300
+ eor r2, r3, r2
+ str r2, [r6, #0x8]
+ ldr r2, [r0, #0x1e8]
+ ldr r3, _020CD83C ; =0x04000130
+ str r2, [r6, #0xc]
+ ldr r4, [r0, #0x1ec]
+ ldr r2, _020CD840 ; =0x027FFFA8
+ str r4, [r6, #0x10]
+ ldrh r4, [r1, #0x94]
+ ldr r0, [r0, #0x390]
+ eor r0, r0, r4, lsl #0x10
+ str r0, [r6, #0x14]
+ ldrh r4, [r1, #0xaa]
+ ldrh r0, [r1, #0xac]
+ orr r0, r0, r4, lsl #0x10
+ str r0, [r6, #0x18]
+ ldrh r3, [r3, #0x0]
+ ldrh r0, [r2, #0x0]
+ ldrh r1, [r1, #0x98]
+ orr r0, r3, r0
+ orr r0, r0, r1, lsl #0x10
+ str r0, [r6, #0x1c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CD82C: .word 0x04000006
+_020CD830: .word 0x027FFC00
+_020CD834: .word 0x021D37B4
+_020CD838: .word 0x04000600
+_020CD83C: .word 0x04000130
+_020CD840: .word 0x027FFFA8
+
+ arm_func_start OS_Halt
+OS_Halt: ; 0x020CD844
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c0, 0x4
+ bx lr
+
+ arm_func_start OS_Terminate
+OS_Terminate: ; 0x020CD850
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+_020CD858:
+ bl OS_DisableInterrupts
+ bl OS_Halt
+ b _020CD858
+
+ arm_func_start MI_SetWramBank
+MI_SetWramBank:
+ ldr r1, _020CD870 ; =0x04000247
+ strb r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020CD870: .word 0x04000247
+
+ arm_func_start MIi_CheckDma0SourceAddress
+MIi_CheckDma0SourceAddress:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ cmp r3, #0x0
+ and r0, r1, #0xff000000
+ beq _020CD8A4
+ cmp r3, #0x800000
+ subeq r1, r1, r2
+ b _020CD8A8
+_020CD8A4:
+ add r1, r1, r2
+_020CD8A8:
+ cmp r0, #0x4000000
+ beq _020CD8D4
+ cmp r0, #0x8000000
+ bhs _020CD8D4
+ and r0, r1, #0xff000000
+ cmp r0, #0x4000000
+ beq _020CD8D4
+ cmp r0, #0x8000000
+ addcc sp, sp, #0x4
+ ldmccia sp!, {lr}
+ bxcc lr
+_020CD8D4:
+ bl OS_Terminate
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MIi_CheckAnotherAutoDMA
+MIi_CheckAnotherAutoDMA: ; 0x020CD8E4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r4, _020CD994 ; =0x040000B8
+ mov r7, r0
+ mov r6, r1
+ mov r5, #0x0
+_020CD8FC:
+ cmp r5, r7
+ beq _020CD978
+ ldr r1, [r4, #0x0]
+ ands r0, r1, #0x80000000
+ beq _020CD978
+ and r0, r1, #0x38000000
+ cmp r0, r6
+ beq _020CD978
+ cmp r0, #0x8000000
+ bne _020CD92C
+ cmp r6, #0x10000000
+ beq _020CD978
+_020CD92C:
+ cmp r0, #0x10000000
+ bne _020CD93C
+ cmp r6, #0x8000000
+ beq _020CD978
+_020CD93C:
+ cmp r0, #0x18000000
+ beq _020CD974
+ cmp r0, #0x20000000
+ beq _020CD974
+ cmp r0, #0x28000000
+ beq _020CD974
+ cmp r0, #0x30000000
+ beq _020CD974
+ cmp r0, #0x38000000
+ beq _020CD974
+ cmp r0, #0x8000000
+ beq _020CD974
+ cmp r0, #0x10000000
+ bne _020CD978
+_020CD974:
+ bl OS_Terminate
+_020CD978:
+ add r5, r5, #0x1
+ cmp r5, #0x3
+ add r4, r4, #0xc
+ blt _020CD8FC
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020CD994: .word 0x040000B8
+
+ arm_func_start MI_StopDma
+MI_StopDma: ; 0x020CD998
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r1, #0x6
+ mul r1, r4, r1
+ add r1, r1, #0x5
+ mov r1, r1, lsl #0x1
+ add r1, r1, #0x4000000
+ ldrh r2, [r1, #0xb0]
+ cmp r4, #0x0
+ bic r2, r2, #0x3a00
+ strh r2, [r1, #0xb0]
+ ldrh r2, [r1, #0xb0]
+ bic r2, r2, #0x8000
+ strh r2, [r1, #0xb0]
+ ldrh r2, [r1, #0xb0]
+ ldrh r1, [r1, #0xb0]
+ bne _020CDA08
+ mov r1, #0xc
+ mul r12, r4, r1
+ ldr r1, _020CDA14 ; =0x040000B0
+ add r2, r12, #0x4000000
+ mov r3, #0x0
+ str r3, [r2, #0xb0]
+ add r2, r12, r1
+ ldr r1, _020CDA18 ; =0x81400001
+ str r3, [r2, #0x4]
+ str r1, [r2, #0x8]
+_020CDA08:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CDA14: .word 0x040000B0
+_020CDA18: .word 0x81400001
+MI_WaitDma:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r1, #0x3
+ mul r2, r4, r1
+ ldr r1, _020CDA84 ; =0x040000B0
+ add r2, r2, #0x2
+ add r2, r1, r2, lsl #0x2
+_020CDA3C:
+ ldr r1, [r2, #0x0]
+ ands r1, r1, #0x80000000
+ bne _020CDA3C
+ cmp r4, #0x0
+ bne _020CDA78
+ mov r1, #0xc
+ mul r12, r4, r1
+ ldr r1, _020CDA84 ; =0x040000B0
+ add r2, r12, #0x4000000
+ mov r3, #0x0
+ str r3, [r2, #0xb0]
+ add r2, r12, r1
+ ldr r1, _020CDA88 ; =0x81400001
+ str r3, [r2, #0x4]
+ str r1, [r2, #0x8]
+_020CDA78:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CDA84: .word 0x040000B0
+_020CDA88: .word 0x81400001
+
+ arm_func_start MI_DmaCopy32Async
+MI_DmaCopy32Async: ; 0x020CDA8C
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r3
+ mov r6, r2
+ mov r2, r5
+ mov r3, #0x0
+ mov r8, r0
+ mov r7, r1
+ ldr r4, [sp, #0x18]
+ bl MIi_CheckDma0SourceAddress
+_020CDAB0:
.byte 0x00, 0x00, 0x55, 0xE3, 0x06, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x54, 0xE3, 0xF0, 0x41, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0x1C, 0x00, 0x9D, 0xE5, 0x34, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0xBD, 0xE8
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0xA0, 0xE1, 0xCF, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x54, 0xE3
@@ -1038,10 +4666,27 @@ _020CD33C:
.byte 0x06, 0x20, 0xA0, 0xE1, 0x31, 0x33, 0x83, 0xE3, 0xB8, 0xAA, 0xFC, 0xEB, 0xF0, 0x41, 0xBD, 0xE8
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x25, 0x31, 0xA0, 0xE1, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1
.byte 0x06, 0x20, 0xA0, 0xE1, 0x21, 0x33, 0x83, 0xE3, 0xB0, 0xAA, 0xFC, 0xEB, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0x03, 0x40, 0xB0, 0xE1, 0x00, 0x70, 0xA0, 0xE1
- .byte 0x01, 0x60, 0xA0, 0xE1, 0x02, 0x50, 0xA0, 0xE1, 0x18, 0x80, 0x9D, 0xE5, 0x06, 0x00, 0x00, 0x1A
- .byte 0x00, 0x00, 0x58, 0xE3, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x1C, 0x00, 0x9D, 0xE5
- .byte 0x38, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xAA, 0xFF, 0xFF, 0xEB
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start MI_DmaFill32Async
+MI_DmaFill32Async: ; 0x020CDB34
+ stmdb sp!, {r4-r8,lr}
+ movs r4, r3
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ ldr r8, [sp, #0x18]
+ bne _020CDB6C
+ cmp r8, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, [sp, #0x1c]
+ blx r8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020CDB6C:
+ bl MI_WaitDma
+_020CDB70:
.byte 0x00, 0x00, 0x58, 0xE3, 0x13, 0x00, 0x00, 0x0A, 0x1C, 0x20, 0x9D, 0xE5, 0x07, 0x00, 0xA0, 0xE1
.byte 0x08, 0x10, 0xA0, 0xE1, 0xE2, 0xF0, 0xFF, 0xEB, 0xE0, 0xFD, 0xFF, 0xEB, 0x24, 0x31, 0xA0, 0xE1
.byte 0x70, 0x10, 0x9F, 0xE5, 0x07, 0x21, 0xA0, 0xE1, 0x01, 0x23, 0x82, 0xE2, 0xE0, 0x50, 0x82, 0xE5
@@ -1051,314 +4696,1408 @@ _020CD33C:
.byte 0x07, 0x21, 0xA0, 0xE1, 0x24, 0x31, 0xA0, 0xE1, 0x00, 0x40, 0xA0, 0xE1, 0x01, 0xC3, 0x82, 0xE2
.byte 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x20, 0xA0, 0xE1, 0x07, 0x11, 0x81, 0xE0, 0x85, 0x34, 0x83, 0xE3
.byte 0xE0, 0x50, 0x8C, 0xE5, 0x52, 0xAA, 0xFC, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0xC8, 0xFD, 0xFF, 0xEB
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xE0, 0x00, 0x00, 0x04, 0xF0, 0x41, 0x2D, 0xE9
- .byte 0x03, 0x50, 0xB0, 0xE1, 0x00, 0x80, 0xA0, 0xE1, 0x01, 0x70, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1
- .byte 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x05, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x0F, 0xFF, 0xFF, 0xEB, 0x03, 0x00, 0xA0, 0xE3, 0x98, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x9F, 0xE5
- .byte 0x02, 0x10, 0x81, 0xE2, 0x01, 0x41, 0x80, 0xE0, 0x00, 0x00, 0x94, 0xE5, 0x02, 0x01, 0x10, 0xE2
- .byte 0xFC, 0xFF, 0xFF, 0x1A, 0xA5, 0x30, 0xA0, 0xE1, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1
- .byte 0x06, 0x20, 0xA0, 0xE1, 0x02, 0x31, 0x83, 0xE3, 0x43, 0xAA, 0xFC, 0xEB, 0x00, 0x00, 0x94, 0xE5
+ .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xE0, 0x00, 0x00, 0x04
+
+ arm_func_start MI_DmaCopy16
+MI_DmaCopy16: ; 0x020CDC0C
+ stmdb sp!, {r4-r8,lr}
+ movs r5, r3
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r2, r5
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+ mov r0, #0x3
+ mul r1, r8, r0
+ ldr r0, _020CDC80 ; =0x040000B0
+ add r1, r1, #0x2
+ add r4, r0, r1, lsl #0x2
+_020CDC48:
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x80000000
+ bne _020CDC48
+ mov r3, r5, lsr #0x1
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ orr r3, r3, #0x80000000
+ bl FUN_01FF857C
+_020CDC6C:
+ .byte 0x00, 0x00, 0x94, 0xE5
.byte 0x02, 0x01, 0x10, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xB0, 0x00, 0x00, 0x04, 0xF0, 0x41, 0x2D, 0xE9, 0x03, 0x50, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1
- .byte 0x05, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x80, 0xA0, 0xE1, 0x01, 0x70, 0xA0, 0xE1
- .byte 0xF3, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x55, 0xE3, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
+_020CDC80: .word 0x040000B0
+
+ arm_func_start MI_DmaCopy32
+MI_DmaCopy32: ; 0x020CDC84
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r3
+ mov r6, r2
+ mov r2, r5
+ mov r3, #0x0
+ mov r8, r0
+ mov r7, r1
+ bl MIi_CheckDma0SourceAddress
+_020CDCA4:
+ .byte 0x00, 0x00, 0x55, 0xE3, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x03, 0x00, 0xA0, 0xE3, 0x98, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x9F, 0xE5, 0x02, 0x10, 0x81, 0xE2
.byte 0x01, 0x41, 0x80, 0xE0, 0x00, 0x00, 0x94, 0xE5, 0x02, 0x01, 0x10, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A
.byte 0x25, 0x31, 0xA0, 0xE1, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1, 0x06, 0x20, 0xA0, 0xE1
.byte 0x21, 0x33, 0x83, 0xE3, 0x24, 0xAA, 0xFC, 0xEB, 0x00, 0x00, 0x94, 0xE5, 0x02, 0x01, 0x10, 0xE2
.byte 0xFC, 0xFF, 0xFF, 0x1A, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x00, 0x00, 0x04
- .byte 0xF0, 0x41, 0x2D, 0xE9, 0x03, 0x40, 0xB0, 0xE1, 0x00, 0x80, 0xA0, 0xE1, 0x01, 0x70, 0xA0, 0xE1
- .byte 0x02, 0x60, 0xA0, 0xE1, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x03, 0x00, 0xA0, 0xE3
- .byte 0x98, 0x00, 0x01, 0xE0, 0x5C, 0x00, 0x9F, 0xE5, 0x02, 0x10, 0x81, 0xE2, 0x01, 0x51, 0x80, 0xE0
- .byte 0x00, 0x00, 0x95, 0xE5, 0x02, 0x01, 0x10, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A, 0x73, 0xFD, 0xFF, 0xEB
- .byte 0x44, 0x10, 0x9F, 0xE5, 0x08, 0x21, 0xA0, 0xE1, 0x24, 0x31, 0xA0, 0xE1, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x01, 0xC3, 0x82, 0xE2, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x20, 0xA0, 0xE1, 0x08, 0x11, 0x81, 0xE0
- .byte 0x85, 0x34, 0x83, 0xE3, 0xE0, 0x60, 0x8C, 0xE5, 0xDD, 0xA9, 0xFC, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x6B, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x95, 0xE5, 0x02, 0x01, 0x10, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x00, 0x04
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x60, 0xA0, 0xE1, 0x00, 0x70, 0xA0, 0xE1
- .byte 0x03, 0x40, 0xA0, 0xE1, 0x01, 0x12, 0xA0, 0xE3, 0x02, 0x50, 0xA0, 0xE1, 0xCC, 0xFE, 0xFF, 0xEB
- .byte 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
- .byte 0xAB, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x54, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08
+
+ arm_func_start MI_DmaFill32
+MI_DmaFill32: ; 0x020CDD00
+ stmdb sp!, {r4-r8,lr}
+ movs r4, r3
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, #0x3
+ mul r1, r8, r0
+ ldr r0, _020CDD88 ; =0x040000B0
+ add r1, r1, #0x2
+ add r5, r0, r1, lsl #0x2
+_020CDD30:
+ ldr r0, [r5, #0x0]
+ ands r0, r0, #0x80000000
+ bne _020CDD30
+ bl OS_DisableInterrupts
+ ldr r1, _020CDD8C ; =0x040000E0
+ mov r2, r8, lsl #0x2
+ mov r3, r4, lsr #0x2
+ mov r4, r0
+ add r12, r2, #0x4000000
+ mov r0, r8
+ mov r2, r7
+ add r1, r1, r8, lsl #0x2
+ orr r3, r3, #0x85000000
+ str r6, [r12, #0xe0]
+ bl FUN_01FF84E4
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020CDD74:
+ .byte 0x00, 0x00, 0x95, 0xE5, 0x02, 0x01, 0x10, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A
+ .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CDD88: .word 0x040000B0
+_020CDD8C: .word 0x040000E0
+
+ arm_func_start MI_HBlankDmaCopy16
+MI_HBlankDmaCopy16: ; 0x020CDD90
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ mov r7, r0
+ mov r4, r3
+ mov r1, #0x10000000
+ mov r5, r2
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+_020CDDC4:
+ .byte 0x00, 0x00, 0x54, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0x07, 0x00, 0xA0, 0xE1, 0x0F, 0xFF, 0xFF, 0xEB, 0x1C, 0x30, 0x9F, 0xE5
.byte 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0xA4, 0x30, 0x83, 0xE1
.byte 0xFE, 0xA9, 0xFC, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x60, 0x92, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x00, 0x70, 0xA0, 0xE1, 0x03, 0x40, 0xA0, 0xE1, 0x01, 0x12, 0xA0, 0xE3, 0x02, 0x50, 0xA0, 0xE1
- .byte 0xAF, 0xFE, 0xFF, 0xEB, 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x8E, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x54, 0xE3, 0x04, 0xD0, 0x8D, 0x02
+ .byte 0x00, 0x00, 0x60, 0x92
+
+ arm_func_start MI_HBlankDmaCopy32
+MI_HBlankDmaCopy32: ; 0x020CDE04
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ mov r7, r0
+ mov r4, r3
+ mov r1, #0x10000000
+ mov r5, r2
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+_020CDE38:
+ .byte 0x00, 0x00, 0x54, 0xE3, 0x04, 0xD0, 0x8D, 0x02
.byte 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x07, 0x00, 0xA0, 0xE1, 0xF2, 0xFE, 0xFF, 0xEB
.byte 0x1C, 0x30, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1
.byte 0x24, 0x31, 0x83, 0xE1, 0xE1, 0xA9, 0xFC, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x60, 0x96, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x2C, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x10, 0x10, 0x90, 0xE5, 0x00, 0x20, 0x80, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x14, 0x00, 0x90, 0xE5, 0x00, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x31, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xFC, 0x37, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x02, 0x40, 0xB0, 0xE1
- .byte 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x06, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x53, 0xE3
- .byte 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x10, 0x00, 0x9D, 0xE5, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x20, 0x9F, 0xE5, 0x00, 0x00, 0x92, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A, 0x10, 0xC0, 0x9D, 0xE5, 0x01, 0xE0, 0xA0, 0xE3
- .byte 0x06, 0x00, 0xA0, 0xE1, 0x0E, 0x13, 0xA0, 0xE3, 0x00, 0xE0, 0x82, 0xE5, 0x04, 0x60, 0x82, 0xE5
- .byte 0x10, 0x30, 0x82, 0xE5, 0x14, 0xC0, 0x82, 0xE5, 0x71, 0xFE, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3, 0x50, 0xFE, 0xFF, 0xEB
- .byte 0x06, 0x00, 0xA0, 0xE1, 0xB8, 0xFE, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x2C, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x20, 0xA0, 0xE3, 0xF2, 0xEF, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1
- .byte 0x1C, 0x20, 0x9F, 0xE5, 0x0F, 0x35, 0xA0, 0xE3, 0x00, 0x30, 0x63, 0xE2, 0x24, 0x31, 0x83, 0xE1
- .byte 0xA2, 0xA9, 0xFC, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xFC, 0x37, 0x1D, 0x02
- .byte 0x78, 0xDE, 0x0C, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x02, 0x06, 0xA0, 0xE3, 0xA2, 0xEF, 0xFF, 0xEB, 0x54, 0x20, 0x9F, 0xE5, 0x54, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x10, 0x92, 0xE5, 0x18, 0x30, 0x90, 0xE5, 0x03, 0x11, 0xC1, 0xE3, 0x03, 0x1F, 0x81, 0xE1
- .byte 0x00, 0x10, 0x82, 0xE5, 0x1C, 0x10, 0x90, 0xE5, 0x02, 0x06, 0xA0, 0xE3, 0x0E, 0xF0, 0xFF, 0xEB
- .byte 0x30, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x10, 0x10, 0x90, 0xE5, 0x00, 0x20, 0x80, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x14, 0x00, 0x90, 0xE5, 0x00, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x31, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x06, 0x00, 0x04, 0xFC, 0x37, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0xA8, 0x00, 0x9F, 0xE5, 0x0C, 0x40, 0x90, 0xE5, 0x00, 0x00, 0x54, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x90, 0x00, 0x9F, 0xE5
- .byte 0x76, 0x0F, 0x54, 0xE3, 0x08, 0x50, 0x90, 0xE5, 0x76, 0x4F, 0xA0, 0x23, 0x0C, 0x20, 0x90, 0xE5
- .byte 0x04, 0x10, 0x85, 0xE0, 0x04, 0x20, 0x52, 0xE0, 0x0C, 0x20, 0x80, 0xE5, 0x08, 0x10, 0x80, 0xE5
- .byte 0x10, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x90, 0xE5, 0x68, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0xB3, 0xEF, 0xFF, 0xEB, 0xEF, 0x05, 0xA0, 0xE3, 0x00, 0x30, 0x60, 0xE2, 0x50, 0x10, 0x9F, 0xE5
- .byte 0x54, 0x20, 0x9F, 0xE5, 0x04, 0x00, 0x91, 0xE5, 0x05, 0x10, 0xA0, 0xE1, 0x24, 0x31, 0x83, 0xE1
- .byte 0x62, 0xA9, 0xFC, 0xEB, 0x02, 0x06, 0xA0, 0xE3, 0x5C, 0xEF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x30, 0x9F, 0xE5, 0x04, 0x00, 0x90, 0xE5
- .byte 0x24, 0x20, 0x9F, 0xE5, 0x05, 0x10, 0xA0, 0xE1, 0x24, 0x31, 0x83, 0xE1, 0x57, 0xA9, 0xFC, 0xEB
- .byte 0x02, 0x06, 0xA0, 0xE3, 0x51, 0xEF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xFC, 0x37, 0x1D, 0x02, 0x78, 0xDF, 0x0C, 0x02, 0x00, 0x04, 0x00, 0x04
- .byte 0x00, 0x00, 0x40, 0x84, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x52, 0xE3, 0x08, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x53, 0xE3, 0x04, 0xD0, 0x8D, 0x02
- .byte 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x10, 0x00, 0x9D, 0xE5, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xC8, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A, 0xBC, 0x50, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x95, 0xE5, 0x07, 0x04, 0x00, 0xE2, 0x20, 0x0C, 0xA0, 0xE1, 0x02, 0x00, 0x10, 0xE2
- .byte 0xFA, 0xFF, 0xFF, 0x0A, 0xA0, 0xC0, 0x9F, 0xE5, 0x10, 0xE0, 0x9D, 0xE5, 0x10, 0x30, 0x8C, 0xE5
- .byte 0x01, 0x50, 0xA0, 0xE3, 0x04, 0x00, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x50, 0x8C, 0xE5
- .byte 0x04, 0x40, 0x8C, 0xE5, 0x08, 0x10, 0x8C, 0xE5, 0x0C, 0x20, 0x8C, 0xE5, 0x14, 0xE0, 0x8C, 0xE5
- .byte 0xCB, 0xFD, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x33, 0xFE, 0xFF, 0xEB, 0x6F, 0xFC, 0xFF, 0xEB
- .byte 0x68, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x91, 0xE5, 0x58, 0x10, 0x9F, 0xE5
- .byte 0x03, 0x01, 0x00, 0xE2, 0x20, 0x2F, 0xA0, 0xE1, 0x02, 0x06, 0xA0, 0xE3, 0x18, 0x20, 0x81, 0xE5
- .byte 0x7A, 0xEF, 0xFF, 0xEB, 0x40, 0x10, 0x9F, 0xE5, 0x40, 0x20, 0x9F, 0xE5, 0x1C, 0x00, 0x81, 0xE5
- .byte 0x00, 0x00, 0x92, 0xE5, 0x38, 0x10, 0x9F, 0xE5, 0x03, 0x01, 0xC0, 0xE3, 0x01, 0x31, 0x80, 0xE3
- .byte 0x02, 0x06, 0xA0, 0xE3, 0x00, 0x30, 0x82, 0xE5, 0x93, 0xEF, 0xFF, 0xEB, 0x02, 0x06, 0xA0, 0xE3
- .byte 0x2D, 0xEF, 0xFF, 0xEB, 0x90, 0xFF, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x5C, 0xFC, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xFC, 0x37, 0x1D, 0x02
- .byte 0x00, 0x06, 0x00, 0x04, 0xEC, 0xDF, 0x0C, 0x02, 0x00, 0x30, 0xA0, 0xE3, 0x02, 0x00, 0x53, 0xE1
- .byte 0xB3, 0x00, 0x81, 0xB1, 0x02, 0x30, 0x83, 0xB2, 0xFB, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0xC0, 0xA0, 0xE3, 0x02, 0x00, 0x5C, 0xE1, 0xBC, 0x30, 0x90, 0xB1, 0xBC, 0x30, 0x81, 0xB1
- .byte 0x02, 0xC0, 0x8C, 0xB2, 0xFA, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1, 0x02, 0xC0, 0x81, 0xE0
- .byte 0x0C, 0x00, 0x51, 0xE1, 0x01, 0x00, 0xA1, 0xB8, 0xFC, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x02, 0xC0, 0x81, 0xE0, 0x0C, 0x00, 0x51, 0xE1, 0x04, 0x00, 0xB0, 0xB8, 0x04, 0x00, 0xA1, 0xB8
- .byte 0xFB, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1, 0x02, 0xC0, 0x80, 0xE0, 0x0C, 0x00, 0x50, 0xE1
- .byte 0x04, 0x00, 0xB0, 0xB8, 0x00, 0x20, 0x81, 0xB5, 0xFB, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x03, 0x2D, 0xE9, 0x02, 0x90, 0x81, 0xE0, 0xA2, 0xC2, 0xA0, 0xE1, 0x8C, 0xC2, 0x81, 0xE0
- .byte 0x00, 0x20, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0x02, 0x50, 0xA0, 0xE1
- .byte 0x02, 0x60, 0xA0, 0xE1, 0x02, 0x70, 0xA0, 0xE1, 0x02, 0x80, 0xA0, 0xE1, 0x0C, 0x00, 0x51, 0xE1
- .byte 0xFD, 0x01, 0xA1, 0xB8, 0xFC, 0xFF, 0xFF, 0xBA, 0x09, 0x00, 0x51, 0xE1, 0x01, 0x00, 0xA1, 0xB8
- .byte 0xFC, 0xFF, 0xFF, 0xBA, 0xF0, 0x03, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x07, 0x2D, 0xE9
- .byte 0x02, 0xA0, 0x81, 0xE0, 0xA2, 0xC2, 0xA0, 0xE1, 0x8C, 0xC2, 0x81, 0xE0, 0x0C, 0x00, 0x51, 0xE1
- .byte 0xFC, 0x03, 0xB0, 0xB8, 0xFC, 0x03, 0xA1, 0xB8, 0xFB, 0xFF, 0xFF, 0xBA, 0x0A, 0x00, 0x51, 0xE1
- .byte 0x04, 0x00, 0xB0, 0xB8, 0x04, 0x00, 0xA1, 0xB8, 0xFB, 0xFF, 0xFF, 0xBA, 0xF0, 0x07, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8
+ .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x60, 0x96
+
+ arm_func_start MIi_DMAFastCallback
+MIi_DMAFastCallback: ; 0x020CDE78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CDEB4 ; =0x021D37FC
+ mov r2, #0x0
+ ldr r1, [r0, #0x10]
+ str r2, [r0, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldr r0, [r0, #0x14]
+ ldmeqia sp!, {lr}
+ bxeq lr
+ blx r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CDEB4: .word 0x021D37FC
+
+ arm_func_start MI_SendGXCommandAsyncFast
+MI_SendGXCommandAsyncFast: ; 0x020CDEB8
+ stmdb sp!, {r4-r6,lr}
+ movs r4, r2
+ mov r6, r0
+ mov r5, r1
+ bne _020CDEE8
+ cmp r3, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldr r0, [sp, #0x10]
+ blx r3
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020CDEE8:
+ ldr r2, _020CDF6C ; =0x021D37FC
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ bne _020CDEE8
+ ldr r12, [sp, #0x10]
+ mov lr, #0x1
+ mov r0, r6
+ mov r1, #0x38000000
+ str lr, [r2, #0x0]
+ str r6, [r2, #0x4]
+ str r3, [r2, #0x10]
+ str r12, [r2, #0x14]
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ mov r3, #0x0
+ bl MIi_CheckDma0SourceAddress
+ mov r0, r6
+ bl MI_WaitDma
+ mov r0, r6
+ ldr r1, _020CDF70 ; =MIi_DMAFastCallback
+ mov r2, #0x0
+ bl OSi_EnterDmaCallback
+ mov r0, r6
+ mov r1, r5
+ ldr r2, _020CDF74 ; =0x04000400
+ mov r3, #0x3c00000
+ rsb r3, r3, #0x0
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CDF6C: .word 0x021D37FC
+_020CDF70: .word MIi_DMAFastCallback
+_020CDF74: .word 0x04000400
+
+ arm_func_start MIi_DMACallback
+MIi_DMACallback: ; 0x020CDF78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x200000
+ bl OS_DisableIrqMask
+ ldr r2, _020CDFE4 ; =0x04000600
+ ldr r0, _020CDFE8 ; =0x021D37FC
+ ldr r1, [r2, #0x0]
+ ldr r3, [r0, #0x18]
+ bic r1, r1, #0xc0000000
+ orr r1, r1, r3, lsl #0x1e
+ str r1, [r2, #0x0]
+ ldr r1, [r0, #0x1c]
+ mov r0, #0x200000
+ bl OS_SetIrqFunction
+ ldr r0, _020CDFE8 ; =0x021D37FC
+ mov r2, #0x0
+ ldr r1, [r0, #0x10]
+ str r2, [r0, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldr r0, [r0, #0x14]
+ ldmeqia sp!, {lr}
+ bxeq lr
+ blx r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CDFE4: .word 0x04000600
+_020CDFE8: .word 0x021D37FC
+
+ arm_func_start MIi_FIFOCallback
+MIi_FIFOCallback: ; 0x020CDFEC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CE0A4 ; =0x021D37FC
+ ldr r4, [r0, #0xc]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, _020CE0A4 ; =0x021D37FC
+ cmp r4, #0x1d8
+ ldr r5, [r0, #0x8]
+ movcs r4, #0x1d8
+ ldr r2, [r0, #0xc]
+ add r1, r5, r4
+ subs r2, r2, r4
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x8]
+ bne _020CE078
+ ldr r0, [r0, #0x4]
+ ldr r1, _020CE0A8 ; =MIi_DMACallback
+ mov r2, #0x0
+ bl OSi_EnterDmaCallback
+ mov r0, #0x3bc00000
+ rsb r3, r0, #0x0
+ ldr r1, _020CE0A4 ; =0x021D37FC
+ ldr r2, _020CE0AC ; =0x04000400
+ ldr r0, [r1, #0x4]
+ mov r1, r5
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ mov r0, #0x200000
+ bl OS_ResetRequestIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CE078:
+ ldr r3, _020CE0B0 ; =0x84400000
+ ldr r0, [r0, #0x4]
+ ldr r2, _020CE0AC ; =0x04000400
+ mov r1, r5
+ orr r3, r3, r4, lsr #0x2
+ bl FUN_01FF85F0
+ mov r0, #0x200000
+ bl OS_ResetRequestIrqMask
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CE0A4: .word 0x021D37FC
+_020CE0A8: .word MIi_DMACallback
+_020CE0AC: .word 0x04000400
+_020CE0B0: .word 0x84400000
+
+ arm_func_start MI_SendGXCommandAsync
+MI_SendGXCommandAsync: ; 0x020CE0B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ cmp r2, #0x0
+ bne _020CE0EC
+ cmp r3, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r0, [sp, #0x10]
+ blx r3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CE0EC:
+ ldr r0, _020CE1BC ; =0x021D37FC
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020CE0EC
+ ldr r5, _020CE1C0 ; =0x04000600
+_020CE100:
+ ldr r0, [r5, #0x0]
+ and r0, r0, #0x7000000
+ mov r0, r0, lsr #0x18
+ ands r0, r0, #0x2
+ beq _020CE100
+ ldr ip, _020CE1BC ; =0x021D37FC
+ ldr lr, [sp, #0x10]
+ str r3, [r12, #0x10]
+ mov r5, #0x1
+ mov r0, r4
+ mov r3, #0x0
+ str r5, [r12, #0x0]
+ str r4, [r12, #0x4]
+ str r1, [r12, #0x8]
+ str r2, [r12, #0xc]
+ str lr, [r12, #0x14]
+ bl MIi_CheckDma0SourceAddress
+ mov r0, r4
+ bl MI_WaitDma
+ bl OS_DisableInterrupts
+ ldr r1, _020CE1C0 ; =0x04000600
+ mov r4, r0
+ ldr r0, [r1, #0x0]
+ ldr r1, _020CE1BC ; =0x021D37FC
+ and r0, r0, #0xc0000000
+ mov r2, r0, lsr #0x1e
+ mov r0, #0x200000
+ str r2, [r1, #0x18]
+ bl OS_GetIrqFunction
+ ldr r1, _020CE1BC ; =0x021D37FC
+ ldr r2, _020CE1C0 ; =0x04000600
+ str r0, [r1, #0x1c]
+ ldr r0, [r2, #0x0]
+ ldr r1, _020CE1C4 ; =MIi_FIFOCallback
+ bic r0, r0, #0xc0000000
+ orr r3, r0, #0x40000000
+ mov r0, #0x200000
+ str r3, [r2, #0x0]
+ bl OS_SetIrqFunction
+ mov r0, #0x200000
+ bl OS_EnableIrqMask
+ bl MIi_FIFOCallback
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CE1BC: .word 0x021D37FC
+_020CE1C0: .word 0x04000600
+_020CE1C4: .word MIi_FIFOCallback
+
+ arm_func_start MIi_CpuClear16
+MIi_CpuClear16: ; 0x020CE1C8
+ mov r3, #0x0
+_020CE1CC:
+ cmp r3, r2
+ strlth r0, [r1, r3]
+ addlt r3, r3, #0x2
+ blt _020CE1CC
+ bx lr
+
+ arm_func_start MIi_CpuCopy16
+MIi_CpuCopy16: ; 0x020CE1E0
+ mov r12, #0x0
+_020CE1E4:
+ cmp r12, r2
+ ldrlth r3, [r0, r12]
+ strlth r3, [r1, r12]
+ addlt r12, r12, #0x2
+ blt _020CE1E4
+ bx lr
+
+ arm_func_start MIi_CpuClear32
+MIi_CpuClear32: ; 0x020CE1FC
+ add r12, r1, r2
+_020CE200:
+ cmp r1, r12
+ stmltia r1!, {r0}
+ blt _020CE200
+ bx lr
+
+ arm_func_start MIi_CpuCopy32
+MIi_CpuCopy32: ; 0x020CE210
+ add r12, r1, r2
+_020CE214:
+ cmp r1, r12
+ ldmltia r0!, {r2}
+ stmltia r1!, {r2}
+ blt _020CE214
+ bx lr
+
+ arm_func_start MIi_CpuSend32
+MIi_CpuSend32: ; 0x020CE228
+ add r12, r0, r2
+_020CE22C:
+ cmp r0, r12
+ ldmltia r0!, {r2}
+ strlt r2, [r1, #0x0]
+ blt _020CE22C
+ bx lr
+
+ arm_func_start MIi_CpuClearFast
+MIi_CpuClearFast: ; 0x020CE240
+ stmdb sp!, {r4-r9}
+ add r9, r1, r2
+ mov r12, r2, lsr #0x5
+ add r12, r1, r12, lsl #0x5
+ mov r2, r0
+ mov r3, r2
+ mov r4, r2
+ mov r5, r2
+ mov r6, r2
+ mov r7, r2
+ mov r8, r2
+_020CE26C:
+ cmp r1, r12
+ stmltia r1!, {r0,r2-r8}
+ blt _020CE26C
+_020CE278:
+ cmp r1, r9
+ stmltia r1!, {r0}
+ blt _020CE278
+ ldmia sp!, {r4-r9}
+ bx lr
+
+ arm_func_start MIi_CpuCopyFast
+MIi_CpuCopyFast: ; 0x020CE28C
+ stmdb sp!, {r4-r10}
+ add r10, r1, r2
+ mov r12, r2, lsr #0x5
+ add r12, r1, r12, lsl #0x5
+_020CE29C:
+ cmp r1, r12
+ ldmltia r0!, {r2-r9}
+ stmltia r1!, {r2-r9}
+ blt _020CE29C
+_020CE2AC:
+ cmp r1, r10
+ ldmltia r0!, {r2}
+ stmltia r1!, {r2}
+ blt _020CE2AC
+ ldmia sp!, {r4-r10}
+ bx lr
+_020CE2C4:
+ .byte 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8
.byte 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x00, 0xB0, 0xE8, 0x0C, 0x00, 0xA1, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8
- .byte 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x10, 0xB0, 0xE8
- .byte 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8
- .byte 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8
- .byte 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8, 0x0C, 0x10, 0xB0, 0xE8, 0x0C, 0x10, 0xA1, 0xE8
- .byte 0x0D, 0x10, 0x90, 0xE8, 0x0D, 0x10, 0xA1, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x52, 0xE3
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x01, 0x00, 0x10, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0xB1, 0xC0, 0x50, 0xE1
- .byte 0xFF, 0xC0, 0x0C, 0xE2, 0x01, 0x34, 0x8C, 0xE1, 0xB1, 0x30, 0x40, 0xE1, 0x01, 0x00, 0x80, 0xE2
- .byte 0x01, 0x20, 0x52, 0xE2, 0x1E, 0xFF, 0x2F, 0x01, 0x02, 0x00, 0x52, 0xE3, 0x0F, 0x00, 0x00, 0x3A
- .byte 0x01, 0x14, 0x81, 0xE1, 0x02, 0x00, 0x10, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0xB2, 0x10, 0xC0, 0xE0
- .byte 0x02, 0x20, 0x52, 0xE2, 0x1E, 0xFF, 0x2F, 0x01, 0x01, 0x18, 0x81, 0xE1, 0x03, 0x30, 0xD2, 0xE3
- .byte 0x04, 0x00, 0x00, 0x0A, 0x03, 0x20, 0x42, 0xE0, 0x00, 0xC0, 0x83, 0xE0, 0x04, 0x10, 0x80, 0xE4
- .byte 0x0C, 0x00, 0x50, 0xE1, 0xFC, 0xFF, 0xFF, 0x3A, 0x02, 0x00, 0x12, 0xE3, 0xB2, 0x10, 0xC0, 0x10
- .byte 0x01, 0x00, 0x12, 0xE3, 0x1E, 0xFF, 0x2F, 0x01, 0xB0, 0x30, 0xD0, 0xE1, 0xFF, 0x3C, 0x03, 0xE2
- .byte 0xFF, 0x10, 0x01, 0xE2, 0x03, 0x10, 0x81, 0xE1, 0xB0, 0x10, 0xC0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x52, 0xE3, 0x1E, 0xFF, 0x2F, 0x01, 0x01, 0x00, 0x11, 0xE3, 0x0B, 0x00, 0x00, 0x0A
- .byte 0xB1, 0xC0, 0x51, 0xE1, 0xFF, 0xC0, 0x0C, 0xE2, 0x01, 0x00, 0x10, 0xE3, 0xB1, 0x30, 0x50, 0x11
- .byte 0x23, 0x34, 0xA0, 0x11, 0xB0, 0x30, 0xD0, 0x01, 0x03, 0x34, 0x8C, 0xE1, 0xB1, 0x30, 0x41, 0xE1
- .byte 0x01, 0x00, 0x80, 0xE2, 0x01, 0x10, 0x81, 0xE2, 0x01, 0x20, 0x52, 0xE2, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x00, 0xC0, 0x21, 0xE0, 0x01, 0x00, 0x1C, 0xE3, 0x11, 0x00, 0x00, 0x0A, 0x01, 0x00, 0xC0, 0xE3
- .byte 0xB2, 0xC0, 0xD0, 0xE0, 0x2C, 0x34, 0xA0, 0xE1, 0x02, 0x20, 0x52, 0xE2, 0x05, 0x00, 0x00, 0x3A
- .byte 0xB2, 0xC0, 0xD0, 0xE0, 0x0C, 0xC4, 0x83, 0xE1, 0xB2, 0xC0, 0xC1, 0xE0, 0x2C, 0x38, 0xA0, 0xE1
- .byte 0x02, 0x20, 0x52, 0xE2, 0xF9, 0xFF, 0xFF, 0x2A, 0x01, 0x00, 0x12, 0xE3, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0xB0, 0xC0, 0xD1, 0xE1, 0xFF, 0xCC, 0x0C, 0xE2, 0x03, 0xC0, 0x8C, 0xE1, 0xB0, 0xC0, 0xC1, 0xE1
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x02, 0x00, 0x1C, 0xE3, 0x08, 0x00, 0x00, 0x0A, 0x01, 0x30, 0xD2, 0xE3
- .byte 0x19, 0x00, 0x00, 0x0A, 0x03, 0x20, 0x42, 0xE0, 0x01, 0xC0, 0x83, 0xE0, 0xB2, 0x30, 0xD0, 0xE0
- .byte 0xB2, 0x30, 0xC1, 0xE0, 0x0C, 0x00, 0x51, 0xE1, 0xFB, 0xFF, 0xFF, 0x3A, 0x12, 0x00, 0x00, 0xEA
- .byte 0x02, 0x00, 0x52, 0xE3, 0x10, 0x00, 0x00, 0x3A, 0x02, 0x00, 0x11, 0xE3, 0x03, 0x00, 0x00, 0x0A
- .byte 0xB2, 0x30, 0xD0, 0xE0, 0xB2, 0x30, 0xC1, 0xE0, 0x02, 0x20, 0x52, 0xE2, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x03, 0x30, 0xD2, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x03, 0x20, 0x42, 0xE0, 0x01, 0xC0, 0x83, 0xE0
- .byte 0x04, 0x30, 0x90, 0xE4, 0x04, 0x30, 0x81, 0xE4, 0x0C, 0x00, 0x51, 0xE1, 0xFB, 0xFF, 0xFF, 0x3A
- .byte 0x02, 0x00, 0x12, 0xE3, 0xB2, 0x30, 0xD0, 0x10, 0xB2, 0x30, 0xC1, 0x10, 0x01, 0x00, 0x12, 0xE3
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0xB0, 0x20, 0xD1, 0xE1, 0xB0, 0x00, 0xD0, 0xE1, 0xFF, 0x2C, 0x02, 0xE2
- .byte 0xFF, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x82, 0xE1, 0xB0, 0x00, 0xC1, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0E, 0xC0, 0x0E, 0xC0, 0x0E, 0xC0, 0x70, 0x47, 0x00, 0x00
- .byte 0x90, 0x00, 0x01, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x04, 0x50, 0x90, 0xE4
- .byte 0x25, 0x24, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE3, 0x1D, 0x00, 0x00, 0xDA, 0x01, 0xE0, 0xD0, 0xE4
- .byte 0x08, 0x40, 0xA0, 0xE3, 0x01, 0x40, 0x54, 0xE2, 0xF9, 0xFF, 0xFF, 0xBA, 0x80, 0x00, 0x1E, 0xE3
- .byte 0x04, 0x00, 0x00, 0x1A, 0x01, 0x60, 0xD0, 0xE4, 0x96, 0x60, 0x41, 0xE1, 0x01, 0x10, 0x81, 0xE2
- .byte 0x01, 0x20, 0x42, 0xE2, 0x0E, 0x00, 0x00, 0xEA, 0x00, 0x50, 0xD0, 0xE5, 0x03, 0x60, 0xA0, 0xE3
- .byte 0x45, 0x32, 0x86, 0xE0, 0x01, 0x60, 0xD0, 0xE4, 0x0F, 0x50, 0x06, 0xE2, 0x05, 0xC4, 0xA0, 0xE1
- .byte 0x01, 0x60, 0xD0, 0xE4, 0x0C, 0x50, 0x86, 0xE1, 0x01, 0xC0, 0x85, 0xE2, 0x03, 0x20, 0x42, 0xE0
- .byte 0x0C, 0x50, 0x51, 0xE7, 0x95, 0x50, 0x41, 0xE1, 0x01, 0x10, 0x81, 0xE2, 0x01, 0x30, 0x53, 0xE2
- .byte 0xFA, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x52, 0xE3, 0x8E, 0xE0, 0xA0, 0xC1, 0xE4, 0xFF, 0xFF, 0xCA
- .byte 0xDF, 0xFF, 0xFF, 0xEA, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x50, 0xA0, 0xE1, 0x00, 0x60, 0xA0, 0xE1, 0x03, 0x70, 0xA0, 0xE1
- .byte 0x00, 0x10, 0xE0, 0xE3, 0x02, 0x40, 0xA0, 0xE1, 0xC1, 0xFC, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x07, 0x20, 0xA0, 0xE1, 0x01, 0x34, 0xA0, 0xE3, 0xA0, 0xFC, 0xFF, 0xEB
+
+ arm_func_start MI_Copy36B
+MI_Copy36B: ; 0x020CE2E0
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ bx lr
+
+ arm_func_start MI_Copy48B
+MI_Copy48B: ; 0x020CE2FC
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ bx lr
+
+ arm_func_start MI_Copy64B
+MI_Copy64B: ; 0x020CE320
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0!, {r2-r3,r12}
+ stmia r1!, {r2-r3,r12}
+ ldmia r0, {r0,r2-r3,r12}
+ stmia r1!, {r0,r2-r3,r12}
+ bx lr
+
+ arm_func_start MI_CpuFill8
+MI_CpuFill8: ; 0x020CE34C
+ cmp r2, #0x0
+ bxeq lr
+ tst r0, #0x1
+ beq _020CE378
+ ldrh r12, [r0, #-0x1]
+ and r12, r12, #0xff
+ orr r3, r12, r1, lsl #0x8
+ strh r3, [r0, #-0x1]
+ add r0, r0, #0x1
+ subs r2, r2, #0x1
+ bxeq lr
+_020CE378:
+ cmp r2, #0x2
+ blo _020CE3C0
+ orr r1, r1, r1, lsl #0x8
+ tst r0, #0x2
+ beq _020CE398
+ strh r1, [r0], #0x2
+ subs r2, r2, #0x2
+ bxeq lr
+_020CE398:
+ orr r1, r1, r1, lsl #0x10
+ bics r3, r2, #0x3
+ beq _020CE3B8
+ sub r2, r2, r3
+ add r12, r3, r0
+_020CE3AC:
+ str r1, [r0], #0x4
+ cmp r0, r12
+ blo _020CE3AC
+_020CE3B8:
+ tst r2, #0x2
+ strneh r1, [r0], #0x2
+_020CE3C0:
+ tst r2, #0x1
+ bxeq lr
+ ldrh r3, [r0, #0x0]
+ and r3, r3, #0xff00
+ and r1, r1, #0xff
+ orr r1, r1, r3
+ strh r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start MI_CpuCopy8
+MI_CpuCopy8:
+ cmp r2, #0x0
+ bxeq lr
+ tst r1, #0x1
+ beq _020CE420
+ ldrh r12, [r1, #-0x1]
+ and r12, r12, #0xff
+ tst r0, #0x1
+ ldrneh r3, [r0, #-0x1]
+ movne r3, r3, lsr #0x8
+ ldreqh r3, [r0, #0x0]
+ orr r3, r12, r3, lsl #0x8
+ strh r3, [r1, #-0x1]
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+ subs r2, r2, #0x1
+ bxeq lr
+_020CE420:
+ eor r12, r1, r0
+ tst r12, #0x1
+ beq _020CE474
+ bic r0, r0, #0x1
+ ldrh r12, [r0], #0x2
+ mov r3, r12, lsr #0x8
+ subs r2, r2, #0x2
+ blo _020CE458
+_020CE440:
+ ldrh r12, [r0], #0x2
+ orr r12, r3, r12, lsl #0x8
+ strh r12, [r1], #0x2
+ mov r3, r12, lsr #0x10
+ subs r2, r2, #0x2
+ bhs _020CE440
+_020CE458:
+ tst r2, #0x1
+ bxeq lr
+ ldrh r12, [r1, #0x0]
+ and r12, r12, #0xff00
+ orr r12, r12, r3
+ strh r12, [r1, #0x0]
+ bx lr
+_020CE474:
+ tst r12, #0x2
+ beq _020CE4A0
+ bics r3, r2, #0x1
+ beq _020CE4EC
+ sub r2, r2, r3
+ add r12, r3, r1
+_020CE48C:
+ ldrh r3, [r0], #0x2
+ strh r3, [r1], #0x2
+ cmp r1, r12
+ blo _020CE48C
+ b _020CE4EC
+_020CE4A0:
+ cmp r2, #0x2
+ blo _020CE4EC
+ tst r1, #0x2
+ beq _020CE4C0
+ ldrh r3, [r0], #0x2
+ strh r3, [r1], #0x2
+ subs r2, r2, #0x2
+ bxeq lr
+_020CE4C0:
+ bics r3, r2, #0x3
+ beq _020CE4E0
+ sub r2, r2, r3
+ add r12, r3, r1
+_020CE4D0:
+ ldr r3, [r0], #0x4
+ str r3, [r1], #0x4
+ cmp r1, r12
+ blo _020CE4D0
+_020CE4E0:
+ tst r2, #0x2
+ ldrneh r3, [r0], #0x2
+ strneh r3, [r1], #0x2
+_020CE4EC:
+ tst r2, #0x1
+ bxeq lr
+ ldrh r2, [r1, #0x0]
+ ldrh r0, [r0, #0x0]
+ and r2, r2, #0xff00
+ and r0, r0, #0xff
+ orr r0, r2, r0
+ strh r0, [r1, #0x0]
+ bx lr
+
+ thumb_func_start MI_Zero36B
+MI_Zero36B: ; 0x020CE510
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x0
+ stmia r0!, {r1-r3}
+ stmia r0!, {r1-r3}
+ stmia r0!, {r1-r3}
+ bx lr
+
+ arm_func_start MI_SwapWord
+MI_SwapWord: ; 0x020CE520
+ swp r0, r0, [r1]
+ bx lr
+
+ arm_func_start MI_UncompressLZ8
+MI_UncompressLZ8: ; 0x020CE528
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r0], #0x4
+ mov r2, r5, lsr #0x8
+_020CE534:
+ cmp r2, #0x0
+ ble _020CE5B4
+ ldrb lr, [r0], #0x1
+ mov r4, #0x8
+_020CE544:
+ subs r4, r4, #0x1
+ blt _020CE534
+ tst lr, #0x80
+ bne _020CE568
+ ldrb r6, [r0], #0x1
+ .word 0xE1416096
+ add r1, r1, #0x1
+ sub r2, r2, #0x1
+ b _020CE5A4
+_020CE568:
+ ldrb r5, [r0, #0x0]
+ mov r6, #0x3
+ add r3, r6, r5, asr #0x4
+ ldrb r6, [r0], #0x1
+ and r5, r6, #0xf
+ mov r12, r5, lsl #0x8
+ ldrb r6, [r0], #0x1
+ orr r5, r6, r12
+ add r12, r5, #0x1
+ sub r2, r2, r3
+_020CE590:
+ ldrb r5, [r1, -r12]
+ .word 0xE1415095
+ add r1, r1, #0x1
+ subs r3, r3, #0x1
+ bgt _020CE590
+_020CE5A4:
+ cmp r2, #0x0
+ movgt lr, lr, lsl #0x1
+ bgt _020CE544
+ b _020CE534
+_020CE5B4:
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start MIi_CardDmaCopy32
+MIi_CardDmaCopy32: ; 0x020CE5BC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ mov r6, r0
+ mov r7, r3
+ mvn r1, #0x0
+ mov r4, r2
+ bl MIi_CheckAnotherAutoDMA
+ mov r0, r6
+ mov r1, r5
+ mov r2, r7
+ mov r3, #0x1000000
+ bl MIi_CheckDma0SourceAddress
+_020CE5F0:
.byte 0x00, 0x00, 0x57, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x03, 0x00, 0xA0, 0xE3, 0x96, 0x00, 0x01, 0xE0, 0x30, 0x00, 0x9F, 0xE5, 0x02, 0x10, 0x81, 0xE2
.byte 0x01, 0x11, 0x80, 0xE0, 0x00, 0x00, 0x91, 0xE5, 0x02, 0x01, 0x10, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A
.byte 0x1C, 0x30, 0x9F, 0xE5, 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1
.byte 0xEE, 0xA7, 0xFC, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xB0, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0xAF, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x03, 0x00, 0xA0, 0xE3, 0x82, 0xFC, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0xCD, 0xFC, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x02, 0x50, 0xA0, 0xE1, 0x03, 0x40, 0xA0, 0xE1, 0xCE, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0xB0, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0xAF
+
+ arm_func_start MI_Init
+MI_Init: ; 0x020CE648
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, #0x3
+ bl MI_SetWramBank
+_020CE658:
+ .byte 0x00, 0x00, 0xA0, 0xE3, 0xCD, 0xFC, 0xFF, 0xEB
+ .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start PushCommand_impl
+PushCommand_impl: ; 0x020CE66C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r0, #0x1
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl SND_AllocCommand
+_020CE68C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x70, 0x80, 0xE5
.byte 0x08, 0x60, 0x80, 0xE5, 0x0C, 0x50, 0x80, 0xE5, 0x18, 0x10, 0x9D, 0xE5, 0x10, 0x40, 0x80, 0xE5
.byte 0x14, 0x10, 0x80, 0xE5, 0xB1, 0x02, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x08, 0xC0, 0x9D, 0xE5
- .byte 0x02, 0xE0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x01, 0x20, 0xA0, 0xE1, 0x0C, 0x1C, 0x80, 0xE1
- .byte 0x0E, 0x30, 0xA0, 0xE1, 0x07, 0x00, 0xA0, 0xE3, 0xDF, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1, 0x06, 0x00, 0xA0, 0xE3, 0xD2, 0xFF, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x20, 0xA0, 0xE3, 0x02, 0x30, 0xA0, 0xE1, 0x18, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x10, 0xE0, 0xE3, 0x00, 0x20, 0x8D, 0xE5, 0xC7, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1, 0x18, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x20, 0x8D, 0xE5, 0xBC, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0xE0, 0xA0, 0xE1
- .byte 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x00, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1
- .byte 0x0C, 0x30, 0xA0, 0xE1, 0x19, 0x00, 0xA0, 0xE3, 0xAF, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x20, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x30, 0x8D, 0xE5, 0xA4, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x1F, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5
- .byte 0x99, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x1E, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5, 0x8E, 0xFF, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x18, 0xC0, 0x9D, 0xE5, 0x03, 0x3D, 0xA0, 0xE1, 0x01, 0x4C, 0x83, 0xE1
- .byte 0x24, 0x50, 0x9D, 0xE5, 0x0C, 0x3C, 0xA0, 0xE1, 0x1C, 0x10, 0x9D, 0xE5, 0x10, 0xC0, 0x9D, 0xE5
- .byte 0x05, 0x48, 0x84, 0xE1, 0x04, 0x40, 0x8C, 0xE1, 0x20, 0xE0, 0x9D, 0xE5, 0x01, 0x3B, 0x83, 0xE1
- .byte 0x14, 0xC0, 0x9D, 0xE5, 0x0E, 0x18, 0x80, 0xE1, 0x03, 0x30, 0x8C, 0xE1, 0x0E, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x40, 0x8D, 0xE5, 0x78, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x15, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5
- .byte 0x6D, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1
- .byte 0x00, 0xC0, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x14, 0x00, 0xA0, 0xE3
- .byte 0x00, 0xC0, 0x8D, 0xE5, 0x60, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x13, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5
- .byte 0x55, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x1B, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5, 0x4A, 0xFF, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x1A, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5, 0x3F, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2
- .byte 0x02, 0x40, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x18, 0x20, 0x9D, 0xE5, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x03, 0x10, 0xA0, 0xE1, 0xDD, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x8D, 0xE5, 0x06, 0x10, 0xA0, 0xE1
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start SNDi_SetTrackParam
+SNDi_SetTrackParam: ; 0x020CE6C4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r12, [sp, #0x8]
+ mov lr, r2
+ str r3, [sp, #0x0]
+ mov r2, r1
+ orr r1, r0, r12, lsl #0x18
+ mov r3, lr
+ mov r0, #0x7
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FUN_020CE6F8
+FUN_020CE6F8: ; 0x020CE6F8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0x6
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_ResetMasterPan
+SND_ResetMasterPan: ; 0x020CE72C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r3, r2
+ mov r0, #0x18
+ mvn r1, #0x0
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetMasterPan
+SND_SetMasterPan: ; 0x020CE758
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r1, r0
+ mov r3, r2
+ mov r0, #0x18
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetOutputSelector
+SND_SetOutputSelector: ; 0x020CE784
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0x19
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_InvalidateWaveData
+SND_InvalidateWaveData: ; 0x020CE7B8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x20
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_InvalidateBankData
+SND_InvalidateBankData: ; 0x020CE7E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1f
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_InvalidateSeqData
+SND_InvalidateSeqData: ; 0x020CE810
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1e
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetupChannelPcm
+SND_SetupChannelPcm: ; 0x020CE83C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r12, [sp, #0x18]
+ mov r3, r3, lsl #0x1a
+ orr r4, r3, r1, lsl #0x18
+ ldr r5, [sp, #0x24]
+ mov r3, r12, lsl #0x18
+ ldr r1, [sp, #0x1c]
+ ldr r12, [sp, #0x10]
+ orr r4, r4, r5, lsl #0x10
+ orr r4, r12, r4
+ ldr lr, [sp, #0x20]
+ orr r3, r3, r1, lsl #0x16
+ ldr r12, [sp, #0x14]
+ orr r1, r0, lr, lsl #0x10
+ orr r3, r12, r3
+ mov r0, #0xe
+ str r4, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_SetChannelPan
+SND_SetChannelPan: ; 0x020CE894
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x15
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetChannelVolume
+SND_SetChannelVolume: ; 0x020CE8C0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ mov r12, #0x0
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x14
+ str r12, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetChannelTimer
+SND_SetChannelTimer: ; 0x020CE8F4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x13
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_UnlockChannel
+SND_UnlockChannel: ; 0x020CE920
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1b
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_LockChannel
+SND_LockChannel: ; 0x020CE94C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x1a
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetupAlarm
+SND_SetupAlarm: ; 0x020CE978
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r4, r2
+ mov r5, r1
+ ldr r2, [sp, #0x18]
+ mov r6, r0
+ mov r1, r3
+ bl SNDi_SetAlarmHandler
+_020CE998:
+ .byte 0x00, 0x00, 0x8D, 0xE5, 0x06, 0x10, 0xA0, 0xE1
.byte 0x05, 0x20, 0xA0, 0xE1, 0x04, 0x30, 0xA0, 0xE1, 0x12, 0x00, 0xA0, 0xE3, 0x2E, 0xFF, 0xFF, 0xEB
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x80, 0x0F, 0xA0, 0xE1, 0x01, 0x0F, 0x80, 0xE1, 0x08, 0xC0, 0x9D, 0xE5
- .byte 0x02, 0x10, 0xA0, 0xE1, 0x8C, 0x0E, 0x80, 0xE1, 0x0C, 0x20, 0x9D, 0xE5, 0x00, 0xE0, 0xA0, 0xE3
- .byte 0x02, 0x0E, 0x80, 0xE1, 0x10, 0xC0, 0x9D, 0xE5, 0x03, 0x20, 0xA0, 0xE1, 0x8C, 0x3D, 0x80, 0xE1
- .byte 0x11, 0x00, 0xA0, 0xE3, 0x00, 0xE0, 0x8D, 0xE5, 0x1B, 0xFF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x43, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x02, 0x70, 0xA0, 0xE1, 0x00, 0x90, 0xA0, 0xE1, 0x01, 0x80, 0xA0, 0xE1, 0x03, 0x60, 0xA0, 0xE1
- .byte 0x07, 0x40, 0xA0, 0xE1, 0x00, 0x50, 0xA0, 0xE3, 0x05, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x14, 0xE2
- .byte 0x01, 0x00, 0x00, 0x0A, 0x05, 0x00, 0xA0, 0xE1, 0xC0, 0x02, 0x00, 0xEB, 0x01, 0x50, 0x85, 0xE2
- .byte 0xA4, 0x40, 0xA0, 0xE1, 0x08, 0x00, 0x55, 0xE3, 0x01, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x54, 0xE3
- .byte 0xF5, 0xFF, 0xFF, 0x1A, 0x09, 0x10, 0xA0, 0xE1, 0x08, 0x20, 0xA0, 0xE1, 0x07, 0x30, 0xA0, 0xE1
- .byte 0x0D, 0x00, 0xA0, 0xE3, 0x00, 0x60, 0x8D, 0xE5, 0xFF, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1, 0x0C, 0x00, 0xA0, 0xE3, 0xF2, 0xFE, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1, 0x00, 0xC0, 0xA0, 0xE3
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x09, 0x00, 0xA0, 0xE3, 0x00, 0xC0, 0x8D, 0xE5
- .byte 0xE5, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x02, 0x30, 0xA0, 0xE1, 0x01, 0xC0, 0xA0, 0xE3
- .byte 0x09, 0x20, 0xA0, 0xE3, 0x00, 0xC0, 0x8D, 0xE5, 0xF1, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x02, 0x30, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE3, 0x0C, 0x20, 0xA0, 0xE3, 0x00, 0xC0, 0x8D, 0xE5
- .byte 0xE7, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x0C, 0xC0, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE3, 0x01, 0x30, 0xA0, 0xE3
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0xF8, 0xE6, 0x0C, 0x02, 0x0C, 0xC0, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x06, 0x10, 0xA0, 0xE3, 0x02, 0x30, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0xF8, 0xE6, 0x0C, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x00, 0x10, 0xA0, 0xE1, 0x04, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x8D, 0xE5, 0xBA, 0xFE, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1
- .byte 0x03, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0x8D, 0xE5, 0xAF, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1, 0x02, 0x00, 0xA0, 0xE3, 0xA2, 0xFE, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0x8D, 0xE5, 0x97, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5, 0x04, 0x00, 0x9F, 0xE5
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0xA0, 0xBF, 0x0C, 0x02, 0x20, 0x38, 0x1D, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x10, 0xC0, 0x0C, 0x02, 0x20, 0x38, 0x1D, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x34, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x91, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x20, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0x81, 0xE5, 0x0A, 0xF5, 0xFF, 0xEB
- .byte 0xC8, 0x01, 0x00, 0xEB, 0x39, 0x02, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x1C, 0x38, 0x1D, 0x02, 0x20, 0x38, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9
- .byte 0xD0, 0xF3, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
+ .byte 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start SND_SetupCapture
+SND_SetupCapture: ; 0x020CE9BC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, r0, lsl #0x1f
+ orr r0, r0, r1, lsl #0x1e
+ ldr r12, [sp, #0x8]
+ mov r1, r2
+ orr r0, r0, r12, lsl #0x1d
+ ldr r2, [sp, #0xc]
+ mov lr, #0x0
+ orr r0, r0, r2, lsl #0x1c
+ ldr r12, [sp, #0x10]
+ mov r2, r3
+ orr r3, r0, r12, lsl #0x1b
+ mov r0, #0x11
+ str lr, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_StopTimer
+SND_StopTimer: ; 0x020CEA08
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r7, r2
+ mov r9, r0
+ mov r8, r1
+ mov r6, r3
+ mov r4, r7
+ mov r5, #0x0
+ b _020CEA44
+_020CEA2C:
+ ands r0, r4, #0x1
+ beq _020CEA3C
+ mov r0, r5
+ bl SNDi_IncAlarmId
+_020CEA3C:
+ add r5, r5, #0x1
+ mov r4, r4, lsr #0x1
+_020CEA44:
+ cmp r5, #0x8
+ bge _020CEA54
+ cmp r4, #0x0
+ bne _020CEA2C
+_020CEA54:
+ mov r1, r9
+ mov r2, r8
+ mov r3, r7
+ mov r0, #0xd
+ str r6, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start SND_StartTimer
+SND_StartTimer: ; 0x020CEA78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0xc
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetTrackAllocatableChannel
+SND_SetTrackAllocatableChannel: ; 0x020CEAAC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r3, r2
+ mov r12, #0x0
+ mov r1, r0
+ mov r2, lr
+ mov r0, #0x9
+ str r12, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetTrackPan
+SND_SetTrackPan: ; 0x020CEAE0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r3, r2
+ mov r12, #0x1
+ mov r2, #0x9
+ str r12, [sp, #0x0]
+ bl SNDi_SetTrackParam
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetTrackPitch
+SND_SetTrackPitch: ; 0x020CEB08
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r3, r2
+ mov r12, #0x2
+ mov r2, #0xc
+ str r12, [sp, #0x0]
+ bl SNDi_SetTrackParam
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_SetPlayerChannelPriority
+SND_SetPlayerChannelPriority: ; 0x020CEB30
+ ldr ip, _020CEB44 ; =FUN_020CE6F8
+ mov r2, r1
+ mov r1, #0x4
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020CEB44: .word FUN_020CE6F8
+
+ arm_func_start SND_SetPlayerVolume
+SND_SetPlayerVolume: ; 0x020CEB48
+ ldr ip, _020CEB5C ; =FUN_020CE6F8
+ mov r2, r1
+ mov r1, #0x6
+ mov r3, #0x2
+ bx r12
+ .balign 4
+_020CEB5C: .word FUN_020CE6F8
+
+ arm_func_start SND_PauseSeq
+SND_PauseSeq: ; 0x020CEB60
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r3, #0x0
+ mov r1, r0
+ mov r0, #0x4
+ str r3, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_StartPreparedSeq
+SND_StartPreparedSeq: ; 0x020CEB8C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r1, r0
+ mov r3, r2
+ mov r0, #0x3
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_PrepareSeq
+SND_PrepareSeq: ; 0x020CEBB8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ mov r1, r0
+ mov r2, lr
+ mov r3, r12
+ mov r0, #0x2
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SND_StopSeq
+SND_StopSeq: ; 0x020CEBEC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x0
+ mov r1, r0
+ mov r3, r2
+ mov r0, #0x1
+ str r2, [sp, #0x0]
+ bl PushCommand_impl
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start SNDi_UnlockMutex
+SNDi_UnlockMutex: ; 0x020CEC18
+ ldr ip, _020CEC24 ; =OS_UnlockMutex
+ ldr r0, _020CEC28 ; =0x021D3820
+ bx r12
+ .balign 4
+_020CEC24: .word OS_UnlockMutex
+_020CEC28: .word 0x021D3820
+
+ arm_func_start SNDi_LockMutex
+SNDi_LockMutex: ; 0x020CEC2C
+ ldr ip, _020CEC38 ; =OS_LockMutex
+ ldr r0, _020CEC3C ; =0x021D3820
+ bx r12
+ .balign 4
+_020CEC38: .word OS_LockMutex
+_020CEC3C: .word 0x021D3820
+
+ arm_func_start SND_Init
+SND_Init: ; 0x020CEC40
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020CEC84 ; =0x021D381C
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r0, _020CEC88 ; =0x021D3820
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_InitMutex
+ bl SND_CommandInit
+ bl SND_AlarmInit
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CEC84: .word 0x021D381C
+_020CEC88: .word 0x021D3820
+
+ arm_func_start IsCommandAvailable
+IsCommandAvailable:
+ stmdb sp!, {r4,lr}
+ bl OS_IsRunOnEmulator
+_020CEC94:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0x99, 0xF9, 0xFF, 0xEB, 0x20, 0x10, 0x9F, 0xE5, 0x10, 0x20, 0xA0, 0xE3
.byte 0x00, 0x20, 0x81, 0xE5, 0x00, 0x40, 0x91, 0xE5, 0x99, 0xF9, 0xFF, 0xEB, 0x00, 0x00, 0x54, 0xE3
.byte 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0xF2, 0xFF, 0x04, 0x10, 0x40, 0x2D, 0xE9, 0x8C, 0xF9, 0xFF, 0xEB, 0x40, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x40, 0x91, 0xE5, 0x00, 0x00, 0x54, 0xE3, 0x03, 0x00, 0x00, 0x1A, 0x8C, 0xF9, 0xFF, 0xEB
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0x94, 0xE5
- .byte 0x00, 0x20, 0x81, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x18, 0x10, 0x9F, 0x05, 0x00, 0x20, 0xA0, 0x03
- .byte 0x00, 0x20, 0x81, 0x05, 0x82, 0xF9, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x38, 0x38, 0x1D, 0x02, 0x48, 0x38, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x07, 0x50, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0xE4, 0x03, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x00, 0xF2, 0xFF, 0x04
+
+ arm_func_start AllocCommand
+AllocCommand: ; 0x020CECD4
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CED24 ; =0x021D3838
+ ldr r4, [r1, #0x0]
+ cmp r4, #0x0
+ bne _020CECFC
+ bl OS_RestoreInterrupts
+_020CECF0:
+ .byte 0x00, 0x00, 0xA0, 0xE3, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CECFC:
+ ldr r2, [r4, #0x0]
+ str r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldreq r1, _020CED28 ; =0x021D3848
+ moveq r2, #0x0
+ streq r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CED24: .word 0x021D3838
+_020CED28: .word 0x021D3848
+
+ arm_func_start RequestCommandProc
+RequestCommandProc: ; 0x020CED2C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, #0x7
+ mov r4, #0x0
+ mov r0, r5
+ mov r1, r4
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020CED4C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0xF9, 0xFF, 0xFF, 0xBA, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x5C, 0x10, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE3, 0x12, 0x04, 0x00, 0xEB
- .byte 0xC5, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
+
+ arm_func_start InitPXI
+InitPXI: ; 0x020CED60
+ stmdb sp!, {r4-r6,lr}
+ ldr r1, _020CEDC8 ; =PxiFifoCallback
+ mov r0, #0x7
+ bl PXI_SetFifoRecvCallback
+ bl IsCommandAvailable
+_020CED74:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x07, 0x00, 0xA0, 0xE3, 0x01, 0x10, 0xA0, 0xE3, 0x01, 0x04, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0x70, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x64, 0x60, 0xA0, 0xE3, 0x07, 0x50, 0xA0, 0xE3
.byte 0x01, 0x40, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE1, 0x74, 0xF9, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1
.byte 0x04, 0x10, 0xA0, 0xE1, 0xF6, 0x03, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF8, 0xFF, 0xFF, 0x0A
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xCC, 0xED, 0x0C, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x50, 0xA0, 0xE1, 0x4C, 0xF9, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x05, 0x00, 0xA0, 0xE1, 0xB1, 0x01, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x4C, 0xF9, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x15, 0x00, 0x00, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0x03, 0x00, 0x00, 0xEB, 0x01, 0x1C, 0x64, 0xE2
- .byte 0x00, 0x00, 0x41, 0xE0, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x3A, 0xF9, 0xFF, 0xEB, 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE3, 0x00, 0x10, 0x91, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x91, 0xE5, 0x01, 0x40, 0x84, 0xE2
- .byte 0x00, 0x00, 0x51, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A, 0x35, 0xF9, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x40, 0x38, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x2A, 0xF9, 0xFF, 0xEB, 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE3, 0x00, 0x10, 0x91, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x91, 0xE5, 0x01, 0x40, 0x84, 0xE2
- .byte 0x00, 0x00, 0x51, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A, 0x25, 0xF9, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x38, 0x38, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x19, 0xF9, 0xFF, 0xEB, 0x3C, 0x10, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5
- .byte 0x01, 0x00, 0x54, 0xE1, 0x04, 0x00, 0x00, 0x9A, 0x01, 0x10, 0x44, 0xE0, 0x02, 0x01, 0x51, 0xE3
- .byte 0x00, 0x40, 0xA0, 0x33, 0x01, 0x40, 0xA0, 0x23, 0x03, 0x00, 0x00, 0xEA, 0x04, 0x10, 0x41, 0xE0
- .byte 0x02, 0x01, 0x51, 0xE3, 0x01, 0x40, 0xA0, 0x33, 0x00, 0x40, 0xA0, 0x23, 0x10, 0xF9, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x3C, 0x38, 0x1D, 0x02
- .byte 0x10, 0x40, 0x2D, 0xE9, 0x05, 0xF9, 0xFF, 0xEB, 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x1C, 0x10, 0x9F, 0x05, 0x00, 0x40, 0x91, 0x05, 0x18, 0x10, 0x9F, 0x15
- .byte 0x00, 0x40, 0x91, 0x15, 0x02, 0xF9, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x40, 0x38, 0x1D, 0x02, 0x3C, 0x38, 0x1D, 0x02, 0x58, 0x38, 0x1D, 0x02
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0xD6, 0xFF, 0xFF, 0xEB
+ .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CEDC8: .word PxiFifoCallback
+
+ arm_func_start PxiFifoCallback
+PxiFifoCallback: ; 0x020CEDCC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, r5
+ bl SNDi_CallAlarmHandler
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_CountWaitingCommand
+SND_CountWaitingCommand: ; 0x020CEDFC
+ stmdb sp!, {r4,lr}
+ bl SND_CountFreeCommand
+ mov r4, r0
+ bl SND_CountReservedCommand
+ rsb r1, r4, #0x100
+ sub r0, r1, r0
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start SND_CountReservedCommand
+SND_CountReservedCommand: ; 0x020CEE1C
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CEE58 ; =0x021D3840
+ mov r4, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020CEE48
+_020CEE38:
+ ldr r1, [r1, #0x0]
+ add r4, r4, #0x1
+ cmp r1, #0x0
+ bne _020CEE38
+_020CEE48:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEE58: .word 0x021D3840
+
+ arm_func_start SND_CountFreeCommand
+SND_CountFreeCommand: ; 0x020CEE5C
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CEE98 ; =0x021D3838
+ mov r4, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ beq _020CEE88
+_020CEE78:
+ ldr r1, [r1, #0x0]
+ add r4, r4, #0x1
+ cmp r1, #0x0
+ bne _020CEE78
+_020CEE88:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEE98: .word 0x021D3838
+
+ arm_func_start SND_IsFinishedCommandTag
+SND_IsFinishedCommandTag:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CEEEC ; =0x021D383C
+ ldr r1, [r1, #0x0]
+ cmp r4, r1
+ bls _020CEECC
+ sub r1, r4, r1
+ cmp r1, #0x80000000
+ movcc r4, #0x0
+ movcs r4, #0x1
+ b _020CEEDC
+_020CEECC:
+ sub r1, r1, r4
+ cmp r1, #0x80000000
+ movcc r4, #0x1
+ movcs r4, #0x0
+_020CEEDC:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEEEC: .word 0x021D383C
+
+ arm_func_start SND_GetCurrentCommandTag
+SND_GetCurrentCommandTag: ; 0x020CEEF0
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ ldr r1, _020CEF24 ; =0x021D3840
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ ldreq r1, _020CEF28 ; =0x021D383C
+ ldreq r4, [r1, #0x0]
+ ldrne r1, _020CEF2C ; =0x021D3858
+ ldrne r4, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CEF24: .word 0x021D3840
+_020CEF28: .word 0x021D383C
+_020CEF2C: .word 0x021D3858
+
+ arm_func_start SND_WaitForCommandProc
+SND_WaitForCommandProc: ; 0x020CEF30
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl SND_IsFinishedCommandTag
+_020CEF40:
.byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
.byte 0x00, 0x40, 0xA0, 0xE3, 0x04, 0x00, 0xA0, 0xE1, 0xC1, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0xFB, 0xFF, 0xFF, 0x1A, 0x05, 0x00, 0xA0, 0xE1, 0xCB, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
@@ -1367,16 +6106,53 @@ _020CD33C:
.byte 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x40, 0xA0, 0xE3, 0x04, 0x00, 0xA0, 0xE1
.byte 0xAF, 0x00, 0x00, 0xEB, 0x05, 0x00, 0xA0, 0xE1, 0xBB, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0xF9, 0xFF, 0xFF, 0x0A, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x43, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0xCF, 0xF8, 0xFF, 0xEB
- .byte 0x8C, 0x11, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x10, 0x91, 0xE5, 0x00, 0x00, 0x51, 0xE3
- .byte 0x04, 0x00, 0x00, 0x1A, 0xCE, 0xF8, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x68, 0x11, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5
- .byte 0x08, 0x00, 0x51, 0xE3, 0x0C, 0x00, 0x00, 0xBA, 0x01, 0x10, 0x15, 0xE2, 0x04, 0x00, 0x00, 0x1A
- .byte 0xC3, 0xF8, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x43, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x8D, 0x00, 0x00, 0xEB, 0x34, 0x01, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0xAA, 0x28, 0x01, 0x9F, 0xE5
- .byte 0x06, 0x1B, 0xA0, 0xE3, 0x44, 0xF4, 0xFF, 0xEB, 0x14, 0x11, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x10, 0x91, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x20, 0x03, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
+
+ arm_func_start SND_FlushCommand
+SND_FlushCommand: ; 0x020CEFC0
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020CF164 ; =0x021D3840
+ mov r4, r0
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x0
+ bne _020CEFF8
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020CEFF8:
+ ldr r1, _020CF168 ; =0x021D3854
+ ldr r1, [r1, #0x0]
+ cmp r1, #0x8
+ blt _020CF03C
+ ands r1, r5, #0x1
+ bne _020CF024
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020CF024:
+ mov r0, #0x1
+ bl SND_RecvCommandReply
+ ldr r0, _020CF168 ; =0x021D3854
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x8
+ bge _020CF024
+_020CF03C:
+ ldr r0, _020CF16C ; =0x021D3B00
+ mov r1, #0x1800
+ bl DC_FlushRange
+ ldr r1, _020CF164 ; =0x021D3840
+ mov r0, #0x7
+ ldr r1, [r1, #0x0]
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020CF05C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x1E, 0x00, 0x00, 0xAA, 0x01, 0x00, 0x15, 0xE2, 0x05, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1
.byte 0xAB, 0xF8, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x43, 0xBD, 0xE8
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0xD8, 0x10, 0x9F, 0xE5, 0x07, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0x91, 0xE5
@@ -1393,14 +6169,42 @@ _020CD33C:
.byte 0x2C, 0x50, 0x9F, 0xE5, 0x00, 0xE0, 0xA0, 0xE3, 0x3C, 0x30, 0x9F, 0xE5, 0x04, 0x00, 0xA0, 0xE1
.byte 0x00, 0xE0, 0x85, 0xE5, 0x00, 0xE0, 0x83, 0xE5, 0x00, 0xC0, 0x82, 0xE5, 0x00, 0x60, 0x81, 0xE5
.byte 0x73, 0xF8, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x43, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x40, 0x38, 0x1D, 0x02, 0x54, 0x38, 0x1D, 0x02, 0x00, 0x3B, 0x1D, 0x02
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020CF164: .word 0x021D3840
+_020CF168: .word 0x021D3854
+_020CF16C: .word 0x021D3B00
+_020CF170:
.byte 0x50, 0x38, 0x1D, 0x02, 0x5C, 0x38, 0x1D, 0x02, 0x58, 0x38, 0x1D, 0x02, 0x44, 0x38, 0x1D, 0x02
- .byte 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x60, 0xF8, 0xFF, 0xEB, 0x2C, 0x20, 0x9F, 0xE5
- .byte 0x00, 0x10, 0x92, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x24, 0x10, 0x9F, 0x05, 0x00, 0x40, 0x82, 0x05
- .byte 0x00, 0x40, 0x81, 0x05, 0x00, 0x40, 0x81, 0x15, 0x00, 0x40, 0x82, 0x15, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x00, 0x10, 0x84, 0xE5, 0x5A, 0xF8, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x44, 0x38, 0x1D, 0x02, 0x40, 0x38, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1
- .byte 0xAD, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
+
+ arm_func_start SND_PushCommand
+SND_PushCommand: ; 0x020CF180
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r2, _020CF1C0 ; =0x021D3844
+ ldr r1, [r2, #0x0]
+ cmp r1, #0x0
+ ldreq r1, _020CF1C4 ; =0x021D3840
+ streq r4, [r2, #0x0]
+ streq r4, [r1, #0x0]
+ strne r4, [r1, #0x0]
+ strne r4, [r2, #0x0]
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CF1C0: .word 0x021D3844
+_020CF1C4: .word 0x021D3840
+
+ arm_func_start SND_AllocCommand
+SND_AllocCommand:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl IsCommandAvailable
+_020CF1D4:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0xBA, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x10, 0x40, 0xBD, 0x18
.byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x00, 0x14, 0xE2, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0xFC, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x09, 0x00, 0x00, 0xDA
@@ -1409,332 +6213,1393 @@ _020CD33C:
.byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x5F, 0xFF, 0xFF, 0xEB
.byte 0xB9, 0xFE, 0xFF, 0xEB, 0x01, 0x40, 0xA0, 0xE3, 0x04, 0x00, 0xA0, 0xE1, 0x04, 0x00, 0x00, 0xEB
.byte 0x9F, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x0A, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x27, 0xF8, 0xFF, 0xEB
- .byte 0x00, 0x50, 0xA0, 0xE1, 0x01, 0x00, 0x14, 0xE2, 0x10, 0x00, 0x00, 0x0A, 0xE3, 0x00, 0x00, 0xEB
- .byte 0xF8, 0x40, 0x9F, 0xE5, 0x00, 0x10, 0x94, 0xE5, 0x00, 0x00, 0x51, 0xE1, 0x15, 0x00, 0x00, 0x1A
- .byte 0x64, 0x60, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0x21, 0xF8, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x36, 0xF8, 0xFF, 0xEB, 0x19, 0xF8, 0xFF, 0xEB, 0x00, 0x50, 0xA0, 0xE1, 0xD7, 0x00, 0x00, 0xEB
- .byte 0x00, 0x10, 0x94, 0xE5, 0x00, 0x00, 0x51, 0xE1, 0xF5, 0xFF, 0xFF, 0x0A, 0x09, 0x00, 0x00, 0xEA
- .byte 0xD2, 0x00, 0x00, 0xEB, 0xB4, 0x10, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x00, 0x00, 0x51, 0xE1
- .byte 0x04, 0x00, 0x00, 0x1A, 0x05, 0x00, 0xA0, 0xE1, 0x11, 0xF8, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x94, 0x00, 0x9F, 0xE5, 0x94, 0x20, 0x9F, 0xE5
- .byte 0x00, 0x30, 0x90, 0xE5, 0x01, 0x10, 0x83, 0xE2, 0x03, 0x41, 0x92, 0xE7, 0x00, 0x10, 0x80, 0xE5
- .byte 0x08, 0x00, 0x51, 0xE3, 0x00, 0x10, 0xA0, 0xC3, 0x00, 0x10, 0x80, 0xC5, 0x00, 0x00, 0x94, 0xE5
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x91, 0xE5
- .byte 0x00, 0x00, 0x91, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A, 0x58, 0x00, 0x9F, 0xE5
- .byte 0x58, 0x30, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x40, 0x20, 0x9F, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x00, 0x40, 0x80, 0x15, 0x48, 0x00, 0x9F, 0x05, 0x00, 0xE0, 0x93, 0xE5, 0x00, 0x40, 0x80, 0x05
- .byte 0x34, 0xC0, 0x9F, 0xE5, 0x01, 0x60, 0x4E, 0xE2, 0x00, 0x00, 0x92, 0xE5, 0x00, 0x10, 0x8C, 0xE5
- .byte 0x01, 0xE0, 0x80, 0xE2, 0x05, 0x00, 0xA0, 0xE1, 0x00, 0x60, 0x83, 0xE5, 0x00, 0xE0, 0x82, 0xE5
- .byte 0xEB, 0xF7, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x3C, 0x38, 0x1D, 0x02, 0x4C, 0x38, 0x1D, 0x02, 0x5C, 0x38, 0x1D, 0x02, 0x48, 0x38, 0x1D, 0x02
- .byte 0x54, 0x38, 0x1D, 0x02, 0x38, 0x38, 0x1D, 0x02, 0xF0, 0x4F, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x6E, 0xFE, 0xFF, 0xEB, 0xCC, 0x30, 0x9F, 0xE5, 0xCC, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE3
- .byte 0x00, 0x30, 0x80, 0xE5, 0x03, 0x10, 0xA0, 0xE1, 0x18, 0x00, 0xA0, 0xE3, 0x01, 0x40, 0x84, 0xE2
- .byte 0x94, 0x10, 0x22, 0xE0, 0xFF, 0x00, 0x54, 0xE3, 0x18, 0x20, 0x83, 0xE4, 0xFA, 0xFF, 0xFF, 0xBA
- .byte 0xA8, 0x70, 0x9F, 0xE5, 0x00, 0xA0, 0xA0, 0xE3, 0xA4, 0x50, 0x9F, 0xE5, 0xA4, 0x40, 0x9F, 0xE5
- .byte 0xA4, 0xE0, 0x9F, 0xE5, 0xA4, 0xC0, 0x9F, 0xE5, 0xA4, 0x30, 0x9F, 0xE5, 0xA4, 0x10, 0x9F, 0xE5
- .byte 0xA4, 0x90, 0x9F, 0xE5, 0xA4, 0x60, 0x9F, 0xE5, 0xA4, 0x20, 0x9F, 0xE5, 0x01, 0x80, 0xA0, 0xE3
- .byte 0xA0, 0x00, 0x9F, 0xE5, 0xA0, 0xB0, 0x9F, 0xE5, 0x00, 0x90, 0x86, 0xE5, 0xE8, 0xA7, 0x87, 0xE5
- .byte 0x00, 0xA0, 0x85, 0xE5, 0x00, 0xA0, 0x84, 0xE5, 0x00, 0xA0, 0x8E, 0xE5, 0x00, 0xA0, 0x8C, 0xE5
- .byte 0x00, 0xA0, 0x83, 0xE5, 0x00, 0x80, 0x82, 0xE5, 0x00, 0xA0, 0x81, 0xE5, 0x00, 0x00, 0x8B, 0xE5
- .byte 0x56, 0x00, 0x00, 0xEB, 0x08, 0x00, 0xA0, 0xE1, 0x62, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start SND_RecvCommandReply
+SND_RecvCommandReply: ; 0x020CF264
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ mov r5, r0
+ ands r0, r4, #0x1
+ beq _020CF2C0
+ bl SNDi_GetFinishedCommandTag
+ ldr r4, _020CF380 ; =0x021D383C
+ ldr r1, [r4, #0x0]
+ cmp r1, r0
+ bne _020CF2E8
+ mov r6, #0x64
+_020CF294:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ mov r0, r6
+ bl FUN_020CD380
+ bl OS_DisableInterrupts
+ mov r5, r0
+ bl SNDi_GetFinishedCommandTag
+ ldr r1, [r4, #0x0]
+ cmp r1, r0
+ beq _020CF294
+ b _020CF2E8
+_020CF2C0:
+ bl SNDi_GetFinishedCommandTag
+ ldr r1, _020CF380 ; =0x021D383C
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ bne _020CF2E8
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020CF2DC:
+ .byte 0x00, 0x00, 0xA0, 0xE3
+ .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CF2E8:
+ ldr r0, _020CF384 ; =0x021D384C
+ ldr r2, _020CF388 ; =0x021D385C
+ ldr r3, [r0, #0x0]
+ add r1, r3, #0x1
+ ldr r4, [r2, r3, lsl #0x2]
+ str r1, [r0, #0x0]
+ cmp r1, #0x8
+ movgt r1, #0x0
+ strgt r1, [r0, #0x0]
+ ldr r0, [r4, #0x0]
+ mov r1, r4
+ cmp r0, #0x0
+ beq _020CF32C
+_020CF31C:
+ ldr r1, [r1, #0x0]
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _020CF31C
+_020CF32C:
+ ldr r0, _020CF38C ; =0x021D3848
+ ldr r3, _020CF390 ; =0x021D3854
+ ldr r0, [r0, #0x0]
+ ldr r2, _020CF380 ; =0x021D383C
+ cmp r0, #0x0
+ strne r4, [r0, #0x0]
+ ldreq r0, _020CF394 ; =0x021D3838
+ ldr lr, [r3, #0x0]
+ streq r4, [r0, #0x0]
+ ldr ip, _020CF38C ; =0x021D3848
+ sub r6, lr, #0x1
+ ldr r0, [r2, #0x0]
+ str r1, [r12, #0x0]
+ add lr, r0, #0x1
+ mov r0, r5
+ str r6, [r3, #0x0]
+ str lr, [r2, #0x0]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020CF380: .word 0x021D383C
+_020CF384: .word 0x021D384C
+_020CF388: .word 0x021D385C
+_020CF38C: .word 0x021D3848
+_020CF390: .word 0x021D3854
+_020CF394: .word 0x021D3838
+
+ arm_func_start SND_CommandInit
+SND_CommandInit: ; 0x020CF398
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ bl InitPXI
+ ldr r3, _020CF478 ; =0x021D3B00
+ ldr r0, _020CF47C ; =0x021D3838
+ mov r4, #0x0
+ str r3, [r0, #0x0]
+ mov r1, r3
+ mov r0, #0x18
+_020CF3BC:
+ add r4, r4, #0x1
+ mla r2, r4, r0, r1
+ cmp r4, #0xff
+ str r2, [r3], #0x18
+ blt _020CF3BC
+ ldr r7, _020CF480 ; =0x021D4B00
+ mov r10, #0x0
+ ldr r5, _020CF484 ; =0x021D3840
+ ldr r4, _020CF488 ; =0x021D3844
+ ldr lr, _020CF48C ; =0x021D3854
+ ldr ip, _020CF490 ; =0x021D384C
+ ldr r3, _020CF494 ; =0x021D3850
+ ldr r1, _020CF498 ; =0x021D383C
+ ldr sb, _020CF49C ; =0x021D52E8
+ ldr r6, _020CF4A0 ; =0x021D3848
+ ldr r2, _020CF4A4 ; =0x021D3858
+ mov r8, #0x1
+ ldr r0, _020CF4A8 ; =0x021D3880
+ ldr fp, _020CF4AC ; =0x021D5360
+ str r9, [r6, #0x0]
+ str r10, [r7, #0x7e8]
+ str r10, [r5, #0x0]
+ str r10, [r4, #0x0]
+ str r10, [lr, #0x0]
+ str r10, [r12, #0x0]
+ str r10, [r3, #0x0]
+ str r8, [r2, #0x0]
+ str r10, [r1, #0x0]
+ str r0, [r11, #0x0]
+ bl SNDi_InitSharedWork
+ mov r0, r8
+ bl SND_AllocCommand
+_020CF43C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x4F, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x1D, 0x20, 0xA0, 0xE3
.byte 0x0B, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0x80, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x08, 0x10, 0x80, 0xE5
.byte 0x46, 0xFF, 0xFF, 0xEB, 0x08, 0x00, 0xA0, 0xE1, 0xD4, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x3B, 0x1D, 0x02, 0x38, 0x38, 0x1D, 0x02
- .byte 0x00, 0x4B, 0x1D, 0x02, 0x40, 0x38, 0x1D, 0x02, 0x44, 0x38, 0x1D, 0x02, 0x54, 0x38, 0x1D, 0x02
- .byte 0x4C, 0x38, 0x1D, 0x02, 0x50, 0x38, 0x1D, 0x02, 0x3C, 0x38, 0x1D, 0x02, 0xE8, 0x52, 0x1D, 0x02
- .byte 0x48, 0x38, 0x1D, 0x02, 0x58, 0x38, 0x1D, 0x02, 0x80, 0x38, 0x1D, 0x02, 0x60, 0x53, 0x1D, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x4C, 0x30, 0x9F, 0xE5, 0xFF, 0x20, 0x00, 0xE2
- .byte 0x0C, 0x10, 0xA0, 0xE3, 0x92, 0x31, 0x23, 0xE0, 0x40, 0x14, 0xA0, 0xE1, 0x08, 0x00, 0xD3, 0xE5
- .byte 0xFF, 0x10, 0x01, 0xE2, 0x00, 0x00, 0x51, 0xE1, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x10, 0x93, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x04, 0xD0, 0x8D, 0x02
- .byte 0x00, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x00, 0x93, 0xE5, 0x31, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x53, 0x1D, 0x02
- .byte 0x0C, 0x30, 0xA0, 0xE3, 0x90, 0x03, 0x03, 0xE0, 0x1C, 0x00, 0x9F, 0xE5, 0x03, 0x10, 0x80, 0xE7
- .byte 0x03, 0x10, 0x80, 0xE0, 0x04, 0x20, 0x81, 0xE5, 0x08, 0x00, 0xD1, 0xE5, 0x01, 0x00, 0x80, 0xE2
- .byte 0x08, 0x00, 0xC1, 0xE5, 0x08, 0x00, 0xD1, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x53, 0x1D, 0x02
- .byte 0x14, 0x20, 0x9F, 0xE5, 0x0C, 0x10, 0xA0, 0xE3, 0x90, 0x21, 0x21, 0xE0, 0x08, 0x00, 0xD1, 0xE5
- .byte 0x01, 0x00, 0x80, 0xE2, 0x08, 0x00, 0xC1, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x53, 0x1D, 0x02
- .byte 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x02, 0x00, 0xA0, 0xE1, 0x00, 0x00, 0x81, 0xE5
- .byte 0x04, 0x00, 0x81, 0xE5, 0x01, 0x20, 0x82, 0xE2, 0x08, 0x00, 0xC1, 0xE5, 0x08, 0x00, 0x52, 0xE3
- .byte 0x0C, 0x10, 0x81, 0xE2, 0xF8, 0xFF, 0xFF, 0xBA, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x53, 0x1D, 0x02
- .byte 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE3, 0x04, 0x40, 0x80, 0xE5, 0xB8, 0x40, 0xC0, 0xE1
- .byte 0xBA, 0x40, 0xC0, 0xE1, 0x00, 0xC0, 0xA0, 0xE1, 0x00, 0x40, 0x80, 0xE5, 0x04, 0x30, 0xA0, 0xE1
- .byte 0x00, 0x20, 0xE0, 0xE3, 0x03, 0xE0, 0xA0, 0xE1, 0x40, 0x30, 0x8C, 0xE5, 0x8E, 0x10, 0x8C, 0xE0
- .byte 0x01, 0xE0, 0x8E, 0xE2, 0xB0, 0x22, 0xC1, 0xE1, 0x10, 0x00, 0x5E, 0xE3, 0xFA, 0xFF, 0xFF, 0xBA
- .byte 0x01, 0x40, 0x84, 0xE2, 0x10, 0x00, 0x54, 0xE3, 0x24, 0xC0, 0x8C, 0xE2, 0xF4, 0xFF, 0xFF, 0xBA
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0xE0, 0xE3, 0x83, 0x10, 0x80, 0xE0, 0x02, 0x1C, 0x81, 0xE2
- .byte 0x01, 0x30, 0x83, 0xE2, 0xB0, 0x26, 0xC1, 0xE1, 0x10, 0x00, 0x53, 0xE3, 0xF9, 0xFF, 0xFF, 0xBA
- .byte 0x0A, 0x1D, 0xA0, 0xE3, 0xD4, 0xF2, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x20, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE3
- .byte 0x00, 0x00, 0x90, 0xE5, 0xBE, 0xF2, 0xFF, 0xEB, 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x00, 0x00, 0x90, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x60, 0x53, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x24, 0x10, 0xA0, 0xE3, 0x90, 0x01, 0x04, 0xE0
- .byte 0x28, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x40, 0x00, 0x80, 0xE2
- .byte 0x04, 0x00, 0x80, 0xE0, 0xAE, 0xF2, 0xFF, 0xEB, 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x04, 0x00, 0x80, 0xE0, 0x40, 0x00, 0x90, 0xE5, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x60, 0x53, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x24, 0x00, 0x9F, 0xE5
- .byte 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x08, 0x00, 0x80, 0xE2, 0xA0, 0xF2, 0xFF, 0xEB
- .byte 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0xB8, 0x00, 0xD0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x60, 0x53, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x24, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5
- .byte 0x04, 0x00, 0x80, 0xE2, 0x92, 0xF2, 0xFF, 0xEB, 0x10, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x04, 0x00, 0x90, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x60, 0x53, 0x1D, 0x02, 0x60, 0x10, 0x9F, 0xE5, 0x01, 0x00, 0x50, 0xE1, 0x01, 0x00, 0xA0, 0xB1
- .byte 0x01, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0xC3, 0x4C, 0x10, 0x9F, 0xE5
- .byte 0x4C, 0x20, 0x9F, 0xE5, 0x01, 0x30, 0x80, 0xE0, 0xEF, 0x10, 0xE0, 0xE3, 0x01, 0x00, 0x50, 0xE1
- .byte 0x03, 0x20, 0xD2, 0xE7, 0x03, 0x00, 0xA0, 0xB3, 0x07, 0x00, 0x00, 0xBA, 0x77, 0x10, 0xE0, 0xE3
- .byte 0x01, 0x00, 0x50, 0xE1, 0x02, 0x00, 0xA0, 0xB3, 0x03, 0x00, 0x00, 0xBA, 0x3B, 0x10, 0xE0, 0xE3
- .byte 0x01, 0x00, 0x50, 0xE1, 0x01, 0x00, 0xA0, 0xB3, 0x00, 0x00, 0xA0, 0xA3, 0x00, 0x04, 0x82, 0xE1
- .byte 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x2D, 0xFD, 0xFF, 0xFF
- .byte 0xD3, 0x02, 0x00, 0x00, 0xAC, 0x3C, 0x10, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x50, 0xA0, 0xE1, 0x01, 0x40, 0xA0, 0xE1, 0x2B, 0xFD, 0xFF, 0xEB, 0x04, 0x01, 0x85, 0xE0
- .byte 0x3C, 0x40, 0x90, 0xE5, 0x00, 0x00, 0x54, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x02, 0x04, 0x54, 0xE3
- .byte 0x04, 0x40, 0x85, 0x30, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x40, 0xA0, 0xE3, 0x1D, 0xFD, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1
- .byte 0x19, 0xFD, 0xFF, 0xEB, 0x3C, 0x00, 0x86, 0xE2, 0x05, 0x21, 0x86, 0xE0, 0x05, 0x01, 0x80, 0xE0
- .byte 0x04, 0x10, 0xA0, 0xE3, 0x3C, 0x40, 0x82, 0xE5, 0x58, 0xF2, 0xFF, 0xEB, 0x0D, 0xFD, 0xFF, 0xEB
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x38, 0x00, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0x92, 0xE5, 0x38, 0x30, 0x90, 0xE5
- .byte 0x03, 0x00, 0x54, 0xE1, 0x6B, 0x00, 0x00, 0x2A, 0x00, 0xC0, 0xA0, 0xE3, 0x04, 0x31, 0x80, 0xE0
- .byte 0x3C, 0x40, 0x93, 0xE5, 0x00, 0x40, 0xC1, 0xE5, 0x00, 0x30, 0xD1, 0xE5, 0x10, 0x00, 0x53, 0xE3
- .byte 0x0A, 0x00, 0x00, 0xCA, 0x10, 0x00, 0x53, 0xE3, 0x1E, 0x00, 0x00, 0xAA, 0x05, 0x00, 0x53, 0xE3
- .byte 0x03, 0xF1, 0x8F, 0x90, 0x57, 0x00, 0x00, 0xEA, 0x56, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA
+ .byte 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CF478: .word 0x021D3B00
+_020CF47C: .word 0x021D3838
+_020CF480: .word 0x021D4B00
+_020CF484: .word 0x021D3840
+_020CF488: .word 0x021D3844
+_020CF48C: .word 0x021D3854
+_020CF490: .word 0x021D384C
+_020CF494: .word 0x021D3850
+_020CF498: .word 0x021D383C
+_020CF49C: .word 0x021D52E8
+_020CF4A0: .word 0x021D3848
+_020CF4A4: .word 0x021D3858
+_020CF4A8: .word 0x021D3880
+_020CF4AC: .word 0x021D5360
+
+ arm_func_start SNDi_CallAlarmHandler
+SNDi_CallAlarmHandler: ; 0x020CF4B0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, _020CF50C ; =0x021D5300
+ and r2, r0, #0xff
+ mov r1, #0xc
+ mla r3, r2, r1, r3
+ mov r1, r0, asr #0x8
+ ldrb r0, [r3, #0x8]
+ and r1, r1, #0xff
+ cmp r1, r0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldr r1, [r3, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldr r0, [r3, #0x4]
+ blx r1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF50C: .word 0x021D5300
+
+ arm_func_start SNDi_SetAlarmHandler
+SNDi_SetAlarmHandler:
+ mov r3, #0xc
+ mul r3, r0, r3
+ ldr r0, _020CF53C ; =0x021D5300
+ str r1, [r0, r3]
+ add r1, r0, r3
+ str r2, [r1, #0x4]
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x8]
+ ldrb r0, [r1, #0x8]
+ bx lr
+ .balign 4
+_020CF53C: .word 0x021D5300
+
+ arm_func_start SNDi_IncAlarmId
+SNDi_IncAlarmId: ; 0x020CF540
+ ldr r2, _020CF55C ; =0x021D5300
+ mov r1, #0xc
+ mla r1, r0, r1, r2
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x8]
+ bx lr
+ .balign 4
+_020CF55C: .word 0x021D5300
+
+ arm_func_start SND_AlarmInit
+SND_AlarmInit: ; 0x020CF560
+ ldr r1, _020CF58C ; =0x021D5300
+ mov r2, #0x0
+ mov r0, r2
+_020CF56C:
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x4]
+ add r2, r2, #0x1
+ strb r0, [r1, #0x8]
+ cmp r2, #0x8
+ add r1, r1, #0xc
+ blt _020CF56C
+ bx lr
+ .balign 4
+_020CF58C: .word 0x021D5300
+
+ arm_func_start SNDi_InitSharedWork
+SNDi_InitSharedWork: ; 0x020CF590
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+ str r4, [r0, #0x4]
+ strh r4, [r0, #0x8]
+ strh r4, [r0, #0xa]
+ mov r12, r0
+ str r4, [r0, #0x0]
+ mov r3, r4
+ mvn r2, #0x0
+_020CF5B4:
+ mov lr, r3
+ str r3, [r12, #0x40]
+_020CF5BC:
+ add r1, r12, lr, lsl #0x1
+ add lr, lr, #0x1
+ strh r2, [r1, #0x20]
+ cmp lr, #0x10
+ blt _020CF5BC
+ add r4, r4, #0x1
+ cmp r4, #0x10
+ add r12, r12, #0x24
+ blt _020CF5B4
+ mov r3, #0x0
+ mvn r2, #0x0
+_020CF5E8:
+ add r1, r0, r3, lsl #0x1
+ add r1, r1, #0x200
+ add r3, r3, #0x1
+ strh r2, [r1, #0x60]
+ cmp r3, #0x10
+ blt _020CF5E8
+ mov r1, #0x280
+ bl DC_FlushRange
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start SNDi_GetFinishedCommandTag
+SNDi_GetFinishedCommandTag: ; 0x020CF610
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CF640 ; =0x021D5360
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ bl DC_InvalidateRange
+ ldr r0, _020CF640 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF640: .word 0x021D5360
+
+ arm_func_start SND_GetPlayerTickCounter
+SND_GetPlayerTickCounter: ; 0x020CF644
+ stmdb sp!, {r4,lr}
+ mov r1, #0x24
+ mul r4, r0, r1
+ ldr r0, _020CF680 ; =0x021D5360
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x40
+ add r0, r0, r4
+ bl DC_InvalidateRange
+ ldr r0, _020CF680 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ add r0, r0, r4
+ ldr r0, [r0, #0x40]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020CF680: .word 0x021D5360
+
+ arm_func_start SND_GetChannelStatus
+SND_GetChannelStatus: ; 0x020CF684
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CF6B8 ; =0x021D5360
+ mov r1, #0x2
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x8
+ bl DC_InvalidateRange
+ ldr r0, _020CF6B8 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ ldrh r0, [r0, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF6B8: .word 0x021D5360
+
+ arm_func_start SND_GetPlayerStatus
+SND_GetPlayerStatus: ; 0x020CF6BC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020CF6F0 ; =0x021D5360
+ mov r1, #0x4
+ ldr r0, [r0, #0x0]
+ add r0, r0, #0x4
+ bl DC_InvalidateRange
+ ldr r0, _020CF6F0 ; =0x021D5360
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020CF6F0: .word 0x021D5360
+
+ arm_func_start SND_CalcChannelVolume
+SND_CalcChannelVolume: ; 0x020CF6F4
+ ldr r1, _020CF75C ; =0xFFFFFD2D
+ cmp r0, r1
+ movlt r0, r1
+ blt _020CF70C
+ cmp r0, #0x0
+ movgt r0, #0x0
+_020CF70C:
+ ldr r1, _020CF760 ; =0x000002D3
+ ldr r2, _020CF764 ; =0x02103CAC
+ add r3, r0, r1
+ mvn r1, #0xef
+ cmp r0, r1
+ ldrb r2, [r2, r3]
+ movlt r0, #0x3
+ blt _020CF74C
+ mvn r1, #0x77
+ cmp r0, r1
+ movlt r0, #0x2
+ blt _020CF74C
+ mvn r1, #0x3b
+ cmp r0, r1
+ movlt r0, #0x1
+ movge r0, #0x0
+_020CF74C:
+ orr r0, r2, r0, lsl #0x8
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bx lr
+ .balign 4
+_020CF75C: .word 0xFFFFFD2D
+_020CF760: .word 0x000002D3
+_020CF764: .word 0x02103CAC
+
+ arm_func_start SND_GetWaveDataAddress
+SND_GetWaveDataAddress: ; 0x020CF768
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ bl SNDi_LockMutex
+ add r0, r5, r4, lsl #0x2
+ ldr r4, [r0, #0x3c]
+ cmp r4, #0x0
+ beq _020CF798
+ cmp r4, #0x2000000
+ addcc r4, r5, r4
+ b _020CF79C
+_020CF798:
+ mov r4, #0x0
+_020CF79C:
+ bl SNDi_UnlockMutex
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_SetWaveDataAddress
+SND_SetWaveDataAddress: ; 0x020CF7B0
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl SNDi_LockMutex
+ add r0, r6, #0x3c
+ add r2, r6, r5, lsl #0x2
+ add r0, r0, r5, lsl #0x2
+ mov r1, #0x4
+ str r4, [r2, #0x3c]
+ bl DC_StoreRange
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start SND_GetWaveDataCount
+SND_GetWaveDataCount: ; 0x020CF7E8
+ ldr r0, [r0, #0x38]
+ bx lr
+
+ arm_func_start SND_GetNextInstData
+SND_GetNextInstData: ; 0x020CF7F0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r4, [r2, #0x0]
+ ldr r3, [r0, #0x38]
+ cmp r4, r3
+ bhs _020CF9B8
+ mov r12, #0x0
+_020CF80C:
+ add r3, r0, r4, lsl #0x2
+ ldr r4, [r3, #0x3c]
+ strb r4, [r1, #0x0]
+ ldrb r3, [r1, #0x0]
+ cmp r3, #0x10
+ bgt _020CF850
+ cmp r3, #0x10
+ bge _020CF8A8
+ cmp r3, #0x5
+ addls pc, pc, r3, lsl #0x2
+ b _020CF998
+_020CF838:
+ .byte 0x56, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA
.byte 0x05, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA
- .byte 0x11, 0x00, 0x53, 0xE3, 0x32, 0x00, 0x00, 0x0A, 0x4E, 0x00, 0x00, 0xEA, 0x24, 0x34, 0xA0, 0xE1
+_020CF850:
+ cmp r3, #0x11
+ beq _020CF924
+ b _020CF998
+_020CF85C:
+ .byte 0x24, 0x34, 0xA0, 0xE1
.byte 0x24, 0x54, 0x80, 0xE0, 0xB3, 0x40, 0x90, 0xE1, 0xB2, 0x30, 0xD5, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
.byte 0x01, 0x00, 0xA0, 0xE3, 0xB2, 0x40, 0xC1, 0xE1, 0xB4, 0x30, 0xC1, 0xE1, 0xB4, 0x40, 0xD5, 0xE1
.byte 0xB6, 0x30, 0xD5, 0xE1, 0xB6, 0x40, 0xC1, 0xE1, 0xB8, 0x30, 0xC1, 0xE1, 0xB8, 0x30, 0xD5, 0xE1
.byte 0xBA, 0x30, 0xC1, 0xE1, 0x00, 0x10, 0x92, 0xE5, 0x01, 0x10, 0x81, 0xE2, 0x00, 0x10, 0x82, 0xE5
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x54, 0x80, 0xE0, 0x14, 0x00, 0x00, 0xEA
- .byte 0x0C, 0x00, 0xA0, 0xE3, 0x9E, 0x50, 0x2C, 0xE0, 0xB2, 0x40, 0xDC, 0xE1, 0xB4, 0x30, 0xDC, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0xB0, 0x40, 0xC1, 0xE1, 0xB2, 0x30, 0xC1, 0xE1
- .byte 0xB6, 0x40, 0xDC, 0xE1, 0xB8, 0x30, 0xDC, 0xE1, 0xB4, 0x40, 0xC1, 0xE1, 0xB6, 0x30, 0xC1, 0xE1
- .byte 0xBA, 0x40, 0xDC, 0xE1, 0xBC, 0x30, 0xDC, 0xE1, 0xB8, 0x40, 0xC1, 0xE1, 0xBA, 0x30, 0xC1, 0xE1
- .byte 0x04, 0x10, 0x92, 0xE5, 0x01, 0x10, 0x81, 0xE2, 0x04, 0x10, 0x82, 0xE5, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x40, 0xD5, 0xE5, 0x00, 0x30, 0xD5, 0xE5, 0x04, 0xE0, 0x92, 0xE5
- .byte 0x03, 0x30, 0x44, 0xE0, 0x01, 0x30, 0x83, 0xE2, 0x03, 0x00, 0x5E, 0xE1, 0xE3, 0xFF, 0xFF, 0x3A
- .byte 0x1C, 0x00, 0x00, 0xEA, 0x24, 0x44, 0x80, 0xE0, 0x17, 0x00, 0x00, 0xEA, 0x03, 0xE0, 0xD4, 0xE7
- .byte 0x00, 0x00, 0x5E, 0xE3, 0x17, 0x00, 0x00, 0x0A, 0x0C, 0x00, 0xA0, 0xE3, 0x93, 0x40, 0x2E, 0xE0
- .byte 0xB8, 0xC0, 0xDE, 0xE1, 0xBA, 0x30, 0xDE, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3
- .byte 0xB0, 0xC0, 0xC1, 0xE1, 0xB2, 0x30, 0xC1, 0xE1, 0xBC, 0xC0, 0xDE, 0xE1, 0xBE, 0x30, 0xDE, 0xE1
- .byte 0xB4, 0xC0, 0xC1, 0xE1, 0xB6, 0x30, 0xC1, 0xE1, 0xB0, 0xC1, 0xDE, 0xE1, 0xB2, 0x31, 0xDE, 0xE1
- .byte 0xB8, 0xC0, 0xC1, 0xE1, 0xBA, 0x30, 0xC1, 0xE1, 0x04, 0x10, 0x92, 0xE5, 0x01, 0x10, 0x81, 0xE2
- .byte 0x04, 0x10, 0x82, 0xE5, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x30, 0x92, 0xE5
- .byte 0x08, 0x00, 0x53, 0xE3, 0xE4, 0xFF, 0xFF, 0x3A, 0x00, 0x30, 0x92, 0xE5, 0x01, 0x30, 0x83, 0xE2
- .byte 0x00, 0x30, 0x82, 0xE5, 0x04, 0xC0, 0x82, 0xE5, 0x00, 0x40, 0x92, 0xE5, 0x38, 0x30, 0x90, 0xE5
- .byte 0x03, 0x00, 0x54, 0xE1, 0x94, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0xD0, 0x4D, 0xE2, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x00, 0x10, 0x8D, 0xE5, 0x04, 0x10, 0x8D, 0xE5, 0x00, 0x10, 0x80, 0xE5, 0x04, 0x10, 0x80, 0xE5
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x8D, 0xFC, 0xFF, 0xEB, 0x18, 0x00, 0x94, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x09, 0x00, 0x00, 0x0A
- .byte 0x00, 0x50, 0xA0, 0xE3, 0x08, 0x40, 0xA0, 0xE3, 0x04, 0x60, 0x90, 0xE5, 0x04, 0x10, 0xA0, 0xE1
- .byte 0x00, 0x50, 0x80, 0xE5, 0x04, 0x50, 0x80, 0xE5, 0xC8, 0xF1, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x56, 0xE3, 0xF7, 0xFF, 0xFF, 0x1A, 0x7A, 0xFC, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x70, 0xA0, 0xE1, 0x7A, 0xFC, 0xFF, 0xEB
- .byte 0x18, 0x50, 0x87, 0xE2, 0x00, 0x60, 0xA0, 0xE3, 0x08, 0x80, 0xA0, 0xE3, 0x3C, 0x40, 0xA0, 0xE3
- .byte 0x86, 0x11, 0x87, 0xE0, 0x18, 0x00, 0x91, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x15, 0x00, 0x00, 0x0A
- .byte 0x18, 0x30, 0x90, 0xE5, 0x03, 0x00, 0x55, 0xE1, 0x04, 0x00, 0x00, 0x1A, 0x1C, 0x20, 0x91, 0xE5
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x18, 0x20, 0x80, 0xE5, 0xB0, 0xF1, 0xFF, 0xEB, 0x0D, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0x53, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x93, 0xE5, 0x00, 0x00, 0x55, 0xE1
- .byte 0x02, 0x00, 0x00, 0x0A, 0x00, 0x30, 0xA0, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A
- .byte 0x86, 0x01, 0x87, 0xE0, 0x1C, 0x20, 0x90, 0xE5, 0x03, 0x00, 0xA0, 0xE1, 0x08, 0x10, 0xA0, 0xE1
- .byte 0x04, 0x20, 0x83, 0xE5, 0xA1, 0xF1, 0xFF, 0xEB, 0x01, 0x60, 0x86, 0xE2, 0x04, 0x00, 0x56, 0xE3
- .byte 0x08, 0x50, 0x85, 0xE2, 0xE1, 0xFF, 0xFF, 0xBA, 0x52, 0xFC, 0xFF, 0xEB, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1
- .byte 0x02, 0x40, 0xA0, 0xE1, 0x50, 0xFC, 0xFF, 0xEB, 0x85, 0x31, 0x86, 0xE0, 0x18, 0x20, 0x93, 0xE5
- .byte 0x85, 0xC1, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE3, 0x1C, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x54, 0xE1
- .byte 0x02, 0x00, 0x00, 0x1A, 0x43, 0xFC, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x18, 0x10, 0x86, 0xE2, 0x18, 0x00, 0x92, 0xE5, 0x0C, 0xC0, 0x81, 0xE0, 0x00, 0x00, 0x5C, 0xE1
- .byte 0x05, 0x00, 0x00, 0x1A, 0x1C, 0x00, 0x93, 0xE5, 0x3C, 0x10, 0xA0, 0xE3, 0x18, 0x00, 0x82, 0xE5
- .byte 0x18, 0x00, 0x93, 0xE5, 0x81, 0xF1, 0xFF, 0xEB, 0x0C, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x50, 0xE3
- .byte 0x05, 0x00, 0x00, 0x0A, 0x04, 0x10, 0x90, 0xE5, 0x01, 0x00, 0x5C, 0xE1, 0x02, 0x00, 0x00, 0x0A
- .byte 0x01, 0x00, 0xA0, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A, 0x85, 0x11, 0x86, 0xE0
- .byte 0x1C, 0x20, 0x91, 0xE5, 0x08, 0x10, 0xA0, 0xE3, 0x04, 0x20, 0x80, 0xE5, 0x73, 0xF1, 0xFF, 0xEB
- .byte 0x18, 0x00, 0x86, 0xE2, 0x18, 0x10, 0x94, 0xE5, 0x85, 0x01, 0x80, 0xE0, 0x18, 0x00, 0x84, 0xE5
- .byte 0x85, 0x01, 0x86, 0xE0, 0x1C, 0x10, 0x80, 0xE5, 0x18, 0x40, 0x80, 0xE5, 0x21, 0xFC, 0xFF, 0xEB
- .byte 0x06, 0x00, 0xA0, 0xE1, 0x3C, 0x10, 0xA0, 0xE3, 0x68, 0xF1, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x3C, 0x10, 0xA0, 0xE3, 0x65, 0xF1, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0xC0, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x28, 0xFE, 0x0C, 0x02, 0xF0, 0x47, 0x2D, 0xE9
- .byte 0x08, 0xD0, 0x4D, 0xE2, 0x08, 0xA1, 0x9F, 0xE5, 0x08, 0x51, 0x9F, 0xE5, 0x08, 0x41, 0x9F, 0xE5
- .byte 0x41, 0x76, 0xA0, 0xE3, 0x00, 0x60, 0xA0, 0xE3, 0x03, 0x80, 0xE0, 0xE3, 0x02, 0x90, 0xE0, 0xE3
- .byte 0xB0, 0x00, 0xDA, 0xE1, 0x01, 0x09, 0x10, 0xE2, 0xB0, 0x00, 0xDA, 0x11, 0x09, 0x10, 0xA0, 0x11
- .byte 0x03, 0x09, 0x80, 0x13, 0xB0, 0x00, 0xCA, 0x11, 0x0A, 0x00, 0x00, 0x1A, 0xC3, 0xF5, 0xFF, 0xEB
- .byte 0xB0, 0x10, 0xDA, 0xE1, 0x01, 0x1C, 0x11, 0xE2, 0x02, 0x00, 0x00, 0x0A, 0xC4, 0xF5, 0xFF, 0xEB
- .byte 0x08, 0x10, 0xA0, 0xE1, 0x03, 0x00, 0x00, 0xEA, 0x00, 0x10, 0x97, 0xE5, 0x00, 0x10, 0x8D, 0xE5
- .byte 0xBF, 0xF5, 0xFF, 0xEB, 0x06, 0x10, 0xA0, 0xE1, 0x08, 0x00, 0x51, 0xE1, 0x08, 0xD0, 0x8D, 0x02
- .byte 0xF0, 0x47, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x02, 0x00, 0xE0, 0xE3, 0x00, 0x00, 0x51, 0xE1
- .byte 0xE6, 0xFF, 0xFF, 0x0A, 0x00, 0x10, 0x9D, 0xE5, 0x81, 0x0D, 0xA0, 0xE1, 0xA0, 0x0D, 0xB0, 0xE1
- .byte 0xE2, 0xFF, 0xFF, 0x0A, 0x00, 0x31, 0x95, 0xE7, 0x00, 0x00, 0x53, 0xE3, 0x04, 0x00, 0x00, 0x0A
- .byte 0x01, 0x2D, 0xA0, 0xE1, 0x21, 0x13, 0xA0, 0xE1, 0xA2, 0x2F, 0xA0, 0xE1, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0xDA, 0xFF, 0xFF, 0xEA, 0x01, 0x0D, 0xA0, 0xE1, 0xA0, 0x0F, 0xB0, 0xE1, 0xD7, 0xFF, 0xFF, 0x1A
- .byte 0x20, 0x00, 0x81, 0xE3, 0x00, 0x00, 0x8D, 0xE5, 0xB0, 0x00, 0xDA, 0xE1, 0x01, 0x09, 0x10, 0xE2
- .byte 0xB0, 0x00, 0xDA, 0x11, 0x03, 0x09, 0x80, 0x13, 0xB0, 0x00, 0xCA, 0x11, 0xCF, 0xFF, 0xFF, 0x1A
- .byte 0x9A, 0xF5, 0xFF, 0xEB, 0xB0, 0x10, 0xDA, 0xE1, 0x02, 0x10, 0x11, 0xE2, 0x01, 0x00, 0x00, 0x0A
- .byte 0x9B, 0xF5, 0xFF, 0xEB, 0xC9, 0xFF, 0xFF, 0xEA, 0x00, 0x10, 0x9D, 0xE5, 0x00, 0x10, 0x84, 0xE5
- .byte 0x97, 0xF5, 0xFF, 0xEB, 0xC5, 0xFF, 0xFF, 0xEA, 0x08, 0xD0, 0x8D, 0xE2, 0xF0, 0x47, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x84, 0x01, 0x00, 0x04, 0x68, 0x53, 0x1D, 0x02, 0x88, 0x01, 0x00, 0x04
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x30, 0x9D, 0xE5, 0x1F, 0x00, 0x00, 0xE2
- .byte 0x1F, 0x30, 0xC3, 0xE3, 0x00, 0xC0, 0x83, 0xE1, 0x20, 0x30, 0xCC, 0xE3, 0x01, 0x00, 0x02, 0xE2
- .byte 0x80, 0x32, 0x83, 0xE1, 0x00, 0xC0, 0x8D, 0xE5, 0x3F, 0x20, 0x03, 0xE2, 0x3F, 0x03, 0xC1, 0xE3
- .byte 0x00, 0x03, 0x82, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x6C, 0x20, 0x9F, 0xE5, 0x00, 0x00, 0x8D, 0xE5
- .byte 0xB0, 0x00, 0xD2, 0xE1, 0x01, 0x09, 0x10, 0xE2, 0xB0, 0x10, 0xD2, 0x11, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x00, 0x00, 0xE0, 0x13, 0x03, 0x19, 0x81, 0x13, 0xB0, 0x10, 0xC2, 0x11, 0x00, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x71, 0xF5, 0xFF, 0xEB, 0x3C, 0x10, 0x9F, 0xE5, 0xB0, 0x10, 0xD1, 0xE1
- .byte 0x02, 0x10, 0x11, 0xE2, 0x04, 0x00, 0x00, 0x0A, 0x71, 0xF5, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x01, 0x00, 0xE0, 0xE3, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x20, 0x9D, 0xE5
- .byte 0x18, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0x69, 0xF5, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x84, 0x01, 0x00, 0x04
- .byte 0x88, 0x01, 0x00, 0x04, 0x1C, 0x20, 0x9F, 0xE5, 0x01, 0x30, 0xA0, 0xE3, 0x01, 0x11, 0x82, 0xE0
- .byte 0x13, 0x20, 0xA0, 0xE1, 0x88, 0x03, 0x91, 0xE5, 0x00, 0x00, 0x12, 0xE0, 0x00, 0x30, 0xA0, 0x03
- .byte 0x03, 0x00, 0xA0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0xFC, 0x7F, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x4F, 0xF5, 0xFF, 0xEB
- .byte 0x48, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x55, 0xE3, 0x04, 0x51, 0x81, 0xE7, 0x05, 0x00, 0x00, 0x0A
- .byte 0x3C, 0x30, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x88, 0x23, 0x93, 0xE5, 0x11, 0x14, 0x82, 0xE1
- .byte 0x88, 0x13, 0x83, 0xE5, 0x05, 0x00, 0x00, 0xEA, 0x24, 0x30, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3
- .byte 0x11, 0x14, 0xE0, 0xE1, 0x88, 0x23, 0x93, 0xE5, 0x01, 0x10, 0x02, 0xE0, 0x88, 0x13, 0x83, 0xE5
- .byte 0x43, 0xF5, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x68, 0x53, 0x1D, 0x02, 0x00, 0xFC, 0x7F, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x36, 0xF5, 0xFF, 0xEB, 0xDC, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0xB0, 0x00, 0xD1, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x2E, 0x00, 0x00, 0x1A, 0x01, 0x20, 0xA0, 0xE3, 0xC8, 0x00, 0x9F, 0xE5
- .byte 0xB0, 0x20, 0xC1, 0xE1, 0x00, 0x20, 0xA0, 0xE3, 0x88, 0x23, 0x80, 0xE5, 0xBC, 0x00, 0x9F, 0xE5
- .byte 0x02, 0x10, 0xA0, 0xE1, 0x02, 0x11, 0x80, 0xE7, 0x01, 0x20, 0x82, 0xE2, 0x20, 0x00, 0x52, 0xE3
- .byte 0xFB, 0xFF, 0xFF, 0xBA, 0xA8, 0x20, 0x9F, 0xE5, 0xA8, 0x10, 0x9F, 0xE5, 0x01, 0x07, 0xA0, 0xE3
- .byte 0xB0, 0x20, 0xC1, 0xE1, 0xD5, 0xE7, 0xFF, 0xEB, 0x9C, 0x10, 0x9F, 0xE5, 0x01, 0x07, 0xA0, 0xE3
- .byte 0x55, 0xE8, 0xFF, 0xEB, 0x01, 0x07, 0xA0, 0xE3, 0xEF, 0xE7, 0xFF, 0xEB, 0x00, 0xC0, 0xA0, 0xE3
- .byte 0x88, 0x30, 0x9F, 0xE5, 0x0C, 0x10, 0xA0, 0xE1, 0xFA, 0x2F, 0xA0, 0xE3, 0xB0, 0x00, 0xD3, 0xE1
- .byte 0x0F, 0xE0, 0x10, 0xE2, 0x0E, 0x04, 0xA0, 0xE1, 0xB0, 0x00, 0xC3, 0xE1, 0x01, 0x00, 0x00, 0x1A
- .byte 0x04, 0x00, 0x5C, 0xE3, 0x0E, 0x00, 0x00, 0xCA, 0xB0, 0x00, 0xD3, 0xE1, 0x02, 0x50, 0xA0, 0xE1
- .byte 0x0F, 0x00, 0x00, 0xE2, 0x0E, 0x00, 0x50, 0xE1, 0x07, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x55, 0xE3
- .byte 0x01, 0xC0, 0xA0, 0xD1, 0x04, 0x00, 0x00, 0xDA, 0xB0, 0x00, 0xD3, 0xE1, 0x01, 0x50, 0x45, 0xE2
- .byte 0x0F, 0x00, 0x00, 0xE2, 0x0E, 0x00, 0x50, 0xE1, 0xF7, 0xFF, 0xFF, 0x0A, 0x01, 0xC0, 0x8C, 0xE2
- .byte 0xE9, 0xFF, 0xFF, 0xEA, 0x04, 0x00, 0xA0, 0xE1, 0x05, 0xF5, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x64, 0x53, 0x1D, 0x02, 0x00, 0xFC, 0x7F, 0x02
- .byte 0x68, 0x53, 0x1D, 0x02, 0x08, 0xC4, 0x00, 0x00, 0x84, 0x01, 0x00, 0x04, 0xBC, 0xFB, 0x0C, 0x02
- .byte 0x80, 0x01, 0x00, 0x04, 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x80, 0xA0, 0xE1, 0x0C, 0x00, 0x98, 0xE5
- .byte 0x01, 0x70, 0xA0, 0xE1, 0x01, 0x10, 0xA0, 0xE3, 0x08, 0x50, 0x98, 0xE5, 0x11, 0x47, 0xA0, 0xE1
- .byte 0x04, 0x00, 0x10, 0xE2, 0x00, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x51, 0xE3, 0x1C, 0x00, 0x95, 0x15
- .byte 0x02, 0x0C, 0x80, 0x13, 0x1C, 0x00, 0x85, 0x15, 0x1C, 0x00, 0x95, 0x05, 0x01, 0x0C, 0x80, 0x03
- .byte 0x1C, 0x00, 0x85, 0x05, 0x58, 0x00, 0x95, 0xE5, 0x04, 0x00, 0x10, 0xE0, 0x18, 0x00, 0x00, 0x0A
- .byte 0x54, 0x20, 0x95, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1, 0x32, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x60, 0xA0, 0xE1, 0x08, 0x00, 0x56, 0xE3, 0x06, 0xF1, 0x8F, 0x90, 0x11, 0x00, 0x00, 0xEA
+ .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CF8A8:
+ add r5, r0, r4, lsr #0x8
+ b _020CF904
+_020CF8B0:
+ mov r0, #0xc
+ mla r12, lr, r0, r5
+ ldrh r4, [r12, #0x2]
+ ldrh r3, [r12, #0x4]
+ add sp, sp, #0x4
+ mov r0, #0x1
+ strh r4, [r1, #0x0]
+ strh r3, [r1, #0x2]
+ ldrh r4, [r12, #0x6]
+ ldrh r3, [r12, #0x8]
+ strh r4, [r1, #0x4]
+ strh r3, [r1, #0x6]
+ ldrh r4, [r12, #0xa]
+ ldrh r3, [r12, #0xc]
+ strh r4, [r1, #0x8]
+ strh r3, [r1, #0xa]
+ ldr r1, [r2, #0x4]
+ add r1, r1, #0x1
+ str r1, [r2, #0x4]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CF904:
+ ldrb r4, [r5, #0x1]
+ ldrb r3, [r5, #0x0]
+ ldr lr, [r2, #0x4]
+ sub r3, r4, r3
+ add r3, r3, #0x1
+ cmp lr, r3
+ blo _020CF8B0
+ b _020CF998
+_020CF924:
+ add r4, r0, r4, lsr #0x8
+ b _020CF98C
+_020CF92C:
+ ldrb lr, [r4, r3]
+ cmp lr, #0x0
+ beq _020CF998
+ mov r0, #0xc
+ mla lr, r3, r0, r4
+ ldrh r12, [lr, #0x8]
+ ldrh r3, [lr, #0xa]
+ add sp, sp, #0x4
+ mov r0, #0x1
+ strh r12, [r1, #0x0]
+ strh r3, [r1, #0x2]
+ ldrh r12, [lr, #0xc]
+ ldrh r3, [lr, #0xe]
+ strh r12, [r1, #0x4]
+ strh r3, [r1, #0x6]
+ ldrh r12, [lr, #0x10]
+ ldrh r3, [lr, #0x12]
+ strh r12, [r1, #0x8]
+ strh r3, [r1, #0xa]
+ ldr r1, [r2, #0x4]
+ add r1, r1, #0x1
+ str r1, [r2, #0x4]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020CF98C:
+ ldr r3, [r2, #0x4]
+ cmp r3, #0x8
+ blo _020CF92C
+_020CF998:
+ ldr r3, [r2, #0x0]
+ add r3, r3, #0x1
+ str r3, [r2, #0x0]
+ str r12, [r2, #0x4]
+ ldr r4, [r2, #0x0]
+ ldr r3, [r0, #0x38]
+ cmp r4, r3
+ blo _020CF80C
+_020CF9B8:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start SND_GetFirstInstDataPos
+SND_GetFirstInstDataPos: ; 0x020CF9C8
+ sub sp, sp, #0x8
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ str r1, [sp, #0x4]
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ add sp, sp, #0x8
+ bx lr
+
+ arm_func_start SND_DestroyWaveArc
+SND_DestroyWaveArc: ; 0x020CF9E8
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ bl SNDi_LockMutex
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _020CFA28
+ mov r5, #0x0
+ mov r4, #0x8
+_020CFA08:
+ ldr r6, [r0, #0x4]
+ mov r1, r4
+ str r5, [r0, #0x0]
+ str r5, [r0, #0x4]
+ bl DC_StoreRange
+ mov r0, r6
+ cmp r6, #0x0
+ bne _020CFA08
+_020CFA28:
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start SND_DestroyBank
+SND_DestroyBank: ; 0x020CFA34
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ bl SNDi_LockMutex
+ add r5, r7, #0x18
+ mov r6, #0x0
+ mov r8, #0x8
+ mov r4, #0x3c
+_020CFA50:
+ add r1, r7, r6, lsl #0x3
+ ldr r0, [r1, #0x18]
+ cmp r0, #0x0
+ beq _020CFAB8
+ ldr r3, [r0, #0x18]
+ cmp r5, r3
+ bne _020CFA80
+ ldr r2, [r1, #0x1c]
+ mov r1, r4
+ str r2, [r0, #0x18]
+ bl DC_StoreRange
+ b _020CFAB8
+_020CFA80:
+ cmp r3, #0x0
+ beq _020CFAA0
+_020CFA88:
+ ldr r0, [r3, #0x4]
+ cmp r5, r0
+ beq _020CFAA0
+ mov r3, r0
+ cmp r0, #0x0
+ bne _020CFA88
+_020CFAA0:
+ add r0, r7, r6, lsl #0x3
+ ldr r2, [r0, #0x1c]
+ mov r0, r3
+ mov r1, r8
+ str r2, [r3, #0x4]
+ bl DC_StoreRange
+_020CFAB8:
+ add r6, r6, #0x1
+ cmp r6, #0x4
+ add r5, r5, #0x8
+ blt _020CFA50
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start SND_AssignWaveArc
+SND_AssignWaveArc: ; 0x020CFAD4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl SNDi_LockMutex
+ add r3, r6, r5, lsl #0x3
+ ldr r2, [r3, #0x18]
+ mov r12, r5, lsl #0x3
+ cmp r2, #0x0
+ beq _020CFB70
+ cmp r4, r2
+ bne _020CFB10
+ bl SNDi_UnlockMutex
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020CFB10:
+ add r1, r6, #0x18
+ ldr r0, [r2, #0x18]
+ add r12, r1, r12
+ cmp r12, r0
+ bne _020CFB3C
+ ldr r0, [r3, #0x1c]
+ mov r1, #0x3c
+ str r0, [r2, #0x18]
+ ldr r0, [r3, #0x18]
+ bl DC_StoreRange
+ b _020CFB70
+_020CFB3C:
+ cmp r0, #0x0
+ beq _020CFB5C
+_020CFB44:
+ ldr r1, [r0, #0x4]
+ cmp r12, r1
+ beq _020CFB5C
+ mov r0, r1
+ cmp r1, #0x0
+ bne _020CFB44
+_020CFB5C:
+ add r1, r6, r5, lsl #0x3
+ ldr r2, [r1, #0x1c]
+ mov r1, #0x8
+ str r2, [r0, #0x4]
+ bl DC_StoreRange
+_020CFB70:
+ add r0, r6, #0x18
+ ldr r1, [r4, #0x18]
+ add r0, r0, r5, lsl #0x3
+ str r0, [r4, #0x18]
+ add r0, r6, r5, lsl #0x3
+ str r1, [r0, #0x1c]
+ str r4, [r0, #0x18]
+ bl SNDi_UnlockMutex
+ mov r0, r6
+ mov r1, #0x3c
+ bl DC_StoreRange
+ mov r0, r4
+ mov r1, #0x3c
+ bl DC_StoreRange
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start PXI_Init
+PXI_Init: ; 0x020CFBB0
+ ldr ip, _020CFBB8 ; =PXI_InitFifo
+ bx r12
+ .balign 4
+_020CFBB8: .word PXI_InitFifo
+
+ arm_func_start PXIi_HandlerRecvFifoNotEmpty
+PXIi_HandlerRecvFifoNotEmpty: ; 0x020CFBBC
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x8
+ ldr sl, _020CFCD4 ; =0x04000184
+ ldr r5, _020CFCD8 ; =0x021D5368
+ ldr r4, _020CFCDC ; =0x04000188
+ mov r7, #0x4100000
+ mov r6, #0x0
+ mvn r8, #0x3
+ mvn r9, #0x2
+_020CFBE0:
+ ldrh r0, [r10, #0x0]
+ ands r0, r0, #0x4000
+ ldrneh r0, [r10, #0x0]
+ movne r1, r9
+ orrne r0, r0, #0xc000
+ strneh r0, [r10, #0x0]
+ bne _020CFC28
+ bl OS_DisableInterrupts
+ ldrh r1, [r10, #0x0]
+ ands r1, r1, #0x100
+ beq _020CFC18
+ bl OS_RestoreInterrupts
+ mov r1, r8
+ b _020CFC28
+_020CFC18:
+ ldr r1, [r7, #0x0]
+ str r1, [sp, #0x0]
+ bl OS_RestoreInterrupts
+ mov r1, r6
+_020CFC28:
+ cmp r1, r8
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4-r10,lr}
+ bxeq lr
+ mvn r0, #0x2
+ cmp r1, r0
+ beq _020CFBE0
+ ldr r1, [sp, #0x0]
+ mov r0, r1, lsl #0x1b
+ movs r0, r0, lsr #0x1b
+ beq _020CFBE0
+ ldr r3, [r5, r0, lsl #0x2]
+ cmp r3, #0x0
+ beq _020CFC74
+ mov r2, r1, lsl #0x1a
+ mov r1, r1, lsr #0x6
+ mov r2, r2, lsr #0x1f
+ blx r3
+ b _020CFBE0
+_020CFC74:
+ mov r0, r1, lsl #0x1a
+ movs r0, r0, lsr #0x1f
+ bne _020CFBE0
+ orr r0, r1, #0x20
+ str r0, [sp, #0x0]
+ ldrh r0, [r10, #0x0]
+ ands r0, r0, #0x4000
+ ldrneh r0, [r10, #0x0]
+ orrne r0, r0, #0xc000
+ strneh r0, [r10, #0x0]
+ bne _020CFBE0
+ bl OS_DisableInterrupts
+ ldrh r1, [r10, #0x0]
+ ands r1, r1, #0x2
+ beq _020CFCB8
+ bl OS_RestoreInterrupts
+ b _020CFBE0
+_020CFCB8:
+ ldr r1, [sp, #0x0]
+ str r1, [r4, #0x0]
+ bl OS_RestoreInterrupts
+ b _020CFBE0
+_020CFCC8:
+ .byte 0x08, 0xD0, 0x8D, 0xE2, 0xF0, 0x47, 0xBD, 0xE8
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020CFCD4: .word 0x04000184
+_020CFCD8: .word 0x021D5368
+_020CFCDC: .word 0x04000188
+
+ arm_func_start PXI_SendWordByFifo
+PXI_SendWordByFifo:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [sp, #0x0]
+ and r0, r0, #0x1f
+ bic r3, r3, #0x1f
+ orr r12, r3, r0
+ bic r3, r12, #0x20
+ and r0, r2, #0x1
+ orr r3, r3, r0, lsl #0x5
+ str r12, [sp, #0x0]
+ and r2, r3, #0x3f
+ bic r0, r1, #0xfc000000
+ orr r0, r2, r0, lsl #0x6
+ str r3, [sp, #0x0]
+ ldr r2, _020CFD8C ; =0x04000184
+ str r0, [sp, #0x0]
+ ldrh r0, [r2, #0x0]
+ ands r0, r0, #0x4000
+ ldrneh r1, [r2, #0x0]
+ addne sp, sp, #0x4
+ mvnne r0, #0x0
+ orrne r1, r1, #0xc000
+ strneh r1, [r2, #0x0]
+ ldmneia sp!, {lr}
+ bxne lr
+ bl OS_DisableInterrupts
+ ldr r1, _020CFD8C ; =0x04000184
+ ldrh r1, [r1, #0x0]
+ ands r1, r1, #0x2
+ beq _020CFD6C
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mvn r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020CFD6C:
+ ldr r2, [sp, #0x0]
+ ldr r1, _020CFD90 ; =0x04000188
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+_020CFD7C:
+ .byte 0x00, 0x00, 0xA0, 0xE3
+ .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020CFD8C: .word 0x04000184
+_020CFD90: .word 0x04000188
+
+ arm_func_start PXI_IsCallbackReady
+PXI_IsCallbackReady:
+ ldr r2, _020CFDB8 ; =0x027FFC00
+ mov r3, #0x1
+ add r1, r2, r1, lsl #0x2
+ mov r2, r3, lsl r0
+ ldr r0, [r1, #0x388]
+ ands r0, r2, r0
+ moveq r3, #0x0
+ mov r0, r3
+ bx lr
+ .balign 4
+_020CFDB8: .word 0x027FFC00
+
+ arm_func_start PXI_SetFifoRecvCallback
+PXI_SetFifoRecvCallback: ; 0x020CFDBC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov r5, r1
+ bl OS_DisableInterrupts
+ ldr r1, _020CFE20 ; =0x021D5368
+ cmp r5, #0x0
+ str r5, [r1, r4, lsl #0x2]
+ beq _020CFDF8
+ ldr r3, _020CFE24 ; =0x027FFC00
+ mov r1, #0x1
+ ldr r2, [r3, #0x388]
+ orr r1, r2, r1, lsl r4
+ str r1, [r3, #0x388]
+ b _020CFE10
+_020CFDF8:
+ ldr r3, _020CFE24 ; =0x027FFC00
+ mov r1, #0x1
+ mvn r1, r1, lsl r4
+ ldr r2, [r3, #0x388]
+ and r1, r2, r1
+ str r1, [r3, #0x388]
+_020CFE10:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CFE20: .word 0x021D5368
+_020CFE24: .word 0x027FFC00
+
+ arm_func_start PXI_InitFifo
+PXI_InitFifo: ; 0x020CFE28
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ bl OS_DisableInterrupts
+ ldr r1, _020CFF18 ; =0x021D5364
+ mov r4, r0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _020CFF04
+ mov r2, #0x1
+ ldr r0, _020CFF1C ; =0x027FFC00
+ strh r2, [r1, #0x0]
+ mov r2, #0x0
+ str r2, [r0, #0x388]
+ ldr r0, _020CFF20 ; =0x021D5368
+ mov r1, r2
+_020CFE64:
+ str r1, [r0, r2, lsl #0x2]
+ add r2, r2, #0x1
+ cmp r2, #0x20
+ blt _020CFE64
+ ldr r2, _020CFF24 ; =0x0000C408
+ ldr r1, _020CFF28 ; =0x04000184
+ mov r0, #0x40000
+ strh r2, [r1, #0x0]
+ bl OS_ResetRequestIrqMask
+ ldr r1, _020CFF2C ; =PXIi_HandlerRecvFifoNotEmpty
+ mov r0, #0x40000
+ bl OS_SetIrqFunction
+ mov r0, #0x40000
+ bl OS_EnableIrqMask
+ mov r12, #0x0
+ ldr r3, _020CFF30 ; =0x04000180
+ mov r1, r12
+ mov r2, #0x3e8
+_020CFEAC:
+ ldrh r0, [r3, #0x0]
+ ands lr, r0, #0xf
+ mov r0, lr, lsl #0x8
+ strh r0, [r3, #0x0]
+ bne _020CFEC8
+ cmp r12, #0x4
+ bgt _020CFF04
+_020CFEC8:
+ ldrh r0, [r3, #0x0]
+ mov r5, r2
+ and r0, r0, #0xf
+ cmp r0, lr
+ bne _020CFEFC
+_020CFEDC:
+ cmp r5, #0x0
+ movle r12, r1
+ ble _020CFEFC
+ ldrh r0, [r3, #0x0]
+ sub r5, r5, #0x1
+ and r0, r0, #0xf
+ cmp r0, lr
+ beq _020CFEDC
+_020CFEFC:
+ add r12, r12, #0x1
+ b _020CFEAC
+_020CFF04:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020CFF18: .word 0x021D5364
+_020CFF1C: .word 0x027FFC00
+_020CFF20: .word 0x021D5368
+_020CFF24: .word 0x0000C408
+_020CFF28: .word 0x04000184
+_020CFF2C: .word PXIi_HandlerRecvFifoNotEmpty
+_020CFF30: .word 0x04000180
+
+ arm_func_start FSi_TranslateCommand
+FSi_TranslateCommand:
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ ldr r0, [r8, #0xc]
+ mov r7, r1
+ mov r1, #0x1
+ ldr r5, [r8, #0x8]
+ mov r4, r1, lsl r7
+ ands r0, r0, #0x4
+ moveq r1, #0x0
+ cmp r1, #0x0
+ ldrne r0, [r5, #0x1c]
+ orrne r0, r0, #0x200
+ strne r0, [r5, #0x1c]
+ ldreq r0, [r5, #0x1c]
+ orreq r0, r0, #0x100
+ streq r0, [r5, #0x1c]
+ ldr r0, [r5, #0x58]
+ ands r0, r0, r4
+ beq _020CFFE4
+ ldr r2, [r5, #0x54]
+ mov r0, r8
+ mov r1, r7
+ blx r2
+ mov r6, r0
+ cmp r6, #0x8
+ addls pc, pc, r6, lsl #0x2
+ b _020CFFE8
+_020CFFA0:
.byte 0x07, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0x0E, 0x00, 0x00, 0xEA, 0x0D, 0x00, 0x00, 0xEA
.byte 0x03, 0x00, 0x00, 0xEA, 0x0B, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0x00, 0xEA, 0x09, 0x00, 0x00, 0xEA
.byte 0x01, 0x00, 0x00, 0xEA, 0x14, 0x60, 0x88, 0xE5, 0x06, 0x00, 0x00, 0xEA, 0x58, 0x10, 0x95, 0xE5
.byte 0x04, 0x00, 0xE0, 0xE1, 0x00, 0x00, 0x01, 0xE0, 0x58, 0x00, 0x85, 0xE5, 0x07, 0x60, 0xA0, 0xE3
- .byte 0x00, 0x00, 0x00, 0xEA, 0x07, 0x60, 0xA0, 0xE3, 0x07, 0x00, 0x56, 0xE3, 0x04, 0x00, 0x00, 0x1A
- .byte 0xB4, 0x10, 0x9F, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x11, 0x91, 0xE7, 0x31, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x60, 0xA0, 0xE1, 0x06, 0x00, 0x56, 0xE3, 0x14, 0x00, 0x00, 0x1A, 0x0C, 0x00, 0x98, 0xE5
- .byte 0x04, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x50, 0xE3
- .byte 0x1E, 0x00, 0x00, 0x0A, 0xB9, 0xF4, 0xFF, 0xEB, 0x1C, 0x10, 0x95, 0xE5, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x02, 0x0C, 0x11, 0xE2, 0x05, 0x00, 0x00, 0x0A, 0x0C, 0x60, 0x85, 0xE2, 0x06, 0x00, 0xA0, 0xE1
- .byte 0xA7, 0xEC, 0xFF, 0xEB, 0x1C, 0x00, 0x95, 0xE5, 0x02, 0x0C, 0x10, 0xE2, 0xFA, 0xFF, 0xFF, 0x1A
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x14, 0x60, 0x98, 0xE5, 0xB1, 0xF4, 0xFF, 0xEB, 0x0F, 0x00, 0x00, 0xEA
- .byte 0x0C, 0x00, 0x98, 0xE5, 0x04, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x00, 0x00, 0x50, 0xE3, 0x1C, 0x00, 0x95, 0x15, 0x02, 0x0C, 0xC0, 0x13, 0x1C, 0x00, 0x85, 0x15
- .byte 0x14, 0x60, 0x88, 0x15, 0x05, 0x00, 0x00, 0x1A, 0x1C, 0x10, 0x95, 0xE5, 0x08, 0x00, 0xA0, 0xE1
- .byte 0x01, 0x2C, 0xC1, 0xE3, 0x06, 0x10, 0xA0, 0xE1, 0x1C, 0x20, 0x85, 0xE5, 0x03, 0x00, 0x00, 0xEB
- .byte 0x06, 0x00, 0xA0, 0xE1, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x80, 0x3F, 0x10, 0x02
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x93, 0xF4, 0xFF, 0xEB
- .byte 0x00, 0x10, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x04, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x51, 0xE3
- .byte 0x04, 0x00, 0x81, 0x15, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x10, 0x80, 0x15, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x00, 0x86, 0xE5, 0x00, 0x10, 0x96, 0xE5, 0x18, 0x00, 0x86, 0xE2, 0x04, 0x10, 0x86, 0xE5
- .byte 0x0C, 0x10, 0x96, 0xE5, 0x4F, 0x10, 0xC1, 0xE3, 0x0C, 0x10, 0x86, 0xE5, 0x14, 0x50, 0x86, 0xE5
- .byte 0x57, 0xEC, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x85, 0xF4, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x10, 0x90, 0xE5
- .byte 0x24, 0x10, 0x80, 0xE5, 0x30, 0x10, 0x90, 0xE5, 0x2C, 0x10, 0x80, 0xE5, 0x34, 0x10, 0x90, 0xE5
- .byte 0x28, 0x10, 0x80, 0xE5, 0x38, 0x10, 0x90, 0xE5, 0x20, 0x10, 0x80, 0xE5, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9, 0x14, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x08, 0x10, 0x95, 0xE5, 0x34, 0x40, 0x95, 0xE5, 0x30, 0x00, 0x91, 0xE5, 0x84, 0x21, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x52, 0xE1, 0x14, 0xD0, 0x8D, 0x22, 0x01, 0x00, 0xA0, 0x23, 0x30, 0x40, 0xBD, 0x28
- .byte 0x1E, 0xFF, 0x2F, 0x21, 0x08, 0x10, 0x8D, 0xE5, 0x2C, 0x10, 0x91, 0xE5, 0x08, 0x00, 0x8D, 0xE2
- .byte 0x02, 0x30, 0x81, 0xE0, 0x00, 0x10, 0x8D, 0xE2, 0x08, 0x20, 0xA0, 0xE3, 0x0C, 0x30, 0x8D, 0xE5
- .byte 0x26, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x14, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18
+ .byte 0x00, 0x00, 0x00, 0xEA
+_020CFFE4:
+ mov r6, #0x7
+_020CFFE8:
+ cmp r6, #0x7
+ bne _020D0004
+ ldr r1, _020D00AC ; =0x02103F80
+ mov r0, r8
+ ldr r1, [r1, r7, lsl #0x2]
+ blx r1
+ mov r6, r0
+_020D0004:
+ cmp r6, #0x6
+ bne _020D0060
+ ldr r0, [r8, #0xc]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020D00A0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x200
+ beq _020D0050
+ add r6, r5, #0xc
+_020D003C:
+ mov r0, r6
+ bl OS_SleepThread
+ ldr r0, [r5, #0x1c]
+ ands r0, r0, #0x200
+ bne _020D003C
+_020D0050:
+ mov r0, r4
+ ldr r6, [r8, #0x14]
+ bl OS_RestoreInterrupts
+ b _020D00A0
+_020D0060:
+ ldr r0, [r8, #0xc]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ ldrne r0, [r5, #0x1c]
+ bicne r0, r0, #0x200
+ strne r0, [r5, #0x1c]
+ strne r6, [r8, #0x14]
+ bne _020D00A0
+ ldr r1, [r5, #0x1c]
+ mov r0, r8
+ bic r2, r1, #0x100
+ mov r1, r6
+ str r2, [r5, #0x1c]
+ bl FSi_ReleaseCommand
+_020D00A0:
+ mov r0, r6
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D00AC: .word 0x02103F80
+
+ arm_func_start FSi_ReleaseCommand
+FSi_ReleaseCommand:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x0]
+ mov r4, r0
+ ldr r0, [r6, #0x4]
+ cmp r1, #0x0
+ strne r0, [r1, #0x4]
+ cmp r0, #0x0
+ strne r1, [r0, #0x0]
+ mov r0, #0x0
+ str r0, [r6, #0x0]
+ ldr r1, [r6, #0x0]
+ add r0, r6, #0x18
+ str r1, [r6, #0x4]
+ ldr r1, [r6, #0xc]
+ bic r1, r1, #0x4f
+ str r1, [r6, #0xc]
+ str r5, [r6, #0x14]
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start FSi_CloseFileCommand
+FSi_CloseFileCommand: ; 0x020D0114
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start FSi_OpenFileDirectCommand
+FSi_OpenFileDirectCommand: ; 0x020D011C
+ ldr r1, [r0, #0x30]
+ str r1, [r0, #0x24]
+ ldr r1, [r0, #0x30]
+ str r1, [r0, #0x2c]
+ ldr r1, [r0, #0x34]
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x38]
+ str r1, [r0, #0x20]
+ mov r0, #0x0
+ bx lr
+
+ arm_func_start FSi_OpenFileFastCommand
+FSi_OpenFileFastCommand: ; 0x020D0144
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x14
+ mov r5, r0
+ ldr r1, [r5, #0x8]
+ ldr r4, [r5, #0x34]
+ ldr r0, [r1, #0x30]
+ mov r2, r4, lsl #0x3
+ cmp r2, r0
+ addcs sp, sp, #0x14
+ movcs r0, #0x1
+ ldmcsia sp!, {r4-r5,lr}
+ bxcs lr
+ str r1, [sp, #0x8]
+ ldr r1, [r1, #0x2c]
+ add r0, sp, #0x8
+ add r3, r1, r2
+ add r1, sp, #0x0
+ mov r2, #0x8
+ str r3, [sp, #0xc]
+ bl FSi_ReadTable
+_020D0194:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x14, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18
.byte 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x10, 0x9D, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x30, 0x10, 0x85, 0xE5
.byte 0x04, 0x20, 0x9D, 0xE5, 0x07, 0x10, 0xA0, 0xE3, 0x34, 0x20, 0x85, 0xE5, 0x38, 0x40, 0x85, 0xE5
.byte 0x5B, 0xFF, 0xFF, 0xEB, 0x14, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x4F, 0x2D, 0xE9, 0xE4, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x08, 0x10, 0x94, 0xE5
- .byte 0x98, 0x00, 0x8D, 0xE2, 0x30, 0xB0, 0x84, 0xE2, 0x00, 0x10, 0x8D, 0xE5, 0xA8, 0x06, 0x00, 0xEB
- .byte 0x08, 0x00, 0x94, 0xE5, 0xA0, 0x00, 0x8D, 0xE5, 0x0C, 0x00, 0x94, 0xE5, 0x20, 0x00, 0x10, 0xE2
- .byte 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x50, 0xE3, 0xB4, 0x52, 0xD4, 0x11
- .byte 0x01, 0x48, 0xA0, 0x13, 0x28, 0x00, 0x00, 0x1A, 0xB8, 0x00, 0xDB, 0xE1, 0x20, 0x40, 0x94, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0xBA, 0x50, 0xDB, 0x11, 0x23, 0x00, 0x00, 0x1A, 0x00, 0xA0, 0xA0, 0xE3
- .byte 0x0A, 0x90, 0xA0, 0xE1, 0x01, 0x58, 0xA0, 0xE3, 0x98, 0x80, 0x8D, 0xE2, 0x03, 0x60, 0xA0, 0xE3
- .byte 0x01, 0x70, 0xA0, 0xE3, 0x08, 0x00, 0xA0, 0xE1, 0x0A, 0x10, 0xA0, 0xE1, 0xEA, 0x01, 0x00, 0xEB
- .byte 0x04, 0x20, 0x8D, 0xE2, 0x00, 0x00, 0x5A, 0xE3, 0x08, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1
- .byte 0xC4, 0x90, 0x9D, 0x05, 0xC8, 0x20, 0x8D, 0xE5, 0xCC, 0x70, 0x8D, 0xE5, 0x30, 0xFF, 0xFF, 0xEB
+
+ arm_func_start FSi_GetPathCommand
+FSi_GetPathCommand: ; 0x020D01D0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xe4
+ mov r4, r0
+ ldr r1, [r4, #0x8]
+ add r0, sp, #0x98
+ add r11, r4, #0x30
+ str r1, [sp, #0x0]
+ bl FS_InitFile
+ ldr r0, [r4, #0x8]
+ str r0, [sp, #0xa0]
+ ldr r0, [r4, #0xc]
+ ands r0, r0, #0x20
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ ldrneh r5, [r4, #0x24]
+ movne r4, #0x10000
+ bne _020D02BC
+ ldrh r0, [r11, #0x8]
+ ldr r4, [r4, #0x20]
+ cmp r0, #0x0
+ ldrneh r5, [r11, #0xa]
+ bne _020D02BC
+ mov r10, #0x0
+ mov r9, r10
+ mov r5, #0x10000
+ add r8, sp, #0x98
+ mov r6, #0x3
+ mov r7, #0x1
+ mov r0, r8
+ mov r1, r10
+ bl FSi_SeekDirDirect
+ add r2, sp, #0x4
+ cmp r10, #0x0
+ mov r0, r8
+ mov r1, r6
+ ldreq r9, [sp, #0xc4]
+ str r2, [sp, #0xc8]
+ str r7, [sp, #0xcc]
+ bl FSi_TranslateCommand
+_020D0270:
.byte 0x00, 0x00, 0x50, 0xE3, 0x0B, 0x00, 0x00, 0x1A, 0x10, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3
.byte 0x03, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x9D, 0xE5, 0x04, 0x00, 0x50, 0xE1, 0xBC, 0x5B, 0xDD, 0x01
.byte 0x04, 0x00, 0x00, 0x0A, 0x08, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1, 0x24, 0xFF, 0xFF, 0xEB
.byte 0x00, 0x00, 0x50, 0xE3, 0xF3, 0xFF, 0xFF, 0x0A, 0x01, 0x08, 0x55, 0xE3, 0x02, 0x00, 0x00, 0x1A
- .byte 0x01, 0xA0, 0x8A, 0xE2, 0x09, 0x00, 0x5A, 0xE1, 0xE1, 0xFF, 0xFF, 0x3A, 0x01, 0x08, 0x55, 0xE3
- .byte 0x00, 0x00, 0xA0, 0x03, 0xB8, 0x00, 0xCB, 0x01, 0xE4, 0xD0, 0x8D, 0x02, 0x01, 0x00, 0xA0, 0x03
- .byte 0xF0, 0x4F, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0xB8, 0x00, 0xDB, 0xE1, 0x00, 0x00, 0x50, 0xE3
- .byte 0x34, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x9D, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5
- .byte 0xFF, 0x00, 0x50, 0xE3, 0x01, 0x90, 0x81, 0x92, 0x02, 0x00, 0x00, 0x9A, 0xFF, 0x0C, 0x50, 0xE3
- .byte 0x02, 0x90, 0x81, 0x92, 0x03, 0x90, 0x81, 0x82, 0x01, 0x08, 0x54, 0xE3, 0x14, 0x00, 0x9D, 0x15
- .byte 0x02, 0x90, 0x89, 0xE2, 0x00, 0x90, 0x89, 0x10, 0x05, 0xA0, 0xA0, 0xE1, 0x00, 0x00, 0x55, 0xE3
- .byte 0x21, 0x00, 0x00, 0x0A, 0x98, 0x00, 0x8D, 0xE2, 0x05, 0x10, 0xA0, 0xE1, 0xB2, 0x01, 0x00, 0xEB
- .byte 0x98, 0x80, 0x8D, 0xE2, 0x03, 0x60, 0xA0, 0xE3, 0x01, 0x70, 0xA0, 0xE3, 0xC4, 0x10, 0x9D, 0xE5
- .byte 0x08, 0x00, 0xA0, 0xE1, 0xAC, 0x01, 0x00, 0xEB, 0x04, 0x20, 0x8D, 0xE2, 0x08, 0x00, 0xA0, 0xE1
- .byte 0x06, 0x10, 0xA0, 0xE1, 0xC8, 0x20, 0x8D, 0xE5, 0xCC, 0x70, 0x8D, 0xE5, 0xF4, 0xFE, 0xFF, 0xEB
+ .byte 0x01, 0xA0, 0x8A, 0xE2, 0x09, 0x00, 0x5A, 0xE1, 0xE1, 0xFF, 0xFF, 0x3A
+_020D02BC:
+ cmp r5, #0x10000
+ moveq r0, #0x0
+ streqh r0, [r11, #0x8]
+ addeq sp, sp, #0xe4
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ ldrh r0, [r11, #0x8]
+ cmp r0, #0x0
+ bne _020D03B8
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0xff
+ addls r9, r1, #0x1
+ bls _020D0308
+ cmp r0, #0xff00
+ addls r9, r1, #0x2
+ addhi r9, r1, #0x3
+_020D0308:
+ cmp r4, #0x10000
+ ldrne r0, [sp, #0x14]
+ add r9, r9, #0x2
+ addne r9, r9, r0
+ mov r10, r5
+ cmp r5, #0x0
+ beq _020D03AC
+ add r0, sp, #0x98
+ mov r1, r5
+ bl FSi_SeekDirDirect
+ add r8, sp, #0x98
+ mov r6, #0x3
+ mov r7, #0x1
+ ldr r1, [sp, #0xc4]
+ mov r0, r8
+ bl FSi_SeekDirDirect
+ add r2, sp, #0x4
+ mov r0, r8
+ mov r1, r6
+ str r2, [sp, #0xc8]
+ str r7, [sp, #0xcc]
+ bl FSi_TranslateCommand
+_020D0360:
.byte 0x00, 0x00, 0x50, 0xE3, 0x0D, 0x00, 0x00, 0x1A, 0x10, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3
.byte 0x05, 0x00, 0x00, 0x0A, 0xB8, 0x00, 0xDD, 0xE1, 0x0A, 0x00, 0x50, 0xE1, 0x14, 0x00, 0x9D, 0x05
.byte 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0x89, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x08, 0x00, 0xA0, 0xE1
.byte 0x06, 0x10, 0xA0, 0xE1, 0xE6, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF1, 0xFF, 0xFF, 0x0A
- .byte 0xBC, 0xAB, 0xDD, 0xE1, 0x00, 0x00, 0x5A, 0xE3, 0xE3, 0xFF, 0xFF, 0x1A, 0x01, 0x00, 0x89, 0xE2
- .byte 0xB8, 0x00, 0xCB, 0xE1, 0xBA, 0x50, 0xCB, 0xE1, 0x00, 0x70, 0x9B, 0xE5, 0x00, 0x00, 0x57, 0xE3
- .byte 0xE4, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03, 0xF0, 0x4F, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0xB8, 0x60, 0xDB, 0xE1, 0x04, 0x00, 0x9B, 0xE5, 0x06, 0x00, 0x50, 0xE1, 0xE4, 0xD0, 0x8D, 0x32
- .byte 0x01, 0x00, 0xA0, 0x33, 0xF0, 0x4F, 0xBD, 0x38, 0x1E, 0xFF, 0x2F, 0x31, 0x00, 0x00, 0x9D, 0xE5
- .byte 0x00, 0x90, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0xFF, 0x00, 0x50, 0xE3, 0x01, 0x80, 0xA0, 0x93
- .byte 0x02, 0x00, 0x00, 0x9A, 0xFF, 0x0C, 0x50, 0xE3, 0x02, 0x80, 0xA0, 0x93, 0x03, 0x80, 0xA0, 0x83
- .byte 0x00, 0x00, 0x9D, 0xE5, 0x07, 0x10, 0xA0, 0xE1, 0x08, 0x20, 0xA0, 0xE1, 0xEF, 0xF7, 0xFF, 0xEB
- .byte 0x08, 0x10, 0x89, 0xE0, 0x60, 0x01, 0x9F, 0xE5, 0x01, 0x10, 0x87, 0xE0, 0x02, 0x20, 0xA0, 0xE3
- .byte 0xEA, 0xF7, 0xFF, 0xEB, 0x98, 0x00, 0x8D, 0xE2, 0x05, 0x10, 0xA0, 0xE1, 0x6E, 0x01, 0x00, 0xEB
- .byte 0x01, 0x08, 0x54, 0xE3, 0x1E, 0x00, 0x00, 0x0A, 0x04, 0x30, 0x8D, 0xE2, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x98, 0x00, 0x8D, 0xE2, 0x03, 0x10, 0xA0, 0xE3, 0xC8, 0x30, 0x8D, 0xE5, 0xCC, 0x20, 0x8D, 0xE5
- .byte 0xB3, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0x00, 0x1A, 0x98, 0x90, 0x8D, 0xE2
+ .byte 0xBC, 0xAB, 0xDD, 0xE1, 0x00, 0x00, 0x5A, 0xE3, 0xE3, 0xFF, 0xFF, 0x1A
+_020D03AC:
+ add r0, r9, #0x1
+ strh r0, [r11, #0x8]
+ strh r5, [r11, #0xa]
+_020D03B8:
+ ldr r7, [r11, #0x0]
+ cmp r7, #0x0
+ addeq sp, sp, #0xe4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ ldrh r6, [r11, #0x8]
+ ldr r0, [r11, #0x4]
+ cmp r0, r6
+ addcc sp, sp, #0xe4
+ movcc r0, #0x1
+ ldmccia sp!, {r4-r11,lr}
+ bxcc lr
+ ldr r0, [sp, #0x0]
+ mov r9, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0xff
+ movls r8, #0x1
+ bls _020D0410
+ cmp r0, #0xff00
+ movls r8, #0x2
+ movhi r8, #0x3
+_020D0410:
+ ldr r0, [sp, #0x0]
+ mov r1, r7
+ mov r2, r8
+ bl MI_CpuCopy8
+ add r1, r9, r8
+ ldr r0, _020D058C ; =0x0210682C
+ add r1, r7, r1
+ mov r2, #0x2
+ bl MI_CpuCopy8
+ add r0, sp, #0x98
+ mov r1, r5
+ bl FSi_SeekDirDirect
+ cmp r4, #0x10000
+ beq _020D04C4
+ add r3, sp, #0x4
+ mov r2, #0x0
+ add r0, sp, #0x98
+ mov r1, #0x3
+ str r3, [sp, #0xc8]
+ str r2, [sp, #0xcc]
+ bl FSi_TranslateCommand
+_020D0464:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0x00, 0x1A, 0x98, 0x90, 0x8D, 0xE2
.byte 0x03, 0x80, 0xA0, 0xE3, 0x10, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x1A
.byte 0x08, 0x00, 0x9D, 0xE5, 0x04, 0x00, 0x50, 0xE1, 0x04, 0x00, 0x00, 0x0A, 0x09, 0x00, 0xA0, 0xE1
.byte 0x08, 0x10, 0xA0, 0xE1, 0xA6, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF4, 0xFF, 0xFF, 0x0A
.byte 0x14, 0x00, 0x9D, 0xE5, 0x06, 0x10, 0x87, 0xE0, 0x01, 0x40, 0x80, 0xE2, 0x18, 0x00, 0x8D, 0xE2
.byte 0x04, 0x20, 0xA0, 0xE1, 0x04, 0x10, 0x41, 0xE0, 0xC8, 0xF7, 0xFF, 0xEB, 0x04, 0x60, 0x46, 0xE0
- .byte 0x03, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x87, 0xE0, 0x00, 0x10, 0xA0, 0xE3, 0x01, 0x10, 0x40, 0xE5
- .byte 0x01, 0x60, 0x46, 0xE2, 0x00, 0x00, 0x55, 0xE3, 0x27, 0x00, 0x00, 0x0A, 0x98, 0xA0, 0x8D, 0xE2
- .byte 0x04, 0xB0, 0x8D, 0xE2, 0x03, 0x40, 0xA0, 0xE3, 0x00, 0x90, 0xA0, 0xE3, 0x2F, 0x80, 0xA0, 0xE3
- .byte 0xC4, 0x10, 0x9D, 0xE5, 0x0A, 0x00, 0xA0, 0xE1, 0x3F, 0x01, 0x00, 0xEB, 0x06, 0x20, 0x87, 0xE0
- .byte 0x0A, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE1, 0xC8, 0xB0, 0x8D, 0xE5, 0xCC, 0x90, 0x8D, 0xE5
- .byte 0x01, 0x80, 0x42, 0xE5, 0x01, 0x60, 0x46, 0xE2, 0x85, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x03, 0x00, 0x00, 0xEA
+_020D04C4:
+ add r0, r7, r6
+ mov r1, #0x0
+ strb r1, [r0, #-0x1]
+ sub r6, r6, #0x1
+ cmp r5, #0x0
+ beq _020D057C
+ add r10, sp, #0x98
+ add r11, sp, #0x4
+ mov r4, #0x3
+ mov r9, #0x0
+ mov r8, #0x2f
+ ldr r1, [sp, #0xc4]
+ mov r0, r10
+ bl FSi_SeekDirDirect
+ add r2, r7, r6
+ mov r0, r10
+ mov r1, r4
+ str r11, [sp, #0xc8]
+ str r9, [sp, #0xcc]
+ strb r8, [r2, #-0x1]
+ sub r6, r6, #0x1
+ bl FSi_TranslateCommand
+_020D051C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x12, 0x00, 0x00, 0x1A, 0x10, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x0A, 0x00, 0x00, 0x0A
.byte 0xB8, 0x00, 0xDD, 0xE1, 0x05, 0x00, 0x50, 0xE1, 0x07, 0x00, 0x00, 0x1A, 0x14, 0x50, 0x9D, 0xE5
.byte 0x06, 0x10, 0x87, 0xE0, 0x18, 0x00, 0x8D, 0xE2, 0x05, 0x20, 0xA0, 0xE1, 0x05, 0x10, 0x41, 0xE0
.byte 0xA2, 0xF7, 0xFF, 0xEB, 0x05, 0x60, 0x46, 0xE0, 0x04, 0x00, 0x00, 0xEA, 0x0A, 0x00, 0xA0, 0xE1
.byte 0x04, 0x10, 0xA0, 0xE1, 0x72, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xEC, 0xFF, 0xFF, 0x0A
- .byte 0xBC, 0x5B, 0xDD, 0xE1, 0x00, 0x00, 0x55, 0xE3, 0xDC, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xE4, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x2C, 0x68, 0x10, 0x02
- .byte 0xF0, 0x4F, 0x2D, 0xE9, 0x9C, 0xD0, 0x4D, 0xE2, 0x00, 0xA0, 0xA0, 0xE1, 0x40, 0x20, 0x9A, 0xE5
- .byte 0x3C, 0x90, 0x9A, 0xE5, 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x20, 0x8D, 0xE5, 0x60, 0xFE, 0xFF, 0xEB
- .byte 0x00, 0x10, 0xD9, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x70, 0x00, 0x00, 0x0A, 0x02, 0x00, 0xA0, 0xE3
- .byte 0x1C, 0xB0, 0x8D, 0xE2, 0x03, 0x40, 0xA0, 0xE3, 0x01, 0x50, 0xA0, 0xE3, 0x00, 0x60, 0xA0, 0xE3
- .byte 0x04, 0x00, 0x8D, 0xE5, 0x06, 0x70, 0xA0, 0xE1, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x70, 0x87, 0xE2
- .byte 0x07, 0x80, 0xD9, 0xE7, 0x06, 0x00, 0xA0, 0xE1, 0x00, 0x00, 0x58, 0xE3, 0x03, 0x00, 0x00, 0x0A
- .byte 0x2F, 0x00, 0x58, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x5C, 0x00, 0x58, 0xE3, 0x05, 0x00, 0xA0, 0x11
- .byte 0x00, 0x00, 0x50, 0xE3, 0xF4, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x58, 0xE3, 0x02, 0x00, 0x00, 0x1A
- .byte 0x00, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x0A, 0x05, 0x80, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x57, 0xE3, 0x9C, 0xD0, 0x8D, 0x02, 0x01, 0x00, 0xA0, 0x03, 0xF0, 0x4F, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x2E, 0x00, 0x51, 0xE3, 0x13, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x57, 0xE3
- .byte 0x01, 0x90, 0x89, 0x02, 0x46, 0x00, 0x00, 0x0A, 0x01, 0x00, 0xD9, 0xE5, 0x02, 0x00, 0x57, 0xE3
- .byte 0x05, 0x10, 0xA0, 0x01, 0x06, 0x10, 0xA0, 0x11, 0x2E, 0x00, 0x50, 0xE3, 0x05, 0x00, 0xA0, 0x01
- .byte 0x06, 0x00, 0xA0, 0x11, 0x00, 0x00, 0x11, 0xE0, 0x07, 0x00, 0x00, 0x0A, 0xB4, 0x02, 0xDA, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x2C, 0x10, 0x9A, 0xE5, 0x0A, 0x00, 0xA0, 0xE1
- .byte 0xDD, 0x00, 0x00, 0xEB, 0x02, 0x90, 0x89, 0xE2, 0x35, 0x00, 0x00, 0xEA, 0x7F, 0x00, 0x57, 0xE3
- .byte 0x9C, 0xD0, 0x8D, 0xC2, 0x01, 0x00, 0xA0, 0xC3, 0xF0, 0x4F, 0xBD, 0xC8, 0x1E, 0xFF, 0x2F, 0xC1
- .byte 0x08, 0x00, 0x8D, 0xE2, 0x30, 0x00, 0x8A, 0xE5, 0x34, 0x60, 0x8A, 0xE5, 0x0A, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x1E, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x9C, 0xD0, 0x8D, 0x12
+ .byte 0xBC, 0x5B, 0xDD, 0xE1, 0x00, 0x00, 0x55, 0xE3, 0xDC, 0xFF, 0xFF, 0x1A
+_020D057C:
+ mov r0, #0x0
+ add sp, sp, #0xe4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D058C: .word 0x0210682C
+
+ arm_func_start FSi_FindPathCommand
+FSi_FindPathCommand: ; 0x020D0590
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x9c
+ mov r10, r0
+ ldr r2, [r10, #0x40]
+ ldr r9, [r10, #0x3c]
+ mov r1, #0x2
+ str r2, [sp, #0x0]
+ bl FSi_TranslateCommand
+ ldrb r1, [r9, #0x0]
+ cmp r1, #0x0
+ beq _020D0780
+ mov r0, #0x2
+ add r11, sp, #0x1c
+ mov r4, #0x3
+ mov r5, #0x1
+ mov r6, #0x0
+ str r0, [sp, #0x4]
+_020D05D4:
+ mov r7, r6
+ b _020D05E0
+_020D05DC:
+ add r7, r7, #0x1
+_020D05E0:
+ ldrb r8, [r9, r7]
+ mov r0, r6
+ cmp r8, #0x0
+ beq _020D0600
+ cmp r8, #0x2f
+ beq _020D0600
+ cmp r8, #0x5c
+ movne r0, r5
+_020D0600:
+ cmp r0, #0x0
+ bne _020D05DC
+ cmp r8, #0x0
+ bne _020D061C
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _020D0620
+_020D061C:
+ mov r8, r5
+_020D0620:
+ cmp r7, #0x0
+ addeq sp, sp, #0x9c
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r11,lr}
+ bxeq lr
+ cmp r1, #0x2e
+ bne _020D068C
+ cmp r7, #0x1
+ addeq r9, r9, #0x1
+ beq _020D0764
+ ldrb r0, [r9, #0x1]
+ cmp r7, #0x2
+ moveq r1, r5
+ movne r1, r6
+ cmp r0, #0x2e
+ moveq r0, r5
+ movne r0, r6
+ ands r0, r1, r0
+ beq _020D068C
+ ldrh r0, [r10, #0x24]
+ cmp r0, #0x0
+ beq _020D0684
+ ldr r1, [r10, #0x2c]
+ mov r0, r10
+ bl FSi_SeekDirDirect
+_020D0684:
+ add r9, r9, #0x2
+ b _020D0764
+_020D068C:
+ cmp r7, #0x7f
+ addgt sp, sp, #0x9c
+ movgt r0, #0x1
+ ldmgtia sp!, {r4-r11,lr}
+ bxgt lr
+ add r0, sp, #0x8
+ str r0, [r10, #0x30]
+ str r6, [r10, #0x34]
+ mov r0, r10
+ mov r1, r4
+ bl FSi_TranslateCommand
+_020D06B8:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x9C, 0xD0, 0x8D, 0x12
.byte 0x01, 0x00, 0xA0, 0x13, 0xF0, 0x4F, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x14, 0x00, 0x9D, 0xE5
.byte 0x00, 0x00, 0x58, 0xE1, 0xF4, 0xFF, 0xFF, 0x1A, 0x18, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x57, 0xE1
.byte 0xF1, 0xFF, 0xFF, 0x1A, 0x09, 0x00, 0xA0, 0xE1, 0x0B, 0x10, 0xA0, 0xE1, 0x07, 0x20, 0xA0, 0xE1
@@ -1745,14 +7610,44 @@ _020CD33C:
.byte 0x9C, 0xD0, 0x8D, 0x12, 0x01, 0x00, 0xA0, 0x13, 0xF0, 0x4F, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
.byte 0x44, 0x30, 0x9A, 0xE5, 0x08, 0x20, 0x9D, 0xE5, 0x0C, 0x10, 0x9D, 0xE5, 0x9C, 0xD0, 0x8D, 0xE2
.byte 0x00, 0x20, 0x83, 0xE5, 0x04, 0x10, 0x83, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xD9, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0xA0, 0x11
- .byte 0x06, 0x00, 0xA0, 0x01, 0x00, 0x10, 0xF9, 0xE7, 0x00, 0x00, 0x51, 0xE3, 0x94, 0xFF, 0xFF, 0x1A
- .byte 0x00, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x20, 0x00, 0x8A, 0x12
- .byte 0x44, 0x30, 0x9A, 0x15, 0x07, 0x00, 0x90, 0x18, 0x07, 0x00, 0x83, 0x18, 0x00, 0x00, 0xA0, 0x13
- .byte 0x9C, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x0C, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0x30, 0x40, 0x95, 0xE5, 0x08, 0x10, 0x95, 0xE5
- .byte 0x04, 0x00, 0x8D, 0xE2, 0x04, 0x10, 0x8D, 0xE5, 0x28, 0x30, 0x95, 0xE5, 0x00, 0x10, 0x8D, 0xE2
- .byte 0x01, 0x20, 0xA0, 0xE3, 0x08, 0x30, 0x8D, 0xE5, 0x94, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020D0764:
+ ldrb r0, [r9, #0x0]
+ cmp r0, #0x0
+ movne r0, r5
+ moveq r0, r6
+ ldrb r1, [r9, r0]!
+ cmp r1, #0x0
+ bne _020D05D4
+_020D0780:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ addne r0, r10, #0x20
+ ldrne r3, [r10, #0x44]
+ ldmneia r0, {r0-r2}
+ stmneia r3, {r0-r2}
+ movne r0, #0x0
+ add sp, sp, #0x9c
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+
+ arm_func_start FSi_ReadDirCommand
+FSi_ReadDirCommand: ; 0x020D07AC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ ldr r4, [r5, #0x30]
+ ldr r1, [r5, #0x8]
+ add r0, sp, #0x4
+ str r1, [sp, #0x4]
+ ldr r3, [r5, #0x28]
+ add r1, sp, #0x0
+ mov r2, #0x1
+ str r3, [sp, #0x8]
+ bl FSi_ReadTable
+_020D07DC:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x0C, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x10, 0xDD, 0xE5
.byte 0x7F, 0x20, 0x01, 0xE2, 0xC1, 0x13, 0xA0, 0xE1, 0x10, 0x20, 0x84, 0xE5, 0x01, 0x10, 0x01, 0xE2
.byte 0x0C, 0x10, 0x84, 0xE5, 0x10, 0x20, 0x94, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x0C, 0xD0, 0x8D, 0x02
@@ -1769,87 +7664,375 @@ _020CD33C:
.byte 0x08, 0x20, 0x84, 0xE5, 0x06, 0x00, 0x00, 0xEA, 0x08, 0x10, 0x95, 0xE5, 0x00, 0x10, 0x84, 0xE5
.byte 0xB6, 0x12, 0xD5, 0xE1, 0x04, 0x10, 0x84, 0xE5, 0xB6, 0x12, 0xD5, 0xE1, 0x01, 0x10, 0x81, 0xE2
.byte 0xB6, 0x12, 0xC5, 0xE1, 0x08, 0x10, 0x9D, 0xE5, 0x28, 0x10, 0x85, 0xE5, 0x0C, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xFF, 0x0F, 0x00, 0x00, 0x70, 0x40, 0x2D, 0xE9
- .byte 0x10, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1, 0x08, 0x50, 0x96, 0xE5, 0x30, 0x40, 0x86, 0xE2
- .byte 0x08, 0x50, 0x8D, 0xE5, 0xB4, 0x10, 0xD4, 0xE1, 0x34, 0x20, 0x95, 0xE5, 0x08, 0x00, 0x8D, 0xE2
- .byte 0x81, 0x31, 0x82, 0xE0, 0x00, 0x10, 0x8D, 0xE2, 0x08, 0x20, 0xA0, 0xE3, 0x0C, 0x30, 0x8D, 0xE5
- .byte 0x42, 0x00, 0x00, 0xEB, 0x00, 0x30, 0xB0, 0xE1, 0x12, 0x00, 0x00, 0x1A, 0x20, 0xC0, 0x86, 0xE2
- .byte 0x07, 0x00, 0x94, 0xE8, 0x07, 0x00, 0x8C, 0xE8, 0xB6, 0x00, 0xD4, 0xE1, 0x00, 0x00, 0x50, 0xE3
- .byte 0x08, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x94, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x1A
- .byte 0xB4, 0x00, 0xDD, 0xE1, 0xB6, 0x02, 0xC6, 0xE1, 0x34, 0x10, 0x95, 0xE5, 0x00, 0x00, 0x9D, 0xE5
- .byte 0x00, 0x00, 0x81, 0xE0, 0x28, 0x00, 0x86, 0xE5, 0xB6, 0x10, 0xDD, 0xE1, 0x14, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x01, 0xE0, 0x2C, 0x00, 0x86, 0xE5, 0x03, 0x00, 0xA0, 0xE1, 0x10, 0xD0, 0x8D, 0xE2
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x2C, 0x20, 0x90, 0xE5, 0x38, 0x30, 0x90, 0xE5, 0x08, 0xE0, 0x90, 0xE5
- .byte 0x30, 0x10, 0x90, 0xE5, 0x03, 0xC0, 0x82, 0xE0, 0x2C, 0xC0, 0x80, 0xE5, 0x4C, 0xC0, 0x9E, 0xE5
- .byte 0x0E, 0x00, 0xA0, 0xE1, 0x3C, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x2C, 0x20, 0x90, 0xE5
- .byte 0x38, 0x30, 0x90, 0xE5, 0x08, 0xE0, 0x90, 0xE5, 0x30, 0x10, 0x90, 0xE5, 0x03, 0xC0, 0x82, 0xE0
- .byte 0x2C, 0xC0, 0x80, 0xE5, 0x48, 0xC0, 0x9E, 0xE5, 0x0E, 0x00, 0xA0, 0xE1, 0x3C, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x30, 0x90, 0xE5
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x04, 0x30, 0x83, 0xE3, 0x0C, 0x30, 0x80, 0xE5, 0x08, 0x30, 0x90, 0xE5
- .byte 0x14, 0xC0, 0x9F, 0xE5, 0x30, 0x30, 0x80, 0xE5, 0x38, 0x20, 0x80, 0xE5, 0xB6, 0x23, 0xC0, 0xE1
- .byte 0xB4, 0x13, 0xC0, 0xE1, 0x02, 0x10, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0x34, 0xFF, 0x0C, 0x02
- .byte 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x70, 0xA0, 0xE1, 0x00, 0x50, 0x97, 0xE5, 0x02, 0x60, 0xA0, 0xE1
- .byte 0x1C, 0x20, 0x95, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x02, 0x2C, 0x82, 0xE3, 0x1C, 0x20, 0x85, 0xE5
- .byte 0x04, 0x20, 0x97, 0xE5, 0x50, 0x40, 0x95, 0xE5, 0x06, 0x30, 0xA0, 0xE1, 0x34, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A
- .byte 0x06, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x12, 0x00, 0x00, 0xEA, 0x1C, 0x10, 0x95, 0xE5
- .byte 0x02, 0x1C, 0xC1, 0xE3, 0x1C, 0x10, 0x85, 0xE5, 0x0E, 0x00, 0x00, 0xEA, 0x1F, 0xF2, 0xFF, 0xEB
- .byte 0x1C, 0x10, 0x95, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x02, 0x0C, 0x11, 0xE2, 0x05, 0x00, 0x00, 0x0A
- .byte 0x0C, 0x80, 0x85, 0xE2, 0x08, 0x00, 0xA0, 0xE1, 0x0D, 0xEA, 0xFF, 0xEB, 0x1C, 0x00, 0x95, 0xE5
- .byte 0x02, 0x0C, 0x10, 0xE2, 0xFA, 0xFF, 0xFF, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0x18, 0xF2, 0xFF, 0xEB
- .byte 0x24, 0x00, 0x95, 0xE5, 0x14, 0x00, 0x90, 0xE5, 0x04, 0x10, 0x97, 0xE5, 0x06, 0x10, 0x81, 0xE0
- .byte 0x04, 0x10, 0x87, 0xE5, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x00, 0x52, 0xE3, 0x00, 0xE0, 0xA0, 0xE3, 0x0F, 0x00, 0x00, 0x9A
- .byte 0x0E, 0xC0, 0xD0, 0xE7, 0x0E, 0x30, 0xD1, 0xE7, 0x41, 0xC0, 0x4C, 0xE2, 0x19, 0x00, 0x5C, 0xE3
- .byte 0x41, 0x30, 0x43, 0xE2, 0x20, 0xC0, 0x8C, 0x92, 0x19, 0x00, 0x53, 0xE3, 0x20, 0x30, 0x83, 0x92
- .byte 0x03, 0x00, 0x5C, 0xE1, 0x04, 0xD0, 0x8D, 0x12, 0x03, 0x00, 0x4C, 0x10, 0x00, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0xE0, 0x8E, 0xE2, 0x02, 0x00, 0x5E, 0xE1, 0xEF, 0xFF, 0xFF, 0x3A
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x1C, 0x00, 0x94, 0xE5, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x0C, 0x10, 0xE2, 0x0C, 0x00, 0x00, 0x0A, 0x1C, 0x20, 0x94, 0xE5, 0x24, 0x00, 0x94, 0xE5
- .byte 0x01, 0x2C, 0xC2, 0xE3, 0x1C, 0x20, 0x84, 0xE5, 0x50, 0xFD, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x40, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x13, 0x02, 0x00, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x50, 0x94, 0xE5
- .byte 0xDE, 0xF1, 0xFF, 0xEB, 0x14, 0x60, 0x85, 0xE5, 0x1C, 0x10, 0x94, 0xE5, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x02, 0x1C, 0xC1, 0xE3, 0x0C, 0x00, 0x84, 0xE2, 0x1C, 0x10, 0x84, 0xE5, 0xAC, 0xE9, 0xFF, 0xEB
- .byte 0x05, 0x00, 0xA0, 0xE1, 0xDA, 0xF1, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x52, 0xE3, 0x00, 0x10, 0xA0, 0x03, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x51, 0xE3
- .byte 0x00, 0x20, 0xA0, 0x03, 0x54, 0x10, 0x80, 0xE5, 0x58, 0x20, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x60, 0xA0, 0xE3
- .byte 0xC6, 0xF1, 0xFF, 0xEB, 0x1C, 0x10, 0x94, 0xE5, 0x00, 0x50, 0xA0, 0xE1, 0x08, 0x00, 0x11, 0xE2
- .byte 0x01, 0x00, 0xA0, 0x13, 0x06, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x70, 0xA0, 0x03
- .byte 0x00, 0x70, 0xA0, 0x13, 0x00, 0x00, 0x57, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x1C, 0x10, 0x94, 0xE5
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x08, 0x10, 0xC1, 0xE3, 0x1C, 0x10, 0x84, 0xE5, 0x11, 0x02, 0x00, 0xEB
- .byte 0x00, 0x60, 0xA0, 0xE1, 0x05, 0x00, 0xA0, 0xE1, 0xB9, 0xF1, 0xFF, 0xEB, 0x00, 0x00, 0x56, 0xE3
+ .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xFF, 0x0F, 0x00, 0x00
+
+ arm_func_start FSi_SeekDirCommand
+FSi_SeekDirCommand: ; 0x020D08EC
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x10
+ mov r6, r0
+ ldr r5, [r6, #0x8]
+ add r4, r6, #0x30
+ str r5, [sp, #0x8]
+ ldrh r1, [r4, #0x4]
+ ldr r2, [r5, #0x34]
+ add r0, sp, #0x8
+ add r3, r2, r1, lsl #0x3
+ add r1, sp, #0x0
+ mov r2, #0x8
+ str r3, [sp, #0xc]
+ bl FSi_ReadTable
+ movs r3, r0
+ bne _020D0978
+ add r12, r6, #0x20
+ ldmia r4, {r0-r2}
+ stmia r12, {r0-r2}
+ ldrh r0, [r4, #0x6]
+ cmp r0, #0x0
+ bne _020D0968
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bne _020D0968
+ ldrh r0, [sp, #0x4]
+ strh r0, [r6, #0x26]
+ ldr r1, [r5, #0x34]
+ ldr r0, [sp, #0x0]
+ add r0, r1, r0
+ str r0, [r6, #0x28]
+_020D0968:
+ ldrh r1, [sp, #0x6]
+ ldr r0, _020D0988 ; =0x00000FFF
+ and r0, r1, r0
+ str r0, [r6, #0x2c]
+_020D0978:
+ mov r0, r3
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D0988: .word 0x00000FFF
+
+ arm_func_start FSi_WriteFileCommand
+FSi_WriteFileCommand: ; 0x020D098C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x2c]
+ ldr r3, [r0, #0x38]
+ ldr lr, [r0, #0x8]
+ ldr r1, [r0, #0x30]
+ add r12, r2, r3
+ str r12, [r0, #0x2c]
+ ldr r12, [lr, #0x4c]
+ mov r0, lr
+ blx r12
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_ReadFileCommand
+FSi_ReadFileCommand: ; 0x020D09C4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x2c]
+ ldr r3, [r0, #0x38]
+ ldr lr, [r0, #0x8]
+ ldr r1, [r0, #0x30]
+ add r12, r2, r3
+ str r12, [r0, #0x2c]
+ ldr r12, [lr, #0x48]
+ mov r0, lr
+ blx r12
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FSi_SeekDirDirect
+FSi_SeekDirDirect: ; 0x020D09FC
+ ldr r3, [r0, #0xc]
+ mov r2, #0x0
+ orr r3, r3, #0x4
+ str r3, [r0, #0xc]
+ ldr r3, [r0, #0x8]
+ ldr ip, _020D0A2C ; =FSi_TranslateCommand
+ str r3, [r0, #0x30]
+ str r2, [r0, #0x38]
+ strh r2, [r0, #0x36]
+ strh r1, [r0, #0x34]
+ mov r1, #0x2
+ bx r12
+ .balign 4
+_020D0A2C: .word FSi_TranslateCommand
+
+ arm_func_start FSi_ReadTable
+FSi_ReadTable:
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ ldr r5, [r7, #0x0]
+ mov r6, r2
+ ldr r2, [r5, #0x1c]
+ mov r0, r5
+ orr r2, r2, #0x200
+ str r2, [r5, #0x1c]
+ ldr r2, [r7, #0x4]
+ ldr r4, [r5, #0x50]
+ mov r3, r6
+ blx r4
+ cmp r0, #0x0
+ beq _020D0A7C
+ cmp r0, #0x1
+ beq _020D0A7C
+ cmp r0, #0x6
+ beq _020D0A8C
+ b _020D0AC8
+_020D0A7C:
+ ldr r1, [r5, #0x1c]
+ bic r1, r1, #0x200
+ str r1, [r5, #0x1c]
+ b _020D0AC8
+_020D0A8C:
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x200
+ beq _020D0AB8
+ add r8, r5, #0xc
+_020D0AA4:
+ mov r0, r8
+ bl OS_SleepThread
+ ldr r0, [r5, #0x1c]
+ ands r0, r0, #0x200
+ bne _020D0AA4
+_020D0AB8:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r0, [r5, #0x24]
+ ldr r0, [r0, #0x14]
+_020D0AC8:
+ ldr r1, [r7, #0x4]
+ add r1, r1, r6
+ str r1, [r7, #0x4]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start FSi_StrNICmp
+FSi_StrNICmp: ; 0x020D0ADC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r2, #0x0
+ mov lr, #0x0
+ bls _020D0B30
+_020D0AF0:
+ ldrb r12, [r0, lr]
+ ldrb r3, [r1, lr]
+ sub r12, r12, #0x41
+ cmp r12, #0x19
+ sub r3, r3, #0x41
+ addls r12, r12, #0x20
+ cmp r3, #0x19
+ addls r3, r3, #0x20
+ cmp r12, r3
+ addne sp, sp, #0x4
+ subne r0, r12, r3
+ ldmneia sp!, {lr}
+ bxne lr
+ add lr, lr, #0x1
+ cmp lr, r2
+ blo _020D0AF0
+_020D0B30:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FS_NotifyArchiveAsyncEnd
+FS_NotifyArchiveAsyncEnd: ; 0x020D0B40
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x1c]
+ mov r6, r1
+ ands r0, r0, #0x100
+ beq _020D0B8C
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x24]
+ bic r2, r2, #0x100
+ str r2, [r4, #0x1c]
+ bl FSi_ReleaseCommand
+ mov r0, r4
+ bl FSi_NextCommand
+_020D0B74:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
+ .byte 0x13, 0x02, 0x00, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D0B8C:
+ ldr r5, [r4, #0x24]
+ bl OS_DisableInterrupts
+ str r6, [r5, #0x14]
+ ldr r1, [r4, #0x1c]
+ mov r5, r0
+ bic r1, r1, #0x200
+ add r0, r4, #0xc
+ str r1, [r4, #0x1c]
+ bl OS_WakeupThread
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start FS_SetArchiveProc
+FS_SetArchiveProc: ; 0x020D0BC0
+ cmp r2, #0x0
+ moveq r1, #0x0
+ beq _020D0BD4
+ cmp r1, #0x0
+ moveq r2, #0x0
+_020D0BD4:
+ str r1, [r0, #0x54]
+ str r2, [r0, #0x58]
+ bx lr
+
+ arm_func_start FS_ResumeArchive
+FS_ResumeArchive:
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov r6, #0x0
+ bl OS_DisableInterrupts
+ ldr r1, [r4, #0x1c]
+ mov r5, r0
+ ands r0, r1, #0x8
+ movne r0, #0x1
+ moveq r0, r6
+ cmp r0, #0x0
+ moveq r7, #0x1
+ movne r7, #0x0
+ cmp r7, #0x0
+ bne _020D0C34
+ ldr r1, [r4, #0x1c]
+ mov r0, r4
+ bic r1, r1, #0x8
+ str r1, [r4, #0x1c]
+ bl FSi_NextCommand
+ mov r6, r0
+_020D0C34:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D0C3C:
+ .byte 0x00, 0x00, 0x56, 0xE3
.byte 0x01, 0x00, 0x00, 0x0A, 0x06, 0x00, 0xA0, 0xE1, 0xE1, 0x01, 0x00, 0xEB, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1, 0xA8, 0xF1, 0xFF, 0xEB, 0x1C, 0x10, 0x96, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x08, 0x00, 0x11, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x50, 0xA0, 0x03, 0x00, 0x50, 0xA0, 0x13, 0x00, 0x00, 0x55, 0xE3
- .byte 0x0F, 0x00, 0x00, 0x0A, 0x1C, 0x00, 0x96, 0xE5, 0x10, 0x00, 0x10, 0xE2, 0x09, 0x00, 0x00, 0x0A
- .byte 0x1C, 0x00, 0x96, 0xE5, 0x40, 0x00, 0x80, 0xE3, 0x1C, 0x00, 0x86, 0xE5, 0x14, 0x70, 0x86, 0xE2
- .byte 0x07, 0x00, 0xA0, 0xE1, 0x8A, 0xE9, 0xFF, 0xEB, 0x1C, 0x00, 0x96, 0xE5, 0x40, 0x00, 0x10, 0xE2
- .byte 0xFA, 0xFF, 0xFF, 0x1A, 0x02, 0x00, 0x00, 0xEA, 0x1C, 0x00, 0x96, 0xE5, 0x08, 0x00, 0x80, 0xE3
- .byte 0x1C, 0x00, 0x86, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0x91, 0xF1, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0x1C, 0x00, 0x95, 0xE5, 0x00, 0x40, 0xA0, 0xE3
- .byte 0x02, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x04, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x50, 0xE3
- .byte 0x17, 0x00, 0x00, 0x0A, 0x05, 0x00, 0xA0, 0xE1, 0xCF, 0xFF, 0xFF, 0xEB, 0x1C, 0x10, 0x95, 0xE5
- .byte 0x04, 0x10, 0x11, 0xE2, 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x51, 0xE3
- .byte 0x0B, 0x00, 0x00, 0x0A, 0x1C, 0x20, 0x95, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x20, 0xC2, 0xE3
- .byte 0x1C, 0x20, 0x85, 0xE5, 0x44, 0x40, 0x95, 0xE5, 0x44, 0x10, 0x85, 0xE5, 0x3C, 0x10, 0x95, 0xE5
- .byte 0x2C, 0x10, 0x85, 0xE5, 0x40, 0x10, 0x95, 0xE5, 0x34, 0x10, 0x85, 0xE5, 0x48, 0x10, 0x95, 0xE5
- .byte 0x50, 0x10, 0x85, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x9A, 0xFF, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9, 0x4C, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1
- .byte 0x30, 0x30, 0x97, 0xE5, 0x38, 0x00, 0x97, 0xE5, 0x01, 0x60, 0xA0, 0xE1, 0x00, 0x00, 0x83, 0xE0
- .byte 0x20, 0x00, 0x80, 0xE2, 0x1F, 0x00, 0x80, 0xE2, 0x1F, 0x50, 0xC0, 0xE3, 0x02, 0x00, 0x55, 0xE1
- .byte 0x39, 0x00, 0x00, 0x8A, 0x1F, 0x10, 0x86, 0xE2, 0x04, 0x00, 0x8D, 0xE2, 0x1F, 0x40, 0xC1, 0xE3
- .byte 0xB3, 0x03, 0x00, 0xEB, 0x2C, 0x20, 0x97, 0xE5, 0x00, 0x00, 0xE0, 0xE3, 0x00, 0x00, 0x8D, 0xE5
- .byte 0x30, 0x30, 0x97, 0xE5, 0x04, 0x00, 0x8D, 0xE2, 0x07, 0x10, 0xA0, 0xE1, 0x03, 0x30, 0x82, 0xE0
- .byte 0x0A, 0x03, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x0B, 0x00, 0x00, 0x0A, 0x30, 0x20, 0x97, 0xE5
+ .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_SuspendArchive
+FS_SuspendArchive: ; 0x020D0C5C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x8
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ moveq r5, #0x1
+ movne r5, #0x0
+ cmp r5, #0x0
+ beq _020D0CD4
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ beq _020D0CC8
+ ldr r0, [r6, #0x1c]
+ orr r0, r0, #0x40
+ str r0, [r6, #0x1c]
+ add r7, r6, #0x14
+_020D0CB0:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x40
+ bne _020D0CB0
+ b _020D0CD4
+_020D0CC8:
+ ldr r0, [r6, #0x1c]
+ orr r0, r0, #0x8
+ str r0, [r6, #0x1c]
+_020D0CD4:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start FS_UnloadArchiveTables
+FS_UnloadArchiveTables: ; 0x020D0CEC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, [r5, #0x1c]
+ mov r4, #0x0
+ ands r0, r0, #0x2
+ movne r0, #0x1
+ moveq r0, r4
+ cmp r0, #0x0
+ beq _020D0D74
+ mov r0, r5
+ bl FS_SuspendArchive
+ ldr r1, [r5, #0x1c]
+ ands r1, r1, #0x4
+ movne r1, #0x1
+ moveq r1, #0x0
+ cmp r1, #0x0
+ beq _020D0D64
+ ldr r2, [r5, #0x1c]
+ mov r1, #0x0
+ bic r2, r2, #0x4
+ str r2, [r5, #0x1c]
+ ldr r4, [r5, #0x44]
+ str r1, [r5, #0x44]
+ ldr r1, [r5, #0x3c]
+ str r1, [r5, #0x2c]
+ ldr r1, [r5, #0x40]
+ str r1, [r5, #0x34]
+ ldr r1, [r5, #0x48]
+ str r1, [r5, #0x50]
+_020D0D64:
+ cmp r0, #0x0
+ beq _020D0D74
+ mov r0, r5
+ bl FS_ResumeArchive
+_020D0D74:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+
+ arm_func_start FUN_020D0D84
+FUN_020D0D84: ; 0x020D0D84
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4c
+ mov r7, r0
+ ldr r3, [r7, #0x30]
+ ldr r0, [r7, #0x38]
+ mov r6, r1
+ add r0, r3, r0
+ add r0, r0, #0x20
+ add r0, r0, #0x1f
+ bic r5, r0, #0x1f
+ cmp r5, r2
+ bhi _020D0E9C
+ add r1, r6, #0x1f
+ add r0, sp, #0x4
+ bic r4, r1, #0x1f
+ bl FS_InitFile
+ ldr r2, [r7, #0x2c]
+ mvn r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r3, [r7, #0x30]
+ add r0, sp, #0x4
+ mov r1, r7
+ add r3, r2, r3
+ bl FS_OpenFileDirect
+_020D0DE4:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x0B, 0x00, 0x00, 0x0A, 0x30, 0x20, 0x97, 0xE5
.byte 0x04, 0x00, 0x8D, 0xE2, 0x04, 0x10, 0xA0, 0xE1, 0x83, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0x03, 0x00, 0x00, 0xAA, 0x30, 0x20, 0x97, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0xA0, 0xE3
.byte 0x4D, 0xF5, 0xFF, 0xEB, 0x04, 0x00, 0x8D, 0xE2, 0xB7, 0x02, 0x00, 0xEB, 0x2C, 0x40, 0x87, 0xE5
@@ -1860,40 +8043,162 @@ _020CD33C:
.byte 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0xAA, 0x38, 0x20, 0x97, 0xE5, 0x04, 0x00, 0xA0, 0xE1
.byte 0x00, 0x10, 0xA0, 0xE3, 0x34, 0xF5, 0xFF, 0xEB, 0x04, 0x00, 0x8D, 0xE2, 0x9E, 0x02, 0x00, 0xEB
.byte 0x34, 0x40, 0x87, 0xE5, 0x20, 0x00, 0x9F, 0xE5, 0x44, 0x60, 0x87, 0xE5, 0x50, 0x00, 0x87, 0xE5
- .byte 0x1C, 0x00, 0x97, 0xE5, 0x04, 0x00, 0x80, 0xE3, 0x1C, 0x00, 0x87, 0xE5, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x4C, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x16, 0x0D, 0x02
- .byte 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x50, 0xA0, 0xE1, 0x14, 0xF1, 0xFF, 0xEB, 0x1C, 0x10, 0x95, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x02, 0x00, 0x11, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x00, 0x00, 0x50, 0xE3, 0x22, 0x00, 0x00, 0x0A, 0x05, 0x00, 0xA0, 0xE1, 0x1C, 0x10, 0x95, 0xE5
- .byte 0x5D, 0xFF, 0xFF, 0xEB, 0x1C, 0x10, 0x95, 0xE5, 0x00, 0x70, 0xA0, 0xE1, 0x80, 0x00, 0x81, 0xE3
- .byte 0x1C, 0x00, 0x85, 0xE5, 0x24, 0x00, 0x95, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x06, 0x00, 0x00, 0x0A
- .byte 0x03, 0x60, 0xA0, 0xE3, 0x04, 0x80, 0x90, 0xE5, 0x06, 0x10, 0xA0, 0xE1, 0x67, 0xFC, 0xFF, 0xEB
- .byte 0x08, 0x00, 0xA0, 0xE1, 0x00, 0x00, 0x58, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x24, 0x00, 0x85, 0xE5, 0x00, 0x00, 0x57, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x2A, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x28, 0x00, 0x85, 0xE5, 0x2C, 0x00, 0x85, 0xE5
- .byte 0x30, 0x00, 0x85, 0xE5, 0x34, 0x00, 0x85, 0xE5, 0x38, 0x00, 0x85, 0xE5, 0x40, 0x00, 0x85, 0xE5
- .byte 0x40, 0x00, 0x95, 0xE5, 0x3C, 0x00, 0x85, 0xE5, 0x1C, 0x00, 0x95, 0xE5, 0xA2, 0x00, 0xC0, 0xE3
- .byte 0x1C, 0x00, 0x85, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0xED, 0xF0, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x28, 0x10, 0x80, 0xE5, 0x30, 0x30, 0x80, 0xE5
- .byte 0x3C, 0x20, 0x80, 0xE5, 0x3C, 0x10, 0x90, 0xE5, 0x04, 0x20, 0x9D, 0xE5, 0x2C, 0x10, 0x80, 0xE5
- .byte 0x38, 0x20, 0x80, 0xE5, 0x00, 0x10, 0x9D, 0xE5, 0x08, 0x20, 0x9D, 0xE5, 0x40, 0x10, 0x80, 0xE5
- .byte 0x40, 0x10, 0x90, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x34, 0x10, 0x80, 0xE5, 0x34, 0x20, 0x9F, 0x05
- .byte 0x0C, 0x10, 0x9D, 0xE5, 0x48, 0x20, 0x80, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x28, 0x10, 0x9F, 0x05
- .byte 0x4C, 0x10, 0x80, 0xE5, 0x48, 0x20, 0x90, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x50, 0x20, 0x80, 0xE5
- .byte 0x44, 0x10, 0x80, 0xE5, 0x1C, 0x10, 0x90, 0xE5, 0x02, 0x10, 0x81, 0xE3, 0x1C, 0x10, 0x80, 0xE5
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0xC0, 0x16, 0x0D, 0x02, 0x94, 0x16, 0x0D, 0x02
- .byte 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x94, 0xE5, 0x00, 0x00, 0x50, 0xE3
- .byte 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0xC0, 0xF0, 0xFF, 0xEB, 0x04, 0x20, 0x94, 0xE5
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x00, 0x52, 0xE3, 0x08, 0x10, 0x94, 0x15, 0x08, 0x10, 0x82, 0x15
- .byte 0x08, 0x20, 0x94, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x04, 0x10, 0x94, 0x15, 0x04, 0x10, 0x82, 0x15
- .byte 0x00, 0x30, 0x84, 0xE5, 0x08, 0x30, 0x84, 0xE5, 0x08, 0x10, 0x94, 0xE5, 0x3C, 0x20, 0x9F, 0xE5
- .byte 0x04, 0x10, 0x84, 0xE5, 0x1C, 0x10, 0x94, 0xE5, 0x01, 0x10, 0xC1, 0xE3, 0x1C, 0x10, 0x84, 0xE5
- .byte 0x00, 0x10, 0x92, 0xE5, 0x04, 0x00, 0x51, 0xE1, 0x05, 0x00, 0x00, 0x1A, 0x20, 0x10, 0x9F, 0xE5
- .byte 0x08, 0x30, 0x82, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0xB6, 0x30, 0xC2, 0xE1, 0x00, 0x10, 0x82, 0xE5
- .byte 0xB4, 0x30, 0xC2, 0xE1, 0xAA, 0xF0, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xEC, 0x53, 0x1D, 0x02, 0xE8, 0x53, 0x1D, 0x02, 0xF0, 0x41, 0x2D, 0xE9, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x02, 0x50, 0xA0, 0xE1, 0x00, 0x70, 0xA0, 0xE1, 0x00, 0x80, 0xA0, 0xE3, 0x9B, 0xF0, 0xFF, 0xEB
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0x25, 0x00, 0x00, 0xEB
+ .byte 0x1C, 0x00, 0x97, 0xE5, 0x04, 0x00, 0x80, 0xE3, 0x1C, 0x00, 0x87, 0xE5
+_020D0E9C:
+ mov r0, r5
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D0EAC:
+ .word FSi_ReadMemoryCore
+
+ arm_func_start FUN_020D0EB0
+FUN_020D0EB0: ; 0x020D0EB0
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r5, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x2
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020D0F64
+ mov r0, r5
+ ldr r1, [r5, #0x1c]
+ bl FS_SuspendArchive
+ ldr r1, [r5, #0x1c]
+ mov r7, r0
+ orr r0, r1, #0x80
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x24]
+ cmp r0, #0x0
+ beq _020D0F1C
+ mov r6, #0x3
+_020D0F04:
+ ldr r8, [r0, #0x4]
+ mov r1, r6
+ bl FSi_ReleaseCommand
+ mov r0, r8
+ cmp r8, #0x0
+ bne _020D0F04
+_020D0F1C:
+ mov r0, #0x0
+ str r0, [r5, #0x24]
+ cmp r7, #0x0
+ beq _020D0F34
+ mov r0, r5
+ bl FS_ResumeArchive
+_020D0F34:
+ mov r0, #0x0
+ str r0, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ str r0, [r5, #0x30]
+ str r0, [r5, #0x34]
+ str r0, [r5, #0x38]
+ str r0, [r5, #0x40]
+ ldr r0, [r5, #0x40]
+ str r0, [r5, #0x3c]
+ ldr r0, [r5, #0x1c]
+ bic r0, r0, #0xa2
+ str r0, [r5, #0x1c]
+_020D0F64:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start FS_LoadArchive
+FS_LoadArchive: ; 0x020D0F78
+ str r1, [r0, #0x28]
+ str r3, [r0, #0x30]
+ str r2, [r0, #0x3c]
+ ldr r1, [r0, #0x3c]
+ ldr r2, [sp, #0x4]
+ str r1, [r0, #0x2c]
+ str r2, [r0, #0x38]
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x8]
+ str r1, [r0, #0x40]
+ ldr r1, [r0, #0x40]
+ cmp r2, #0x0
+ str r1, [r0, #0x34]
+ ldreq r2, _020D0FE8 ; =FSi_ReadMemCallback
+ ldr r1, [sp, #0xc]
+ str r2, [r0, #0x48]
+ cmp r1, #0x0
+ ldreq r1, _020D0FEC ; =FSi_WriteMemCallback
+ str r1, [r0, #0x4c]
+ ldr r2, [r0, #0x48]
+ mov r1, #0x0
+ str r2, [r0, #0x50]
+ str r1, [r0, #0x44]
+ ldr r1, [r0, #0x1c]
+ orr r1, r1, #0x2
+ str r1, [r0, #0x1c]
+ mov r0, #0x1
+ bx lr
+ .balign 4
+_020D0FE8: .word FSi_ReadMemCallback
+_020D0FEC: .word FSi_WriteMemCallback
+
+ arm_func_start FUN_020D0FF0
+FUN_020D0FF0: ; 0x020D0FF0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ bl OS_DisableInterrupts
+ ldr r2, [r4, #0x4]
+ mov r3, #0x0
+ cmp r2, #0x0
+ ldrne r1, [r4, #0x8]
+ strne r1, [r2, #0x8]
+ ldr r2, [r4, #0x8]
+ cmp r2, #0x0
+ ldrne r1, [r4, #0x4]
+ strne r1, [r2, #0x4]
+ str r3, [r4, #0x0]
+ str r3, [r4, #0x8]
+ ldr r1, [r4, #0x8]
+ ldr r2, _020D1080 ; =0x021D53EC
+ str r1, [r4, #0x4]
+ ldr r1, [r4, #0x1c]
+ bic r1, r1, #0x1
+ str r1, [r4, #0x1c]
+ ldr r1, [r2, #0x0]
+ cmp r1, r4
+ bne _020D1074
+ ldr r1, _020D1084 ; =0x021D53E8
+ str r3, [r2, #0x8]
+ ldr r1, [r1, #0x0]
+ strh r3, [r2, #0x6]
+ str r1, [r2, #0x0]
+ strh r3, [r2, #0x4]
+_020D1074:
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D1080: .word 0x021D53EC
+_020D1084: .word 0x021D53E8
+
+ arm_func_start FS_RegisterArchiveName
+FS_RegisterArchiveName: ; 0x020D1088
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r1
+ mov r5, r2
+ mov r7, r0
+ mov r8, #0x0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, r6
+ mov r1, r5
+ bl FS_FindArchive
+_020D10B0:
.byte 0x00, 0x00, 0x50, 0xE3, 0x1C, 0x00, 0x00, 0x1A, 0x80, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5
.byte 0x00, 0x00, 0x52, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x74, 0x00, 0x9F, 0xE5, 0x08, 0x20, 0xA0, 0xE1
.byte 0x00, 0x70, 0x81, 0xE5, 0x00, 0x70, 0x80, 0xE5, 0x08, 0x20, 0x80, 0xE5, 0xB6, 0x20, 0xC0, 0xE1
@@ -1903,73 +8208,303 @@ _020CD33C:
.byte 0x05, 0x10, 0xA0, 0xE1, 0x73, 0x01, 0x00, 0xEB, 0x00, 0x00, 0x87, 0xE5, 0x1C, 0x00, 0x97, 0xE5
.byte 0x01, 0x80, 0xA0, 0xE3, 0x01, 0x00, 0x80, 0xE3, 0x1C, 0x00, 0x87, 0xE5, 0x04, 0x00, 0xA0, 0xE1
.byte 0x7B, 0xF0, 0xFF, 0xEB, 0x08, 0x00, 0xA0, 0xE1, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xE8, 0x53, 0x1D, 0x02, 0xEC, 0x53, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x64, 0x01, 0x00, 0xEB, 0x00, 0x50, 0xA0, 0xE1, 0x6C, 0xF0, 0xFF, 0xEB, 0x30, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x40, 0x91, 0xE5, 0x00, 0x00, 0x00, 0xEA, 0x04, 0x40, 0x94, 0xE5, 0x00, 0x00, 0x54, 0xE3
- .byte 0x02, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x94, 0xE5, 0x05, 0x00, 0x51, 0xE1, 0xF9, 0xFF, 0xFF, 0x1A
- .byte 0x67, 0xF0, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xE8, 0x53, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x5C, 0x20, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE1, 0x67, 0xF4, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x10, 0x10, 0x84, 0xE5, 0x10, 0x00, 0x94, 0xE5, 0x0C, 0x00, 0x84, 0xE5, 0x18, 0x10, 0x84, 0xE5
- .byte 0x18, 0x00, 0x94, 0xE5, 0x14, 0x00, 0x84, 0xE5, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1, 0x08, 0x60, 0x97, 0xE5
- .byte 0x01, 0x20, 0xA0, 0xE3, 0x10, 0x10, 0x87, 0xE5, 0x02, 0x00, 0xA0, 0xE3, 0x14, 0x00, 0x87, 0xE5
- .byte 0x0C, 0x00, 0x97, 0xE5, 0x12, 0x51, 0xA0, 0xE1, 0x01, 0x00, 0x80, 0xE3, 0x0C, 0x00, 0x87, 0xE5
- .byte 0x42, 0xF0, 0xFF, 0xEB, 0x1C, 0x10, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x80, 0x00, 0x11, 0xE2
- .byte 0x08, 0x00, 0x00, 0x0A, 0x07, 0x00, 0xA0, 0xE1, 0x03, 0x10, 0xA0, 0xE3, 0xA3, 0xFB, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x3E, 0xF0, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x7F, 0x0F, 0x15, 0xE2, 0x0C, 0x00, 0x97, 0x15
- .byte 0x20, 0x20, 0x86, 0xE2, 0x04, 0x00, 0x80, 0x13, 0x0C, 0x00, 0x87, 0x15, 0x00, 0x10, 0x97, 0xE5
- .byte 0x04, 0x00, 0x97, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x04, 0x00, 0x81, 0x15, 0x00, 0x00, 0x50, 0xE3
- .byte 0x00, 0x10, 0x80, 0x15, 0x04, 0x00, 0x92, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A
- .byte 0x00, 0x20, 0xA0, 0xE1, 0x04, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A
- .byte 0x04, 0x70, 0x82, 0xE5, 0x00, 0x20, 0x87, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x10, 0x87, 0xE5
- .byte 0x1C, 0x00, 0x96, 0xE5, 0x08, 0x00, 0x10, 0xE2, 0x01, 0x10, 0xA0, 0x13, 0x00, 0x00, 0x51, 0xE3
- .byte 0x21, 0x00, 0x00, 0x1A, 0x1C, 0x00, 0x96, 0xE5, 0x10, 0x00, 0x10, 0xE2, 0x1E, 0x00, 0x00, 0x1A
- .byte 0x1C, 0x10, 0x96, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0x10, 0x10, 0x81, 0xE3, 0x1C, 0x10, 0x86, 0xE5
- .byte 0x17, 0xF0, 0xFF, 0xEB, 0x58, 0x00, 0x96, 0xE5, 0x02, 0x0C, 0x10, 0xE2, 0x03, 0x00, 0x00, 0x0A
- .byte 0x54, 0x20, 0x96, 0xE5, 0x07, 0x00, 0xA0, 0xE1, 0x09, 0x10, 0xA0, 0xE3, 0x32, 0xFF, 0x2F, 0xE1
- .byte 0x0A, 0xF0, 0xFF, 0xEB, 0x0C, 0x10, 0x97, 0xE5, 0x40, 0x10, 0x81, 0xE3, 0x0C, 0x10, 0x87, 0xE5
- .byte 0x0C, 0x10, 0x97, 0xE5, 0x04, 0x10, 0x11, 0xE2, 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03
- .byte 0x00, 0x00, 0x51, 0xE3, 0x06, 0x00, 0x00, 0x1A, 0x05, 0xF0, 0xFF, 0xEB, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x2F, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xFE, 0xEF, 0xFF, 0xEB, 0x12, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x97, 0xE5
- .byte 0x04, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x50, 0xE3
- .byte 0x05, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0xF5, 0xEF, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x18, 0x00, 0x87, 0xE2
- .byte 0xDF, 0xE7, 0xFF, 0xEB, 0x0C, 0x00, 0x97, 0xE5, 0x40, 0x00, 0x10, 0xE2, 0xFA, 0xFF, 0xFF, 0x0A
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xEA, 0xEF, 0xFF, 0xEB, 0x07, 0x00, 0xA0, 0xE1, 0x02, 0x00, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x10, 0x10, 0x94, 0xE5, 0xE5, 0xFA, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x41, 0xFB, 0xFF, 0xEB, 0x08, 0x00, 0x94, 0xE5, 0x31, 0x00, 0x00, 0xEB
+ .byte 0xE8, 0x53, 0x1D, 0x02, 0xEC, 0x53, 0x1D, 0x02
+
+ arm_func_start FS_FindArchive
+FS_FindArchive:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ bl FSi_GetPackedName
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _020D1194 ; =0x021D53E8
+ ldr r4, [r1, #0x0]
+ b _020D116C
+_020D1168:
+ ldr r4, [r4, #0x4]
+_020D116C:
+ cmp r4, #0x0
+ beq _020D1180
+ ldr r1, [r4, #0x0]
+ cmp r1, r5
+ bne _020D1168
+_020D1180:
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D1194: .word 0x021D53E8
+
+ arm_func_start FS_InitArchive
+FS_InitArchive: ; 0x020D1198
+ stmdb sp!, {r4,lr}
+ mov r1, #0x0
+ mov r2, #0x5c
+ mov r4, r0
+ bl MI_CpuFill8
+ mov r1, #0x0
+ str r1, [r4, #0x10]
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ str r1, [r4, #0x18]
+ ldr r0, [r4, #0x18]
+ str r0, [r4, #0x14]
+ ldmia sp!, {r4,lr}
+ bx lr
+
+ arm_func_start FSi_SendCommand
+FSi_SendCommand:
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r6, [r7, #0x8]
+ mov r2, #0x1
+ str r1, [r7, #0x10]
+ mov r0, #0x2
+ str r0, [r7, #0x14]
+ ldr r0, [r7, #0xc]
+ mov r5, r2, lsl r1
+ orr r0, r0, #0x1
+ str r0, [r7, #0xc]
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r4, r0
+ ands r0, r1, #0x80
+ beq _020D1238
+ mov r0, r7
+ mov r1, #0x3
+ bl FSi_ReleaseCommand
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D1238:
+ ands r0, r5, #0x1fc
+ ldrne r0, [r7, #0xc]
+ add r2, r6, #0x20
+ orrne r0, r0, #0x4
+ strne r0, [r7, #0xc]
+ ldr r1, [r7, #0x0]
+ ldr r0, [r7, #0x4]
+ cmp r1, #0x0
+ strne r0, [r1, #0x4]
+ cmp r0, #0x0
+ strne r1, [r0, #0x0]
+ ldr r0, [r2, #0x4]
+ cmp r0, #0x0
+ beq _020D1280
+_020D1270:
+ mov r2, r0
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ bne _020D1270
+_020D1280:
+ str r7, [r2, #0x4]
+ str r2, [r7, #0x0]
+ mov r1, #0x0
+ str r1, [r7, #0x4]
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x8
+ movne r1, #0x1
+ cmp r1, #0x0
+ bne _020D132C
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ bne _020D132C
+ ldr r1, [r6, #0x1c]
+ mov r0, r4
+ orr r1, r1, #0x10
+ str r1, [r6, #0x1c]
+ bl OS_RestoreInterrupts
+ ldr r0, [r6, #0x58]
+ ands r0, r0, #0x200
+ beq _020D12E0
+ ldr r2, [r6, #0x54]
+ mov r0, r7
+ mov r1, #0x9
+ blx r2
+_020D12E0:
+ bl OS_DisableInterrupts
+ ldr r1, [r7, #0xc]
+ orr r1, r1, #0x40
+ str r1, [r7, #0xc]
+ ldr r1, [r7, #0xc]
+ ands r1, r1, #0x4
+ movne r1, #0x1
+ moveq r1, #0x0
+ cmp r1, #0x0
+ bne _020D1324
+ bl OS_RestoreInterrupts
+ mov r0, r7
+ bl FSi_ExecuteAsyncCommand
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D1324:
+ bl OS_RestoreInterrupts
+ b _020D1378
+_020D132C:
+ ldr r0, [r7, #0xc]
+ ands r0, r0, #0x4
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ bne _020D135C
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D135C:
+ add r0, r7, #0x18
+ bl OS_SleepThread
+ ldr r0, [r7, #0xc]
+ ands r0, r0, #0x40
+ beq _020D135C
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D1378:
+ mov r0, r7
+ bl FSi_ExecuteSyncCommand
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start FSi_ExecuteSyncCommand
+FSi_ExecuteSyncCommand: ; 0x020D138C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r1, [r4, #0x10]
+ bl FSi_TranslateCommand
+ mov r1, r0
+ mov r0, r4
+ bl FSi_ReleaseCommand
+ ldr r0, [r4, #0x8]
+ bl FSi_NextCommand
+_020D13B0:
.byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x0A, 0x05, 0x00, 0x00, 0xEB, 0x14, 0x00, 0x94, 0xE5
.byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x00, 0x00, 0xA0, 0x13, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x60, 0xB0, 0xE1, 0x08, 0x50, 0x96, 0xE5
- .byte 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x70, 0xA0, 0xE3, 0x01, 0x80, 0xA0, 0xE3
- .byte 0xC6, 0xEF, 0xFF, 0xEB, 0x0C, 0x10, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x40, 0x00, 0x81, 0xE3
- .byte 0x0C, 0x00, 0x86, 0xE5, 0x0C, 0x00, 0x96, 0xE5, 0x04, 0x00, 0x10, 0xE2, 0x08, 0x00, 0xA0, 0x11
- .byte 0x07, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x18, 0x00, 0x86, 0xE2
- .byte 0x8F, 0xE7, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0xBD, 0xEF, 0xFF, 0xEB, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x10, 0x96, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0x08, 0x10, 0x81, 0xE3
- .byte 0x0C, 0x10, 0x86, 0xE5, 0xB6, 0xEF, 0xFF, 0xEB, 0x10, 0x10, 0x96, 0xE5, 0x06, 0x00, 0xA0, 0xE1
- .byte 0xB7, 0xFA, 0xFF, 0xEB, 0x06, 0x00, 0x50, 0xE3, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x03, 0x00, 0x00, 0xEB, 0x00, 0x60, 0xB0, 0xE1, 0xDF, 0xFF, 0xFF, 0x1A
- .byte 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x43, 0x2D, 0xE9, 0x4C, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x60, 0xA0, 0xE1, 0xA1, 0xEF, 0xFF, 0xEB, 0x1C, 0x10, 0x96, 0xE5, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x20, 0x00, 0x11, 0xE2, 0x19, 0x00, 0x00, 0x0A, 0x1C, 0x00, 0x96, 0xE5, 0x20, 0x00, 0xC0, 0xE3
- .byte 0x1C, 0x00, 0x86, 0xE5, 0x24, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x13, 0x00, 0x00, 0x0A
- .byte 0x00, 0x80, 0xA0, 0xE3, 0x01, 0x90, 0xA0, 0xE3, 0x03, 0x70, 0xA0, 0xE3, 0x0C, 0x10, 0x90, 0xE5
- .byte 0x04, 0x40, 0x90, 0xE5, 0x02, 0x10, 0x11, 0xE2, 0x09, 0x10, 0xA0, 0x11, 0x08, 0x10, 0xA0, 0x01
- .byte 0x00, 0x00, 0x51, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x24, 0x10, 0x96, 0xE5, 0x00, 0x00, 0x51, 0xE1
- .byte 0x07, 0x10, 0xA0, 0xE1, 0x24, 0x40, 0x86, 0x05, 0xF0, 0xFA, 0xFF, 0xEB, 0x00, 0x00, 0x54, 0xE3
- .byte 0x24, 0x40, 0x96, 0x05, 0x04, 0x00, 0xA0, 0xE1, 0x00, 0x00, 0x54, 0xE3, 0xEE, 0xFF, 0xFF, 0x1A
- .byte 0x1C, 0x00, 0x96, 0xE5, 0x40, 0x00, 0x10, 0xE2, 0x37, 0x00, 0x00, 0x1A, 0x1C, 0x00, 0x96, 0xE5
- .byte 0x08, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x50, 0xE3
- .byte 0x31, 0x00, 0x00, 0x1A, 0x24, 0x40, 0x96, 0xE5, 0x00, 0x00, 0x54, 0xE3, 0x2E, 0x00, 0x00, 0x0A
- .byte 0x1C, 0x00, 0x96, 0xE5, 0x10, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x70, 0xA0, 0x03, 0x00, 0x70, 0xA0, 0x13, 0x00, 0x00, 0x57, 0xE3
- .byte 0x1C, 0x00, 0x96, 0x15, 0x10, 0x00, 0x80, 0x13, 0x1C, 0x00, 0x86, 0x15, 0x05, 0x00, 0xA0, 0xE1
- .byte 0x6F, 0xEF, 0xFF, 0xEB, 0x00, 0x00, 0x57, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x58, 0x00, 0x96, 0xE5
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FSi_ExecuteAsyncCommand
+FSi_ExecuteAsyncCommand: ; 0x020D13D4
+ stmdb sp!, {r4-r8,lr}
+ movs r6, r0
+ ldr r5, [r6, #0x8]
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r7, #0x0
+ mov r8, #0x1
+_020D13F0:
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0xc]
+ mov r4, r0
+ orr r0, r1, #0x40
+ str r0, [r6, #0xc]
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x4
+ movne r0, r8
+ moveq r0, r7
+ cmp r0, #0x0
+ beq _020D1434
+ add r0, r6, #0x18
+ bl OS_WakeupThread
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D1434:
+ ldr r1, [r6, #0xc]
+ mov r0, r4
+ orr r1, r1, #0x8
+ str r1, [r6, #0xc]
+ bl OS_RestoreInterrupts
+ ldr r1, [r6, #0x10]
+ mov r0, r6
+ bl FSi_TranslateCommand
+ cmp r0, #0x6
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, r5
+ bl FSi_NextCommand
+ movs r6, r0
+ bne _020D13F0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+
+ arm_func_start FSi_NextCommand
+FSi_NextCommand:
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4c
+ mov r6, r0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0x1c]
+ mov r5, r0
+ ands r0, r1, #0x20
+ beq _020D1500
+ ldr r0, [r6, #0x1c]
+ bic r0, r0, #0x20
+ str r0, [r6, #0x1c]
+ ldr r0, [r6, #0x24]
+ cmp r0, #0x0
+ beq _020D1500
+ mov r8, #0x0
+ mov r9, #0x1
+ mov r7, #0x3
+_020D14BC:
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #0x4]
+ ands r1, r1, #0x2
+ movne r1, r9
+ moveq r1, r8
+ cmp r1, #0x0
+ beq _020D14F4
+ ldr r1, [r6, #0x24]
+ cmp r1, r0
+ mov r1, r7
+ streq r4, [r6, #0x24]
+ bl FSi_ReleaseCommand
+_020D14EC:
+ .byte 0x00, 0x00, 0x54, 0xE3
+ .byte 0x24, 0x40, 0x96, 0x05
+_020D14F4:
+ mov r0, r4
+ cmp r4, #0x0
+ bne _020D14BC
+_020D1500:
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x40
+ bne _020D15EC
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x8
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ bne _020D15EC
+ ldr r4, [r6, #0x24]
+ cmp r4, #0x0
+ beq _020D15EC
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ moveq r7, #0x1
+ movne r7, #0x0
+ cmp r7, #0x0
+ ldrne r0, [r6, #0x1c]
+ orrne r0, r0, #0x10
+ strne r0, [r6, #0x1c]
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D1564:
+ .byte 0x00, 0x00, 0x57, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x58, 0x00, 0x96, 0xE5
.byte 0x02, 0x0C, 0x10, 0xE2, 0x03, 0x00, 0x00, 0x0A, 0x54, 0x20, 0x96, 0xE5, 0x04, 0x00, 0xA0, 0xE1
.byte 0x09, 0x10, 0xA0, 0xE3, 0x32, 0xFF, 0x2F, 0xE1, 0x60, 0xEF, 0xFF, 0xEB, 0x0C, 0x10, 0x94, 0xE5
.byte 0x00, 0x50, 0xA0, 0xE1, 0x40, 0x00, 0x81, 0xE3, 0x0C, 0x00, 0x84, 0xE5, 0x0C, 0x00, 0x94, 0xE5
@@ -1977,229 +8512,935 @@ _020CD33C:
.byte 0x07, 0x00, 0x00, 0x0A, 0x18, 0x00, 0x84, 0xE2, 0x29, 0xE7, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1
.byte 0x57, 0xEF, 0xFF, 0xEB, 0x4C, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0xF0, 0x43, 0xBD, 0xE8
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x05, 0x00, 0xA0, 0xE1, 0x51, 0xEF, 0xFF, 0xEB, 0x4C, 0xD0, 0x8D, 0xE2
- .byte 0x04, 0x00, 0xA0, 0xE1, 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x1C, 0x00, 0x96, 0xE5
- .byte 0x10, 0x00, 0x10, 0xE2, 0x0C, 0x00, 0x00, 0x0A, 0x1C, 0x00, 0x96, 0xE5, 0x10, 0x00, 0xC0, 0xE3
- .byte 0x1C, 0x00, 0x86, 0xE5, 0x58, 0x00, 0x96, 0xE5, 0x01, 0x0B, 0x10, 0xE2, 0x06, 0x00, 0x00, 0x0A
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x9E, 0x01, 0x00, 0xEB, 0x08, 0x60, 0x8D, 0xE5, 0x54, 0x20, 0x96, 0xE5
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x0A, 0x10, 0xA0, 0xE3, 0x32, 0xFF, 0x2F, 0xE1, 0x1C, 0x00, 0x96, 0xE5
- .byte 0x40, 0x00, 0x10, 0xE2, 0x07, 0x00, 0x00, 0x0A, 0x1C, 0x10, 0x96, 0xE5, 0x14, 0x00, 0x86, 0xE2
- .byte 0x40, 0x10, 0xC1, 0xE3, 0x1C, 0x10, 0x86, 0xE5, 0x1C, 0x10, 0x96, 0xE5, 0x08, 0x10, 0x81, 0xE3
- .byte 0x1C, 0x10, 0x86, 0xE5, 0x02, 0xE7, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1, 0x30, 0xEF, 0xFF, 0xEB
+ .byte 0x04, 0x00, 0xA0, 0xE1, 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D15EC:
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x10
+ beq _020D162C
+ ldr r0, [r6, #0x1c]
+ bic r0, r0, #0x10
+ str r0, [r6, #0x1c]
+ ldr r0, [r6, #0x58]
+ ands r0, r0, #0x400
+ beq _020D162C
+ add r0, sp, #0x0
+ bl FS_InitFile
+ str r6, [sp, #0x8]
+ ldr r2, [r6, #0x54]
+ add r0, sp, #0x0
+ mov r1, #0xa
+ blx r2
+_020D162C:
+ ldr r0, [r6, #0x1c]
+ ands r0, r0, #0x40
+ beq _020D1658
+ ldr r1, [r6, #0x1c]
+ add r0, r6, #0x14
+ bic r1, r1, #0x40
+ str r1, [r6, #0x1c]
+ ldr r1, [r6, #0x1c]
+ orr r1, r1, #0x8
+ str r1, [r6, #0x1c]
+ bl OS_WakeupThread
+_020D1658:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+_020D1660:
.byte 0x00, 0x00, 0xA0, 0xE3, 0x4C, 0xD0, 0x8D, 0xE2, 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x02, 0x00, 0xA0, 0xE1, 0x03, 0x20, 0xA0, 0xE1
- .byte 0x56, 0xF3, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0xC0, 0x90, 0xE5
- .byte 0x01, 0x00, 0xA0, 0xE1, 0x02, 0x10, 0x8C, 0xE0, 0x03, 0x20, 0xA0, 0xE1, 0x4B, 0xF3, 0xFF, 0xEB
+
+ arm_func_start FSi_ReadMemoryCore
+FSi_ReadMemoryCore: ; 0x020D1670
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r0, r2
+ mov r2, r3
+ bl MI_CpuCopy8
+_020D1684:
+ .byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FSi_WriteMemCallback
+FSi_WriteMemCallback: ; 0x020D1694
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r12, [r0, #0x28]
+ mov r0, r1
+ add r1, r12, r2
+ mov r2, r3
+ bl MI_CpuCopy8
+_020D16B0:
.byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x00, 0x90, 0xE5, 0x02, 0x00, 0x80, 0xE0
- .byte 0x03, 0x20, 0xA0, 0xE1, 0x41, 0xF3, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x03, 0x00, 0x51, 0xE3, 0x00, 0xE0, 0xA0, 0xE3, 0x0F, 0x00, 0x00, 0xCA, 0x0E, 0xC0, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x51, 0xE3, 0x0C, 0x00, 0x00, 0xDA, 0x0E, 0x30, 0xA0, 0xE1, 0x0C, 0x20, 0xD0, 0xE7
- .byte 0x00, 0x00, 0x52, 0xE3, 0x08, 0x00, 0x00, 0x0A, 0x41, 0x20, 0x42, 0xE2, 0x19, 0x00, 0x52, 0xE3
- .byte 0x61, 0x20, 0x82, 0x92, 0x41, 0x20, 0x82, 0x82, 0x01, 0xC0, 0x8C, 0xE2, 0x12, 0xE3, 0x8E, 0xE1
- .byte 0x01, 0x00, 0x5C, 0xE1, 0x08, 0x30, 0x83, 0xE2, 0xF3, 0xFF, 0xFF, 0xBA, 0x0E, 0x00, 0xA0, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x58, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x0C, 0x00, 0x8D, 0xE2, 0x4C, 0x01, 0x00, 0xEB
- .byte 0x0C, 0x00, 0x8D, 0xE2, 0x00, 0x30, 0x8D, 0xE2, 0x04, 0x10, 0xA0, 0xE1, 0x00, 0x20, 0xA0, 0xE3
- .byte 0xEF, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x8D, 0x12
+
+ arm_func_start FSi_ReadMemCallback
+FSi_ReadMemCallback: ; 0x020D16C0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0x28]
+ add r0, r0, r2
+ mov r2, r3
+ bl MI_CpuCopy8
+_020D16D8:
+ .byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
+ .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FSi_GetPackedName
+FSi_GetPackedName: ; 0x020D16E8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x3
+ mov lr, #0x0
+ bgt _020D173C
+ mov r12, lr
+ cmp r1, #0x0
+ ble _020D173C
+ mov r3, lr
+_020D170C:
+ ldrb r2, [r0, r12]
+ cmp r2, #0x0
+ beq _020D173C
+ sub r2, r2, #0x41
+ cmp r2, #0x19
+ addls r2, r2, #0x61
+ addhi r2, r2, #0x41
+ add r12, r12, #0x1
+ orr lr, lr, r2, lsl r3
+ cmp r12, r1
+ add r3, r3, #0x8
+ blt _020D170C
+_020D173C:
+ mov r0, lr
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FS_ChangeDir
+FS_ChangeDir: ; 0x020D174C
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x58
+ mov r4, r0
+ add r0, sp, #0xc
+ bl FS_InitFile
+ add r0, sp, #0xc
+ add r3, sp, #0x0
+ mov r1, r4
+ mov r2, #0x0
+ bl FSi_FindPath
+_020D1774:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x8D, 0x12
.byte 0x14, 0x30, 0x9F, 0x15, 0x07, 0x00, 0x90, 0x18, 0x07, 0x00, 0x83, 0x18, 0x01, 0x00, 0xA0, 0x13
.byte 0x58, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xEC, 0x53, 0x1D, 0x02
- .byte 0x00, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x52, 0xE3, 0x05, 0x00, 0x00, 0x0A
- .byte 0x02, 0x00, 0x52, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x00, 0xEA, 0x24, 0x20, 0x90, 0xE5
- .byte 0x02, 0x10, 0x81, 0xE0, 0x07, 0x00, 0x00, 0xEA, 0x2C, 0x20, 0x90, 0xE5, 0x02, 0x10, 0x81, 0xE0
- .byte 0x04, 0x00, 0x00, 0xEA, 0x28, 0x20, 0x90, 0xE5, 0x02, 0x10, 0x81, 0xE0, 0x01, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x20, 0x90, 0xE5, 0x02, 0x00, 0x51, 0xE1
- .byte 0x02, 0x10, 0xA0, 0xB1, 0x28, 0x20, 0x90, 0xE5, 0x02, 0x00, 0x51, 0xE1, 0x02, 0x10, 0xA0, 0xC1
- .byte 0x2C, 0x10, 0x80, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0xAC, 0x1A, 0x0D, 0x02, 0x04, 0xC0, 0x9F, 0xE5
- .byte 0x01, 0x30, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0xAC, 0x1A, 0x0D, 0x02, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x60, 0xA0, 0xE1, 0x00, 0x50, 0xA0, 0xE3, 0xB3, 0xEE, 0xFF, 0xEB
- .byte 0x0C, 0x10, 0x96, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x00, 0x11, 0xE2, 0x01, 0x00, 0xA0, 0x13
- .byte 0x05, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x50, 0xE3, 0x17, 0x00, 0x00, 0x0A, 0x0C, 0x00, 0x96, 0xE5
- .byte 0x44, 0x00, 0x10, 0xE2, 0x01, 0x50, 0xA0, 0x03, 0x00, 0x50, 0xA0, 0x13, 0x00, 0x00, 0x55, 0xE3
- .byte 0x09, 0x00, 0x00, 0x0A, 0x0C, 0x00, 0x96, 0xE5, 0x04, 0x00, 0x80, 0xE3, 0x0C, 0x00, 0x86, 0xE5
- .byte 0x18, 0x70, 0x86, 0xE2, 0x07, 0x00, 0xA0, 0xE1, 0x95, 0xE6, 0xFF, 0xEB, 0x0C, 0x00, 0x96, 0xE5
- .byte 0x40, 0x00, 0x10, 0xE2, 0xFA, 0xFF, 0xFF, 0x0A, 0x07, 0x00, 0x00, 0xEA, 0x18, 0x00, 0x86, 0xE2
- .byte 0x8F, 0xE6, 0xFF, 0xEB, 0x0C, 0x00, 0x96, 0xE5, 0x01, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13
- .byte 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x50, 0xE3, 0xF7, 0xFF, 0xFF, 0x1A, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x97, 0xEE, 0xFF, 0xEB, 0x00, 0x00, 0x55, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x06, 0x00, 0xA0, 0xE1
+
+ arm_func_start FS_SeekFile
+FS_SeekFile: ; 0x020D17A0
+ cmp r2, #0x0
+ beq _020D17BC
+ cmp r2, #0x1
+ beq _020D17C8
+ cmp r2, #0x2
+ beq _020D17D4
+ b _020D17E0
+_020D17BC:
+ ldr r2, [r0, #0x24]
+ add r1, r1, r2
+ b _020D17E8
+_020D17C8:
+ ldr r2, [r0, #0x2c]
+ add r1, r1, r2
+ b _020D17E8
+_020D17D4:
+ ldr r2, [r0, #0x28]
+ add r1, r1, r2
+ b _020D17E8
+_020D17E0:
+ mov r0, #0x0
+ bx lr
+_020D17E8:
+ ldr r2, [r0, #0x24]
+ cmp r1, r2
+ movlt r1, r2
+ ldr r2, [r0, #0x28]
+ cmp r1, r2
+ movgt r1, r2
+ str r1, [r0, #0x2c]
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start FS_ReadFile
+FS_ReadFile: ; 0x020D180C
+ ldr ip, _020D1818 ; =FUN_020D1AAC
+ mov r3, #0x0
+ bx r12
+ .balign 4
+_020D1818: .word FUN_020D1AAC
+
+ arm_func_start FS_ReadFileAsync
+FS_ReadFileAsync: ; 0x020D181C
+ ldr ip, _020D1828 ; =FUN_020D1AAC
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020D1828: .word FUN_020D1AAC
+
+ arm_func_start FS_WaitAsync
+FS_WaitAsync: ; 0x020D182C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, #0x0
+ bl OS_DisableInterrupts
+ ldr r1, [r6, #0xc]
+ mov r4, r0
+ ands r0, r1, #0x1
+ movne r0, #0x1
+ moveq r0, r5
+ cmp r0, #0x0
+ beq _020D18BC
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x44
+ moveq r5, #0x1
+ movne r5, #0x0
+ cmp r5, #0x0
+ beq _020D189C
+ ldr r0, [r6, #0xc]
+ orr r0, r0, #0x4
+ str r0, [r6, #0xc]
+ add r7, r6, #0x18
+_020D1884:
+ mov r0, r7
+ bl OS_SleepThread
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x40
+ beq _020D1884
+ b _020D18BC
+_020D189C:
+ add r0, r6, #0x18
+ bl OS_SleepThread
+ ldr r0, [r6, #0xc]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ bne _020D189C
+_020D18BC:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+_020D18C4:
+ .byte 0x00, 0x00, 0x55, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x06, 0x00, 0xA0, 0xE1
.byte 0xAD, 0xFE, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x14, 0x00, 0x96, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x00, 0x00, 0xA0, 0x13
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x08, 0x10, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE1, 0x30, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
+
+ arm_func_start FUN_020D18E0
+FUN_020D18E0: ; 0x020D18E0
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+
+ arm_func_start FS_CloseFile
+FS_CloseFile: ; 0x020D18FC
+ stmdb sp!, {r4,lr}
+ mov r1, #0x8
+ mov r4, r0
+ bl FSi_SendCommand
+_020D190C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0xA0, 0xE3
.byte 0x08, 0x00, 0x84, 0xE5, 0x0E, 0x00, 0xA0, 0xE3, 0x10, 0x00, 0x84, 0xE5, 0x0C, 0x10, 0x94, 0xE5
.byte 0x01, 0x00, 0xA0, 0xE3, 0x30, 0x10, 0xC1, 0xE3, 0x0C, 0x10, 0x84, 0xE5, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x43, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_OpenFile
+FS_OpenFile: ; 0x020D1944
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ mov r4, r0
+ add r0, sp, #0x0
+ bl FS_ConvertPathToFileID
+_020D1958:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A
.byte 0x00, 0x10, 0x8D, 0xE2, 0x04, 0x00, 0xA0, 0xE1, 0x06, 0x00, 0x91, 0xE8, 0x08, 0x00, 0x00, 0xEB
.byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0xD0, 0x8D, 0x12, 0x01, 0x00, 0xA0, 0x13, 0x10, 0x40, 0xBD, 0x18
.byte 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x00, 0xA0, 0xE3, 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x0F, 0x00, 0x2D, 0xE9, 0x10, 0x40, 0x2D, 0xE9, 0x0C, 0x10, 0x9D, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
- .byte 0x10, 0xD0, 0x8D, 0x02, 0x1E, 0xFF, 0x2F, 0x01, 0x08, 0x10, 0x84, 0xE5, 0x0C, 0x30, 0x9D, 0xE5
- .byte 0x10, 0x20, 0x9D, 0xE5, 0x06, 0x10, 0xA0, 0xE3, 0x30, 0x30, 0x84, 0xE5, 0x34, 0x20, 0x84, 0xE5
- .byte 0xFE, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_OpenFileFast
+FS_OpenFileFast:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r1, [sp, #0xc]
+ mov r4, r0
+ cmp r1, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ str r1, [r4, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x6
+ str r3, [r4, #0x30]
+ str r2, [r4, #0x34]
+ bl FSi_SendCommand
+_020D19D4:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
.byte 0x10, 0xD0, 0x8D, 0x02, 0x1E, 0xFF, 0x2F, 0x01, 0x0C, 0x10, 0x94, 0xE5, 0x01, 0x00, 0xA0, 0xE3
.byte 0x10, 0x10, 0x81, 0xE3, 0x0C, 0x10, 0x84, 0xE5, 0x0C, 0x10, 0x94, 0xE5, 0x20, 0x10, 0xC1, 0xE3
.byte 0x0C, 0x10, 0x84, 0xE5, 0x10, 0x40, 0xBD, 0xE8, 0x10, 0xD0, 0x8D, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x08, 0x10, 0x84, 0xE5, 0x08, 0xC0, 0x9D, 0xE5
- .byte 0x07, 0x10, 0xA0, 0xE3, 0x38, 0xC0, 0x84, 0xE5, 0x30, 0x20, 0x84, 0xE5, 0x34, 0x30, 0x84, 0xE5
- .byte 0xE6, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
+
+ arm_func_start FS_OpenFileDirect
+FS_OpenFileDirect:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ str r1, [r4, #0x8]
+ ldr r12, [sp, #0x8]
+ mov r1, #0x7
+ str r12, [r4, #0x38]
+ str r2, [r4, #0x30]
+ str r3, [r4, #0x34]
+ bl FSi_SendCommand
+_020D1A34:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x03, 0x10, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0x0C, 0x10, 0x94, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0x10, 0x10, 0x81, 0xE3
.byte 0x0C, 0x10, 0x84, 0xE5, 0x0C, 0x10, 0x94, 0xE5, 0x20, 0x10, 0xC1, 0xE3, 0x0C, 0x10, 0x84, 0xE5
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9, 0x4C, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x50, 0xA0, 0xE1, 0x00, 0x00, 0x8D, 0xE2, 0x01, 0x40, 0xA0, 0xE1, 0x84, 0x00, 0x00, 0xEB
+ .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_ConvertPathToFileID
+FS_ConvertPathToFileID:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4c
+ mov r5, r0
+ add r0, sp, #0x0
+ mov r4, r1
+ bl FS_InitFile
+_020D1A80:
.byte 0x00, 0x00, 0x8D, 0xE2, 0x04, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE3
.byte 0x27, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x4C, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1, 0x2C, 0x40, 0x97, 0xE5, 0x28, 0x00, 0x97, 0xE5
- .byte 0x02, 0x60, 0xA0, 0xE1, 0x30, 0x10, 0x87, 0xE5, 0x04, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x56, 0xE1
- .byte 0x00, 0x60, 0xA0, 0xC1, 0x00, 0x00, 0x56, 0xE3, 0x00, 0x60, 0xA0, 0xB3, 0x34, 0x20, 0x87, 0xE5
- .byte 0x03, 0x50, 0xA0, 0xE1, 0x38, 0x60, 0x87, 0xE5, 0x00, 0x00, 0x55, 0xE3, 0x0C, 0x00, 0x97, 0x05
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x04, 0x00, 0x80, 0x03, 0x0C, 0x00, 0x87, 0x05, 0x07, 0x00, 0xA0, 0xE1
- .byte 0xB2, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x55, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x07, 0x00, 0xA0, 0xE1
+ .byte 0x4C, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FUN_020D1AAC
+FUN_020D1AAC: ; 0x020D1AAC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r4, [r7, #0x2c]
+ ldr r0, [r7, #0x28]
+ mov r6, r2
+ str r1, [r7, #0x30]
+ sub r0, r0, r4
+ cmp r6, r0
+ movgt r6, r0
+ cmp r6, #0x0
+ movlt r6, #0x0
+ str r2, [r7, #0x34]
+ mov r5, r3
+ str r6, [r7, #0x38]
+ cmp r5, #0x0
+ ldreq r0, [r7, #0xc]
+ mov r1, #0x0
+ orreq r0, r0, #0x4
+ streq r0, [r7, #0xc]
+ mov r0, r7
+ bl FSi_SendCommand
+_020D1B04:
+ .byte 0x00, 0x00, 0x55, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x07, 0x00, 0xA0, 0xE1
.byte 0x45, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x2C, 0x00, 0x97, 0x15, 0x04, 0x60, 0x40, 0x10
.byte 0x00, 0x60, 0xE0, 0x03, 0x06, 0x00, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x41, 0x2D, 0xE9, 0x10, 0xD0, 0x4D, 0xE2, 0x01, 0x70, 0xA0, 0xE1
- .byte 0x00, 0x10, 0xD7, 0xE5, 0x00, 0x80, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1
- .byte 0x2F, 0x00, 0x51, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x5C, 0x00, 0x51, 0xE3, 0x08, 0x00, 0x00, 0x1A
- .byte 0x28, 0x01, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0xB4, 0x10, 0xCD, 0xE1
- .byte 0x00, 0x00, 0x8D, 0xE5, 0x08, 0x10, 0x8D, 0xE5, 0xB6, 0x10, 0xCD, 0xE1, 0x01, 0x70, 0x87, 0xE2
- .byte 0x2E, 0x00, 0x00, 0xEA, 0x04, 0x01, 0x9F, 0xE5, 0x00, 0x30, 0x8D, 0xE2, 0x07, 0x00, 0x90, 0xE8
- .byte 0x07, 0x00, 0x83, 0xE8, 0x00, 0x40, 0xA0, 0xE3, 0x04, 0x00, 0xD7, 0xE7, 0x00, 0x00, 0x50, 0xE3
- .byte 0x26, 0x00, 0x00, 0x0A, 0x2F, 0x00, 0x50, 0xE3, 0x24, 0x00, 0x00, 0x0A, 0x5C, 0x00, 0x50, 0xE3
- .byte 0x22, 0x00, 0x00, 0x0A, 0x3A, 0x00, 0x50, 0xE3, 0x1D, 0x00, 0x00, 0x1A, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x5F, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x10, 0xD0, 0x8D, 0x02
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FSi_FindPath
+FSi_FindPath:
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ mov r7, r1
+ ldrb r1, [r7, #0x0]
+ mov r8, r0
+ mov r6, r2
+ mov r5, r3
+ cmp r1, #0x2f
+ beq _020D1B60
+ cmp r1, #0x5c
+ bne _020D1B84
+_020D1B60:
+ ldr r0, _020D1C90 ; =0x021D53EC
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ strh r1, [sp, #0x4]
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x8]
+ strh r1, [sp, #0x6]
+ add r7, r7, #0x1
+ b _020D1C40
+_020D1B84:
+ ldr r0, _020D1C90 ; =0x021D53EC
+ add r3, sp, #0x0
+ ldmia r0, {r0-r2}
+ stmia r3, {r0-r2}
+ mov r4, #0x0
+_020D1B98:
+ ldrb r0, [r7, r4]
+ cmp r0, #0x0
+ beq _020D1C40
+ cmp r0, #0x2f
+ beq _020D1C40
+ cmp r0, #0x5c
+ beq _020D1C40
+ cmp r0, #0x3a
+ bne _020D1C34
+ mov r0, r7
+ mov r1, r4
+ bl FS_FindArchive
+_020D1BC8:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x10, 0xD0, 0x8D, 0x02
.byte 0x00, 0x00, 0xA0, 0x03, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x1C, 0x10, 0x90, 0xE5
.byte 0x02, 0x10, 0x11, 0xE2, 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03, 0x00, 0x00, 0x51, 0xE3
.byte 0x10, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x8D, 0xE5, 0x08, 0x10, 0x8D, 0xE5, 0xB6, 0x10, 0xCD, 0xE1
.byte 0xB4, 0x10, 0xCD, 0xE1, 0x01, 0x00, 0x84, 0xE2, 0x00, 0x00, 0xF7, 0xE7, 0x2F, 0x00, 0x50, 0xE3
.byte 0x01, 0x00, 0x00, 0x0A, 0x5C, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x70, 0x87, 0xE2
- .byte 0x02, 0x00, 0x00, 0xEA, 0x01, 0x40, 0x84, 0xE2, 0x03, 0x00, 0x54, 0xE3, 0xD5, 0xFF, 0xFF, 0xDA
- .byte 0x00, 0x10, 0x9D, 0xE5, 0x00, 0x00, 0x8D, 0xE2, 0x08, 0x10, 0x88, 0xE5, 0x3C, 0x70, 0x88, 0xE5
- .byte 0x30, 0x30, 0x88, 0xE2, 0x07, 0x00, 0x90, 0xE8, 0x07, 0x00, 0x83, 0xE8, 0x00, 0x00, 0x55, 0xE3
- .byte 0x01, 0x00, 0xA0, 0x13, 0x40, 0x00, 0x88, 0x15, 0x44, 0x50, 0x88, 0x15, 0x00, 0x00, 0xA0, 0x03
- .byte 0x40, 0x00, 0x88, 0x05, 0x08, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE3, 0x44, 0x60, 0x88, 0x05
- .byte 0x52, 0xFD, 0xFF, 0xEB, 0x10, 0xD0, 0x8D, 0xE2, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xEC, 0x53, 0x1D, 0x02, 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x30, 0x80, 0xE5, 0x00, 0x20, 0x90, 0xE5
- .byte 0x0E, 0x10, 0xA0, 0xE3, 0x04, 0x20, 0x80, 0xE5, 0x1C, 0x30, 0x80, 0xE5, 0x1C, 0x20, 0x90, 0xE5
- .byte 0x18, 0x20, 0x80, 0xE5, 0x08, 0x30, 0x80, 0xE5, 0x10, 0x10, 0x80, 0xE5, 0x0C, 0x30, 0x80, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xF8, 0x53, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x20, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0x81, 0xE5, 0x20, 0x00, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF8, 0x53, 0x1D, 0x02
- .byte 0x10, 0xC0, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE1, 0x01, 0x20, 0xA0, 0xE1, 0x08, 0x00, 0x9F, 0xE5
- .byte 0x03, 0x10, 0xA0, 0xE1, 0x1C, 0xFF, 0x2F, 0xE1, 0x84, 0x0D, 0x0D, 0x02, 0x14, 0x54, 0x1D, 0x02
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1, 0x74, 0xED, 0xFF, 0xEB, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x34, 0x10, 0x9F, 0xE5, 0x34, 0x00, 0x9F, 0xE5, 0x00, 0x40, 0x91, 0xE5, 0xC2, 0xFB, 0xFF, 0xEB
- .byte 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x60, 0x81, 0xE5, 0x01, 0x00, 0x00, 0x0A
- .byte 0x18, 0x00, 0x9F, 0xE5, 0x9D, 0xFB, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1, 0x6C, 0xED, 0xFF, 0xEB
- .byte 0x04, 0x00, 0xA0, 0xE1, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x54, 0x1D, 0x02
- .byte 0x14, 0x54, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x14, 0xD0, 0x4D, 0xE2, 0x54, 0x11, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x81, 0xE5, 0xC1, 0xE0, 0xFF, 0xEB, 0x4C, 0x31, 0x9F, 0xE5, 0x4C, 0x21, 0x9F, 0xE5
- .byte 0x00, 0xC0, 0xA0, 0xE3, 0x48, 0x11, 0x9F, 0xE5, 0x00, 0x00, 0x83, 0xE5, 0x00, 0xC0, 0x82, 0xE5
- .byte 0x04, 0xC0, 0x82, 0xE5, 0x00, 0xC0, 0x81, 0xE5, 0x04, 0xC0, 0x81, 0xE5, 0x19, 0x15, 0x00, 0xEB
- .byte 0x30, 0x01, 0x9F, 0xE5, 0xF3, 0xFC, 0xFF, 0xEB, 0x28, 0x01, 0x9F, 0xE5, 0x28, 0x11, 0x9F, 0xE5
- .byte 0x03, 0x20, 0xA0, 0xE3, 0xAB, 0xFC, 0xFF, 0xEB, 0x20, 0x01, 0x9F, 0xE5, 0xB0, 0x00, 0xD0, 0xE1
- .byte 0x02, 0x00, 0x50, 0xE3, 0x18, 0x00, 0x00, 0x1A, 0x00, 0xC1, 0x9F, 0xE5, 0x00, 0x20, 0xE0, 0xE3
- .byte 0xFC, 0x30, 0x9F, 0xE5, 0x00, 0xE0, 0xA0, 0xE3, 0xF8, 0x00, 0x9F, 0xE5, 0x00, 0x11, 0x9F, 0xE5
- .byte 0x00, 0x20, 0x8C, 0xE5, 0x04, 0xE0, 0x8C, 0xE5, 0x00, 0x20, 0x83, 0xE5, 0x04, 0xE0, 0x83, 0xE5
- .byte 0x6A, 0xFB, 0xFF, 0xEB, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x8D, 0xE5, 0xE4, 0x00, 0x9F, 0xE5
- .byte 0x04, 0x10, 0x8D, 0xE5, 0x08, 0x00, 0x8D, 0xE5, 0xDC, 0xC0, 0x9F, 0xE5, 0xC4, 0x00, 0x9F, 0xE5
- .byte 0x01, 0x20, 0xA0, 0xE1, 0x01, 0x30, 0xA0, 0xE1, 0x0C, 0xC0, 0x8D, 0xE5, 0x4D, 0xFC, 0xFF, 0xEB
- .byte 0x14, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xBC, 0x50, 0x9F, 0xE5
- .byte 0xA0, 0x00, 0x9F, 0xE5, 0xB8, 0x10, 0x9F, 0xE5, 0xB8, 0x20, 0x9F, 0xE5, 0xB8, 0x40, 0x9F, 0xE5
- .byte 0x56, 0xFB, 0xFF, 0xEB, 0x00, 0x10, 0x95, 0xE5, 0x00, 0x00, 0xE0, 0xE3, 0x00, 0x00, 0x51, 0xE1
- .byte 0x14, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x51, 0xE3
- .byte 0x14, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x20, 0x94, 0xE5
- .byte 0x00, 0x00, 0x52, 0xE1, 0x14, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x00, 0x00, 0x52, 0xE3, 0x14, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x00, 0x10, 0x8D, 0xE5, 0x04, 0x00, 0x95, 0xE5, 0x60, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x8D, 0xE5
- .byte 0x44, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0x8D, 0xE5, 0x0C, 0x00, 0x8D, 0xE5, 0x04, 0x30, 0x94, 0xE5
- .byte 0x20, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x26, 0xFC, 0xFF, 0xEB, 0x14, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x54, 0x1D, 0x02, 0xFC, 0x53, 0x1D, 0x02
- .byte 0x04, 0x54, 0x1D, 0x02, 0x0C, 0x54, 0x1D, 0x02, 0x14, 0x54, 0x1D, 0x02, 0x30, 0x68, 0x10, 0x02
- .byte 0x40, 0xFC, 0x7F, 0x02, 0x24, 0x1F, 0x0D, 0x02, 0x2C, 0x1F, 0x0D, 0x02, 0xC4, 0x1F, 0x0D, 0x02
- .byte 0x40, 0xFE, 0x7F, 0x02, 0x34, 0x1F, 0x0D, 0x02, 0x02, 0x06, 0x00, 0x00, 0x48, 0xFE, 0x7F, 0x02
- .byte 0xCC, 0x1F, 0x0D, 0x02, 0x04, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x00, 0xA0, 0xE3
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x00, 0x51, 0xE3
- .byte 0x16, 0x00, 0x00, 0x0A, 0x09, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x51, 0xE3
- .byte 0x09, 0x00, 0x00, 0x0A, 0x15, 0x00, 0x00, 0xEA, 0x60, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1, 0xDC, 0x11, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x3C, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x90, 0xE5, 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1, 0xCB, 0x11, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x04, 0x00, 0xA0, 0xE3, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xFC, 0x53, 0x1D, 0x02, 0x01, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x0C, 0xD0, 0x4D, 0xE2, 0x34, 0xC0, 0x9F, 0xE5, 0x01, 0xE0, 0xA0, 0xE1, 0x00, 0xC0, 0x8D, 0xE5
- .byte 0x04, 0x00, 0x8D, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x24, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0x8D, 0xE5
- .byte 0x02, 0x10, 0xA0, 0xE1, 0x00, 0x00, 0x90, 0xE5, 0x0E, 0x20, 0xA0, 0xE1, 0xAA, 0x14, 0x00, 0xEB
- .byte 0x06, 0x00, 0xA0, 0xE3, 0x0C, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x18, 0x20, 0x0D, 0x02, 0x00, 0x54, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x3C, 0x17, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x05, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03
+ .byte 0x02, 0x00, 0x00, 0xEA
+_020D1C34:
+ add r4, r4, #0x1
+ cmp r4, #0x3
+ ble _020D1B98
+_020D1C40:
+ ldr r1, [sp, #0x0]
+ add r0, sp, #0x0
+ str r1, [r8, #0x8]
+ str r7, [r8, #0x3c]
+ add r3, r8, #0x30
+ ldmia r0, {r0-r2}
+ stmia r3, {r0-r2}
+ cmp r5, #0x0
+ movne r0, #0x1
+ strne r0, [r8, #0x40]
+ strne r5, [r8, #0x44]
+ moveq r0, #0x0
+ streq r0, [r8, #0x40]
+ mov r0, r8
+ mov r1, #0x4
+ streq r6, [r8, #0x44]
+ bl FSi_SendCommand
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D1C90: .word 0x021D53EC
+
+ arm_func_start FS_InitFile
+FS_InitFile:
+ mov r3, #0x0
+ str r3, [r0, #0x0]
+ ldr r2, [r0, #0x0]
+ mov r1, #0xe
+ str r2, [r0, #0x4]
+ str r3, [r0, #0x1c]
+ ldr r2, [r0, #0x1c]
+ str r2, [r0, #0x18]
+ str r3, [r0, #0x8]
+ str r1, [r0, #0x10]
+ str r3, [r0, #0xc]
+ bx lr
+
+ arm_func_start FS_IsAvailable
+FS_IsAvailable: ; 0x020D1CC4
+ ldr r0, _020D1CD0 ; =0x021D53F8
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D1CD0: .word 0x021D53F8
+
+ arm_func_start FS_Init
+FS_Init: ; 0x020D1CD4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D1D0C ; =0x021D53F8
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {lr}
+ bxne lr
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl FSi_InitRom
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D1D0C: .word 0x021D53F8
+
+ arm_func_start FS_TryLoadTable
+FS_TryLoadTable: ; 0x020D1D10
+ ldr ip, _020D1D28 ; =FUN_020D0D84
+ mov r3, r0
+ mov r2, r1
+ ldr r0, _020D1D2C ; =0x021D5414
+ mov r1, r3
+ bx r12
+ .balign 4
+_020D1D28: .word FUN_020D0D84
+_020D1D2C: .word 0x021D5414
+
+ arm_func_start FS_SetDefaultDMA
+FS_SetDefaultDMA: ; 0x020D1D30
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ bl OS_DisableInterrupts
+ mov r5, r0
+ ldr r1, _020D1D7C ; =0x021D5400
+ ldr r0, _020D1D80 ; =0x021D5414
+ ldr r4, [r1, #0x0]
+ bl FS_SuspendArchive
+ ldr r1, _020D1D7C ; =0x021D5400
+ cmp r0, #0x0
+ str r6, [r1, #0x0]
+ beq _020D1D68
+ ldr r0, _020D1D80 ; =0x021D5414
+ bl FS_ResumeArchive
+_020D1D68:
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D1D7C: .word 0x021D5400
+_020D1D80: .word 0x021D5414
+
+ arm_func_start FSi_InitRom
+FSi_InitRom: ; 0x020D1D84
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x14
+ ldr r1, _020D1EE8 ; =0x021D5400
+ str r0, [r1, #0x0]
+ bl OS_GetLockID
+ ldr r3, _020D1EEC ; =0x021D53FC
+ ldr r2, _020D1EF0 ; =0x021D5404
+ mov r12, #0x0
+ ldr r1, _020D1EF4 ; =0x021D540C
+ str r0, [r3, #0x0]
+ str r12, [r2, #0x0]
+ str r12, [r2, #0x4]
+ str r12, [r1, #0x0]
+ str r12, [r1, #0x4]
+ bl FUN_020D7228
+ ldr r0, _020D1EF8 ; =0x021D5414
+ bl FS_InitArchive
+ ldr r0, _020D1EF8 ; =0x021D5414
+ ldr r1, _020D1EFC ; =0x02106830
+ mov r2, #0x3
+ bl FS_RegisterArchiveName
+ ldr r0, _020D1F00 ; =0x027FFC40
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x2
+ bne _020D1E4C
+ ldr ip, _020D1EF0 ; =0x021D5404
+ mvn r2, #0x0
+ ldr r3, _020D1EF4 ; =0x021D540C
+ mov lr, #0x0
+ ldr r0, _020D1EF8 ; =0x021D5414
+ ldr r1, _020D1F04 ; =FSi_EmptyArchiveProc
+ str r2, [r12, #0x0]
+ str lr, [r12, #0x4]
+ str r2, [r3, #0x0]
+ str lr, [r3, #0x4]
+ bl FS_SetArchiveProc
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+ ldr r0, _020D1F08 ; =FSi_ReadDummyCallback
+ str r1, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr ip, _020D1F0C ; =FSi_WriteDummyCallback
+ ldr r0, _020D1EF8 ; =0x021D5414
+ mov r2, r1
+ mov r3, r1
+ str r12, [sp, #0xc]
+ bl FS_LoadArchive
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D1E4C:
+ ldr r5, _020D1F10 ; =0x027FFE40
+ ldr r0, _020D1EF8 ; =0x021D5414
+ ldr r1, _020D1F14 ; =FSi_RomArchiveProc
+ ldr r2, _020D1F18 ; =0x00000602
+ ldr r4, _020D1F1C ; =0x027FFE48
+ bl FS_SetArchiveProc
+ ldr r1, [r5, #0x0]
+ mvn r0, #0x0
+ cmp r1, r0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ cmp r1, #0x0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ ldr r2, [r4, #0x0]
+ cmp r2, r0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ cmp r2, #0x0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ str r1, [sp, #0x0]
+ ldr r0, [r5, #0x4]
+ ldr r1, _020D1F20 ; =FSi_ReadRomCallback
+ str r0, [sp, #0x4]
+ ldr r0, _020D1F0C ; =FSi_WriteDummyCallback
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r3, [r4, #0x4]
+ ldr r0, _020D1EF8 ; =0x021D5414
+ mov r1, #0x0
+ bl FS_LoadArchive
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D1EE8: .word 0x021D5400
+_020D1EEC: .word 0x021D53FC
+_020D1EF0: .word 0x021D5404
+_020D1EF4: .word 0x021D540C
+_020D1EF8: .word 0x021D5414
+_020D1EFC: .word 0x02106830
+_020D1F00: .word 0x027FFC40
+_020D1F04: .word FSi_EmptyArchiveProc
+_020D1F08: .word FSi_ReadDummyCallback
+_020D1F0C: .word FSi_WriteDummyCallback
+_020D1F10: .word 0x027FFE40
+_020D1F14: .word FSi_RomArchiveProc
+_020D1F18: .word 0x00000602
+_020D1F1C: .word 0x027FFE48
+_020D1F20: .word FSi_ReadRomCallback
+
+ arm_func_start FSi_EmptyArchiveProc
+FSi_EmptyArchiveProc: ; 0x020D1F24
+ mov r0, #0x4
+ bx lr
+
+ arm_func_start FSi_ReadDummyCallback
+FSi_ReadDummyCallback: ; 0x020D1F2C
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start FSi_RomArchiveProc
+FSi_RomArchiveProc: ; 0x020D1F34
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x1
+ beq _020D1FA0
+ cmp r1, #0x9
+ beq _020D1F58
+ cmp r1, #0xa
+ beq _020D1F7C
+ b _020D1FB0
+_020D1F58:
+ ldr r0, _020D1FC0 ; =0x021D53FC
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl FUN_020D66E0
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {lr}
+ bx lr
+_020D1F7C:
+ ldr r0, _020D1FC0 ; =0x021D53FC
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl FUN_020D66C0
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {lr}
+ bx lr
+_020D1FA0:
+ add sp, sp, #0x4
+ mov r0, #0x4
+ ldmia sp!, {lr}
+ bx lr
+_020D1FB0:
+ mov r0, #0x8
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D1FC0: .word 0x021D53FC
+
+ arm_func_start FSi_WriteDummyCallback
+FSi_WriteDummyCallback: ; 0x020D1FC4
+ mov r0, #0x1
+ bx lr
+
+ arm_func_start FSi_ReadRomCallback
+FSi_ReadRomCallback: ; 0x020D1FCC
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr ip, _020D2010 ; =FSi_OnRomReadDone
+ mov lr, r1
+ str r12, [sp, #0x0]
+ str r0, [sp, #0x4]
+ mov r1, #0x1
+ ldr r0, _020D2014 ; =0x021D5400
+ str r1, [sp, #0x8]
+ mov r1, r2
+ ldr r0, [r0, #0x0]
+ mov r2, lr
+ bl FUN_020D72AC
+ mov r0, #0x6
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D2010: .word FSi_OnRomReadDone
+_020D2014: .word 0x021D5400
+
+ arm_func_start FSi_OnRomReadDone
+FSi_OnRomReadDone: ; 0x020D2018
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl FUN_020D7D18
+_020D2024:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x05, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03
.byte 0x04, 0x00, 0xA0, 0xE1, 0xC1, 0xFA, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x2C, 0xD0, 0x4D, 0xE2, 0x00, 0x30, 0xA0, 0xE1, 0x01, 0x20, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x03, 0x10, 0xA0, 0xE1, 0x23, 0x01, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
+
+ arm_func_start FS_UnloadOverlay
+FS_UnloadOverlay: ; 0x020D2040
+ stmdb sp!, {lr}
+ sub sp, sp, #0x2c
+ mov r3, r0
+ mov r2, r1
+ add r0, sp, #0x0
+ mov r1, r3
+ bl FS_LoadOverlayInfo
+_020D205C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x03, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x8D, 0xE2, 0x20, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0x03, 0x00, 0x00, 0x1A, 0x2C, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x40, 0xBD, 0xE8
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x2C, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x2D, 0xE9, 0x2C, 0xD0, 0x4D, 0xE2, 0x00, 0x30, 0xA0, 0xE1
- .byte 0x01, 0x20, 0xA0, 0xE1, 0x00, 0x00, 0x8D, 0xE2, 0x03, 0x10, 0xA0, 0xE1, 0x0E, 0x01, 0x00, 0xEB
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_LoadOverlay
+FS_LoadOverlay: ; 0x020D2094
+ stmdb sp!, {lr}
+ sub sp, sp, #0x2c
+ mov r3, r0
+ mov r2, r1
+ add r0, sp, #0x0
+ mov r1, r3
+ bl FS_LoadOverlayInfo
+_020D20B0:
.byte 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x8D, 0xE2, 0xBC, 0x00, 0x00, 0xEB
.byte 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x1A, 0x2C, 0xD0, 0x8D, 0xE2, 0x00, 0x00, 0xA0, 0xE3
.byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x8D, 0xE2, 0x4B, 0x00, 0x00, 0xEB
.byte 0x01, 0x00, 0xA0, 0xE3, 0x2C, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x03, 0x00, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x4F, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0xF0, 0x80, 0x9F, 0xE5, 0x00, 0xB0, 0xA0, 0xE1, 0x00, 0x90, 0xA0, 0xE3
- .byte 0x08, 0x10, 0x9B, 0xE5, 0x0C, 0x00, 0x9B, 0xE5, 0x04, 0x50, 0x9B, 0xE5, 0x00, 0x00, 0x81, 0xE0
- .byte 0x09, 0x70, 0xA0, 0xE1, 0x09, 0x60, 0xA0, 0xE1, 0x00, 0x40, 0x85, 0xE0, 0x73, 0xEC, 0xFF, 0xEB
- .byte 0x00, 0xE0, 0x98, 0xE5, 0x09, 0xA0, 0xA0, 0xE1, 0x0E, 0xC0, 0xA0, 0xE1, 0x00, 0x00, 0x5E, 0xE3
- .byte 0x1B, 0x00, 0x00, 0x0A, 0x08, 0x20, 0x9C, 0xE5, 0x00, 0x30, 0x9C, 0xE5, 0x00, 0x00, 0x52, 0xE3
- .byte 0x04, 0x10, 0x9C, 0xE5, 0x03, 0x00, 0x00, 0x1A, 0x05, 0x00, 0x51, 0xE1, 0x01, 0x00, 0x00, 0x3A
- .byte 0x04, 0x00, 0x51, 0xE1, 0x03, 0x00, 0x00, 0x3A, 0x05, 0x00, 0x52, 0xE1, 0x0C, 0x00, 0x00, 0x3A
- .byte 0x04, 0x00, 0x52, 0xE1, 0x0A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x56, 0xE3, 0x00, 0xC0, 0x86, 0x15
- .byte 0x0C, 0x70, 0xA0, 0x01, 0x0C, 0x00, 0x5E, 0xE1, 0x00, 0x30, 0x88, 0x05, 0x03, 0xE0, 0xA0, 0x01
- .byte 0x00, 0x90, 0x8C, 0xE5, 0x00, 0x00, 0x5A, 0xE3, 0x0C, 0x60, 0xA0, 0xE1, 0x00, 0x30, 0x8A, 0x15
- .byte 0x00, 0x00, 0x00, 0xEA, 0x0C, 0xA0, 0xA0, 0xE1, 0x03, 0xC0, 0xA0, 0xE1, 0x00, 0x00, 0x53, 0xE3
- .byte 0xE3, 0xFF, 0xFF, 0x1A, 0x56, 0xEC, 0xFF, 0xEB, 0x00, 0x00, 0x57, 0xE3, 0x04, 0xD0, 0x8D, 0x02
+
+ arm_func_start FS_UnloadOverlayImage
+FS_UnloadOverlayImage: ; 0x020D20F0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl FS_EndOverlay
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start FS_EndOverlay
+FS_EndOverlay: ; 0x020D210C
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr r8, _020D220C ; =0x021D74C8
+ mov r11, r0
+ mov r9, #0x0
+ ldr r1, [r11, #0x8]
+ ldr r0, [r11, #0xc]
+ ldr r5, [r11, #0x4]
+ add r0, r1, r0
+ mov r7, r9
+ mov r6, r9
+ add r4, r5, r0
+ bl OS_DisableInterrupts
+ ldr lr, [r8, #0x0]
+ mov r10, r9
+ mov r12, lr
+ cmp lr, #0x0
+ beq _020D21C4
+_020D2154:
+ ldr r2, [r12, #0x8]
+ ldr r3, [r12, #0x0]
+ cmp r2, #0x0
+ ldr r1, [r12, #0x4]
+ bne _020D2178
+ cmp r1, r5
+ blo _020D2178
+ cmp r1, r4
+ blo _020D2188
+_020D2178:
+ cmp r2, r5
+ blo _020D21B4
+ cmp r2, r4
+ bhs _020D21B4
+_020D2188:
+ cmp r6, #0x0
+ strne r12, [r6, #0x0]
+ moveq r7, r12
+ cmp lr, r12
+ streq r3, [r8, #0x0]
+ moveq lr, r3
+ str r9, [r12, #0x0]
+ cmp r10, #0x0
+ mov r6, r12
+ strne r3, [r10, #0x0]
+ b _020D21B8
+_020D21B4:
+ mov r10, r12
+_020D21B8:
+ mov r12, r3
+ cmp r3, #0x0
+ bne _020D2154
+_020D21C4:
+ bl OS_RestoreInterrupts
+_020D21C8:
+ .byte 0x00, 0x00, 0x57, 0xE3, 0x04, 0xD0, 0x8D, 0x02
.byte 0xF0, 0x4F, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x10, 0x97, 0xE5, 0x00, 0x40, 0x97, 0xE5
.byte 0x00, 0x00, 0x51, 0xE3, 0x01, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x97, 0xE5, 0x31, 0xFF, 0x2F, 0xE1
.byte 0x04, 0x70, 0xA0, 0xE1, 0x00, 0x00, 0x54, 0xE3, 0xF6, 0xFF, 0xFF, 0x1A, 0xC7, 0xFF, 0xFF, 0xEA
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xC8, 0x74, 0x1D, 0x02
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x50, 0xA0, 0xE1, 0x57, 0x01, 0x00, 0xEB, 0xDC, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x40, 0xA0, 0xE1, 0xB0, 0x00, 0xD1, 0xE1, 0x02, 0x00, 0x50, 0xE3, 0x1C, 0x00, 0x00, 0x1A
- .byte 0x1F, 0x10, 0xD5, 0xE5, 0x00, 0x00, 0xA0, 0xE3, 0x02, 0x10, 0x11, 0xE2, 0x0F, 0x00, 0x00, 0x0A
- .byte 0xBC, 0x10, 0x9F, 0xE5, 0xBC, 0x30, 0x9F, 0xE5, 0xBC, 0x20, 0x9F, 0xE5, 0x03, 0xC0, 0x41, 0xE0
- .byte 0x92, 0x1C, 0xCE, 0xE0, 0xCE, 0xE1, 0xA0, 0xE1, 0xAC, 0x1F, 0xA0, 0xE1, 0x00, 0x20, 0x95, 0xE5
- .byte 0x0E, 0xE0, 0x81, 0xE0, 0x0E, 0x00, 0x52, 0xE1, 0x04, 0x00, 0x00, 0x2A, 0x14, 0x00, 0xA0, 0xE3
- .byte 0x92, 0x30, 0x20, 0xE0, 0x04, 0x10, 0x95, 0xE5, 0x04, 0x20, 0xA0, 0xE1, 0x23, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x50, 0xE3, 0x06, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x95, 0xE5, 0x04, 0x20, 0xA0, 0xE1
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x2C, 0xF0, 0xFF, 0xEB, 0x6C, 0xED, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x1F, 0x00, 0xD5, 0xE5, 0x01, 0x00, 0x10, 0xE2, 0x02, 0x00, 0x00, 0x0A
- .byte 0x04, 0x00, 0x95, 0xE5, 0x04, 0x00, 0x80, 0xE0, 0xA4, 0xB9, 0xFC, 0xEB, 0x04, 0x00, 0x95, 0xE5
- .byte 0x08, 0x10, 0x95, 0xE5, 0xA4, 0xE7, 0xFF, 0xEB, 0x10, 0x60, 0x95, 0xE5, 0x14, 0x40, 0x95, 0xE5
- .byte 0x04, 0x00, 0x56, 0xE1, 0x70, 0x40, 0xBD, 0x28, 0x1E, 0xFF, 0x2F, 0x21, 0x00, 0x00, 0x96, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x0A, 0x30, 0xFF, 0x2F, 0xE1, 0x04, 0x60, 0x86, 0xE2
- .byte 0x04, 0x00, 0x56, 0xE1, 0xF8, 0xFF, 0xFF, 0x3A, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x40, 0xFC, 0x7F, 0x02, 0x84, 0x6F, 0x10, 0x02, 0x84, 0x6F, 0x10, 0x02, 0x67, 0x66, 0x66, 0x66
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x58, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x02, 0x50, 0xA0, 0xE1, 0x04, 0x00, 0x8D, 0xE2, 0x00, 0x10, 0xA0, 0xE3, 0x14, 0x20, 0xA0, 0xE3
- .byte 0x05, 0xF0, 0xFF, 0xEB, 0x70, 0x00, 0x9F, 0xE5, 0x70, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x00, 0x20, 0x91, 0xE5, 0x18, 0x10, 0x8D, 0xE2, 0x24, 0xF0, 0xFF, 0xEB, 0x5C, 0x30, 0x9F, 0xE5
- .byte 0x06, 0x10, 0xA0, 0xE1, 0x00, 0xC0, 0x93, 0xE5, 0x05, 0x20, 0xA0, 0xE1, 0x04, 0x00, 0x8D, 0xE2
- .byte 0x18, 0x30, 0x8D, 0xE2, 0x00, 0xC0, 0x8D, 0xE5, 0x82, 0x02, 0x00, 0xEB, 0x04, 0x20, 0x8D, 0xE2
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x00, 0x10, 0x92, 0xE5, 0x03, 0x00, 0x94, 0xE7, 0x00, 0x00, 0x51, 0xE1
- .byte 0x03, 0x00, 0x00, 0x1A, 0x04, 0x30, 0x83, 0xE2, 0x14, 0x00, 0x53, 0xE3, 0x04, 0x20, 0x82, 0xE2
- .byte 0xF7, 0xFF, 0xFF, 0x3A, 0x14, 0x00, 0x53, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x00, 0x00, 0xA0, 0x13
- .byte 0x58, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x34, 0x68, 0x10, 0x02
- .byte 0x38, 0x68, 0x10, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x54, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1
- .byte 0x08, 0x00, 0x8D, 0xE2, 0x32, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x8D, 0xE2, 0x05, 0x10, 0xA0, 0xE1
+ .byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D220C: .word 0x021D74C8
+
+ arm_func_start FS_StartOverlay
+FS_StartOverlay: ; 0x020D2210
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ bl FSi_GetOverlayBinarySize
+ ldr r1, _020D2300 ; =0x027FFC40
+ mov r4, r0
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x2
+ bne _020D22A4
+ ldrb r1, [r5, #0x1f]
+ mov r0, #0x0
+ ands r1, r1, #0x2
+ beq _020D2280
+ ldr r1, _020D2304 ; =0x02106F84
+ ldr r3, _020D2308 ; =0x02106F84
+ ldr r2, _020D230C ; =0x66666667
+ sub r12, r1, r3
+ smull r1, lr, r2, r12
+ mov lr, lr, asr #0x3
+ mov r1, r12, lsr #0x1f
+ ldr r2, [r5, #0x0]
+ add lr, r1, lr
+ cmp r2, lr
+ bhs _020D2280
+ mov r0, #0x14
+ mla r0, r2, r0, r3
+ ldr r1, [r5, #0x4]
+ mov r2, r4
+ bl FSi_CompareDigest
+_020D2280:
+ cmp r0, #0x0
+ bne _020D22A4
+ ldr r0, [r5, #0x4]
+ mov r2, r4
+ mov r1, #0x0
+ bl MI_CpuFill8
+ bl OS_Terminate
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D22A4:
+ ldrb r0, [r5, #0x1f]
+ ands r0, r0, #0x1
+ beq _020D22BC
+ ldr r0, [r5, #0x4]
+ add r0, r0, r4
+ bl FUN_02000950
+_020D22BC:
+ ldr r0, [r5, #0x4]
+ ldr r1, [r5, #0x8]
+ bl DC_FlushRange
+ ldr r6, [r5, #0x10]
+ ldr r4, [r5, #0x14]
+ cmp r6, r4
+ ldmcsia sp!, {r4-r6,lr}
+ bxcs lr
+_020D22DC:
+ ldr r0, [r6, #0x0]
+ cmp r0, #0x0
+ beq _020D22EC
+ blx r0
+_020D22EC:
+ add r6, r6, #0x4
+ cmp r6, r4
+ blo _020D22DC
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D2300: .word 0x027FFC40
+_020D2304: .word 0x02106F84
+_020D2308: .word 0x02106F84
+_020D230C: .word 0x66666667
+
+ arm_func_start FSi_CompareDigest
+FSi_CompareDigest:
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x58
+ mov r4, r0
+ mov r6, r1
+ mov r5, r2
+ add r0, sp, #0x4
+ mov r1, #0x0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ ldr r0, _020D23AC ; =0x02106834
+ ldr r1, _020D23B0 ; =0x02106838
+ ldr r0, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ add r1, sp, #0x18
+ bl MI_CpuCopy8
+ ldr r3, _020D23B0 ; =0x02106838
+ mov r1, r6
+ ldr r12, [r3, #0x0]
+ mov r2, r5
+ add r0, sp, #0x4
+ add r3, sp, #0x18
+ str r12, [sp, #0x0]
+ bl MATH_CalcHMACSHA1
+ add r2, sp, #0x4
+ mov r3, #0x0
+_020D2374:
+ ldr r1, [r2, #0x0]
+ ldr r0, [r4, r3]
+ cmp r1, r0
+ bne _020D2394
+ add r3, r3, #0x4
+ cmp r3, #0x14
+ add r2, r2, #0x4
+ blo _020D2374
+_020D2394:
+ cmp r3, #0x14
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x58
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D23AC: .word 0x02106834
+_020D23B0: .word 0x02106838
+
+ arm_func_start FS_LoadOverlayImage
+FS_LoadOverlayImage: ; 0x020D23B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x54
+ mov r5, r0
+ add r0, sp, #0x8
+ bl FS_InitFile
+_020D23C8:
+ .byte 0x00, 0x00, 0x8D, 0xE2, 0x05, 0x10, 0xA0, 0xE1
.byte 0xCE, 0x00, 0x00, 0xEB, 0x00, 0x10, 0x8D, 0xE2, 0x08, 0x00, 0x8D, 0xE2, 0x06, 0x00, 0x91, 0xE8
.byte 0x6B, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x54, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03
.byte 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x05, 0x00, 0xA0, 0xE1, 0xDE, 0x00, 0x00, 0xEB
@@ -2208,8 +9449,18 @@ _020CD33C:
.byte 0x05, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x8D, 0xE2, 0x33, 0xFD, 0xFF, 0xEB, 0x54, 0xD0, 0x8D, 0xE2
.byte 0x00, 0x00, 0xA0, 0xE3, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0x8D, 0xE2
.byte 0x2D, 0xFD, 0xFF, 0xEB, 0x01, 0x00, 0xA0, 0xE3, 0x54, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x01, 0x50, 0xA0, 0xE1
- .byte 0x00, 0x60, 0xA0, 0xE1, 0x05, 0x00, 0xA0, 0xE1, 0x09, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x8D, 0xE2
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_LoadOverlayImageAsync
+FS_LoadOverlayImageAsync: ; 0x020D2454
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r5, r1
+ mov r6, r0
+ mov r0, r5
+ bl FS_InitFile
+_020D246C:
+ .byte 0x00, 0x00, 0x8D, 0xE2
.byte 0x06, 0x10, 0xA0, 0xE1, 0xA5, 0x00, 0x00, 0xEB, 0x00, 0x10, 0x8D, 0xE2, 0x05, 0x00, 0xA0, 0xE1
.byte 0x06, 0x00, 0x91, 0xE8, 0x42, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x08, 0xD0, 0x8D, 0x02
.byte 0x00, 0x00, 0xA0, 0x03, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x06, 0x00, 0xA0, 0xE1
@@ -2217,30 +9468,98 @@ _020CD33C:
.byte 0x04, 0x10, 0x96, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0xD6, 0xFC, 0xFF, 0xEB
.byte 0x00, 0x00, 0x54, 0xE1, 0x08, 0xD0, 0x8D, 0x02, 0x01, 0x00, 0xA0, 0x03, 0x70, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0x05, 0x00, 0xA0, 0xE1, 0x07, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x64, 0xD0, 0x4D, 0xE2, 0x01, 0x40, 0xB0, 0xE1, 0x00, 0x50, 0xA0, 0xE1, 0xE8, 0x00, 0x9F, 0x05
- .byte 0xE8, 0x00, 0x9F, 0x15, 0x00, 0x30, 0x90, 0xE5, 0x00, 0x00, 0x53, 0xE3, 0x25, 0x00, 0x00, 0x0A
- .byte 0x04, 0x00, 0x90, 0xE5, 0x82, 0x22, 0xA0, 0xE1, 0x00, 0x00, 0x52, 0xE1, 0x64, 0xD0, 0x8D, 0x22
- .byte 0x00, 0x00, 0xA0, 0x23, 0x30, 0x40, 0xBD, 0x28, 0x1E, 0xFF, 0x2F, 0x21, 0x02, 0x00, 0x83, 0xE0
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x20, 0x20, 0xA0, 0xE3, 0xA8, 0xEF, 0xFF, 0xEB, 0x18, 0x00, 0x8D, 0xE2
- .byte 0x20, 0x40, 0x85, 0xE5, 0xD2, 0xFD, 0xFF, 0xEB, 0x10, 0x00, 0x8D, 0xE2, 0x05, 0x10, 0xA0, 0xE1
- .byte 0x6E, 0x00, 0x00, 0xEB, 0x10, 0x10, 0x8D, 0xE2, 0x18, 0x00, 0x8D, 0xE2, 0x06, 0x00, 0x91, 0xE8
- .byte 0x0B, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x64, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03
+ .byte 0x08, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FS_LoadOverlayInfo
+FS_LoadOverlayInfo:
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x64
+ movs r4, r1
+ mov r5, r0
+ ldreq r0, _020D25EC ; =0x021D5404
+ ldrne r0, _020D25F0 ; =0x021D540C
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ beq _020D25A8
+ ldr r0, [r0, #0x4]
+ mov r2, r2, lsl #0x5
+ cmp r2, r0
+ addcs sp, sp, #0x64
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r5,lr}
+ bxcs lr
+ add r0, r3, r2
+ mov r1, r5
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ add r0, sp, #0x18
+ str r4, [r5, #0x20]
+ bl FS_InitFile
+ add r0, sp, #0x10
+ mov r1, r5
+ bl FS_GetOverlayFileID
+ add r1, sp, #0x10
+ add r0, sp, #0x18
+ ldmia r1, {r1-r2}
+ bl FS_OpenFileFast
+_020D2564:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x64, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03
.byte 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x3C, 0x10, 0x9D, 0xE5, 0x18, 0x00, 0x8D, 0xE2
.byte 0x24, 0x10, 0x85, 0xE5, 0x40, 0x20, 0x9D, 0xE5, 0x3C, 0x10, 0x9D, 0xE5, 0x01, 0x10, 0x42, 0xE0
.byte 0x28, 0x10, 0x85, 0xE5, 0xD8, 0xFC, 0xFF, 0xEB, 0x64, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x44, 0x10, 0x9F, 0xE5, 0x44, 0xC0, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x91, 0xE5, 0x40, 0x30, 0x9F, 0xE5, 0x00, 0x00, 0x8D, 0xE5, 0x04, 0x10, 0x91, 0xE5
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0x8D, 0xE5, 0x00, 0x50, 0x9C, 0xE5, 0x04, 0x10, 0xA0, 0xE1
- .byte 0x08, 0x50, 0x8D, 0xE5, 0x04, 0x40, 0x9C, 0xE5, 0x0C, 0x40, 0x8D, 0xE5, 0x07, 0x00, 0x00, 0xEB
- .byte 0x64, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x54, 0x1D, 0x02
- .byte 0x0C, 0x54, 0x1D, 0x02, 0x50, 0xFE, 0x7F, 0x02, 0x58, 0xFE, 0x7F, 0x02, 0x14, 0x54, 0x1D, 0x02
- .byte 0xF0, 0x43, 0x2D, 0xE9, 0x54, 0xD0, 0x4D, 0xE2, 0x01, 0x90, 0xB0, 0xE1, 0x74, 0x50, 0x9D, 0x05
- .byte 0x70, 0x60, 0x9D, 0x05, 0x7C, 0x50, 0x9D, 0x15, 0x78, 0x60, 0x9D, 0x15, 0x82, 0x72, 0xA0, 0xE1
- .byte 0x05, 0x00, 0x57, 0xE1, 0x00, 0x40, 0xA0, 0xE1, 0x03, 0x80, 0xA0, 0xE1, 0x54, 0xD0, 0x8D, 0x22
- .byte 0x00, 0x00, 0xA0, 0x23, 0xF0, 0x43, 0xBD, 0x28, 0x1E, 0xFF, 0x2F, 0x21, 0x0C, 0x00, 0x8D, 0xE2
- .byte 0x93, 0xFD, 0xFF, 0xEB, 0x00, 0xC0, 0xE0, 0xE3, 0x0C, 0x00, 0x8D, 0xE2, 0x08, 0x10, 0xA0, 0xE1
- .byte 0x07, 0x20, 0x86, 0xE0, 0x05, 0x30, 0x86, 0xE0, 0x00, 0xC0, 0x8D, 0xE5, 0xEB, 0xFC, 0xFF, 0xEB
+ .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D25A8:
+ ldr r1, _020D25F4 ; =0x027FFE50
+ ldr ip, _020D25F8 ; =0x027FFE58
+ ldr r0, [r1, #0x0]
+ ldr r3, _020D25FC ; =0x021D5414
+ str r0, [sp, #0x0]
+ ldr r1, [r1, #0x4]
+ mov r0, r5
+ str r1, [sp, #0x4]
+ ldr r5, [r12, #0x0]
+ mov r1, r4
+ str r5, [sp, #0x8]
+ ldr r4, [r12, #0x4]
+ str r4, [sp, #0xc]
+ bl FSi_LoadOverlayInfoCore
+ add sp, sp, #0x64
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D25EC: .word 0x021D5404
+_020D25F0: .word 0x021D540C
+_020D25F4: .word 0x027FFE50
+_020D25F8: .word 0x027FFE58
+_020D25FC: .word 0x021D5414
+
+ arm_func_start FSi_LoadOverlayInfoCore
+FSi_LoadOverlayInfoCore: ; 0x020D2600
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x54
+ movs r9, r1
+ ldreq r5, [sp, #0x74]
+ ldreq r6, [sp, #0x70]
+ ldrne r5, [sp, #0x7c]
+ ldrne r6, [sp, #0x78]
+ mov r7, r2, lsl #0x5
+ cmp r7, r5
+ mov r4, r0
+ mov r8, r3
+ addcs sp, sp, #0x54
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r9,lr}
+ bxcs lr
+ add r0, sp, #0xc
+ bl FS_InitFile
+ mvn r12, #0x0
+ add r0, sp, #0xc
+ mov r1, r8
+ add r2, r6, r7
+ add r3, r6, r5
+ str r12, [sp, #0x0]
+ bl FS_OpenFileDirect
+_020D2660:
.byte 0x00, 0x00, 0x50, 0xE3, 0x54, 0xD0, 0x8D, 0x02, 0x00, 0x00, 0xA0, 0x03, 0xF0, 0x43, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0x0C, 0x00, 0x8D, 0xE2, 0x04, 0x10, 0xA0, 0xE1, 0x20, 0x20, 0xA0, 0xE3
.byte 0x61, 0xFC, 0xFF, 0xEB, 0x20, 0x00, 0x50, 0xE3, 0x05, 0x00, 0x00, 0x0A, 0x0C, 0x00, 0x8D, 0xE2
@@ -2252,344 +9571,1504 @@ _020CD33C:
.byte 0x30, 0x10, 0x9D, 0xE5, 0x0C, 0x00, 0x8D, 0xE2, 0x24, 0x10, 0x84, 0xE5, 0x34, 0x20, 0x9D, 0xE5
.byte 0x30, 0x10, 0x9D, 0xE5, 0x01, 0x10, 0x42, 0xE0, 0x28, 0x10, 0x84, 0xE5, 0x7E, 0xFC, 0xFF, 0xEB
.byte 0x01, 0x00, 0xA0, 0xE3, 0x54, 0xD0, 0x8D, 0xE2, 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0xD0, 0x4D, 0xE2, 0x18, 0x20, 0x9F, 0xE5, 0x00, 0x20, 0x8D, 0xE5, 0x18, 0x10, 0x91, 0xE5
- .byte 0x04, 0x10, 0x8D, 0xE5, 0x00, 0x20, 0x80, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x08, 0xD0, 0x8D, 0xE2
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x14, 0x54, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x08, 0x50, 0x90, 0xE5
- .byte 0x0C, 0x10, 0x90, 0xE5, 0x04, 0x60, 0x90, 0xE5, 0x01, 0x40, 0x85, 0xE0, 0x06, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x10, 0xA0, 0xE1, 0x8F, 0xE6, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE1
- .byte 0x6F, 0xE6, 0xFF, 0xEB, 0x05, 0x00, 0x86, 0xE0, 0x05, 0x20, 0x44, 0xE0, 0x00, 0x10, 0xA0, 0xE3
- .byte 0xF5, 0xEE, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x1F, 0x10, 0xD0, 0xE5
- .byte 0x01, 0x10, 0x11, 0xE2, 0x1C, 0x00, 0x90, 0x15, 0x00, 0x04, 0xA0, 0x11, 0x20, 0x04, 0xA0, 0x11
- .byte 0x08, 0x00, 0x90, 0x05, 0x1E, 0xFF, 0x2F, 0xE1, 0xF0, 0x4F, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x18, 0x30, 0x80, 0xE2, 0x00, 0x50, 0x90, 0xE5, 0x04, 0x40, 0x90, 0xE5, 0x08, 0xE0, 0x90, 0xE5
- .byte 0x0C, 0xC0, 0x90, 0xE5, 0xBC, 0x23, 0x9F, 0xE5, 0x03, 0x80, 0xA0, 0xE1, 0x00, 0x70, 0xA0, 0xE3
- .byte 0x04, 0x10, 0xE0, 0xE1, 0x0E, 0x60, 0x04, 0xE0, 0x0C, 0x10, 0x01, 0xE0, 0x01, 0x10, 0x86, 0xE1
- .byte 0x00, 0x60, 0x98, 0xE5, 0x01, 0x10, 0x85, 0xE0, 0x00, 0x50, 0x92, 0xE5, 0x01, 0x10, 0x86, 0xE0
- .byte 0x01, 0x50, 0x85, 0xE0, 0x85, 0x13, 0xA0, 0xE1, 0xA5, 0x1C, 0x81, 0xE1, 0x01, 0x50, 0x84, 0xE0
- .byte 0x05, 0x10, 0xE0, 0xE1, 0x04, 0x60, 0x05, 0xE0, 0x0E, 0x10, 0x01, 0xE0, 0x01, 0x10, 0x86, 0xE1
- .byte 0x04, 0x60, 0x98, 0xE5, 0x01, 0x10, 0x8C, 0xE0, 0x04, 0x90, 0x92, 0xE5, 0x01, 0x10, 0x86, 0xE0
- .byte 0x01, 0x60, 0x89, 0xE0, 0x06, 0x16, 0xA0, 0xE1, 0x26, 0x1A, 0x81, 0xE1, 0x01, 0xC0, 0x85, 0xE0
- .byte 0x0C, 0x10, 0xE0, 0xE1, 0x05, 0x60, 0x0C, 0xE0, 0x04, 0x10, 0x01, 0xE0, 0x01, 0x60, 0x86, 0xE1
- .byte 0x0C, 0x10, 0x88, 0xE2, 0x08, 0x90, 0x98, 0xE5, 0x06, 0x60, 0x8E, 0xE0, 0x06, 0x60, 0x89, 0xE0
- .byte 0x08, 0x90, 0x92, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x06, 0xA0, 0x89, 0xE0, 0x0C, 0x60, 0x82, 0xE2
- .byte 0x00, 0x60, 0x96, 0xE5, 0x8A, 0x98, 0xA0, 0xE1, 0xAA, 0x97, 0x89, 0xE1, 0x09, 0xE0, 0x8C, 0xE0
- .byte 0x10, 0x20, 0x82, 0xE2, 0x10, 0x80, 0x88, 0xE2, 0x0C, 0xA0, 0x0E, 0xE0, 0x0E, 0x90, 0xE0, 0xE1
- .byte 0x05, 0x90, 0x09, 0xE0, 0x09, 0x90, 0x8A, 0xE1, 0x09, 0x40, 0x84, 0xE0, 0x04, 0x10, 0x81, 0xE0
- .byte 0x01, 0x40, 0x86, 0xE0, 0x04, 0x1B, 0xA0, 0xE1, 0x24, 0x15, 0x81, 0xE1, 0x01, 0x40, 0x8E, 0xE0
- .byte 0x01, 0x70, 0x87, 0xE2, 0x04, 0x00, 0x57, 0xE3, 0xC8, 0xFF, 0xFF, 0xBA, 0xD8, 0x62, 0x9F, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x0C, 0x70, 0xE0, 0xE1, 0x00, 0x90, 0x96, 0xE5, 0x0C, 0x80, 0x04, 0xE0
- .byte 0x07, 0x70, 0x0E, 0xE0, 0x07, 0x70, 0x88, 0xE1, 0x09, 0x81, 0x93, 0xE7, 0x07, 0x50, 0x85, 0xE0
- .byte 0x00, 0x70, 0x92, 0xE5, 0x05, 0x50, 0x88, 0xE0, 0x05, 0x70, 0x87, 0xE0, 0x87, 0x52, 0xA0, 0xE1
- .byte 0xA7, 0x5D, 0x85, 0xE1, 0x05, 0x50, 0x84, 0xE0, 0x0E, 0x80, 0xE0, 0xE1, 0x04, 0x70, 0x96, 0xE5
- .byte 0x0E, 0x90, 0x05, 0xE0, 0x08, 0x80, 0x04, 0xE0, 0x08, 0xA0, 0x89, 0xE1, 0x04, 0x80, 0xE0, 0xE1
- .byte 0x08, 0x90, 0x96, 0xE5, 0x07, 0xB1, 0x93, 0xE7, 0x0A, 0x70, 0x8C, 0xE0, 0x07, 0xA0, 0x8B, 0xE0
- .byte 0x0C, 0x70, 0x86, 0xE2, 0x09, 0x91, 0x93, 0xE7, 0x08, 0x80, 0x05, 0xE0, 0x00, 0x70, 0x97, 0xE5
- .byte 0x04, 0xB0, 0x92, 0xE5, 0x07, 0x71, 0x93, 0xE7, 0x0A, 0xB0, 0x8B, 0xE0, 0x8B, 0xA4, 0xA0, 0xE1
- .byte 0xAB, 0xAB, 0x8A, 0xE1, 0x0A, 0xC0, 0x85, 0xE0, 0x08, 0xA0, 0x92, 0xE5, 0x04, 0xB0, 0x0C, 0xE0
- .byte 0x08, 0x80, 0x8B, 0xE1, 0x08, 0x80, 0x8E, 0xE0, 0x08, 0x80, 0x89, 0xE0, 0x08, 0xA0, 0x8A, 0xE0
- .byte 0x0C, 0x80, 0x82, 0xE2, 0x00, 0x80, 0x98, 0xE5, 0x0A, 0x97, 0xA0, 0xE1, 0x2A, 0x99, 0x89, 0xE1
- .byte 0x09, 0xE0, 0x8C, 0xE0, 0x10, 0x20, 0x82, 0xE2, 0x10, 0x60, 0x86, 0xE2, 0x05, 0xA0, 0x0E, 0xE0
- .byte 0x05, 0x90, 0xE0, 0xE1, 0x09, 0x90, 0x0C, 0xE0, 0x09, 0x90, 0x8A, 0xE1, 0x09, 0x40, 0x84, 0xE0
- .byte 0x04, 0x40, 0x87, 0xE0, 0x04, 0x70, 0x88, 0xE0, 0x07, 0x4A, 0xA0, 0xE1, 0x27, 0x46, 0x84, 0xE1
- .byte 0x04, 0x40, 0x8E, 0xE0, 0x01, 0x10, 0x81, 0xE2, 0x04, 0x00, 0x51, 0xE3, 0xC4, 0xFF, 0xFF, 0xBA
- .byte 0x00, 0x70, 0xA0, 0xE3, 0x00, 0x80, 0x96, 0xE5, 0x0E, 0x10, 0x24, 0xE0, 0x01, 0x10, 0x2C, 0xE0
- .byte 0x01, 0x10, 0x85, 0xE0, 0x08, 0x81, 0x93, 0xE7, 0x00, 0x50, 0x92, 0xE5, 0x01, 0x10, 0x88, 0xE0
- .byte 0x01, 0x50, 0x85, 0xE0, 0x05, 0x12, 0xA0, 0xE1, 0x25, 0x1E, 0x81, 0xE1, 0x01, 0x50, 0x84, 0xE0
- .byte 0x04, 0x80, 0x96, 0xE5, 0x04, 0x10, 0x25, 0xE0, 0x01, 0x10, 0x2E, 0xE0, 0x08, 0x81, 0x93, 0xE7
- .byte 0x01, 0x10, 0x8C, 0xE0, 0x08, 0x90, 0x96, 0xE5, 0x04, 0xA0, 0x92, 0xE5, 0x01, 0x10, 0x88, 0xE0
- .byte 0x01, 0x80, 0x8A, 0xE0, 0x88, 0x15, 0xA0, 0xE1, 0xA8, 0x1A, 0x81, 0xE1, 0x01, 0xC0, 0x85, 0xE0
- .byte 0x05, 0x80, 0x2C, 0xE0, 0x08, 0x80, 0x24, 0xE0, 0x09, 0x91, 0x93, 0xE7, 0x08, 0x80, 0x8E, 0xE0
- .byte 0x08, 0x90, 0x89, 0xE0, 0x08, 0xA0, 0x92, 0xE5, 0x0C, 0x10, 0x82, 0xE2, 0x0C, 0x80, 0x96, 0xE5
- .byte 0x09, 0xA0, 0x8A, 0xE0, 0x08, 0x91, 0x93, 0xE7, 0x0A, 0x88, 0xA0, 0xE1, 0x2A, 0x88, 0x88, 0xE1
- .byte 0x08, 0xE0, 0x8C, 0xE0, 0x0C, 0x80, 0x2E, 0xE0, 0x08, 0x80, 0x25, 0xE0, 0x08, 0x40, 0x84, 0xE0
- .byte 0x01, 0x70, 0x87, 0xE2, 0x00, 0x10, 0x91, 0xE5, 0x04, 0x40, 0x89, 0xE0, 0x04, 0x40, 0x81, 0xE0
- .byte 0x84, 0x1B, 0xA0, 0xE1, 0xA4, 0x14, 0x81, 0xE1, 0x10, 0x20, 0x82, 0xE2, 0x10, 0x60, 0x86, 0xE2
- .byte 0x01, 0x40, 0x8E, 0xE0, 0x04, 0x00, 0x57, 0xE3, 0xCD, 0xFF, 0xFF, 0xBA, 0x00, 0xA0, 0xA0, 0xE3
- .byte 0x0C, 0x10, 0xE0, 0xE1, 0x00, 0x70, 0x96, 0xE5, 0x01, 0x10, 0x84, 0xE1, 0x01, 0x10, 0x2E, 0xE0
- .byte 0x07, 0x71, 0x93, 0xE7, 0x01, 0x10, 0x85, 0xE0, 0x00, 0x50, 0x92, 0xE5, 0x01, 0x10, 0x87, 0xE0
- .byte 0x01, 0x50, 0x85, 0xE0, 0x05, 0x13, 0xA0, 0xE1, 0x25, 0x1D, 0x81, 0xE1, 0x01, 0x50, 0x84, 0xE0
- .byte 0x0E, 0x10, 0xE0, 0xE1, 0x04, 0x70, 0x96, 0xE5, 0x01, 0x10, 0x85, 0xE1, 0x01, 0x10, 0x24, 0xE0
- .byte 0x08, 0x80, 0x96, 0xE5, 0x07, 0x71, 0x93, 0xE7, 0x01, 0x10, 0x8C, 0xE0, 0x04, 0x90, 0x92, 0xE5
- .byte 0x01, 0x10, 0x87, 0xE0, 0x01, 0x90, 0x89, 0xE0, 0x09, 0x75, 0xA0, 0xE1, 0x0C, 0x10, 0x86, 0xE2
- .byte 0x29, 0x9B, 0x87, 0xE1, 0x00, 0x10, 0x91, 0xE5, 0x0C, 0x70, 0x82, 0xE2, 0x09, 0xC0, 0x85, 0xE0
- .byte 0x08, 0x81, 0x93, 0xE7, 0x00, 0x70, 0x97, 0xE5, 0x01, 0x11, 0x93, 0xE7, 0x08, 0x90, 0x92, 0xE5
- .byte 0x04, 0xB0, 0xE0, 0xE1, 0x0B, 0xB0, 0x8C, 0xE1, 0x0B, 0xB0, 0x25, 0xE0, 0x0B, 0xB0, 0x8E, 0xE0
- .byte 0x0B, 0x80, 0x88, 0xE0, 0x08, 0x90, 0x89, 0xE0, 0x89, 0x87, 0xA0, 0xE1, 0xA9, 0x88, 0x88, 0xE1
- .byte 0x08, 0xE0, 0x8C, 0xE0, 0x10, 0x20, 0x82, 0xE2, 0x10, 0x60, 0x86, 0xE2, 0x05, 0x80, 0xE0, 0xE1
- .byte 0x08, 0x80, 0x8E, 0xE1, 0x08, 0x80, 0x2C, 0xE0, 0x08, 0x40, 0x84, 0xE0, 0x04, 0x10, 0x81, 0xE0
- .byte 0x01, 0x40, 0x87, 0xE0, 0x84, 0x1A, 0xA0, 0xE1, 0xA4, 0x15, 0x81, 0xE1, 0x01, 0x40, 0x8E, 0xE0
- .byte 0x01, 0xA0, 0x8A, 0xE2, 0x04, 0x00, 0x5A, 0xE3, 0xC8, 0xFF, 0xFF, 0xBA, 0x00, 0x10, 0x90, 0xE5
- .byte 0x05, 0x10, 0x81, 0xE0, 0x00, 0x10, 0x80, 0xE5, 0x04, 0x10, 0x90, 0xE5, 0x04, 0x10, 0x81, 0xE0
- .byte 0x04, 0x10, 0x80, 0xE5, 0x08, 0x10, 0x90, 0xE5, 0x0E, 0x10, 0x81, 0xE0, 0x08, 0x10, 0x80, 0xE5
- .byte 0x0C, 0x10, 0x90, 0xE5, 0x0C, 0x10, 0x81, 0xE0, 0x0C, 0x10, 0x80, 0xE5, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x69, 0x10, 0x02, 0x40, 0x68, 0x10, 0x02
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x60, 0xA0, 0xE1, 0x14, 0x10, 0x96, 0xE5
- .byte 0x10, 0x30, 0x96, 0xE5, 0x00, 0x70, 0xA0, 0xE1, 0x81, 0x41, 0xA0, 0xE1, 0x9C, 0x10, 0x9F, 0xE5
- .byte 0x06, 0x00, 0xA0, 0xE1, 0x01, 0x20, 0xA0, 0xE3, 0xA3, 0x4E, 0x84, 0xE1, 0x83, 0x51, 0xA0, 0xE1
- .byte 0x23, 0x00, 0x00, 0xEB, 0x10, 0x00, 0x96, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x3F, 0x30, 0x00, 0xE2
- .byte 0x40, 0x20, 0x63, 0xE2, 0x08, 0x00, 0x52, 0xE3, 0x06, 0x00, 0x00, 0x2A, 0x18, 0x00, 0x86, 0xE2
- .byte 0x03, 0x00, 0x80, 0xE0, 0xDC, 0xED, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0xED, 0xFE, 0xFF, 0xEB
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x40, 0x20, 0xA0, 0xE3, 0x08, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x00, 0x9A
- .byte 0x18, 0x00, 0x86, 0xE2, 0x03, 0x00, 0x80, 0xE0, 0x08, 0x20, 0x42, 0xE2, 0x00, 0x10, 0xA0, 0xE3
- .byte 0xD1, 0xED, 0xFF, 0xEB, 0x50, 0x50, 0x86, 0xE5, 0x06, 0x00, 0xA0, 0xE1, 0x54, 0x40, 0x86, 0xE5
- .byte 0xE0, 0xFE, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1, 0x10, 0x20, 0xA0, 0xE3
- .byte 0xEE, 0xED, 0xFF, 0xEB, 0x06, 0x00, 0xA0, 0xE1, 0x00, 0x10, 0xA0, 0xE3, 0x58, 0x20, 0xA0, 0xE3
- .byte 0xC5, 0xED, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x3C, 0x68, 0x10, 0x02, 0xF0, 0x43, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x80, 0xA0, 0xE1
- .byte 0x10, 0xC0, 0x88, 0xE2, 0x10, 0x40, 0x98, 0xE5, 0x02, 0x60, 0xA0, 0xE1, 0x3F, 0x30, 0x04, 0xE2
- .byte 0x04, 0x00, 0x9C, 0xE5, 0x06, 0x40, 0x94, 0xE0, 0x10, 0x40, 0x88, 0xE5, 0x00, 0x00, 0xA0, 0xE2
- .byte 0x40, 0x50, 0x63, 0xE2, 0x01, 0x70, 0xA0, 0xE1, 0x04, 0x00, 0x8C, 0xE5, 0x06, 0x00, 0x55, 0xE1
- .byte 0x0A, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x56, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x18, 0x10, 0x88, 0xE2, 0x07, 0x00, 0xA0, 0xE1, 0x03, 0x10, 0x81, 0xE0
- .byte 0xCE, 0xED, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x18, 0x10, 0x88, 0xE2, 0x07, 0x00, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x03, 0x10, 0x81, 0xE0
- .byte 0xC6, 0xED, 0xFF, 0xEB, 0x08, 0x00, 0xA0, 0xE1, 0xB2, 0xFE, 0xFF, 0xEB, 0x05, 0x60, 0x46, 0xE0
- .byte 0x26, 0x43, 0xA0, 0xE1, 0x00, 0x00, 0x54, 0xE3, 0x05, 0x90, 0x87, 0xE0, 0x0B, 0x00, 0x00, 0xDA
- .byte 0x18, 0x70, 0x88, 0xE2, 0x40, 0x50, 0xA0, 0xE3, 0x09, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1
- .byte 0x05, 0x20, 0xA0, 0xE1, 0xB9, 0xED, 0xFF, 0xEB, 0x08, 0x00, 0xA0, 0xE1, 0x40, 0x90, 0x89, 0xE2
- .byte 0xA4, 0xFE, 0xFF, 0xEB, 0x01, 0x40, 0x44, 0xE2, 0x00, 0x00, 0x54, 0xE3, 0xF5, 0xFF, 0xFF, 0xCA
- .byte 0x3F, 0x20, 0x16, 0xE2, 0x04, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x09, 0x00, 0xA0, 0xE1, 0x18, 0x10, 0x88, 0xE2, 0xAC, 0xED, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x43, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x28, 0x20, 0x9F, 0xE5, 0x28, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x20, 0x80, 0xE5, 0x24, 0x20, 0x9F, 0xE5, 0x04, 0x10, 0x80, 0xE5, 0x20, 0x10, 0x9F, 0xE5
- .byte 0x08, 0x20, 0x80, 0xE5, 0x0C, 0x10, 0x80, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x10, 0x10, 0x80, 0xE5
- .byte 0x14, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF
- .byte 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, 0xF0, 0x41, 0x2D, 0xE9, 0xA0, 0xD0, 0x4D, 0xE2
- .byte 0x78, 0xE0, 0x9F, 0xE5, 0x1C, 0xC0, 0x8D, 0xE2, 0x00, 0x80, 0xA0, 0xE1, 0x01, 0x70, 0xA0, 0xE1
- .byte 0x02, 0x60, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1, 0x0C, 0x40, 0xA0, 0xE1, 0x0F, 0x00, 0xBE, 0xE8
- .byte 0x0F, 0x00, 0xAC, 0xE8, 0x07, 0x00, 0x9E, 0xE8, 0x07, 0x00, 0x8C, 0xE8, 0x38, 0xE0, 0x8D, 0xE2
- .byte 0x08, 0xC0, 0x8D, 0xE2, 0x24, 0xE0, 0x8D, 0xE5, 0x44, 0xE0, 0x9F, 0xE5, 0x28, 0xC0, 0x8D, 0xE5
- .byte 0x40, 0xC0, 0x9F, 0xE5, 0x2C, 0xE0, 0x8D, 0xE5, 0x3C, 0xE0, 0x9F, 0xE5, 0x30, 0xC0, 0x8D, 0xE5
- .byte 0xB8, 0xC0, 0x9D, 0xE5, 0x34, 0xE0, 0x8D, 0xE5, 0x00, 0xC0, 0x8D, 0xE5, 0x05, 0x30, 0xA0, 0xE1
- .byte 0x08, 0x00, 0xA0, 0xE1, 0x07, 0x10, 0xA0, 0xE1, 0x06, 0x20, 0xA0, 0xE1, 0x04, 0x40, 0x8D, 0xE5
- .byte 0xF0, 0x00, 0x00, 0xEB, 0xA0, 0xD0, 0x8D, 0xE2, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x04, 0x6A, 0x10, 0x02, 0x68, 0x31, 0x0D, 0x02, 0x0C, 0x30, 0x0D, 0x02, 0x10, 0x2E, 0x0D, 0x02
- .byte 0x0F, 0x00, 0x2D, 0xE9, 0x70, 0x40, 0x2D, 0xE9, 0x10, 0x00, 0x9D, 0xE5, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x1C, 0x30, 0x90, 0xE5, 0x20, 0x50, 0x80, 0xE2, 0x03, 0x10, 0x13, 0xE2, 0x43, 0x01, 0xA0, 0xE1
- .byte 0x00, 0x10, 0xA0, 0x03, 0x00, 0x11, 0x85, 0x07, 0x10, 0x20, 0x9D, 0xE5, 0x80, 0x10, 0xA0, 0xE3
- .byte 0x20, 0x40, 0x82, 0xE2, 0x03, 0x10, 0xC4, 0xE7, 0x01, 0x30, 0x83, 0xE2, 0x03, 0x10, 0x13, 0xE2
- .byte 0x04, 0x00, 0x00, 0x0A, 0x00, 0x20, 0xA0, 0xE3, 0x03, 0x20, 0xC4, 0xE7, 0x01, 0x30, 0x83, 0xE2
- .byte 0x03, 0x10, 0x13, 0xE2, 0xFB, 0xFF, 0xFF, 0x1A, 0x10, 0x10, 0x9D, 0xE5, 0x01, 0x00, 0x80, 0xE2
- .byte 0x1C, 0x10, 0x91, 0xE5, 0x38, 0x00, 0x51, 0xE3, 0x0D, 0x00, 0x00, 0xBA, 0x10, 0x00, 0x50, 0xE3
- .byte 0x04, 0x00, 0x00, 0xAA, 0x00, 0x10, 0xA0, 0xE3, 0x00, 0x11, 0x85, 0xE7, 0x01, 0x00, 0x80, 0xE2
- .byte 0x10, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0xBA, 0x68, 0x11, 0x9F, 0xE5, 0x10, 0x00, 0x9D, 0xE5
- .byte 0x00, 0x30, 0x91, 0xE5, 0x05, 0x10, 0xA0, 0xE1, 0x40, 0x20, 0xA0, 0xE3, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x0E, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0xAA, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x00, 0x11, 0x85, 0xE7, 0x01, 0x00, 0x80, 0xE2, 0x0E, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0xBA
- .byte 0x10, 0x00, 0x9D, 0xE5, 0x05, 0x10, 0xA0, 0xE1, 0x14, 0x20, 0x90, 0xE5, 0x24, 0x31, 0x9F, 0xE5
- .byte 0x3F, 0x20, 0xC4, 0xE5, 0x22, 0x04, 0xA0, 0xE1, 0x3E, 0x00, 0xC4, 0xE5, 0x22, 0x08, 0xA0, 0xE1
- .byte 0x3D, 0x00, 0xC4, 0xE5, 0x22, 0x0C, 0xA0, 0xE1, 0x3C, 0x00, 0xC4, 0xE5, 0x10, 0x00, 0x9D, 0xE5
- .byte 0x40, 0x20, 0xA0, 0xE3, 0x18, 0x50, 0x90, 0xE5, 0x3B, 0x50, 0xC4, 0xE5, 0x25, 0x04, 0xA0, 0xE1
- .byte 0x3A, 0x00, 0xC4, 0xE5, 0x25, 0x08, 0xA0, 0xE1, 0x39, 0x00, 0xC4, 0xE5, 0x25, 0x0C, 0xA0, 0xE1
- .byte 0x38, 0x00, 0xC4, 0xE5, 0x10, 0x00, 0x9D, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x10, 0x00, 0x9D, 0xE5, 0x10, 0x10, 0x8D, 0xE2, 0x00, 0x30, 0x90, 0xE5, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x23, 0x2C, 0xA0, 0xE1, 0x00, 0x20, 0xC6, 0xE5, 0x23, 0x28, 0xA0, 0xE1, 0x01, 0x20, 0xC6, 0xE5
- .byte 0x23, 0x24, 0xA0, 0xE1, 0x02, 0x20, 0xC6, 0xE5, 0x03, 0x30, 0xC6, 0xE5, 0x10, 0x30, 0x9D, 0xE5
- .byte 0x04, 0x20, 0xA0, 0xE3, 0x04, 0x40, 0x93, 0xE5, 0x24, 0x3C, 0xA0, 0xE1, 0x04, 0x30, 0xC6, 0xE5
- .byte 0x24, 0x38, 0xA0, 0xE1, 0x05, 0x30, 0xC6, 0xE5, 0x24, 0x34, 0xA0, 0xE1, 0x06, 0x30, 0xC6, 0xE5
- .byte 0x07, 0x40, 0xC6, 0xE5, 0x10, 0x30, 0x9D, 0xE5, 0x08, 0x40, 0x93, 0xE5, 0x24, 0x3C, 0xA0, 0xE1
- .byte 0x08, 0x30, 0xC6, 0xE5, 0x24, 0x38, 0xA0, 0xE1, 0x09, 0x30, 0xC6, 0xE5, 0x24, 0x34, 0xA0, 0xE1
- .byte 0x0A, 0x30, 0xC6, 0xE5, 0x0B, 0x40, 0xC6, 0xE5, 0x10, 0x30, 0x9D, 0xE5, 0x0C, 0x40, 0x93, 0xE5
- .byte 0x24, 0x3C, 0xA0, 0xE1, 0x0C, 0x30, 0xC6, 0xE5, 0x24, 0x38, 0xA0, 0xE1, 0x0D, 0x30, 0xC6, 0xE5
- .byte 0x24, 0x34, 0xA0, 0xE1, 0x0E, 0x30, 0xC6, 0xE5, 0x0F, 0x40, 0xC6, 0xE5, 0x10, 0x30, 0x9D, 0xE5
- .byte 0x10, 0x40, 0x93, 0xE5, 0x24, 0x3C, 0xA0, 0xE1, 0x10, 0x30, 0xC6, 0xE5, 0x24, 0x38, 0xA0, 0xE1
- .byte 0x11, 0x30, 0xC6, 0xE5, 0x24, 0x34, 0xA0, 0xE1, 0x12, 0x30, 0xC6, 0xE5, 0x13, 0x40, 0xC6, 0xE5
- .byte 0x10, 0x30, 0x9D, 0xE5, 0x1C, 0x00, 0x83, 0xE5, 0x7F, 0xEC, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x10, 0xD0, 0x8D, 0xE2, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x6A, 0x10, 0x02, 0xF0, 0x41, 0x2D, 0xE9
- .byte 0x00, 0x80, 0xA0, 0xE1, 0x02, 0x60, 0xB0, 0xE1, 0x01, 0x70, 0xA0, 0xE1, 0x20, 0x50, 0x88, 0xE2
- .byte 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x14, 0x00, 0x98, 0xE5, 0x86, 0x11, 0x80, 0xE0
- .byte 0x00, 0x00, 0x51, 0xE1, 0x18, 0x00, 0x98, 0x35, 0x01, 0x00, 0x80, 0x32, 0x18, 0x00, 0x88, 0x35
- .byte 0x18, 0x00, 0x98, 0xE5, 0xA6, 0x0E, 0x80, 0xE0, 0x18, 0x00, 0x88, 0xE5, 0x14, 0x10, 0x88, 0xE5
- .byte 0x1C, 0x10, 0x98, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x1B, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x81, 0xE0
- .byte 0x40, 0x00, 0x50, 0xE3, 0x0F, 0x00, 0x00, 0x3A, 0x40, 0x40, 0x61, 0xE2, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x04, 0x20, 0xA0, 0xE1, 0x01, 0x10, 0x85, 0xE0, 0xD8, 0xEC, 0xFF, 0xEB, 0xE0, 0x10, 0x9F, 0xE5
- .byte 0x08, 0x00, 0xA0, 0xE1, 0x00, 0x30, 0x91, 0xE5, 0x05, 0x10, 0xA0, 0xE1, 0x40, 0x20, 0xA0, 0xE3
- .byte 0x04, 0x60, 0x46, 0xE0, 0x04, 0x70, 0x87, 0xE0, 0x33, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x1C, 0x00, 0x88, 0xE5, 0x08, 0x00, 0x00, 0xEA, 0x07, 0x00, 0xA0, 0xE1, 0x06, 0x20, 0xA0, 0xE1
- .byte 0x01, 0x10, 0x85, 0xE0, 0xC9, 0xEC, 0xFF, 0xEB, 0x1C, 0x00, 0x98, 0xE5, 0x06, 0x00, 0x80, 0xE0
- .byte 0x1C, 0x00, 0x88, 0xE5, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x40, 0x00, 0x56, 0xE3
- .byte 0x19, 0x00, 0x00, 0x3A, 0x3F, 0x40, 0xC6, 0xE3, 0x04, 0x60, 0x46, 0xE0, 0x03, 0x00, 0x17, 0xE2
- .byte 0x07, 0x00, 0x00, 0x1A, 0x78, 0x10, 0x9F, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0x00, 0x30, 0x91, 0xE5
- .byte 0x07, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x33, 0xFF, 0x2F, 0xE1, 0x04, 0x70, 0x87, 0xE0
- .byte 0x0D, 0x00, 0x00, 0xEA, 0x07, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1, 0x40, 0x20, 0xA0, 0xE3
- .byte 0xB2, 0xEC, 0xFF, 0xEB, 0x48, 0x10, 0x9F, 0xE5, 0x08, 0x00, 0xA0, 0xE1, 0x00, 0x30, 0x91, 0xE5
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x40, 0x20, 0xA0, 0xE3, 0x40, 0x70, 0x87, 0xE2, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x40, 0x40, 0x44, 0xE2, 0x00, 0x00, 0x54, 0xE3, 0xF1, 0xFF, 0xFF, 0xCA, 0x1C, 0x60, 0x88, 0xE5
- .byte 0x00, 0x00, 0x56, 0xE3, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x07, 0x00, 0xA0, 0xE1
- .byte 0x05, 0x10, 0xA0, 0xE1, 0x06, 0x20, 0xA0, 0xE1, 0xA0, 0xEC, 0xFF, 0xEB, 0xF0, 0x41, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x6A, 0x10, 0x02, 0x34, 0x10, 0x9F, 0xE5, 0x34, 0x20, 0x9F, 0xE5
- .byte 0x00, 0x10, 0x80, 0xE5, 0x30, 0x10, 0x9F, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x2C, 0x20, 0x9F, 0xE5
- .byte 0x08, 0x10, 0x80, 0xE5, 0x28, 0x10, 0x9F, 0xE5, 0x0C, 0x20, 0x80, 0xE5, 0x10, 0x10, 0x80, 0xE5
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x14, 0x10, 0x80, 0xE5, 0x18, 0x10, 0x80, 0xE5, 0x1C, 0x10, 0x80, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0xFE, 0xDC, 0xBA, 0x98
- .byte 0x76, 0x54, 0x32, 0x10, 0xF0, 0xE1, 0xD2, 0xC3, 0xF0, 0x43, 0x2D, 0xE9, 0xC4, 0xD0, 0x4D, 0xE2
- .byte 0xE0, 0x50, 0x9D, 0xE5, 0xE4, 0x40, 0x9D, 0xE5, 0x00, 0x90, 0xB0, 0xE1, 0x01, 0x80, 0xA0, 0xE1
- .byte 0x02, 0x70, 0xA0, 0xE1, 0x03, 0x60, 0xA0, 0xE1, 0xC4, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x58, 0xE3, 0xC4, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x57, 0xE3, 0xC4, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x56, 0xE3, 0xC4, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x55, 0xE3, 0xC4, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x00, 0x54, 0xE3, 0xC4, 0xD0, 0x8D, 0x02, 0xF0, 0x43, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x00, 0x94, 0xE5, 0x00, 0x00, 0x55, 0xE1, 0x0D, 0x00, 0x00, 0xDA
- .byte 0x08, 0x00, 0x94, 0xE5, 0x10, 0x10, 0x94, 0xE5, 0x31, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0x94, 0xE5
- .byte 0x14, 0x30, 0x94, 0xE5, 0x06, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0x00, 0x94, 0xE5, 0x18, 0x20, 0x94, 0xE5, 0x00, 0x10, 0x8D, 0xE2, 0x32, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x50, 0x94, 0xE5, 0x00, 0x60, 0x8D, 0xE2, 0x00, 0x00, 0x55, 0xE3, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x06, 0x00, 0x00, 0xDA, 0x40, 0x20, 0x8D, 0xE2, 0x00, 0x10, 0xD6, 0xE7, 0x01, 0x00, 0x80, 0xE2
- .byte 0x05, 0x00, 0x50, 0xE1, 0x36, 0x10, 0x21, 0xE2, 0x01, 0x10, 0xC2, 0xE4, 0xF9, 0xFF, 0xFF, 0xBA
- .byte 0x04, 0x10, 0x94, 0xE5, 0x01, 0x00, 0x50, 0xE1, 0x07, 0x00, 0x00, 0xAA, 0x40, 0x10, 0x8D, 0xE2
- .byte 0x00, 0x30, 0x81, 0xE0, 0x36, 0x20, 0xA0, 0xE3, 0x01, 0x20, 0xC3, 0xE4, 0x04, 0x10, 0x94, 0xE5
- .byte 0x01, 0x00, 0x80, 0xE2, 0x01, 0x00, 0x50, 0xE1, 0xFA, 0xFF, 0xFF, 0xBA, 0x08, 0x00, 0x94, 0xE5
- .byte 0x10, 0x10, 0x94, 0xE5, 0x31, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0x94, 0xE5, 0x04, 0x20, 0x94, 0xE5
- .byte 0x14, 0x30, 0x94, 0xE5, 0x40, 0x10, 0x8D, 0xE2, 0x33, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0x94, 0xE5
- .byte 0x14, 0x30, 0x94, 0xE5, 0x08, 0x10, 0xA0, 0xE1, 0x07, 0x20, 0xA0, 0xE1, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0x00, 0x94, 0xE5, 0x0C, 0x10, 0x94, 0xE5, 0x18, 0x20, 0x94, 0xE5, 0x32, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x00, 0x55, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0x06, 0x00, 0x00, 0xDA, 0x80, 0x10, 0x8D, 0xE2
- .byte 0x02, 0x00, 0xD6, 0xE7, 0x01, 0x20, 0x82, 0xE2, 0x05, 0x00, 0x52, 0xE1, 0x5C, 0x00, 0x20, 0xE2
- .byte 0x01, 0x00, 0xC1, 0xE4, 0xF9, 0xFF, 0xFF, 0xBA, 0x04, 0x00, 0x94, 0xE5, 0x00, 0x00, 0x52, 0xE1
- .byte 0x07, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x8D, 0xE2, 0x02, 0x30, 0x80, 0xE0, 0x5C, 0x10, 0xA0, 0xE3
- .byte 0x01, 0x10, 0xC3, 0xE4, 0x04, 0x00, 0x94, 0xE5, 0x01, 0x20, 0x82, 0xE2, 0x00, 0x00, 0x52, 0xE1
- .byte 0xFA, 0xFF, 0xFF, 0xBA, 0x08, 0x00, 0x94, 0xE5, 0x10, 0x10, 0x94, 0xE5, 0x31, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0x00, 0x94, 0xE5, 0x04, 0x20, 0x94, 0xE5, 0x14, 0x30, 0x94, 0xE5, 0x80, 0x10, 0x8D, 0xE2
- .byte 0x33, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0x94, 0xE5, 0x0C, 0x10, 0x94, 0xE5, 0x00, 0x20, 0x94, 0xE5
- .byte 0x14, 0x30, 0x94, 0xE5, 0x33, 0xFF, 0x2F, 0xE1, 0x08, 0x00, 0x94, 0xE5, 0x18, 0x20, 0x94, 0xE5
- .byte 0x09, 0x10, 0xA0, 0xE1, 0x32, 0xFF, 0x2F, 0xE1, 0xC4, 0xD0, 0x8D, 0xE2, 0xF0, 0x43, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xFF, 0x00, 0xFF, 0x00, 0x99, 0x79, 0x82, 0x5A, 0xA1, 0xEB, 0xD9, 0x6E
- .byte 0xDC, 0xBC, 0x1B, 0x8F, 0xD6, 0xC1, 0x62, 0xCA, 0xF0, 0x5F, 0x2D, 0xE9, 0x08, 0x1E, 0x90, 0xE8
- .byte 0x84, 0xD0, 0x4D, 0xE2, 0x80, 0x20, 0x8D, 0xE5, 0x28, 0x80, 0x1F, 0xE5, 0x30, 0x70, 0x1F, 0xE5
- .byte 0x0D, 0x60, 0xA0, 0xE1, 0x00, 0x50, 0xA0, 0xE3, 0x04, 0x40, 0x91, 0xE4, 0x0C, 0x20, 0x88, 0xE0
- .byte 0xE3, 0x2D, 0x82, 0xE0, 0x07, 0xE0, 0x04, 0xE0, 0x64, 0x4C, 0x07, 0xE0, 0x6E, 0x44, 0x84, 0xE1
- .byte 0x40, 0x40, 0x86, 0xE5, 0x04, 0x40, 0x86, 0xE4, 0x04, 0x20, 0x82, 0xE0, 0x0B, 0x40, 0x2A, 0xE0
- .byte 0x09, 0x40, 0x04, 0xE0, 0x0B, 0x40, 0x24, 0xE0, 0x04, 0x20, 0x82, 0xE0, 0x69, 0x91, 0xA0, 0xE1
- .byte 0x0B, 0xC0, 0xA0, 0xE1, 0x0A, 0xB0, 0xA0, 0xE1, 0x09, 0xA0, 0xA0, 0xE1, 0x03, 0x90, 0xA0, 0xE1
- .byte 0x02, 0x30, 0xA0, 0xE1, 0x04, 0x50, 0x85, 0xE2, 0x40, 0x00, 0x55, 0xE3, 0xE9, 0xFF, 0xFF, 0xBA
- .byte 0x00, 0x70, 0xA0, 0xE3, 0x0D, 0x60, 0xA0, 0xE1, 0x00, 0x20, 0x96, 0xE5, 0x08, 0x50, 0x96, 0xE5
- .byte 0x20, 0x40, 0x96, 0xE5, 0x34, 0xE0, 0x96, 0xE5, 0x05, 0x20, 0x22, 0xE0, 0x0E, 0x40, 0x24, 0xE0
- .byte 0x04, 0x20, 0x22, 0xE0, 0xE2, 0x2F, 0xA0, 0xE1, 0x40, 0x20, 0x86, 0xE5, 0x04, 0x20, 0x86, 0xE4
- .byte 0x0C, 0x20, 0x82, 0xE0, 0x08, 0x20, 0x82, 0xE0, 0xE3, 0x2D, 0x82, 0xE0, 0x0B, 0x40, 0x2A, 0xE0
- .byte 0x09, 0x40, 0x04, 0xE0, 0x0B, 0x40, 0x24, 0xE0, 0x04, 0x20, 0x82, 0xE0, 0x69, 0x91, 0xA0, 0xE1
- .byte 0x0B, 0xC0, 0xA0, 0xE1, 0x0A, 0xB0, 0xA0, 0xE1, 0x09, 0xA0, 0xA0, 0xE1, 0x03, 0x90, 0xA0, 0xE1
- .byte 0x02, 0x30, 0xA0, 0xE1, 0x04, 0x70, 0x87, 0xE2, 0x10, 0x00, 0x57, 0xE3, 0xE5, 0xFF, 0xFF, 0xBA
- .byte 0xFC, 0x80, 0x1F, 0xE5, 0x00, 0x70, 0xA0, 0xE3, 0x00, 0x20, 0x96, 0xE5, 0x08, 0x40, 0x96, 0xE5
- .byte 0x20, 0xE0, 0x96, 0xE5, 0x34, 0x50, 0x96, 0xE5, 0x04, 0x20, 0x22, 0xE0, 0x05, 0xE0, 0x2E, 0xE0
- .byte 0x0E, 0x20, 0x22, 0xE0, 0xE2, 0x2F, 0xA0, 0xE1, 0x40, 0x20, 0x86, 0xE5, 0x04, 0x20, 0x86, 0xE4
- .byte 0x0C, 0x20, 0x82, 0xE0, 0x08, 0x20, 0x82, 0xE0, 0xE3, 0x2D, 0x82, 0xE0, 0x0A, 0xE0, 0x29, 0xE0
- .byte 0x0B, 0xE0, 0x2E, 0xE0, 0x0E, 0x20, 0x82, 0xE0, 0x69, 0x91, 0xA0, 0xE1, 0x0B, 0xC0, 0xA0, 0xE1
- .byte 0x0A, 0xB0, 0xA0, 0xE1, 0x09, 0xA0, 0xA0, 0xE1, 0x03, 0x90, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1
- .byte 0x01, 0x70, 0x87, 0xE2, 0x0C, 0x00, 0x57, 0xE3, 0x0D, 0x60, 0xA0, 0x01, 0x14, 0x00, 0x57, 0xE3
- .byte 0xE4, 0xFF, 0xFF, 0xBA, 0x6C, 0x81, 0x1F, 0xE5, 0x00, 0x70, 0xA0, 0xE3, 0x00, 0x20, 0x96, 0xE5
- .byte 0x08, 0xE0, 0x96, 0xE5, 0x20, 0x50, 0x96, 0xE5, 0x34, 0x40, 0x96, 0xE5, 0x0E, 0x20, 0x22, 0xE0
- .byte 0x04, 0x50, 0x25, 0xE0, 0x05, 0x20, 0x22, 0xE0, 0xE2, 0x2F, 0xA0, 0xE1, 0x40, 0x20, 0x86, 0xE5
- .byte 0x04, 0x20, 0x86, 0xE4, 0x0C, 0x20, 0x82, 0xE0, 0x08, 0x20, 0x82, 0xE0, 0xE3, 0x2D, 0x82, 0xE0
- .byte 0x0A, 0x50, 0x89, 0xE1, 0x0B, 0x50, 0x05, 0xE0, 0x0A, 0x40, 0x09, 0xE0, 0x04, 0x50, 0x85, 0xE1
- .byte 0x05, 0x20, 0x82, 0xE0, 0x69, 0x91, 0xA0, 0xE1, 0x0B, 0xC0, 0xA0, 0xE1, 0x0A, 0xB0, 0xA0, 0xE1
- .byte 0x09, 0xA0, 0xA0, 0xE1, 0x03, 0x90, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1, 0x01, 0x70, 0x87, 0xE2
- .byte 0x08, 0x00, 0x57, 0xE3, 0x0D, 0x60, 0xA0, 0x01, 0x14, 0x00, 0x57, 0xE3, 0xE2, 0xFF, 0xFF, 0xBA
- .byte 0xE4, 0x81, 0x1F, 0xE5, 0x00, 0x70, 0xA0, 0xE3, 0x00, 0x20, 0x96, 0xE5, 0x08, 0x50, 0x96, 0xE5
- .byte 0x20, 0x40, 0x96, 0xE5, 0x34, 0xE0, 0x96, 0xE5, 0x05, 0x20, 0x22, 0xE0, 0x0E, 0x40, 0x24, 0xE0
- .byte 0x04, 0x20, 0x22, 0xE0, 0xE2, 0x2F, 0xA0, 0xE1, 0x40, 0x20, 0x86, 0xE5, 0x04, 0x20, 0x86, 0xE4
- .byte 0x0C, 0x20, 0x82, 0xE0, 0x08, 0x20, 0x82, 0xE0, 0xE3, 0x2D, 0x82, 0xE0, 0x0A, 0x40, 0x29, 0xE0
- .byte 0x0B, 0x40, 0x24, 0xE0, 0x04, 0x20, 0x82, 0xE0, 0x69, 0x91, 0xA0, 0xE1, 0x0B, 0xC0, 0xA0, 0xE1
- .byte 0x0A, 0xB0, 0xA0, 0xE1, 0x09, 0xA0, 0xA0, 0xE1, 0x03, 0x90, 0xA0, 0xE1, 0x02, 0x30, 0xA0, 0xE1
- .byte 0x01, 0x70, 0x87, 0xE2, 0x04, 0x00, 0x57, 0xE3, 0x0D, 0x60, 0xA0, 0x01, 0x14, 0x00, 0x57, 0xE3
- .byte 0xE4, 0xFF, 0xFF, 0xBA, 0xD4, 0x40, 0x90, 0xE8, 0x02, 0x30, 0x83, 0xE0, 0x04, 0x90, 0x89, 0xE0
- .byte 0x06, 0xA0, 0x8A, 0xE0, 0x07, 0xB0, 0x8B, 0xE0, 0x0E, 0xC0, 0x8C, 0xE0, 0x08, 0x1E, 0x80, 0xE8
- .byte 0x80, 0xE0, 0x9D, 0xE5, 0x40, 0xE0, 0x5E, 0xE2, 0x80, 0xE0, 0x8D, 0xE5, 0x65, 0xFF, 0xFF, 0xCA
- .byte 0x84, 0xD0, 0x8D, 0xE2, 0xF0, 0x9F, 0xBD, 0xE8, 0x34, 0x10, 0x9F, 0xE5, 0x10, 0x00, 0x2D, 0xE9
- .byte 0x1C, 0x10, 0x91, 0xE8, 0x1C, 0x10, 0xA0, 0xE8, 0xB0, 0xC1, 0x51, 0xE1, 0x28, 0x10, 0x81, 0xE2
- .byte 0x0C, 0x00, 0x91, 0xE8, 0x0C, 0x00, 0xA0, 0xE8, 0x03, 0xC0, 0x0C, 0xE2, 0xB8, 0x20, 0x51, 0xE1
- .byte 0xB0, 0xC0, 0xC0, 0xE1, 0x01, 0x20, 0x02, 0xE2, 0xB2, 0x20, 0xC0, 0xE1, 0x10, 0x00, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x90, 0x02, 0x00, 0x04, 0x10, 0x00, 0x2D, 0xE9, 0x2C, 0x10, 0x9F, 0xE5
- .byte 0x1C, 0x10, 0x90, 0xE8, 0x1C, 0x10, 0x81, 0xE8, 0xB8, 0x21, 0xD0, 0xE1, 0xBA, 0x31, 0xD0, 0xE1
- .byte 0xB0, 0x21, 0x41, 0xE1, 0xB0, 0x32, 0xC1, 0xE1, 0x10, 0x00, 0x80, 0xE2, 0x28, 0x10, 0x81, 0xE2
- .byte 0x0C, 0x00, 0x90, 0xE8, 0x0C, 0x00, 0x81, 0xE8, 0x10, 0x00, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x90, 0x02, 0x00, 0x04, 0x08, 0x10, 0x9F, 0xE5, 0xB4, 0x13, 0xD1, 0xE1, 0x00, 0x00, 0x01, 0xE0
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x74, 0x54, 0x1D, 0x02, 0x0C, 0x10, 0x9F, 0xE5, 0xB6, 0x23, 0xD1, 0xE1
- .byte 0x00, 0x20, 0x12, 0xE0, 0xFC, 0xFF, 0xFF, 0x1A, 0x1E, 0xFF, 0x2F, 0xE1, 0x74, 0x54, 0x1D, 0x02
- .byte 0x70, 0x40, 0x2D, 0xE9, 0x1C, 0x21, 0x9F, 0xE5, 0xB0, 0x23, 0xD2, 0xE1, 0x00, 0x00, 0x52, 0xE3
- .byte 0x09, 0x00, 0x00, 0x1A, 0xB0, 0x30, 0xD1, 0xE1, 0xB2, 0x20, 0xD1, 0xE1, 0xB0, 0x30, 0xC0, 0xE1
- .byte 0xB2, 0x20, 0xC0, 0xE1, 0xB4, 0x20, 0xD1, 0xE1, 0xB6, 0x10, 0xD1, 0xE1, 0xB4, 0x20, 0xC0, 0xE1
- .byte 0xB6, 0x10, 0xC0, 0xE1, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB4, 0x30, 0xD1, 0xE1
- .byte 0xE4, 0x20, 0x9F, 0xE5, 0xB4, 0x30, 0xC0, 0xE1, 0xB6, 0x30, 0xD1, 0xE1, 0xB6, 0x30, 0xC0, 0xE1
- .byte 0xB4, 0x30, 0xD1, 0xE1, 0x00, 0x00, 0x53, 0xE3, 0x00, 0x10, 0xA0, 0x03, 0xB0, 0x10, 0xC0, 0x01
- .byte 0xB2, 0x10, 0xC0, 0x01, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0xB0, 0x40, 0xD1, 0xE1
- .byte 0x00, 0x30, 0x92, 0xE5, 0x08, 0xE0, 0x92, 0xE5, 0x04, 0xC1, 0xA0, 0xE1, 0xCC, 0x4F, 0xA0, 0xE1
- .byte 0x03, 0xC0, 0x5C, 0xE0, 0xC3, 0x3F, 0xC4, 0xE0, 0x9E, 0x6C, 0x85, 0xE0, 0x9E, 0x53, 0x25, 0xE0
- .byte 0xCE, 0x3F, 0xA0, 0xE1, 0x93, 0x5C, 0x25, 0xE0, 0x26, 0x3B, 0xA0, 0xE1, 0x05, 0x35, 0x83, 0xE1
- .byte 0xB0, 0x30, 0xC0, 0xE1, 0xF0, 0x30, 0xD0, 0xE1, 0x00, 0x00, 0x53, 0xE3, 0x00, 0x30, 0xA0, 0xB3
- .byte 0xB0, 0x30, 0xC0, 0xB1, 0x02, 0x00, 0x00, 0xBA, 0xFF, 0x00, 0x53, 0xE3, 0xFF, 0x30, 0xA0, 0xC3
- .byte 0xB0, 0x30, 0xC0, 0xC1, 0xB2, 0x30, 0xD1, 0xE1, 0x0C, 0x10, 0x92, 0xE5, 0x14, 0xC0, 0x92, 0xE5
- .byte 0x03, 0x31, 0xA0, 0xE1, 0xC3, 0x2F, 0xA0, 0xE1, 0x01, 0x30, 0x53, 0xE0, 0xC1, 0x1F, 0xC2, 0xE0
- .byte 0x9C, 0x43, 0x8E, 0xE0, 0x9C, 0xE1, 0x2E, 0xE0, 0xCC, 0x1F, 0xA0, 0xE1, 0x91, 0xE3, 0x2E, 0xE0
- .byte 0x24, 0x1B, 0xA0, 0xE1, 0x0E, 0x15, 0x81, 0xE1, 0xB2, 0x10, 0xC0, 0xE1, 0xF2, 0x10, 0xD0, 0xE1
- .byte 0x00, 0x00, 0x51, 0xE3, 0x00, 0x10, 0xA0, 0xB3, 0xB2, 0x10, 0xC0, 0xB1, 0x70, 0x40, 0xBD, 0xB8
- .byte 0x1E, 0xFF, 0x2F, 0xB1, 0xBF, 0x00, 0x51, 0xE3, 0xBF, 0x10, 0xA0, 0xC3, 0xB2, 0x10, 0xC0, 0xC1
- .byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x74, 0x54, 0x1D, 0x02, 0x8C, 0x54, 0x1D, 0x02
- .byte 0xF0, 0x4F, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x60, 0xA0, 0xE1, 0x00, 0x70, 0xA0, 0xE1
- .byte 0x02, 0x50, 0xA0, 0xE1, 0x03, 0x40, 0xA0, 0xE1, 0x01, 0x0A, 0x56, 0xE3, 0x07, 0x00, 0x00, 0x2A
- .byte 0x01, 0x0A, 0x55, 0xE3, 0x05, 0x00, 0x00, 0x2A, 0xBC, 0x82, 0xDD, 0xE1, 0x01, 0x0A, 0x58, 0xE3
- .byte 0x02, 0x00, 0x00, 0x2A, 0xB0, 0x33, 0xDD, 0xE1, 0x01, 0x0A, 0x53, 0xE3, 0x03, 0x00, 0x00, 0x3A
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x01, 0x0C, 0x54, 0xE3, 0x08, 0x00, 0x00, 0x2A, 0xB4, 0x23, 0xDD, 0xE1, 0x01, 0x0C, 0x52, 0xE3
- .byte 0x05, 0x00, 0x00, 0x2A, 0xB8, 0x12, 0xDD, 0xE1, 0xC0, 0x00, 0x51, 0xE3, 0x02, 0x00, 0x00, 0x2A
- .byte 0xB8, 0x03, 0xDD, 0xE1, 0xC0, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x3A, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x02, 0x00, 0x54, 0xE1
- .byte 0x05, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x51, 0xE1, 0x03, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x56, 0xE1
- .byte 0x01, 0x00, 0x00, 0x0A, 0x03, 0x00, 0x55, 0xE1, 0x03, 0x00, 0x00, 0x1A, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x8B, 0xE6, 0xFF, 0xEB
- .byte 0xBC, 0x12, 0xDD, 0xE1, 0x94, 0x31, 0x9F, 0xE5, 0x94, 0xB1, 0x9F, 0xE5, 0x00, 0x10, 0x8D, 0xE5
- .byte 0x00, 0x20, 0x9D, 0xE5, 0xB4, 0x13, 0xDD, 0xE1, 0x02, 0x90, 0x46, 0xE0, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x09, 0xC4, 0xA0, 0xE1, 0xB0, 0x20, 0xC3, 0xE1, 0x00, 0xC0, 0x8B, 0xE5, 0xB0, 0x83, 0xDD, 0xE1
- .byte 0xB8, 0xA3, 0xDD, 0xE1, 0xB8, 0x92, 0xDD, 0xE1, 0x68, 0xB1, 0x9F, 0xE5, 0x01, 0xC0, 0x44, 0xE0
- .byte 0x00, 0xC0, 0x8B, 0xE5, 0x04, 0x20, 0x8B, 0xE5, 0x08, 0xB0, 0x45, 0xE0, 0x0A, 0x20, 0x49, 0xE0
- .byte 0xB0, 0xC0, 0xD3, 0xE1, 0x02, 0xC9, 0x1C, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A, 0x48, 0xC1, 0x9F, 0xE5
- .byte 0x0B, 0xB4, 0xA0, 0xE1, 0x00, 0xE0, 0x9C, 0xE5, 0x00, 0xC0, 0xA0, 0xE3, 0xB0, 0xC0, 0xC3, 0xE1
- .byte 0x2C, 0x31, 0x9F, 0xE5, 0x02, 0x09, 0x5E, 0xE3, 0x00, 0xB0, 0x83, 0xE5, 0x24, 0x31, 0x9F, 0xE5
- .byte 0x00, 0x20, 0x83, 0xE5, 0x03, 0x20, 0xA0, 0xE1, 0x04, 0xC0, 0x82, 0xE5, 0x03, 0x00, 0x00, 0xAA
- .byte 0x02, 0x29, 0xA0, 0xE3, 0x00, 0x20, 0x62, 0xE2, 0x02, 0x00, 0x5E, 0xE1, 0x04, 0x00, 0x00, 0xAA
- .byte 0x67, 0xE6, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xB4, 0xE0, 0xC7, 0xE1, 0xF4, 0xB0, 0xD7, 0xE1, 0x01, 0x30, 0x84, 0xE0
- .byte 0x00, 0x10, 0x9D, 0xE5, 0x01, 0x40, 0x86, 0xE0, 0x9B, 0x03, 0x01, 0xE0, 0x04, 0x34, 0xA0, 0xE1
- .byte 0x01, 0x10, 0x43, 0xE0, 0x81, 0x14, 0xA0, 0xE1, 0x41, 0x18, 0xA0, 0xE1, 0x02, 0x09, 0x51, 0xE3
- .byte 0x01, 0x00, 0x00, 0xAA, 0x02, 0x00, 0x51, 0xE1, 0x04, 0x00, 0x00, 0xAA, 0x54, 0xE6, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x98, 0x20, 0x9F, 0xE5, 0xB0, 0x10, 0xC7, 0xE1, 0xB0, 0x10, 0xD2, 0xE1, 0x02, 0x19, 0x11, 0xE2
- .byte 0xFC, 0xFF, 0xFF, 0x1A, 0x90, 0x10, 0x9F, 0xE5, 0x00, 0x40, 0x91, 0xE5, 0x48, 0xE6, 0xFF, 0xEB
- .byte 0x02, 0x09, 0x54, 0xE3, 0x03, 0x00, 0x00, 0xAA, 0x02, 0x09, 0xA0, 0xE3, 0x00, 0x10, 0x60, 0xE2
- .byte 0x01, 0x00, 0x54, 0xE1, 0x03, 0x00, 0x00, 0xAA, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB6, 0x40, 0xC7, 0xE1, 0xF6, 0x20, 0xD7, 0xE1
- .byte 0x0A, 0x00, 0x89, 0xE0, 0x08, 0x30, 0x85, 0xE0, 0x92, 0x00, 0x00, 0xE0, 0x03, 0x24, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x42, 0xE0, 0x80, 0x04, 0xA0, 0xE1, 0x40, 0x08, 0xA0, 0xE1, 0x02, 0x09, 0x50, 0xE3
- .byte 0x01, 0x00, 0x00, 0xAA, 0x01, 0x00, 0x50, 0xE1, 0x03, 0x00, 0x00, 0xAA, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB2, 0x00, 0xC7, 0xE1
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x80, 0x02, 0x00, 0x04, 0x90, 0x02, 0x00, 0x04, 0x98, 0x02, 0x00, 0x04, 0xA0, 0x02, 0x00, 0x04
- .byte 0x04, 0x00, 0x9F, 0xE5, 0xBC, 0x00, 0xD0, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x74, 0x54, 0x1D, 0x02
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x03, 0x10, 0xA0, 0xE3, 0x5C, 0xE1, 0x9F, 0xE5
- .byte 0xB6, 0x10, 0xC0, 0xE1, 0xBE, 0x10, 0xDE, 0xE1, 0xBC, 0x30, 0xDE, 0xE1, 0x01, 0x00, 0x51, 0xE3
- .byte 0x02, 0x00, 0x00, 0x0A, 0xB4, 0x11, 0xDE, 0xE1, 0x01, 0x00, 0x51, 0xE3, 0x0E, 0x00, 0x00, 0x1A
- .byte 0x38, 0x11, 0x9F, 0xE5, 0x83, 0x21, 0xA0, 0xE1, 0x10, 0x10, 0x91, 0xE5, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x83, 0x31, 0x81, 0xE0, 0xB2, 0x20, 0x91, 0xE1, 0xB2, 0x10, 0xD3, 0xE1, 0xB0, 0x20, 0xC0, 0xE1
- .byte 0xB2, 0x10, 0xC0, 0xE1, 0xB4, 0x20, 0xD3, 0xE1, 0xB6, 0x10, 0xD3, 0xE1, 0xB4, 0x20, 0xC0, 0xE1
- .byte 0xB6, 0x10, 0xC0, 0xE1, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x06, 0x10, 0x80, 0xE2
- .byte 0x00, 0xC0, 0xA0, 0xE3, 0x31, 0x00, 0x00, 0xEA, 0x0C, 0x50, 0x53, 0xE0, 0x10, 0x20, 0x9E, 0xE5
- .byte 0x04, 0x50, 0x85, 0x40, 0x85, 0x21, 0x82, 0xE0, 0xB4, 0x40, 0xD2, 0xE1, 0x00, 0x00, 0x54, 0xE3
- .byte 0x0A, 0x00, 0x00, 0x1A, 0xB0, 0x30, 0xD2, 0xE1, 0xB2, 0x10, 0xD2, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xB0, 0x30, 0xC0, 0xE1, 0xB2, 0x10, 0xC0, 0xE1, 0xB4, 0x30, 0xD2, 0xE1, 0xB6, 0x10, 0xD2, 0xE1
- .byte 0xB4, 0x30, 0xC0, 0xE1, 0xB6, 0x10, 0xC0, 0xE1, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xB6, 0x40, 0xD0, 0xE1, 0x01, 0x40, 0x14, 0xE2, 0x08, 0x00, 0x00, 0x0A, 0xB6, 0x40, 0xD2, 0xE1
- .byte 0x01, 0x40, 0x14, 0xE2, 0x05, 0x00, 0x00, 0x1A, 0xB0, 0x40, 0xD2, 0xE1, 0x00, 0x00, 0x5C, 0xE3
- .byte 0xB0, 0x40, 0xC0, 0xE1, 0xB0, 0x40, 0xD1, 0x11, 0x01, 0x40, 0xC4, 0x13, 0xB0, 0x40, 0xC1, 0x11
- .byte 0xB6, 0x40, 0xD0, 0xE1, 0x02, 0x40, 0x14, 0xE2, 0x08, 0x00, 0x00, 0x0A, 0xB6, 0x40, 0xD2, 0xE1
- .byte 0x02, 0x40, 0x14, 0xE2, 0x05, 0x00, 0x00, 0x1A, 0xB2, 0x20, 0xD2, 0xE1, 0x00, 0x00, 0x5C, 0xE3
- .byte 0xB2, 0x20, 0xC0, 0xE1, 0xB0, 0x20, 0xD1, 0x11, 0x02, 0x20, 0xC2, 0x13, 0xB0, 0x20, 0xC1, 0x11
- .byte 0xB6, 0x20, 0xD0, 0xE1, 0x00, 0x00, 0x52, 0xE3, 0x01, 0x10, 0xA0, 0x03, 0xB4, 0x10, 0xC0, 0x01
- .byte 0x04, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x01, 0xC0, 0x8C, 0xE2
- .byte 0xBE, 0x20, 0xDE, 0xE1, 0x02, 0x00, 0x5C, 0xE1, 0x03, 0x00, 0x00, 0xAA, 0xB4, 0x41, 0xDE, 0xE1
- .byte 0x01, 0x20, 0x44, 0xE2, 0x02, 0x00, 0x5C, 0xE1, 0xC6, 0xFF, 0xFF, 0xBA, 0x01, 0x10, 0xA0, 0xE3
- .byte 0xB4, 0x10, 0xC0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x74, 0x54, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0xBC, 0xE5, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x88, 0x10, 0x9F, 0xE5, 0x06, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0x2B, 0xF0, 0xFF, 0xEB
+
+ arm_func_start FS_GetOverlayFileID
+FS_GetOverlayFileID: ; 0x020D2710
+ sub sp, sp, #0x8
+ ldr r2, _020D2734 ; =0x021D5414
+ str r2, [sp, #0x0]
+ ldr r1, [r1, #0x18]
+ str r1, [sp, #0x4]
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+ add sp, sp, #0x8
+ bx lr
+ .balign 4
+_020D2734: .word 0x021D5414
+
+ arm_func_start FS_ClearOverlayImage
+FS_ClearOverlayImage: ; 0x020D2738
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ ldr r6, [r0, #0x4]
+ add r4, r5, r1
+ mov r0, r6
+ mov r1, r4
+ bl IC_InvalidateRange
+ mov r0, r6
+ mov r1, r4
+ bl DC_InvalidateRange
+ add r0, r6, r5
+ sub r2, r4, r5
+ mov r1, #0x0
+ bl MI_CpuFill8
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+
+ arm_func_start FSi_GetOverlayBinarySize
+FSi_GetOverlayBinarySize: ; 0x020D277C
+ ldrb r1, [r0, #0x1f]
+ ands r1, r1, #0x1
+ ldrne r0, [r0, #0x1c]
+ movne r0, r0, lsl #0x8
+ movne r0, r0, lsr #0x8
+ ldreq r0, [r0, #0x8]
+ bx lr
+
+ arm_func_start ProcessBlock
+ProcessBlock: ; 0x020D2798
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ add r3, r0, #0x18
+ ldr r5, [r0, #0x0]
+ ldr r4, [r0, #0x4]
+ ldr lr, [r0, #0x8]
+ ldr r12, [r0, #0xc]
+ ldr r2, _020D2B78 ; =0x02106900
+ mov r8, r3
+ mov r7, #0x0
+_020D27C0:
+ mvn r1, r4
+ and r6, r4, lr
+ and r1, r1, r12
+ orr r1, r6, r1
+ ldr r6, [r8, #0x0]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r6, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x7
+ orr r1, r1, r5, lsr #0x19
+ add r5, r4, r1
+ mvn r1, r5
+ and r6, r5, r4
+ and r1, r1, lr
+ orr r1, r6, r1
+ ldr r6, [r8, #0x4]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r6, r1
+ add r6, r9, r1
+ mov r1, r6, lsl #0xc
+ orr r1, r1, r6, lsr #0x14
+ add r12, r5, r1
+ mvn r1, r12
+ and r6, r12, r5
+ and r1, r1, r4
+ orr r6, r6, r1
+ add r1, r8, #0xc
+ ldr r9, [r8, #0x8]
+ add r6, lr, r6
+ add r6, r9, r6
+ ldr r9, [r2, #0x8]
+ ldr r1, [r1, #0x0]
+ add r10, r9, r6
+ add r6, r2, #0xc
+ ldr r6, [r6, #0x0]
+ mov r9, r10, lsl #0x11
+ orr r9, r9, r10, lsr #0xf
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r8, r8, #0x10
+ and r10, lr, r12
+ mvn r9, lr
+ and r9, r9, r5
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r1, r1, r4
+ add r4, r6, r1
+ mov r1, r4, lsl #0x16
+ orr r1, r1, r4, lsr #0xa
+ add r4, lr, r1
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ blt _020D27C0
+ ldr r6, _020D2B7C ; =0x02106840
+ mov r1, #0x0
+_020D28A4:
+ mvn r7, r12
+ ldr r9, [r6, #0x0]
+ and r8, r4, r12
+ and r7, lr, r7
+ orr r7, r8, r7
+ ldr r8, [r3, r9, lsl #0x2]
+ add r5, r5, r7
+ ldr r7, [r2, #0x0]
+ add r5, r8, r5
+ add r7, r7, r5
+ mov r5, r7, lsl #0x5
+ orr r5, r5, r7, lsr #0x1b
+ add r5, r4, r5
+ mvn r8, lr
+ ldr r7, [r6, #0x4]
+ and r9, r5, lr
+ and r8, r4, r8
+ orr r10, r9, r8
+ mvn r8, r4
+ ldr r9, [r6, #0x8]
+ ldr r11, [r3, r7, lsl #0x2]
+ add r7, r12, r10
+ add r10, r11, r7
+ add r7, r6, #0xc
+ ldr r9, [r3, r9, lsl #0x2]
+ and r8, r5, r8
+ ldr r7, [r7, #0x0]
+ ldr r11, [r2, #0x4]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r11, r11, r10
+ mov r10, r11, lsl #0x9
+ orr r10, r10, r11, lsr #0x17
+ add r12, r5, r10
+ ldr r10, [r2, #0x8]
+ and r11, r12, r4
+ orr r8, r11, r8
+ add r8, lr, r8
+ add r8, r9, r8
+ add r10, r10, r8
+ add r8, r2, #0xc
+ ldr r8, [r8, #0x0]
+ mov r9, r10, lsl #0xe
+ orr r9, r9, r10, lsr #0x12
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ and r10, lr, r5
+ mvn r9, r5
+ and r9, r12, r9
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r4, r7, r4
+ add r7, r8, r4
+ mov r4, r7, lsl #0x14
+ orr r4, r4, r7, lsr #0xc
+ add r4, lr, r4
+ add r1, r1, #0x1
+ cmp r1, #0x4
+ blt _020D28A4
+ mov r7, #0x0
+_020D2994:
+ ldr r8, [r6, #0x0]
+ eor r1, r4, lr
+ eor r1, r12, r1
+ add r1, r5, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r5, [r2, #0x0]
+ add r1, r8, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x4
+ orr r1, r1, r5, lsr #0x1c
+ add r5, r4, r1
+ ldr r8, [r6, #0x4]
+ eor r1, r5, r4
+ eor r1, lr, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r6, #0x8]
+ ldr r10, [r2, #0x4]
+ add r1, r8, r1
+ add r8, r10, r1
+ mov r1, r8, lsl #0xb
+ orr r1, r1, r8, lsr #0x15
+ add r12, r5, r1
+ eor r8, r12, r5
+ eor r8, r4, r8
+ ldr r9, [r3, r9, lsl #0x2]
+ add r8, lr, r8
+ add r9, r9, r8
+ ldr r10, [r2, #0x8]
+ add r1, r2, #0xc
+ ldr r8, [r6, #0xc]
+ add r10, r10, r9
+ ldr r9, [r3, r8, lsl #0x2]
+ mov r8, r10, lsl #0x10
+ orr r8, r8, r10, lsr #0x10
+ add lr, r12, r8
+ eor r8, lr, r12
+ eor r8, r5, r8
+ add r4, r4, r8
+ add r7, r7, #0x1
+ ldr r1, [r1, #0x0]
+ add r4, r9, r4
+ add r4, r1, r4
+ mov r1, r4, lsl #0x17
+ orr r1, r1, r4, lsr #0x9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ add r4, lr, r1
+ cmp r7, #0x4
+ blt _020D2994
+ mov r10, #0x0
+_020D2A60:
+ mvn r1, r12
+ ldr r7, [r6, #0x0]
+ orr r1, r4, r1
+ eor r1, lr, r1
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r7, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x6
+ orr r1, r1, r5, lsr #0x1a
+ add r5, r4, r1
+ mvn r1, lr
+ ldr r7, [r6, #0x4]
+ orr r1, r5, r1
+ eor r1, r4, r1
+ ldr r8, [r6, #0x8]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r7, r1
+ add r9, r9, r1
+ mov r7, r9, lsl #0xa
+ add r1, r6, #0xc
+ orr r9, r7, r9, lsr #0x16
+ ldr r1, [r1, #0x0]
+ add r7, r2, #0xc
+ add r12, r5, r9
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r7, [r7, #0x0]
+ ldr r1, [r3, r1, lsl #0x2]
+ ldr r9, [r2, #0x8]
+ mvn r11, r4
+ orr r11, r12, r11
+ eor r11, r5, r11
+ add r11, lr, r11
+ add r8, r8, r11
+ add r9, r9, r8
+ mov r8, r9, lsl #0xf
+ orr r8, r8, r9, lsr #0x11
+ add lr, r12, r8
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ mvn r8, r5
+ orr r8, lr, r8
+ eor r8, r12, r8
+ add r4, r4, r8
+ add r1, r1, r4
+ add r4, r7, r1
+ mov r1, r4, lsl #0x15
+ orr r1, r1, r4, lsr #0xb
+ add r4, lr, r1
+ add r10, r10, #0x1
+ cmp r10, #0x4
+ blt _020D2A60
+ ldr r1, [r0, #0x0]
+ add r1, r1, r5
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r4
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, lr
+ str r1, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ add r1, r1, r12
+ str r1, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D2B78: .word 0x02106900
+_020D2B7C: .word 0x02106840
+
+ arm_func_start MATH_MD5GetHash
+MATH_MD5GetHash: ; 0x020D2B80
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldr r1, [r6, #0x14]
+ ldr r3, [r6, #0x10]
+ mov r7, r0
+ mov r4, r1, lsl #0x3
+ ldr r1, _020D2C40 ; =0x0210683C
+ mov r0, r6
+ mov r2, #0x1
+ orr r4, r4, r3, lsr #0x1d
+ mov r5, r3, lsl #0x3
+ bl MATH_MD5Update
+ ldr r0, [r6, #0x10]
+ mov r1, #0x0
+ and r3, r0, #0x3f
+ rsb r2, r3, #0x40
+ cmp r2, #0x8
+ bhs _020D2BE8
+ add r0, r6, #0x18
+ add r0, r0, r3
+ bl MI_CpuFill8
+ mov r0, r6
+ bl ProcessBlock
+ mov r3, #0x0
+ mov r2, #0x40
+_020D2BE8:
+ cmp r2, #0x8
+ bls _020D2C04
+ add r0, r6, #0x18
+ add r0, r0, r3
+ sub r2, r2, #0x8
+ mov r1, #0x0
+ bl MI_CpuFill8
+_020D2C04:
+ str r5, [r6, #0x50]
+ mov r0, r6
+ str r4, [r6, #0x54]
+ bl ProcessBlock
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x10
+ bl MI_CpuCopy8
+ mov r0, r6
+ mov r1, #0x0
+ mov r2, #0x58
+ bl MI_CpuFill8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D2C40: .word 0x0210683C
+
+ arm_func_start MATH_MD5Update
+MATH_MD5Update: ; 0x020D2C44
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r8, r0
+ add r12, r8, #0x10
+ ldr r4, [r8, #0x10]
+ mov r6, r2
+ and r3, r4, #0x3f
+ ldr r0, [r12, #0x4]
+ adds r4, r4, r6
+ str r4, [r8, #0x10]
+ adc r0, r0, #0x0
+ rsb r5, r3, #0x40
+ mov r7, r1
+ str r0, [r12, #0x4]
+ cmp r5, r6
+ bls _020D2CB0
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ add r1, r8, #0x18
+ mov r0, r7
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020D2CB0:
+ add r1, r8, #0x18
+ mov r0, r7
+ mov r2, r5
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ mov r0, r8
+ bl ProcessBlock
+ sub r6, r6, r5
+ mov r4, r6, lsr #0x6
+ cmp r4, #0x0
+ add r9, r7, r5
+ ble _020D2D10
+ add r7, r8, #0x18
+ mov r5, #0x40
+_020D2CE8:
+ mov r0, r9
+ mov r1, r7
+ mov r2, r5
+ bl MI_CpuCopy8
+ mov r0, r8
+ add r9, r9, #0x40
+ bl ProcessBlock
+ sub r4, r4, #0x1
+ cmp r4, #0x0
+ bgt _020D2CE8
+_020D2D10:
+ ands r2, r6, #0x3f
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ mov r0, r9
+ add r1, r8, #0x18
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start MATH_MD5Init
+MATH_MD5Init: ; 0x020D2D38
+ ldr r2, _020D2D68 ; =0x67452301
+ ldr r1, _020D2D6C ; =0xEFCDAB89
+ str r2, [r0, #0x0]
+ ldr r2, _020D2D70 ; =0x98BADCFE
+ str r1, [r0, #0x4]
+ ldr r1, _020D2D74 ; =0x10325476
+ str r2, [r0, #0x8]
+ str r1, [r0, #0xc]
+ mov r1, #0x0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bx lr
+ .balign 4
+_020D2D68: .word 0x67452301
+_020D2D6C: .word 0xEFCDAB89
+_020D2D70: .word 0x98BADCFE
+_020D2D74: .word 0x10325476
+
+ arm_func_start MATH_CalcHMACSHA1
+MATH_CalcHMACSHA1: ; 0x020D2D78
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0xa0
+ ldr lr, _020D2E00 ; =0x02106A04
+ add r12, sp, #0x1c
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ mov r4, r12
+ ldmia lr!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldmia lr, {r0-r2}
+ stmia r12, {r0-r2}
+ add lr, sp, #0x38
+ add r12, sp, #0x8
+ str lr, [sp, #0x24]
+ ldr lr, _020D2E04 ; =MATH_SHA1Init
+ str r12, [sp, #0x28]
+ ldr ip, _020D2E08 ; =MATH_SHA1Update
+ str lr, [sp, #0x2c]
+ ldr lr, _020D2E0C ; =MATH_SHA1GetHash
+ str r12, [sp, #0x30]
+ ldr r12, [sp, #0xb8]
+ str lr, [sp, #0x34]
+ str r12, [sp, #0x0]
+ mov r3, r5
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ str r4, [sp, #0x4]
+ bl MATHi_CalcHMAC
+ add sp, sp, #0xa0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D2E00: .word 0x02106A04
+_020D2E04: .word MATH_SHA1Init
+_020D2E08: .word MATH_SHA1Update
+_020D2E0C: .word MATH_SHA1GetHash
+
+ arm_func_start MATH_SHA1GetHash
+MATH_SHA1GetHash: ; 0x020D2E10
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r6,lr}
+ ldr r0, [sp, #0x10]
+ mov r6, r1
+ ldr r3, [r0, #0x1c]
+ add r5, r0, #0x20
+ ands r1, r3, #0x3
+ mov r0, r3, asr #0x2
+ moveq r1, #0x0
+ streq r1, [r5, r0, lsl #0x2]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x80
+ add r4, r2, #0x20
+ strb r1, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ beq _020D2E68
+ mov r2, #0x0
+_020D2E58:
+ strb r2, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ bne _020D2E58
+_020D2E68:
+ ldr r1, [sp, #0x10]
+ add r0, r0, #0x1
+ ldr r1, [r1, #0x1c]
+ cmp r1, #0x38
+ blt _020D2EB4
+ cmp r0, #0x10
+ bge _020D2E98
+ mov r1, #0x0
+_020D2E88:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0x10
+ blt _020D2E88
+_020D2E98:
+ ldr r1, _020D3008 ; =0x02106A00
+ ldr r0, [sp, #0x10]
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ blx r3
+ mov r0, #0x0
+_020D2EB4:
+ cmp r0, #0xe
+ bge _020D2ED0
+ mov r1, #0x0
+_020D2EC0:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0xe
+ blt _020D2EC0
+_020D2ED0:
+ ldr r0, [sp, #0x10]
+ mov r1, r5
+ ldr r2, [r0, #0x14]
+ ldr r3, _020D3008 ; =0x02106A00
+ strb r2, [r4, #0x3f]
+ mov r0, r2, lsr #0x8
+ strb r0, [r4, #0x3e]
+ mov r0, r2, lsr #0x10
+ strb r0, [r4, #0x3d]
+ mov r0, r2, lsr #0x18
+ strb r0, [r4, #0x3c]
+ ldr r0, [sp, #0x10]
+ mov r2, #0x40
+ ldr r5, [r0, #0x18]
+ strb r5, [r4, #0x3b]
+ mov r0, r5, lsr #0x8
+ strb r0, [r4, #0x3a]
+ mov r0, r5, lsr #0x10
+ strb r0, [r4, #0x39]
+ mov r0, r5, lsr #0x18
+ strb r0, [r4, #0x38]
+ ldr r0, [sp, #0x10]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x10
+ ldr r3, [r0, #0x0]
+ mov r0, #0x0
+ mov r2, r3, lsr #0x18
+ strb r2, [r6, #0x0]
+ mov r2, r3, lsr #0x10
+ strb r2, [r6, #0x1]
+ mov r2, r3, lsr #0x8
+ strb r2, [r6, #0x2]
+ strb r3, [r6, #0x3]
+ ldr r3, [sp, #0x10]
+ mov r2, #0x4
+ ldr r4, [r3, #0x4]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x4]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x5]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x6]
+ strb r4, [r6, #0x7]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x8]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x8]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x9]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xa]
+ strb r4, [r6, #0xb]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0xc]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0xc]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0xd]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xe]
+ strb r4, [r6, #0xf]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x10]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x10]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x11]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x12]
+ strb r4, [r6, #0x13]
+ ldr r3, [sp, #0x10]
+ str r0, [r3, #0x1c]
+ bl MIi_CpuClear32
+ ldmia sp!, {r4-r6,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020D3008: .word 0x02106A00
+
+ arm_func_start MATH_SHA1Update
+MATH_SHA1Update: ; 0x020D300C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ movs r6, r2
+ mov r7, r1
+ add r5, r8, #0x20
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, [r8, #0x14]
+ add r1, r0, r6, lsl #0x3
+ cmp r1, r0
+ ldrcc r0, [r8, #0x18]
+ addcc r0, r0, #0x1
+ strcc r0, [r8, #0x18]
+ ldr r0, [r8, #0x18]
+ add r0, r0, r6, lsr #0x1d
+ str r0, [r8, #0x18]
+ str r1, [r8, #0x14]
+ ldr r1, [r8, #0x1c]
+ cmp r1, #0x0
+ beq _020D30CC
+ add r0, r1, r6
+ cmp r0, #0x40
+ blo _020D30A8
+ rsb r4, r1, #0x40
+ mov r0, r7
+ mov r2, r4
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ sub r6, r6, r4
+ add r7, r7, r4
+ blx r3
+ mov r0, #0x0
+ str r0, [r8, #0x1c]
+ b _020D30CC
+_020D30A8:
+ mov r0, r7
+ mov r2, r6
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r0, [r8, #0x1c]
+ add r0, r0, r6
+ str r0, [r8, #0x1c]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D30CC:
+ cmp r6, #0x40
+ blo _020D313C
+ bic r4, r6, #0x3f
+ sub r6, r6, r4
+ ands r0, r7, #0x3
+ bne _020D3104
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r7
+ mov r2, r4
+ blx r3
+ add r7, r7, r4
+ b _020D313C
+_020D3104:
+ mov r0, r7
+ mov r1, r5
+ mov r2, #0x40
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ add r7, r7, #0x40
+ blx r3
+ sub r4, r4, #0x40
+ cmp r4, #0x0
+ bgt _020D3104
+_020D313C:
+ str r6, [r8, #0x1c]
+ cmp r6, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, r7
+ mov r1, r5
+ mov r2, r6
+ bl MI_CpuCopy8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D3164: .word 0x02106A00
+
+ arm_func_start MATH_SHA1Init
+MATH_SHA1Init: ; 0x020D3168
+ ldr r1, _020D31A4 ; =0x67452301
+ ldr r2, _020D31A8 ; =0xEFCDAB89
+ str r1, [r0, #0x0]
+ ldr r1, _020D31AC ; =0x98BADCFE
+ str r2, [r0, #0x4]
+ ldr r2, _020D31B0 ; =0x10325476
+ str r1, [r0, #0x8]
+ ldr r1, _020D31B4 ; =0xC3D2E1F0
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x10]
+ mov r1, #0x0
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+ .balign 4
+_020D31A4: .word 0x67452301
+_020D31A8: .word 0xEFCDAB89
+_020D31AC: .word 0x98BADCFE
+_020D31B0: .word 0x10325476
+_020D31B4: .word 0xC3D2E1F0
+
+ arm_func_start MATHi_CalcHMAC
+MATHi_CalcHMAC: ; 0x020D31B8
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0xc4
+ ldr r5, [sp, #0xe0]
+ ldr r4, [sp, #0xe4]
+ movs r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r8, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r7, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r6, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r5, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r4, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ ldr r0, [r4, #0x4]
+ cmp r5, r0
+ ble _020D3278
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r6
+ mov r2, r5
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ add r1, sp, #0x0
+ blx r2
+ ldr r5, [r4, #0x0]
+ add r6, sp, #0x0
+_020D3278:
+ cmp r5, #0x0
+ mov r0, #0x0
+ ble _020D32A0
+ add r2, sp, #0x40
+_020D3288:
+ ldrb r1, [r6, r0]
+ add r0, r0, #0x1
+ cmp r0, r5
+ eor r1, r1, #0x36
+ strb r1, [r2], #0x1
+ blt _020D3288
+_020D32A0:
+ ldr r1, [r4, #0x4]
+ cmp r0, r1
+ bge _020D32CC
+ add r1, sp, #0x40
+ add r3, r1, r0
+ mov r2, #0x36
+_020D32B8:
+ strb r2, [r3], #0x1
+ ldr r1, [r4, #0x4]
+ add r0, r0, #0x1
+ cmp r0, r1
+ blt _020D32B8
+_020D32CC:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x40
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r8
+ mov r2, r7
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x18]
+ blx r2
+ cmp r5, #0x0
+ mov r2, #0x0
+ ble _020D3338
+ add r1, sp, #0x80
+_020D3320:
+ ldrb r0, [r6, r2]
+ add r2, r2, #0x1
+ cmp r2, r5
+ eor r0, r0, #0x5c
+ strb r0, [r1], #0x1
+ blt _020D3320
+_020D3338:
+ ldr r0, [r4, #0x4]
+ cmp r2, r0
+ bge _020D3364
+ add r0, sp, #0x80
+ add r3, r0, r2
+ mov r1, #0x5c
+_020D3350:
+ strb r1, [r3], #0x1
+ ldr r0, [r4, #0x4]
+ add r2, r2, #0x1
+ cmp r2, r0
+ blt _020D3350
+_020D3364:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x80
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x14]
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ mov r1, r9
+ blx r2
+ add sp, sp, #0xc4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
+_020D33B4: .word 0x00FF00FF
+_020D33B8: .word 0x5A827999
+_020D33BC: .word 0x6ED9EBA1
+_020D33C0: .word 0x8F1BBCDC
+_020D33C4: .word 0xCA62C1D6
+
+ arm_func_start MATHi_SHA1ProcessBlock
+MATHi_SHA1ProcessBlock: ; 0x020D33C8
+ stmdb sp!, {r4-r12,lr}
+ ldmia r0, {r3,r9-r12}
+ sub sp, sp, #0x84
+ str r2, [sp, #0x80]
+_020D33D8:
+ ldr r8, _020D33B8 ; =0x5A827999
+ ldr r7, _020D33B4 ; =0x00FF00FF
+ mov r6, sp
+ mov r5, #0x0
+_020D33E8:
+ ldr r4, [r1], #0x4
+ add r2, r8, r12
+ add r2, r2, r3, ror #27
+ and lr, r4, r7
+ and r4, r7, r4, ror #24
+ orr r4, r4, lr, ror #8
+ str r4, [r6, #0x40]
+ str r4, [r6], #0x4
+ add r2, r2, r4
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r5, r5, #0x4
+ cmp r5, #0x40
+ blt _020D33E8
+ mov r7, #0x0
+ mov r6, sp
+_020D3448:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #31
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #27
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x4
+ cmp r7, #0x10
+ blt _020D3448
+ ldr r8, _020D33BC ; =0x6ED9EBA1
+ mov r7, #0x0
+_020D34B8:
+ ldr r2, [r6, #0x0]
+ ldr r4, [r6, #0x8]
+ ldr lr, [r6, #0x20]
+ ldr r5, [r6, #0x34]
+ eor r2, r2, r4
+ eor lr, lr, r5
+ eor r2, r2, lr
+ mov r2, r2, ror #31
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #27
+ eor lr, r9, r10
+ eor lr, lr, r11
+ add r2, r2, lr
+ mov r9, r9, ror #2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0xc
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D34B8
+ ldr r8, _020D33C0 ; =0x8F1BBCDC
+ mov r7, #0x0
+_020D352C:
+ ldr r2, [r6, #0x0]
+ ldr lr, [r6, #0x8]
+ ldr r5, [r6, #0x20]
+ ldr r4, [r6, #0x34]
+ eor r2, r2, lr
+ eor r5, r5, r4
+ eor r2, r2, r5
+ mov r2, r2, ror #31
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #27
+ orr r5, r9, r10
+ and r5, r5, r11
+ and r4, r9, r10
+ orr r5, r5, r4
+ add r2, r2, r5
+ mov r9, r9, ror #2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x8
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D352C
+ ldr r8, _020D33C4 ; =0xCA62C1D6
+ mov r7, #0x0
+_020D35A8:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #31
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #27
+ eor r4, r9, r10
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D35A8
+ ldmia r0, {r2,r4,r6-r7,lr}
+ add r3, r3, r2
+ add r9, r9, r4
+ add r10, r10, r6
+ add r11, r11, r7
+ add r12, r12, lr
+ stmia r0, {r3,r9-r12}
+ ldr lr, [sp, #0x80]
+ subs lr, lr, #0x40
+ str lr, [sp, #0x80]
+ bgt _020D33D8
+ add sp, sp, #0x84
+ ldmia sp!, {r4-r12,pc}
+
+ arm_func_start CP_SaveContext
+CP_SaveContext: ; 0x020D3648
+ ldr r1, _020D3684 ; =0x04000290
+ stmdb sp!, {r4}
+ ldmia r1, {r2-r4,r12}
+ stmia r0!, {r2-r4,r12}
+ ldrh r12, [r1, #-0x10]
+ add r1, r1, #0x28
+ ldmia r1, {r2-r3}
+ stmia r0!, {r2-r3}
+ and r12, r12, #0x3
+ ldrh r2, [r1, #-0x8]
+ strh r12, [r0, #0x0]
+ and r2, r2, #0x1
+ strh r2, [r0, #0x2]
+ ldmia sp!, {r4}
+ bx lr
+ .balign 4
+_020D3684: .word 0x04000290
+
+ arm_func_start CP_RestoreContext
+CP_RestoreContext: ; 0x020D3688
+ stmdb sp!, {r4}
+ ldr r1, _020D36C0 ; =0x04000290
+ ldmia r0, {r2-r4,r12}
+ stmia r1, {r2-r4,r12}
+ ldrh r2, [r0, #0x18]
+ ldrh r3, [r0, #0x1a]
+ strh r2, [r1, #-0x10]
+ strh r3, [r1, #0x20]
+ add r0, r0, #0x10
+ add r1, r1, #0x28
+ ldmia r0, {r2-r3}
+ stmia r1, {r2-r3}
+ ldmia sp!, {r4}
+ bx lr
+ .balign 4
+_020D36C0: .word 0x04000290
+
+ arm_func_start TP_CheckError
+TP_CheckError: ; 0x020D36C4
+ ldr r1, _020D36D4 ; =0x021D5474
+ ldrh r1, [r1, #0x34]
+ and r0, r1, r0
+ bx lr
+ .balign 4
+_020D36D4: .word 0x021D5474
+
+ arm_func_start TP_WaitBusy
+TP_WaitBusy: ; 0x020D36D8
+ ldr r1, _020D36EC ; =0x021D5474
+_020D36DC:
+ ldrh r2, [r1, #0x36]
+ ands r2, r2, r0
+ bne _020D36DC
+ bx lr
+ .balign 4
+_020D36EC: .word 0x021D5474
+
+ arm_func_start TP_GetCalibratedPoint
+TP_GetCalibratedPoint: ; 0x020D36F0
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020D3818 ; =0x021D5474
+ ldrh r2, [r2, #0x30]
+ cmp r2, #0x0
+ bne _020D372C
+ ldrh r3, [r1, #0x0]
+ ldrh r2, [r1, #0x2]
+ strh r3, [r0, #0x0]
+ strh r2, [r0, #0x2]
+ ldrh r2, [r1, #0x4]
+ ldrh r1, [r1, #0x6]
+ strh r2, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D372C:
+ ldrh r3, [r1, #0x4]
+ ldr r2, _020D381C ; =0x021D548C
+ strh r3, [r0, #0x4]
+ ldrh r3, [r1, #0x6]
+ strh r3, [r0, #0x6]
+ ldrh r3, [r1, #0x4]
+ cmp r3, #0x0
+ moveq r1, #0x0
+ streqh r1, [r0, #0x0]
+ streqh r1, [r0, #0x2]
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ ldrh r4, [r1, #0x0]
+ ldr r3, [r2, #0x0]
+ ldr lr, [r2, #0x8]
+ mov r12, r4, lsl #0x2
+ mov r4, r12, asr #0x1f
+ subs r12, r12, r3
+ sbc r3, r4, r3, asr #0x1f
+ umull r6, r5, lr, r12
+ mla r5, lr, r3, r5
+ mov r3, lr, asr #0x1f
+ mla r5, r3, r12, r5
+ mov r3, r6, lsr #0x16
+ orr r3, r3, r5, lsl #0xa
+ strh r3, [r0, #0x0]
+ ldrsh r3, [r0, #0x0]
+ cmp r3, #0x0
+ movlt r3, #0x0
+ strlth r3, [r0, #0x0]
+ blt _020D37B4
+ cmp r3, #0xff
+ movgt r3, #0xff
+ strgth r3, [r0, #0x0]
+_020D37B4:
+ ldrh r3, [r1, #0x2]
+ ldr r1, [r2, #0xc]
+ ldr r12, [r2, #0x14]
+ mov r3, r3, lsl #0x2
+ mov r2, r3, asr #0x1f
+ subs r3, r3, r1
+ sbc r1, r2, r1, asr #0x1f
+ umull r4, lr, r12, r3
+ mla lr, r12, r1, lr
+ mov r1, r12, asr #0x1f
+ mla lr, r1, r3, lr
+ mov r1, r4, lsr #0x16
+ orr r1, r1, lr, lsl #0xa
+ strh r1, [r0, #0x2]
+ ldrsh r1, [r0, #0x2]
+ cmp r1, #0x0
+ movlt r1, #0x0
+ strlth r1, [r0, #0x2]
+ ldmltia sp!, {r4-r6,lr}
+ bxlt lr
+ cmp r1, #0xbf
+ movgt r1, #0xbf
+ strgth r1, [r0, #0x2]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020D3818: .word 0x021D5474
+_020D381C: .word 0x021D548C
+
+ arm_func_start TP_CalcCalibrateParam
+TP_CalcCalibrateParam:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ mov r4, r3
+ cmp r6, #0x1000
+ bhs _020D3860
+ cmp r5, #0x1000
+ bhs _020D3860
+ ldrh r8, [sp, #0x2c]
+ cmp r8, #0x1000
+ bhs _020D3860
+ ldrh r3, [sp, #0x30]
+ cmp r3, #0x1000
+ blo _020D3870
+_020D3860:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3870:
+ cmp r4, #0x100
+ bhs _020D389C
+ ldrh r2, [sp, #0x34]
+ cmp r2, #0x100
+ bhs _020D389C
+ ldrh r1, [sp, #0x28]
+ cmp r1, #0xc0
+ bhs _020D389C
+ ldrh r0, [sp, #0x38]
+ cmp r0, #0xc0
+ blo _020D38AC
+_020D389C:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D38AC:
+ cmp r4, r2
+ beq _020D38CC
+ cmp r1, r0
+ beq _020D38CC
+ cmp r6, r8
+ beq _020D38CC
+ cmp r5, r3
+ bne _020D38DC
+_020D38CC:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D38DC:
+ bl OS_DisableInterrupts
+ ldrh r1, [sp, #0x2c]
+ ldr r3, _020D3A80 ; =0x04000280
+ ldr fp, _020D3A84 ; =0x04000290
+ str r1, [sp, #0x0]
+ ldr r2, [sp, #0x0]
+ ldrh r1, [sp, #0x34]
+ sub r9, r6, r2
+ mov r2, #0x0
+ mov r12, r9, lsl #0x8
+ strh r2, [r3, #0x0]
+ str r12, [r11, #0x0]
+ ldrh r8, [sp, #0x30]
+ ldrh r10, [sp, #0x38]
+ ldrh r9, [sp, #0x28]
+ ldr fp, _020D3A88 ; =0x04000298
+ sub r12, r4, r1
+ str r12, [r11, #0x0]
+ str r2, [r11, #0x4]
+ sub r11, r5, r8
+ sub r2, r9, r10
+_020D3930:
+ ldrh r12, [r3, #0x0]
+ ands r12, r12, #0x8000
+ bne _020D3930
+ ldr ip, _020D3A8C ; =0x040002A0
+ mov r11, r11, lsl #0x8
+ ldr lr, [r12, #0x0]
+ mov r12, #0x0
+ strh r12, [r3, #0x0]
+ ldr r3, _020D3A84 ; =0x04000290
+ cmp lr, #0x8000
+ str r11, [r3, #0x0]
+ ldr r3, _020D3A88 ; =0x04000298
+ str r2, [r3, #0x0]
+ mov r2, r3
+ str r12, [r2, #0x4]
+ bge _020D3980
+ mov r2, #0x8000
+ rsb r2, r2, #0x0
+ cmp lr, r2
+ bge _020D3994
+_020D3980:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3994:
+ strh lr, [r7, #0x4]
+ ldrsh r11, [r7, #0x4]
+ add r3, r4, r1
+ ldr r1, [sp, #0x0]
+ add r4, r6, r1
+ mul r1, r11, r3
+ mov r3, r4, lsl #0x8
+ sub r1, r3, r1
+ mov r1, r1, lsl #0x9
+ mov r1, r1, asr #0x10
+ cmp r1, #0x8000
+ bge _020D39CC
+ cmp r1, r2
+ bge _020D39E0
+_020D39CC:
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D39E0:
+ ldr r2, _020D3A80 ; =0x04000280
+ strh r1, [r7, #0x0]
+_020D39E8:
+ ldrh r1, [r2, #0x0]
+ ands r1, r1, #0x8000
+ bne _020D39E8
+ ldr r1, _020D3A8C ; =0x040002A0
+ ldr r4, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ cmp r4, #0x8000
+ bge _020D3A18
+ mov r0, #0x8000
+ rsb r1, r0, #0x0
+ cmp r4, r1
+ bge _020D3A28
+_020D3A18:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3A28:
+ strh r4, [r7, #0x6]
+ ldrsh r2, [r7, #0x6]
+ add r0, r9, r10
+ add r3, r5, r8
+ mul r0, r2, r0
+ mov r2, r3, lsl #0x8
+ sub r0, r2, r0
+ mov r0, r0, lsl #0x9
+ mov r0, r0, asr #0x10
+ cmp r0, #0x8000
+ bge _020D3A5C
+ cmp r0, r1
+ bge _020D3A6C
+_020D3A5C:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+_020D3A6C:
+ strh r0, [r7, #0x2]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D3A80: .word 0x04000280
+_020D3A84: .word 0x04000290
+_020D3A88: .word 0x04000298
+_020D3A8C: .word 0x040002A0
+
+ arm_func_start TP_GetLatestIndexInAuto
+TP_GetLatestIndexInAuto: ; 0x020D3A90
+ ldr r0, _020D3A9C ; =0x021D5474
+ ldrh r0, [r0, #0xc]
+ bx lr
+ .balign 4
+_020D3A9C: .word 0x021D5474
+
+ arm_func_start TP_GetLatestRawPointInAuto
+TP_GetLatestRawPointInAuto: ; 0x020D3AA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r1, #0x3
+ ldr lr, _020D3C10 ; =0x021D5474
+ strh r1, [r0, #0x6]
+ ldrh r1, [lr, #0xe]
+ ldrh r3, [lr, #0xc]
+ cmp r1, #0x1
+ beq _020D3AD0
+ ldrh r1, [lr, #0x14]
+ cmp r1, #0x1
+ bne _020D3B0C
+_020D3AD0:
+ ldr r1, _020D3C10 ; =0x021D5474
+ mov r2, r3, lsl #0x3
+ ldr r1, [r1, #0x10]
+ add sp, sp, #0x4
+ add r3, r1, r3, lsl #0x3
+ ldrh r2, [r1, r2]
+ ldrh r1, [r3, #0x2]
+ strh r2, [r0, #0x0]
+ strh r1, [r0, #0x2]
+ ldrh r2, [r3, #0x4]
+ ldrh r1, [r3, #0x6]
+ strh r2, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D3B0C:
+ add r1, r0, #0x6
+ mov r12, #0x0
+ b _020D3BE0
+_020D3B18:
+ subs r5, r3, r12
+ ldr r2, [lr, #0x10]
+ addmi r5, r5, r4
+ add r2, r2, r5, lsl #0x3
+ ldrh r4, [r2, #0x4]
+ cmp r4, #0x0
+ bne _020D3B60
+ ldrh r3, [r2, #0x0]
+ ldrh r1, [r2, #0x2]
+ add sp, sp, #0x4
+ strh r3, [r0, #0x0]
+ strh r1, [r0, #0x2]
+ ldrh r3, [r2, #0x4]
+ ldrh r1, [r2, #0x6]
+ strh r3, [r0, #0x4]
+ strh r1, [r0, #0x6]
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D3B60:
+ ldrh r4, [r0, #0x6]
+ ands r4, r4, #0x1
+ beq _020D3B90
+ ldrh r4, [r2, #0x6]
+ ands r4, r4, #0x1
+ bne _020D3B90
+ ldrh r4, [r2, #0x0]
+ cmp r12, #0x0
+ strh r4, [r0, #0x0]
+ ldrneh r4, [r1, #0x0]
+ bicne r4, r4, #0x1
+ strneh r4, [r1, #0x0]
+_020D3B90:
+ ldrh r4, [r0, #0x6]
+ ands r4, r4, #0x2
+ beq _020D3BC0
+ ldrh r4, [r2, #0x6]
+ ands r4, r4, #0x2
+ bne _020D3BC0
+ ldrh r2, [r2, #0x2]
+ cmp r12, #0x0
+ strh r2, [r0, #0x2]
+ ldrneh r2, [r1, #0x0]
+ bicne r2, r2, #0x2
+ strneh r2, [r1, #0x0]
+_020D3BC0:
+ ldrh r2, [r0, #0x6]
+ cmp r2, #0x0
+ moveq r1, #0x1
+ streqh r1, [r0, #0x4]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ add r12, r12, #0x1
+_020D3BE0:
+ ldrh r2, [lr, #0xe]
+ cmp r12, r2
+ bge _020D3BFC
+ ldrh r4, [lr, #0x14]
+ sub r2, r4, #0x1
+ cmp r12, r2
+ blt _020D3B18
+_020D3BFC:
+ mov r1, #0x1
+ strh r1, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D3C10: .word 0x021D5474
+
+ arm_func_start TP_RequestAutoSamplingStopAsync
+TP_RequestAutoSamplingStopAsync: ; 0x020D3C14
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r1, _020D3CB0 ; =0x03000200
+ mov r0, #0x6
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D3C30:
.byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0xA3, 0x00, 0x00, 0xA0, 0xB3, 0x00, 0x00, 0x50, 0xE3
.byte 0x0F, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0xB5, 0xE5, 0xFF, 0xEB, 0x60, 0x00, 0x9F, 0xE5
.byte 0xB4, 0x13, 0xD0, 0xE1, 0x00, 0x30, 0x90, 0xE5, 0x04, 0x10, 0x81, 0xE3, 0xB4, 0x13, 0xC0, 0xE1
@@ -2598,13 +11077,41 @@ _020CD33C:
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x28, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0xB6, 0x23, 0xD1, 0xE1
.byte 0x04, 0x20, 0x82, 0xE3, 0xB6, 0x23, 0xC1, 0xE1, 0xB4, 0x23, 0xD1, 0xE1, 0x04, 0x20, 0xC2, 0xE3
.byte 0xB4, 0x23, 0xC1, 0xE1, 0x9E, 0xE5, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x02, 0x00, 0x03, 0x74, 0x54, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0xFC, 0x40, 0x9F, 0xE5
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x00, 0xC0, 0xA0, 0xE3, 0x00, 0x60, 0xA0, 0xE1, 0x10, 0x20, 0x84, 0xE5
- .byte 0xBC, 0xC0, 0xC4, 0xE1, 0xBE, 0x50, 0xC4, 0xE1, 0xB4, 0x31, 0xC4, 0xE1, 0x00, 0x00, 0x53, 0xE3
- .byte 0x06, 0x00, 0x00, 0x9A, 0x0C, 0x10, 0xA0, 0xE1, 0x10, 0x00, 0x94, 0xE5, 0x8C, 0x01, 0x80, 0xE0
- .byte 0x01, 0xC0, 0x8C, 0xE2, 0xB4, 0x10, 0xC0, 0xE1, 0x03, 0x00, 0x5C, 0xE1, 0xF9, 0xFF, 0xFF, 0x3A
- .byte 0x82, 0xE5, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0xB4, 0x00, 0x9F, 0xE5, 0xFF, 0x10, 0x05, 0xE2
- .byte 0x00, 0x10, 0x81, 0xE1, 0x06, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0xEF, 0xEF, 0xFF, 0xEB
+_020D3CB0: .word 0x03000200
+_020D3CB4:
+ .byte 0x74, 0x54, 0x1D, 0x02
+
+ arm_func_start TP_RequestAutoSamplingStartAsync
+TP_RequestAutoSamplingStartAsync: ; 0x020D3CB8
+ stmdb sp!, {r4-r6,lr}
+ ldr r4, _020D3DC0 ; =0x021D5474
+ mov r5, r1
+ mov r12, #0x0
+ mov r6, r0
+ str r2, [r4, #0x10]
+ strh r12, [r4, #0xc]
+ strh r5, [r4, #0xe]
+ strh r3, [r4, #0x14]
+ cmp r3, #0x0
+ bls _020D3D00
+ mov r1, r12
+_020D3CE8:
+ ldr r0, [r4, #0x10]
+ add r0, r0, r12, lsl #0x3
+ add r12, r12, #0x1
+ strh r1, [r0, #0x4]
+ cmp r12, r3
+ blo _020D3CE8
+_020D3D00:
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r0, _020D3DC4 ; =0x02000100
+ and r1, r5, #0xff
+ orr r1, r1, r0
+ mov r0, #0x6
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D3D20:
.byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0xB3, 0x07, 0x00, 0x00, 0xBA, 0x94, 0x10, 0x9F, 0xE5
.byte 0x06, 0x00, 0xA0, 0xE3, 0x01, 0x10, 0x86, 0xE1, 0x00, 0x20, 0xA0, 0xE3, 0xE7, 0xEF, 0xFF, 0xEB
.byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0xB3, 0x01, 0x00, 0xA0, 0xA3, 0xFF, 0x00, 0x10, 0xE2
@@ -2615,14 +11122,47 @@ _020CD33C:
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0xB6, 0x23, 0xD1, 0xE1
.byte 0x02, 0x20, 0x82, 0xE3, 0xB6, 0x23, 0xC1, 0xE1, 0xB4, 0x23, 0xD1, 0xE1, 0x02, 0x20, 0xC2, 0xE3
.byte 0xB4, 0x23, 0xC1, 0xE1, 0x5A, 0xE5, 0xFF, 0xEB, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x74, 0x54, 0x1D, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x10, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x3E, 0xFE, 0xFF, 0xEB, 0x3C, 0x10, 0x9F, 0xE5
- .byte 0xB4, 0x03, 0xD1, 0xE1, 0x01, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x10, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0xB4, 0x30, 0xD1, 0xE1, 0xB6, 0x20, 0xD1, 0xE1, 0x00, 0x00, 0xA0, 0xE3
- .byte 0xB0, 0x30, 0xC4, 0xE1, 0xB2, 0x20, 0xC4, 0xE1, 0xB8, 0x20, 0xD1, 0xE1, 0xBA, 0x10, 0xD1, 0xE1
- .byte 0xB4, 0x20, 0xC4, 0xE1, 0xB6, 0x10, 0xC4, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x74, 0x54, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x38, 0xE5, 0xFF, 0xEB, 0x00, 0x40, 0xA0, 0xE1
- .byte 0x06, 0x00, 0xA0, 0xE3, 0x03, 0x14, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0xA7, 0xEF, 0xFF, 0xEB
+_020D3DC0: .word 0x021D5474
+_020D3DC4: .word 0x02000100
+_020D3DC8:
+ .byte 0x00, 0x00, 0x01, 0x01
+
+ arm_func_start TP_WaitRawResult
+TP_WaitRawResult: ; 0x020D3DCC
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ bl TP_WaitBusy
+ ldr r1, _020D3E20 ; =0x021D5474
+ ldrh r0, [r1, #0x34]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ ldmneia sp!, {r4,lr}
+ bxne lr
+ ldrh r3, [r1, #0x4]
+ ldrh r2, [r1, #0x6]
+ mov r0, #0x0
+ strh r3, [r4, #0x0]
+ strh r2, [r4, #0x2]
+ ldrh r2, [r1, #0x8]
+ ldrh r1, [r1, #0xa]
+ strh r2, [r4, #0x4]
+ strh r1, [r4, #0x6]
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D3E20: .word 0x021D5474
+
+ arm_func_start TP_RequestSamplingAsync
+TP_RequestSamplingAsync: ; 0x020D3E24
+ stmdb sp!, {r4,lr}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, #0x6
+ mov r1, #0x3000000
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D3E40:
.byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0xA3, 0x00, 0x00, 0xA0, 0xB3, 0x00, 0x00, 0x50, 0xE3
.byte 0x0F, 0x00, 0x00, 0x1A, 0x04, 0x00, 0xA0, 0xE1, 0x31, 0xE5, 0xFF, 0xEB, 0x5C, 0x00, 0x9F, 0xE5
.byte 0xB4, 0x13, 0xD0, 0xE1, 0x00, 0x30, 0x90, 0xE5, 0x01, 0x10, 0x81, 0xE3, 0xB4, 0x13, 0xC0, 0xE1
@@ -2631,68 +11171,274 @@ _020CD33C:
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0x24, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0xA0, 0xE1, 0xB6, 0x23, 0xD1, 0xE1
.byte 0x01, 0x20, 0x82, 0xE3, 0xB6, 0x23, 0xC1, 0xE1, 0xB4, 0x23, 0xD1, 0xE1, 0x01, 0x20, 0xC2, 0xE3
.byte 0xB4, 0x23, 0xC1, 0xE1, 0x1A, 0xE5, 0xFF, 0xEB, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x74, 0x54, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xB0, 0xE1
- .byte 0x20, 0x01, 0x9F, 0x05, 0x00, 0x10, 0xA0, 0x03, 0xB0, 0x13, 0xC0, 0x01, 0x04, 0xD0, 0x8D, 0x02
- .byte 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x08, 0xE5, 0xFF, 0xEB, 0xF4, 0xE0, 0xD4, 0xE1
- .byte 0x00, 0x00, 0x5E, 0xE3, 0x15, 0x00, 0x00, 0x0A, 0xFC, 0x50, 0x9F, 0xE5, 0x00, 0xC0, 0xA0, 0xE3
- .byte 0xF8, 0x20, 0x9F, 0xE5, 0xB0, 0xC0, 0xC5, 0xE1, 0x01, 0x32, 0xA0, 0xE3, 0xF0, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x30, 0x82, 0xE5, 0x00, 0xE0, 0x81, 0xE5, 0x04, 0xC0, 0x81, 0xE5, 0xF0, 0x20, 0xD4, 0xE1
- .byte 0xD0, 0x10, 0x9F, 0xE5, 0x18, 0x20, 0x81, 0xE5, 0xF4, 0x20, 0xD4, 0xE1, 0x1C, 0x20, 0x81, 0xE5
- .byte 0xB0, 0x10, 0xD5, 0xE1, 0x02, 0x19, 0x11, 0xE2, 0xFC, 0xFF, 0xFF, 0x1A, 0xC4, 0x20, 0x9F, 0xE5
- .byte 0xB0, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x92, 0xE5, 0x20, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x00, 0xEA
- .byte 0xA0, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x18, 0x20, 0x81, 0xE5, 0x1C, 0x20, 0x81, 0xE5
- .byte 0x20, 0x20, 0x81, 0xE5, 0xF6, 0x50, 0xD4, 0xE1, 0x00, 0x00, 0x55, 0xE3, 0x15, 0x00, 0x00, 0x0A
- .byte 0x84, 0xC0, 0x9F, 0xE5, 0x00, 0xE0, 0xA0, 0xE3, 0x80, 0x20, 0x9F, 0xE5, 0xB0, 0xE0, 0xCC, 0xE1
- .byte 0x01, 0x32, 0xA0, 0xE3, 0x78, 0x10, 0x9F, 0xE5, 0x00, 0x30, 0x82, 0xE5, 0x00, 0x50, 0x81, 0xE5
- .byte 0x04, 0xE0, 0x81, 0xE5, 0xF2, 0x20, 0xD4, 0xE1, 0x58, 0x10, 0x9F, 0xE5, 0x24, 0x20, 0x81, 0xE5
- .byte 0xF6, 0x20, 0xD4, 0xE1, 0x28, 0x20, 0x81, 0xE5, 0xB0, 0x10, 0xDC, 0xE1, 0x02, 0x19, 0x11, 0xE2
- .byte 0xFC, 0xFF, 0xFF, 0x1A, 0x4C, 0x20, 0x9F, 0xE5, 0x38, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x92, 0xE5
- .byte 0x2C, 0x20, 0x81, 0xE5, 0x04, 0x00, 0x00, 0xEA, 0x28, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x24, 0x20, 0x81, 0xE5, 0x28, 0x20, 0x81, 0xE5, 0x2C, 0x20, 0x81, 0xE5, 0xD0, 0xE4, 0xFF, 0xEB
- .byte 0x10, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0xB0, 0x13, 0xC0, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x74, 0x54, 0x1D, 0x02, 0x80, 0x02, 0x00, 0x04
- .byte 0x90, 0x02, 0x00, 0x04, 0x98, 0x02, 0x00, 0x04, 0xA0, 0x02, 0x00, 0x04, 0x70, 0x40, 0x2D, 0xE9
- .byte 0x18, 0xD0, 0x4D, 0xE2, 0x98, 0xC0, 0x9F, 0xE5, 0x00, 0x40, 0xA0, 0xE1, 0xB8, 0x15, 0xDC, 0xE1
- .byte 0xBA, 0x25, 0xDC, 0xE1, 0x5C, 0x30, 0xDC, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x5D, 0xE0, 0xDC, 0xE5
- .byte 0xBE, 0x65, 0xDC, 0xE1, 0xB0, 0x56, 0xDC, 0xE1, 0x62, 0x00, 0xDC, 0xE5, 0x63, 0xC0, 0xDC, 0xE5
- .byte 0x05, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x56, 0xE3, 0x03, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x52, 0xE3
- .byte 0x01, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x55, 0xE3, 0x08, 0x00, 0x00, 0x0A, 0x00, 0xE0, 0x8D, 0xE5
- .byte 0x04, 0x60, 0x8D, 0xE5, 0x08, 0x50, 0x8D, 0xE5, 0x0C, 0x00, 0x8D, 0xE5, 0x04, 0x00, 0xA0, 0xE1
- .byte 0x10, 0xC0, 0x8D, 0xE5, 0xE9, 0xFD, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A
- .byte 0x00, 0x00, 0xA0, 0xE3, 0xB0, 0x00, 0xC4, 0xE1, 0xB2, 0x00, 0xC4, 0xE1, 0xB4, 0x00, 0xC4, 0xE1
- .byte 0xB6, 0x00, 0xC4, 0xE1, 0x18, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x00, 0xA0, 0xE3, 0x18, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x80, 0xFC, 0x7F, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x74, 0x00, 0x9F, 0xE5, 0xB0, 0x10, 0xD0, 0xE1, 0x00, 0x00, 0x51, 0xE3, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x01, 0x10, 0xA0, 0xE3, 0xB0, 0x10, 0xC0, 0xE1
- .byte 0xB2, 0xEE, 0xFF, 0xEB, 0x54, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0xB2, 0x13, 0xC0, 0xE1
- .byte 0xB6, 0x13, 0xC0, 0xE1, 0xBC, 0x10, 0xC0, 0xE1, 0x00, 0x10, 0x80, 0xE5, 0x10, 0x10, 0x80, 0xE5
- .byte 0xB0, 0x13, 0xC0, 0xE1, 0xB4, 0x13, 0xC0, 0xE1, 0x06, 0x50, 0xA0, 0xE3, 0x01, 0x40, 0xA0, 0xE3
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE1, 0x1D, 0xEF, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x74, 0x54, 0x1D, 0x02
+
+ arm_func_start TP_SetCalibrateParam
+TP_SetCalibrateParam: ; 0x020D3EC4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ movs r4, r0
+ ldreq r0, _020D3FF8 ; =0x021D5474
+ moveq r1, #0x0
+ streqh r1, [r0, #0x30]
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,lr}
+ bxeq lr
+ bl OS_DisableInterrupts
+ ldrsh lr, [r4, #0x4]
+ cmp lr, #0x0
+ beq _020D3F50
+ ldr r5, _020D3FFC ; =0x04000280
+ mov r12, #0x0
+ ldr r2, _020D4000 ; =0x04000290
+ strh r12, [r5, #0x0]
+ mov r3, #0x10000000
+ ldr r1, _020D4004 ; =0x04000298
+ str r3, [r2, #0x0]
+ str lr, [r1, #0x0]
+ str r12, [r1, #0x4]
+ ldrsh r2, [r4, #0x0]
+ ldr r1, _020D3FF8 ; =0x021D5474
+ str r2, [r1, #0x18]
+ ldrsh r2, [r4, #0x4]
+ str r2, [r1, #0x1c]
+_020D3F30:
+ ldrh r1, [r5, #0x0]
+ ands r1, r1, #0x8000
+ bne _020D3F30
+ ldr r2, _020D4008 ; =0x040002A0
+ ldr r1, _020D3FF8 ; =0x021D5474
+ ldr r2, [r2, #0x0]
+ str r2, [r1, #0x20]
+ b _020D3F64
+_020D3F50:
+ ldr r1, _020D3FF8 ; =0x021D5474
+ mov r2, #0x0
+ str r2, [r1, #0x18]
+ str r2, [r1, #0x1c]
+ str r2, [r1, #0x20]
+_020D3F64:
+ ldrsh r5, [r4, #0x6]
+ cmp r5, #0x0
+ beq _020D3FC8
+ ldr ip, _020D3FFC ; =0x04000280
+ mov lr, #0x0
+ ldr r2, _020D4000 ; =0x04000290
+ strh lr, [r12, #0x0]
+ mov r3, #0x10000000
+ ldr r1, _020D4004 ; =0x04000298
+ str r3, [r2, #0x0]
+ str r5, [r1, #0x0]
+ str lr, [r1, #0x4]
+ ldrsh r2, [r4, #0x2]
+ ldr r1, _020D3FF8 ; =0x021D5474
+ str r2, [r1, #0x24]
+ ldrsh r2, [r4, #0x6]
+ str r2, [r1, #0x28]
+_020D3FA8:
+ ldrh r1, [r12, #0x0]
+ ands r1, r1, #0x8000
+ bne _020D3FA8
+ ldr r2, _020D4008 ; =0x040002A0
+ ldr r1, _020D3FF8 ; =0x021D5474
+ ldr r2, [r2, #0x0]
+ str r2, [r1, #0x2c]
+ b _020D3FDC
+_020D3FC8:
+ ldr r1, _020D3FF8 ; =0x021D5474
+ mov r2, #0x0
+ str r2, [r1, #0x24]
+ str r2, [r1, #0x28]
+ str r2, [r1, #0x2c]
+_020D3FDC:
+ bl OS_RestoreInterrupts
+ ldr r0, _020D3FF8 ; =0x021D5474
+ mov r1, #0x1
+ strh r1, [r0, #0x30]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+ .balign 4
+_020D3FF8: .word 0x021D5474
+_020D3FFC: .word 0x04000280
+_020D4000: .word 0x04000290
+_020D4004: .word 0x04000298
+_020D4008: .word 0x040002A0
+
+ arm_func_start TP_GetUserInfo
+TP_GetUserInfo: ; 0x020D400C
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x18
+ ldr ip, _020D40B4 ; =0x027FFC80
+ mov r4, r0
+ ldrh r1, [r12, #0x58]
+ ldrh r2, [r12, #0x5a]
+ ldrb r3, [r12, #0x5c]
+ cmp r1, #0x0
+ ldrb lr, [r12, #0x5d]
+ ldrh r6, [r12, #0x5e]
+ ldrh r5, [r12, #0x60]
+ ldrb r0, [r12, #0x62]
+ ldrb r12, [r12, #0x63]
+ bne _020D405C
+ cmp r6, #0x0
+ bne _020D405C
+ cmp r2, #0x0
+ bne _020D405C
+ cmp r5, #0x0
+ beq _020D4080
+_020D405C:
+ str lr, [sp, #0x0]
+ str r6, [sp, #0x4]
+ str r5, [sp, #0x8]
+ str r0, [sp, #0xc]
+ mov r0, r4
+ str r12, [sp, #0x10]
+ bl TP_CalcCalibrateParam
+_020D4078:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x08, 0x00, 0x00, 0x0A
+_020D4080:
+ mov r0, #0x0
+ strh r0, [r4, #0x0]
+ strh r0, [r4, #0x2]
+ strh r0, [r4, #0x4]
+ strh r0, [r4, #0x6]
+ add sp, sp, #0x18
+ mov r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020D40A4:
+ .byte 0x01, 0x00, 0xA0, 0xE3, 0x18, 0xD0, 0x8D, 0xE2, 0x70, 0x40, 0xBD, 0xE8
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020D40B4: .word 0x027FFC80
+
+ arm_func_start TP_Init
+TP_Init: ; 0x020D40B8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D413C ; =0x021D5470
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ mov r1, #0x1
+ strh r1, [r0, #0x0]
+ bl PXI_Init
+ ldr r0, _020D4140 ; =0x021D5474
+ mov r1, #0x0
+ strh r1, [r0, #0x32]
+ strh r1, [r0, #0x36]
+ strh r1, [r0, #0xc]
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x10]
+ strh r1, [r0, #0x30]
+ strh r1, [r0, #0x34]
+ mov r5, #0x6
+ mov r4, #0x1
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020D411C:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0xFA, 0xFF, 0xFF, 0x0A, 0x18, 0x10, 0x9F, 0xE5, 0x06, 0x00, 0xA0, 0xE3, 0x22, 0xEF, 0xFF, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x70, 0x54, 0x1D, 0x02
- .byte 0x74, 0x54, 0x1D, 0x02, 0x48, 0x41, 0x0D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2
- .byte 0x01, 0x08, 0xA0, 0xE1, 0x20, 0x38, 0xA0, 0xE1, 0x7F, 0x0C, 0x03, 0xE2, 0x00, 0x04, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x52, 0xE3, 0x20, 0x08, 0xA0, 0xE1, 0x0F, 0x00, 0x00, 0x0A, 0x88, 0x12, 0x9F, 0xE5
- .byte 0x01, 0x20, 0xA0, 0xE3, 0xB4, 0x43, 0xD1, 0xE1, 0x00, 0x30, 0x91, 0xE5, 0x12, 0x20, 0x84, 0xE1
- .byte 0x00, 0x00, 0x53, 0xE3, 0xB4, 0x23, 0xC1, 0xE1, 0x08, 0xD0, 0x8D, 0x02, 0x10, 0x40, 0xBD, 0x08
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x10, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x00, 0x50, 0xE3
- .byte 0x31, 0x00, 0x00, 0x1A, 0x40, 0x12, 0x9F, 0xE5, 0xBC, 0x30, 0xD1, 0xE1, 0xB4, 0x21, 0xD1, 0xE1
- .byte 0x01, 0x30, 0x83, 0xE2, 0xBC, 0x30, 0xC1, 0xE1, 0xBC, 0x30, 0xD1, 0xE1, 0x02, 0x00, 0x53, 0xE1
- .byte 0x00, 0x20, 0xA0, 0x23, 0xBC, 0x20, 0xC1, 0x21, 0x20, 0x12, 0x9F, 0xE5, 0x18, 0x22, 0x9F, 0xE5
- .byte 0xB0, 0x30, 0xD1, 0xE1, 0x18, 0x12, 0x9F, 0xE5, 0xBC, 0xC0, 0xD2, 0xE1, 0xB0, 0x30, 0xCD, 0xE1
- .byte 0xB0, 0x10, 0xD1, 0xE1, 0x10, 0x40, 0x92, 0xE5, 0x8C, 0xE1, 0xA0, 0xE1, 0xB2, 0x10, 0xCD, 0xE1
- .byte 0x00, 0x30, 0x9D, 0xE5, 0x8C, 0x11, 0x84, 0xE0, 0x03, 0x3A, 0xA0, 0xE1, 0x23, 0x3A, 0xA0, 0xE1
- .byte 0xBE, 0x30, 0x84, 0xE1, 0x00, 0x30, 0x9D, 0xE5, 0x03, 0x34, 0xA0, 0xE1, 0x23, 0x3A, 0xA0, 0xE1
- .byte 0xB2, 0x30, 0xC1, 0xE1, 0x00, 0x30, 0x9D, 0xE5, 0x83, 0x33, 0xA0, 0xE1, 0xA3, 0x3F, 0xA0, 0xE1
- .byte 0xFF, 0x30, 0x03, 0xE2, 0xB4, 0x30, 0xC1, 0xE1, 0x00, 0x30, 0x9D, 0xE5, 0x83, 0x32, 0xA0, 0xE1
- .byte 0x23, 0x3F, 0xA0, 0xE1, 0xFF, 0x30, 0x03, 0xE2, 0xB6, 0x30, 0xC1, 0xE1, 0x00, 0x30, 0x92, 0xE5
- .byte 0x00, 0x00, 0x53, 0xE3, 0x08, 0xD0, 0x8D, 0x02, 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0xBC, 0x20, 0xD2, 0xE1, 0x00, 0x10, 0xA0, 0xE3, 0xFF, 0x20, 0x02, 0xE2, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x14, 0x11, 0xE2
- .byte 0x08, 0xD0, 0x8D, 0x02, 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0xFF, 0x10, 0x03, 0xE2
- .byte 0x04, 0x00, 0x51, 0xE3, 0x01, 0xF1, 0x8F, 0x90, 0x53, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA
+ .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D413C: .word 0x021D5470
+_020D4140: .word 0x021D5474
+_020D4144:
+ .byte 0x48, 0x41, 0x0D, 0x02
+
+ arm_func_start FUN_020D4148
+FUN_020D4148: ; 0x020D4148
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ mov r0, r1, lsl #0x10
+ mov r3, r0, lsr #0x10
+ and r0, r3, #0x7f00
+ mov r0, r0, lsl #0x8
+ cmp r2, #0x0
+ mov r0, r0, lsr #0x10
+ beq _020D41AC
+ ldr r1, _020D43FC ; =0x021D5474
+ mov r2, #0x1
+ ldrh r4, [r1, #0x34]
+ ldr r3, [r1, #0x0]
+ orr r2, r4, r2, lsl r0
+ cmp r3, #0x0
+ strh r2, [r1, #0x34]
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ mov r1, #0x4
+ mov r2, #0x0
+ blx r3
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D41AC:
+ cmp r0, #0x10
+ bne _020D427C
+ ldr r1, _020D43FC ; =0x021D5474
+ ldrh r3, [r1, #0xc]
+ ldrh r2, [r1, #0x14]
+ add r3, r3, #0x1
+ strh r3, [r1, #0xc]
+ ldrh r3, [r1, #0xc]
+ cmp r3, r2
+ movcs r2, #0x0
+ strcsh r2, [r1, #0xc]
+ ldr r1, _020D4400 ; =0x027FFFAA
+ ldr r2, _020D43FC ; =0x021D5474
+ ldrh r3, [r1, #0x0]
+ ldr r1, _020D4404 ; =0x027FFFAC
+ ldrh r12, [r2, #0xc]
+ strh r3, [sp, #0x0]
+ ldrh r1, [r1, #0x0]
+ ldr r4, [r2, #0x10]
+ mov lr, r12, lsl #0x3
+ strh r1, [sp, #0x2]
+ ldr r3, [sp, #0x0]
+ add r1, r4, r12, lsl #0x3
+ mov r3, r3, lsl #0x14
+ mov r3, r3, lsr #0x14
+ strh r3, [r4, lr]
+ ldr r3, [sp, #0x0]
+ mov r3, r3, lsl #0x8
+ mov r3, r3, lsr #0x14
+ strh r3, [r1, #0x2]
+ ldr r3, [sp, #0x0]
+ mov r3, r3, lsl #0x7
+ mov r3, r3, lsr #0x1f
+ and r3, r3, #0xff
+ strh r3, [r1, #0x4]
+ ldr r3, [sp, #0x0]
+ mov r3, r3, lsl #0x5
+ mov r3, r3, lsr #0x1e
+ and r3, r3, #0xff
+ strh r3, [r1, #0x6]
+ ldr r3, [r2, #0x0]
+ cmp r3, #0x0
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldrh r2, [r2, #0xc]
+ mov r1, #0x0
+ and r2, r2, #0xff
+ blx r3
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D427C:
+ ands r1, r1, #0x1000000
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ and r1, r3, #0xff
+ cmp r1, #0x4
+ addls pc, pc, r1, lsl #0x2
+ b _020D43EC
+_020D429C:
+ .byte 0x03, 0x00, 0x00, 0xEA
.byte 0x51, 0x00, 0x00, 0xEA, 0x39, 0x00, 0x00, 0xEA, 0x3A, 0x00, 0x00, 0xEA, 0x35, 0x00, 0x00, 0xEA
.byte 0x00, 0x00, 0x50, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x1D, 0x00, 0x00, 0x0A
.byte 0x02, 0x00, 0x50, 0xE3, 0x30, 0x11, 0x9F, 0x05, 0x00, 0x20, 0xA0, 0x03, 0xB2, 0x23, 0xC1, 0x01
@@ -2713,17 +11459,62 @@ _020CD33C:
.byte 0x1E, 0xC0, 0x8C, 0xE1, 0xB4, 0xC3, 0xC1, 0xE1, 0xB6, 0xC3, 0xD1, 0xE1, 0x00, 0x00, 0x53, 0xE3
.byte 0x08, 0xD0, 0x8D, 0x02, 0x02, 0x20, 0x0C, 0xE0, 0xB6, 0x23, 0xC1, 0xE1, 0x10, 0x40, 0xBD, 0x08
.byte 0x1E, 0xFF, 0x2F, 0x01, 0xFF, 0x10, 0x04, 0xE2, 0x00, 0x20, 0xA0, 0xE3, 0x33, 0xFF, 0x2F, 0xE1
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x17, 0xE5, 0xFF, 0xEB
- .byte 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x74, 0x54, 0x1D, 0x02
- .byte 0xAA, 0xFF, 0x7F, 0x02, 0xAC, 0xFF, 0x7F, 0x02, 0x0C, 0xC0, 0x9F, 0xE5, 0x00, 0x00, 0x9C, 0xE5
- .byte 0x01, 0x00, 0x50, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x54, 0x1D, 0x02
- .byte 0x04, 0x10, 0x9F, 0xE5, 0x0C, 0x00, 0x81, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x54, 0x1D, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x20, 0x10, 0x9F, 0xE5, 0x09, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x25, 0xEE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0xA3
+ .byte 0x08, 0xD0, 0x8D, 0xE2, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D43EC:
+ bl OS_Terminate
+ add sp, sp, #0x8
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D43FC: .word 0x021D5474
+_020D4400: .word 0x027FFFAA
+_020D4404: .word 0x027FFFAC
+
+ arm_func_start MicWaitBusy
+MicWaitBusy: ; 0x020D4408
+ ldr ip, _020D441C ; =0x021D54B0
+_020D440C:
+ ldr r0, [r12, #0x0]
+ cmp r0, #0x1
+ beq _020D440C
+ bx lr
+ .balign 4
+_020D441C: .word 0x021D54B0
+
+ arm_func_start MicGetResultCallback
+MicGetResultCallback: ; 0x020D4420
+ ldr r1, _020D442C ; =0x021D54B0
+ str r0, [r1, #0xc]
+ bx lr
+ .balign 4
+_020D442C: .word 0x021D54B0
+
+ arm_func_start MicStopAutoSampling
+MicStopAutoSampling:
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4460 ; =0x03004200
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D4448:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0xA3
.byte 0x00, 0x00, 0xA0, 0xB3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x42, 0x00, 0x03, 0x70, 0x40, 0x2D, 0xE9, 0x14, 0xC1, 0x9F, 0xE5, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0x0C, 0x10, 0x83, 0xE1, 0x09, 0x00, 0xA0, 0xE3
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x15, 0xEE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0xB3
+_020D4460: .word 0x03004200
+
+ arm_func_start MicStartAutoSampling
+MicStartAutoSampling: ; 0x020D4464
+ stmdb sp!, {r4-r6,lr}
+ ldr ip, _020D4584 ; =0x02004100
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ orr r1, r3, r12
+ mov r0, #0x9
+ mov r2, #0x0
+ bl PXI_SendWordByFifo
+_020D4488:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0xB3
.byte 0x70, 0x40, 0xBD, 0xB8, 0x1E, 0xFF, 0x2F, 0xB1, 0x26, 0x08, 0xA0, 0xE1, 0x01, 0x18, 0x80, 0xE3
.byte 0x09, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0x0C, 0xEE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0x00, 0x00, 0xA0, 0xB3, 0x70, 0x40, 0xBD, 0xB8, 0x1E, 0xFF, 0x2F, 0xB1, 0xC4, 0x10, 0x9F, 0xE5
@@ -2739,61 +11530,232 @@ _020CD33C:
.byte 0x1E, 0xFF, 0x2F, 0xB1, 0x2C, 0x00, 0x9F, 0xE5, 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x04, 0xE0
.byte 0x01, 0x10, 0x80, 0xE1, 0x09, 0x00, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3, 0xDB, 0xED, 0xFF, 0xEB
.byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0xA3, 0x00, 0x00, 0xA0, 0xB3, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x41, 0x00, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x01, 0x10, 0x80, 0xE1, 0x09, 0x00, 0xA0, 0xE3, 0xCC, 0xED, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020D4584: .word 0x02004100
+_020D4588:
+ .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01
+
+ arm_func_start MicDoSampling
+MicDoSampling: ; 0x020D4590
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D45C4 ; =0x03004000
+ mov r2, #0x0
+ orr r1, r0, r1
+ mov r0, #0x9
+ bl PXI_SendWordByFifo
+_020D45AC:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x01, 0x00, 0xA0, 0xA3, 0x00, 0x00, 0xA0, 0xB3, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x40, 0x00, 0x03, 0x10, 0x40, 0x2D, 0xE9, 0x01, 0x40, 0xA0, 0xE1
- .byte 0x00, 0x00, 0x52, 0xE3, 0x0D, 0x00, 0x00, 0x0A, 0x20, 0x01, 0x9F, 0xE5, 0x1C, 0x21, 0x9F, 0xE5
- .byte 0x00, 0x10, 0x90, 0xE5, 0x04, 0xC0, 0x92, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x10, 0xA0, 0x13
- .byte 0x00, 0x10, 0x80, 0x15, 0x00, 0x00, 0x5C, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x08, 0x10, 0x92, 0xE5
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x06, 0x00, 0xA0, 0xE3, 0x04, 0x30, 0x82, 0xE5, 0x3C, 0xFF, 0x2F, 0xE1
- .byte 0xFF, 0x00, 0x04, 0xE2, 0x00, 0x18, 0xA0, 0xE1, 0x7F, 0x2C, 0x04, 0xE2, 0x02, 0x04, 0xA0, 0xE1
- .byte 0x21, 0x18, 0xA0, 0xE1, 0x04, 0x00, 0x51, 0xE3, 0x20, 0x28, 0xA0, 0xE1, 0x01, 0xF1, 0x8F, 0x90
- .byte 0x0E, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020D45C4: .word 0x03004000
+
+ arm_func_start MicCommonCallback
+MicCommonCallback: ; 0x020D45C8
+ stmdb sp!, {r4,lr}
+ mov r4, r1
+ cmp r2, #0x0
+ beq _020D4610
+ ldr r0, _020D4700 ; =0x021D54B0
+ ldr r2, _020D4700 ; =0x021D54B0
+ ldr r1, [r0, #0x0]
+ ldr r12, [r2, #0x4]
+ cmp r1, #0x0
+ movne r1, #0x0
+ strne r1, [r0, #0x0]
+ cmp r12, #0x0
+ beq _020D4610
+ ldr r1, [r2, #0x8]
+ mov r3, #0x0
+ mov r0, #0x6
+ str r3, [r2, #0x4]
+ blx r12
+_020D4610:
+ and r0, r4, #0xff
+ mov r1, r0, lsl #0x10
+ and r2, r4, #0x7f00
+ mov r0, r2, lsl #0x8
+ mov r1, r1, lsr #0x10
+ cmp r1, #0x4
+ mov r2, r0, lsr #0x10
+ addls pc, pc, r1, lsl #0x2
+ b _020D4670
+_020D4634:
+ .byte 0x03, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA
.byte 0x06, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0x00, 0x00, 0xA0, 0xE3, 0x08, 0x00, 0x00, 0xEA
.byte 0x04, 0x00, 0xA0, 0xE3, 0x06, 0x00, 0x00, 0xEA, 0x02, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0x00, 0xEA
.byte 0x05, 0x00, 0xA0, 0xE3, 0x02, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x00, 0xEA
- .byte 0x06, 0x00, 0xA0, 0xE3, 0x51, 0x00, 0x52, 0xE3, 0x08, 0x00, 0x00, 0x1A, 0x7C, 0x10, 0x9F, 0xE5
- .byte 0x10, 0x20, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x14, 0x10, 0x91, 0xE5, 0x32, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x40, 0x00, 0x52, 0xE3, 0x05, 0x00, 0x00, 0x1A, 0x50, 0x10, 0x9F, 0xE5, 0x18, 0x20, 0x91, 0xE5
- .byte 0x00, 0x00, 0x52, 0xE3, 0x48, 0x10, 0x9F, 0x15, 0xB0, 0x10, 0xD1, 0x11, 0xB0, 0x10, 0xC2, 0x11
- .byte 0x38, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x00, 0x20, 0xA0, 0x13
- .byte 0x00, 0x20, 0x81, 0x15, 0x24, 0x20, 0x9F, 0xE5, 0x04, 0x40, 0x92, 0xE5, 0x00, 0x00, 0x54, 0xE3
- .byte 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x08, 0x10, 0x92, 0xE5, 0x00, 0x30, 0xA0, 0xE3
- .byte 0x04, 0x30, 0x82, 0xE5, 0x34, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xB0, 0x54, 0x1D, 0x02, 0x94, 0xFF, 0x7F, 0x02, 0x04, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x90, 0xFF, 0x7F, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x2C, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x0B, 0x00, 0x00, 0xEB, 0x24, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0x81, 0xE5, 0x00, 0x00, 0x00, 0x1A, 0x31, 0xFF, 0xFF, 0xEB
- .byte 0x10, 0x00, 0x9F, 0xE5, 0x0C, 0x00, 0x90, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0x44, 0x0D, 0x02, 0xB0, 0x54, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0x01, 0x40, 0xA0, 0xE1, 0xE7, 0xE2, 0xFF, 0xEB
- .byte 0x50, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x00, 0x0A
- .byte 0xE7, 0xE2, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3, 0x30, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0x81, 0xE5, 0xE0, 0xE2, 0xFF, 0xEB
- .byte 0x20, 0x00, 0x9F, 0xE5, 0x04, 0x50, 0x80, 0xE5, 0x08, 0x40, 0x80, 0xE5, 0x1F, 0xFF, 0xFF, 0xEB
+_020D4670:
+ mov r0, #0x6
+ cmp r2, #0x51
+ bne _020D46A0
+ ldr r1, _020D4700 ; =0x021D54B0
+ ldr r2, [r1, #0x10]
+ cmp r2, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldr r1, [r1, #0x14]
+ blx r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D46A0:
+ cmp r2, #0x40
+ bne _020D46C0
+ ldr r1, _020D4700 ; =0x021D54B0
+ ldr r2, [r1, #0x18]
+ cmp r2, #0x0
+ ldrne r1, _020D4704 ; =0x027FFF94
+ ldrneh r1, [r1, #0x0]
+ strneh r1, [r2, #0x0]
+_020D46C0:
+ ldr r1, _020D4700 ; =0x021D54B0
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ movne r2, #0x0
+ strne r2, [r1, #0x0]
+ ldr r2, _020D4700 ; =0x021D54B0
+ ldr r4, [r2, #0x4]
+ cmp r4, #0x0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ ldr r1, [r2, #0x8]
+ mov r3, #0x0
+ str r3, [r2, #0x4]
+ blx r4
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020D4700: .word 0x021D54B0
+_020D4704: .word 0x027FFF94
+
+ arm_func_start MIC_GetLastSamplingAddress
+MIC_GetLastSamplingAddress: ; 0x020D4708
+ ldr r0, _020D4714 ; =0x027FFF90
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020D4714: .word 0x027FFF90
+
+ arm_func_start MIC_StopAutoSampling
+MIC_StopAutoSampling: ; 0x020D4718
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020D4754 ; =MicGetResultCallback
+ mov r1, #0x0
+ bl MIC_StopAutoSamplingAsync
+ ldr r1, _020D4758 ; =0x021D54B0
+ cmp r0, #0x0
+ str r0, [r1, #0xc]
+ bne _020D4740
+ bl MicWaitBusy
+_020D4740:
+ ldr r0, _020D4758 ; =0x021D54B0
+ ldr r0, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4754: .word MicGetResultCallback
+_020D4758: .word 0x021D54B0
+
+ arm_func_start MIC_StopAutoSamplingAsync
+MIC_StopAutoSamplingAsync: ; 0x020D475C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ bl OS_DisableInterrupts
+ ldr r1, _020D47C8 ; =0x021D54B0
+ ldr r2, [r1, #0x0]
+ cmp r2, #0x0
+ beq _020D4794
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r5,lr}
+ bx lr
+_020D4794:
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ bl OS_RestoreInterrupts
+ ldr r0, _020D47C8 ; =0x021D54B0
+ str r5, [r0, #0x4]
+ str r4, [r0, #0x8]
+ bl MicStopAutoSampling
+_020D47B0:
.byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x03, 0x00, 0xA0, 0x03, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x54, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x0B, 0x00, 0x00, 0xEB
- .byte 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x0C, 0x00, 0x81, 0xE5, 0x00, 0x00, 0x00, 0x1A
- .byte 0x04, 0xFF, 0xFF, 0xEB, 0x10, 0x00, 0x9F, 0xE5, 0x0C, 0x00, 0x90, 0xE5, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0x44, 0x0D, 0x02, 0xB0, 0x54, 0x1D, 0x02
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1, 0x04, 0x00, 0x97, 0xE5
- .byte 0x01, 0x60, 0xA0, 0xE1, 0x1F, 0x00, 0x10, 0xE2, 0x02, 0x50, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0x12
- .byte 0x02, 0x00, 0xA0, 0x13, 0xF0, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x08, 0x10, 0x97, 0xE5
- .byte 0x1F, 0x00, 0x11, 0xE2, 0x04, 0xD0, 0x8D, 0x12, 0x02, 0x00, 0xA0, 0x13, 0xF0, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x00, 0x51, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x02, 0x00, 0xA0, 0x03
- .byte 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x0C, 0x00, 0x97, 0xE5, 0x01, 0x0B, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x32, 0x02, 0x00, 0xA0, 0x33, 0xF0, 0x40, 0xBD, 0x38, 0x1E, 0xFF, 0x2F, 0x31
- .byte 0x00, 0x00, 0x97, 0xE5, 0x05, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90, 0x11, 0x00, 0x00, 0xEA
+ .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D47C8: .word 0x021D54B0
+
+ arm_func_start MIC_StartAutoSampling
+MIC_StartAutoSampling: ; 0x020D47CC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4808 ; =MicGetResultCallback
+ mov r2, #0x0
+ bl MIC_StartAutoSamplingAsync
+ ldr r1, _020D480C ; =0x021D54B0
+ cmp r0, #0x0
+ str r0, [r1, #0xc]
+ bne _020D47F4
+ bl MicWaitBusy
+_020D47F4:
+ ldr r0, _020D480C ; =0x021D54B0
+ ldr r0, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4808: .word MicGetResultCallback
+_020D480C: .word 0x021D54B0
+
+ arm_func_start MIC_StartAutoSamplingAsync
+MIC_StartAutoSamplingAsync: ; 0x020D4810
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r0, [r7, #0x4]
+ mov r6, r1
+ ands r0, r0, #0x1f
+ mov r5, r2
+ addne sp, sp, #0x4
+ movne r0, #0x2
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ ldr r1, [r7, #0x8]
+ ands r0, r1, #0x1f
+ addne sp, sp, #0x4
+ movne r0, #0x2
+ ldmneia sp!, {r4-r7,lr}
+ bxne lr
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x2
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ ldr r0, [r7, #0xc]
+ cmp r0, #0x400
+ addcc sp, sp, #0x4
+ movcc r0, #0x2
+ ldmccia sp!, {r4-r7,lr}
+ bxcc lr
+ ldr r0, [r7, #0x0]
+ cmp r0, #0x5
+ addls pc, pc, r0, lsl #0x2
+ b _020D48D8
+_020D4890:
.byte 0x04, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0xEA, 0x06, 0x00, 0x00, 0xEA, 0x07, 0x00, 0x00, 0xEA
.byte 0x08, 0x00, 0x00, 0xEA, 0x09, 0x00, 0x00, 0xEA, 0x00, 0x10, 0xA0, 0xE3, 0x0D, 0x00, 0x00, 0xEA
.byte 0x01, 0x10, 0xA0, 0xE3, 0x0B, 0x00, 0x00, 0xEA, 0x02, 0x10, 0xA0, 0xE3, 0x09, 0x00, 0x00, 0xEA
.byte 0x03, 0x10, 0xA0, 0xE3, 0x07, 0x00, 0x00, 0xEA, 0x05, 0x10, 0xA0, 0xE3, 0x05, 0x00, 0x00, 0xEA
- .byte 0x07, 0x10, 0xA0, 0xE3, 0x03, 0x00, 0x00, 0xEA, 0x04, 0xD0, 0x8D, 0xE2, 0x02, 0x00, 0xA0, 0xE3
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x00, 0x97, 0xE5, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x07, 0x10, 0xA0, 0xE3, 0x03, 0x00, 0x00, 0xEA
+_020D48D8:
+ add sp, sp, #0x4
+ mov r0, #0x2
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D48E8:
+ .byte 0x10, 0x00, 0x97, 0xE5, 0x00, 0x00, 0x50, 0xE3
.byte 0x10, 0x00, 0x81, 0x13, 0xFF, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x01, 0x02, 0xFF, 0x40, 0x00, 0xE2
.byte 0x82, 0xE2, 0xFF, 0xEB, 0x70, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5, 0x00, 0x00, 0x52, 0xE3
.byte 0x04, 0x00, 0x00, 0x0A, 0x82, 0xE2, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x01, 0x00, 0xA0, 0xE3
@@ -2803,88 +11765,330 @@ _020CD33C:
.byte 0x14, 0x10, 0x80, 0xE5, 0x04, 0x00, 0x97, 0xE5, 0x08, 0x10, 0x97, 0xE5, 0x0C, 0x20, 0x97, 0xE5
.byte 0xBF, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x03, 0x00, 0xA0, 0x03
.byte 0x04, 0xD0, 0x8D, 0xE2, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x54, 0x1D, 0x02
- .byte 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x06, 0x00, 0x50, 0xE3, 0x01, 0x70, 0xA0, 0xE1
- .byte 0x02, 0x60, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1, 0x04, 0xD0, 0x8D, 0xA2, 0x02, 0x00, 0xA0, 0xA3
- .byte 0xF0, 0x40, 0xBD, 0xA8, 0x1E, 0xFF, 0x2F, 0xA1, 0x03, 0x00, 0x50, 0xE3, 0x00, 0xF1, 0x8F, 0x90
- .byte 0x0B, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA
+
+ arm_func_start MIC_DoSamplingAsync
+MIC_DoSamplingAsync: ; 0x020D4980
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x6
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ addge sp, sp, #0x4
+ movge r0, #0x2
+ ldmgeia sp!, {r4-r7,lr}
+ bxge lr
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020D49E4
+_020D49B4:
+ .byte 0x02, 0x00, 0x00, 0xEA, 0x03, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA
.byte 0x05, 0x00, 0x00, 0xEA, 0x00, 0x40, 0xA0, 0xE3, 0x09, 0x00, 0x00, 0xEA, 0x01, 0x40, 0xA0, 0xE3
.byte 0x07, 0x00, 0x00, 0xEA, 0x02, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0x00, 0xEA, 0x03, 0x40, 0xA0, 0xE3
- .byte 0x03, 0x00, 0x00, 0xEA, 0x04, 0xD0, 0x8D, 0xE2, 0x02, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x45, 0xE2, 0xFF, 0xEB, 0x58, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5
+ .byte 0x03, 0x00, 0x00, 0xEA
+_020D49E4:
+ add sp, sp, #0x4
+ mov r0, #0x2
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020D49F4:
+ .byte 0x45, 0xE2, 0xFF, 0xEB, 0x58, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x91, 0xE5
.byte 0x00, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x45, 0xE2, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
.byte 0x01, 0x00, 0xA0, 0xE3, 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x01, 0x20, 0xA0, 0xE3
.byte 0x00, 0x20, 0x81, 0xE5, 0x3E, 0xE2, 0xFF, 0xEB, 0x28, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0xA0, 0xE1
.byte 0x04, 0x60, 0x81, 0xE5, 0x08, 0x50, 0x81, 0xE5, 0x18, 0x70, 0x81, 0xE5, 0xD3, 0xFE, 0xFF, 0xEB
.byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x03, 0x00, 0xA0, 0x03, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x54, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x6C, 0x10, 0x9F, 0xE5, 0xB0, 0x00, 0xD1, 0xE1, 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x58, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x30, 0xA0, 0xE3, 0xB0, 0x30, 0xC1, 0xE1, 0x00, 0x20, 0x80, 0xE5
- .byte 0x04, 0x20, 0x80, 0xE5, 0x45, 0xEC, 0xFF, 0xEB, 0x09, 0x50, 0xA0, 0xE3, 0x01, 0x40, 0xA0, 0xE3
- .byte 0x05, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE1, 0xB9, 0xEC, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xB0, 0x54, 0x1D, 0x02
+
+ arm_func_start MIC_Init
+MIC_Init: ; 0x020D4A5C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4AD8 ; =0x021D54AC
+ ldrh r0, [r1, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,lr}
+ bxne lr
+ ldr r0, _020D4ADC ; =0x021D54B0
+ mov r2, #0x0
+ mov r3, #0x1
+ strh r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x4]
+ bl PXI_Init
+ mov r5, #0x9
+ mov r4, #0x1
+ mov r0, r5
+ mov r1, r4
+ bl PXI_IsCallbackReady
+_020D4AAC:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0xFA, 0xFF, 0xFF, 0x0A, 0x24, 0x20, 0x9F, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x20, 0x10, 0x9F, 0xE5
.byte 0x09, 0x00, 0xA0, 0xE3, 0x00, 0x30, 0x82, 0xE5, 0xBB, 0xEC, 0xFF, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xAC, 0x54, 0x1D, 0x02, 0xB0, 0x54, 0x1D, 0x02
- .byte 0x90, 0xFF, 0x7F, 0x02, 0xC8, 0x45, 0x0D, 0x02, 0x08, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x78, 0x4B, 0x0D, 0x02, 0xE0, 0x54, 0x1D, 0x02
- .byte 0x08, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE1, 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1
- .byte 0x78, 0x4B, 0x0D, 0x02, 0xD8, 0x54, 0x1D, 0x02, 0x08, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0xC4, 0x4B, 0x0D, 0x02, 0xE0, 0x54, 0x1D, 0x02
- .byte 0x08, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE1, 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1
- .byte 0x0C, 0x4C, 0x0D, 0x02, 0xD8, 0x54, 0x1D, 0x02, 0x10, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xB0, 0xE1
- .byte 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x04, 0x00, 0x94, 0xE5, 0x00, 0x10, 0x94, 0xE5
- .byte 0x31, 0xFF, 0x2F, 0xE1, 0x08, 0x40, 0x94, 0xE5, 0x00, 0x00, 0x54, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A
- .byte 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x1E, 0xFF, 0x2F, 0x01
+ .byte 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D4AD8: .word 0x021D54AC
+_020D4ADC: .word 0x021D54B0
+_020D4AE0:
+ .byte 0x90, 0xFF, 0x7F, 0x02, 0xC8, 0x45, 0x0D, 0x02
+
+ arm_func_start PM_DeletePostSleepCallback
+PM_DeletePostSleepCallback: ; 0x020D4AE8
+ ldr ip, _020D4AF8 ; =0x020D4B78
+ mov r1, r0
+ ldr r0, _020D4AFC ; =0x021D54E0
+ bx r12
+ .balign 4
+_020D4AF8: .word 0x020D4B78
+_020D4AFC: .word 0x021D54E0
+
+ arm_func_start PM_DeletePreSleepCallback
+PM_DeletePreSleepCallback: ; 0x020D4B00
+ ldr ip, _020D4B10 ; =0x020D4B78
+ mov r1, r0
+ ldr r0, _020D4B14 ; =0x021D54D8
+ bx r12
+ .balign 4
+_020D4B10: .word 0x020D4B78
+_020D4B14: .word 0x021D54D8
+
+ arm_func_start PM_AppendPostSleepCallback
+PM_AppendPostSleepCallback: ; 0x020D4B18
+ ldr ip, _020D4B28 ; =FUN_020D4BC4
+ mov r1, r0
+ ldr r0, _020D4B2C ; =0x021D54E0
+ bx r12
+ .balign 4
+_020D4B28: .word FUN_020D4BC4
+_020D4B2C: .word 0x021D54E0
+
+ arm_func_start PM_PrependPreSleepCallback
+PM_PrependPreSleepCallback: ; 0x020D4B30
+ ldr ip, _020D4B40 ; =FUN_020D4C0C
+ mov r1, r0
+ ldr r0, _020D4B44 ; =0x021D54D8
+ bx r12
+ .balign 4
+_020D4B40: .word FUN_020D4C0C
+_020D4B44: .word 0x021D54D8
+
+ arm_func_start PMi_ExecuteList
+PMi_ExecuteList: ; 0x020D4B48
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020D4B58:
+ ldr r0, [r4, #0x4]
+ ldr r1, [r4, #0x0]
+ blx r1
+ ldr r4, [r4, #0x8]
+ cmp r4, #0x0
+ bne _020D4B58
+ ldmia sp!, {r4,lr}
+ bx lr
+_020D4B78:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x00, 0x30, 0x90, 0xE5, 0x03, 0x20, 0xA0, 0xE1, 0x00, 0x00, 0x53, 0xE3, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x01, 0x00, 0x53, 0xE1, 0x05, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x53, 0xE1, 0x08, 0x10, 0x93, 0x05
.byte 0x00, 0x10, 0x80, 0x05, 0x08, 0x00, 0x93, 0x15, 0x08, 0x00, 0x82, 0x15, 0x1E, 0xFF, 0x2F, 0xE1
.byte 0x03, 0x20, 0xA0, 0xE1, 0x08, 0x30, 0x93, 0xE5, 0x00, 0x00, 0x53, 0xE3, 0xF3, 0xFF, 0xFF, 0x1A
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x1E, 0xFF, 0x2F, 0x01, 0x00, 0x20, 0x90, 0xE5
- .byte 0x00, 0x00, 0x52, 0xE3, 0x00, 0x20, 0xA0, 0x03, 0x08, 0x20, 0x81, 0x05, 0x00, 0x10, 0x80, 0x05
- .byte 0x1E, 0xFF, 0x2F, 0x01, 0x08, 0x00, 0x92, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A
- .byte 0x00, 0x20, 0xA0, 0xE1, 0x08, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xFB, 0xFF, 0xFF, 0x1A
- .byte 0x08, 0x00, 0x81, 0xE5, 0x08, 0x10, 0x82, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0x50, 0xE3
- .byte 0x00, 0x20, 0x90, 0x15, 0x08, 0x20, 0x81, 0x15, 0x00, 0x10, 0x80, 0x15, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x8D, 0xE2
- .byte 0x09, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+
+ arm_func_start FUN_020D4BC4
+FUN_020D4BC4: ; 0x020D4BC4
+ cmp r0, #0x0
+ bxeq lr
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ moveq r2, #0x0
+ streq r2, [r1, #0x8]
+ streq r1, [r0, #0x0]
+ bxeq lr
+ ldr r0, [r2, #0x8]
+ cmp r0, #0x0
+ beq _020D4C00
+_020D4BF0:
+ mov r2, r0
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _020D4BF0
+_020D4C00:
+ str r0, [r1, #0x8]
+ str r1, [r2, #0x8]
+ bx lr
+
+ arm_func_start FUN_020D4C0C
+FUN_020D4C0C: ; 0x020D4C0C
+ cmp r0, #0x0
+ ldrne r2, [r0, #0x0]
+ strne r2, [r1, #0x8]
+ strne r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start PM_GetLEDPattern
+PM_GetLEDPattern: ; 0x020D4C20
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4C58 ; =0x020D587C
+ add r2, sp, #0x0
+ bl PM_GetLEDPatternAsync
+_020D4C34:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18
.byte 0x1E, 0xFF, 0x2F, 0x11, 0x0E, 0x03, 0x00, 0xEB, 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x58, 0x0D, 0x02, 0x70, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x60, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0x14, 0x03, 0x00, 0xEB
+ .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
+_020D4C58: .word 0x020D587C
+
+ arm_func_start PM_GetLEDPatternAsync
+PM_GetLEDPatternAsync:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl FUN_020D58C4
+_020D4C70:
.byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
.byte 0x1C, 0x10, 0x9F, 0xE5, 0x1C, 0x00, 0x9F, 0xE5, 0x04, 0x50, 0x81, 0xE5, 0x08, 0x40, 0x81, 0xE5
.byte 0x0C, 0x60, 0x81, 0xE5, 0x03, 0x01, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xE4, 0x54, 0x1D, 0x02, 0x00, 0x67, 0x00, 0x03, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x8D, 0xE2, 0x09, 0x00, 0x00, 0xEB
+ .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xE4, 0x54, 0x1D, 0x02, 0x00, 0x67, 0x00, 0x03
+
+ arm_func_start PMi_SendLEDPatternCommand
+PMi_SendLEDPatternCommand: ; 0x020D4CAC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020D4CE4 ; =0x020D587C
+ add r2, sp, #0x0
+ bl PMi_SendLEDPatternCommandAsync
+_020D4CC0:
.byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
.byte 0xEB, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x58, 0x0D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0xF1, 0x02, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020D4CE4: .word 0x020D587C
+
+ arm_func_start PMi_SendLEDPatternCommandAsync
+PMi_SendLEDPatternCommandAsync:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl FUN_020D58C4
+_020D4CFC:
+ .byte 0x00, 0x00, 0x50, 0xE3
.byte 0x01, 0x00, 0xA0, 0x03, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x20, 0x00, 0x9F, 0xE5
.byte 0x20, 0x10, 0x9F, 0xE5, 0xFF, 0x20, 0x06, 0xE2, 0x00, 0x00, 0x82, 0xE1, 0x04, 0x50, 0x81, 0xE5
.byte 0x08, 0x40, 0x81, 0xE5, 0xDF, 0x00, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x70, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x66, 0x00, 0x03, 0xE4, 0x54, 0x1D, 0x02, 0x10, 0x00, 0x9F, 0xE5
- .byte 0xB0, 0x00, 0xD0, 0xE1, 0x01, 0x00, 0x10, 0xE2, 0x01, 0x00, 0xA0, 0x13, 0x00, 0x00, 0xA0, 0x03
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x04, 0x03, 0x00, 0x04, 0x14, 0xC0, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3
- .byte 0x01, 0x00, 0x50, 0xE3, 0x00, 0x00, 0xA0, 0x13, 0x01, 0x20, 0xA0, 0xE1, 0x01, 0x30, 0xA0, 0xE3
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0x78, 0x4D, 0x0D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x00, 0x50, 0xE3, 0x1D, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x50, 0xE3, 0x2E, 0x00, 0x00, 0x1A
- .byte 0x00, 0x00, 0x52, 0xE3, 0x09, 0x00, 0x00, 0x1A, 0xBC, 0x20, 0x9F, 0xE5, 0xBC, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x20, 0x92, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x00, 0x00, 0x42, 0xE0, 0x07, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x92, 0x00, 0x00, 0xA0, 0x93, 0x00, 0x40, 0xBD, 0x98, 0x1E, 0xFF, 0x2F, 0x91
- .byte 0x00, 0x00, 0x51, 0xE3, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x53, 0xE3, 0x02, 0x00, 0x00, 0x0A
- .byte 0x01, 0x00, 0xA0, 0xE1, 0x57, 0x01, 0x00, 0xEB, 0x03, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE1
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x01, 0x20, 0xA0, 0xE1, 0x61, 0x01, 0x00, 0xEB, 0x70, 0x10, 0x9F, 0xE5
- .byte 0xB0, 0x00, 0xD1, 0xE1, 0x01, 0x00, 0x80, 0xE3, 0xB0, 0x00, 0xC1, 0xE1, 0x12, 0x00, 0x00, 0xEA
- .byte 0x5C, 0xE0, 0x9F, 0xE5, 0x50, 0x20, 0x9F, 0xE5, 0xB0, 0xC0, 0xDE, 0xE1, 0x4C, 0x00, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x51, 0xE3, 0x01, 0xC0, 0xCC, 0xE3, 0xB0, 0xC0, 0xCE, 0xE1, 0x00, 0x20, 0x92, 0xE5
- .byte 0x00, 0x20, 0x80, 0xE5, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x53, 0xE3, 0x02, 0x00, 0x00, 0x0A
- .byte 0x01, 0x00, 0xA0, 0xE1, 0x3F, 0x01, 0x00, 0xEB, 0x03, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE1
- .byte 0x00, 0x10, 0xA0, 0xE3, 0x01, 0x20, 0xA0, 0xE1, 0x49, 0x01, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x3C, 0xFC, 0x7F, 0x02
- .byte 0xDC, 0x54, 0x1D, 0x02, 0x04, 0x03, 0x00, 0x04, 0xF0, 0x4F, 0x2D, 0xE9, 0x1C, 0xD0, 0x4D, 0xE2
- .byte 0x0C, 0x32, 0x9F, 0xE5, 0x00, 0xA0, 0xA0, 0xE1, 0x00, 0x00, 0x93, 0xE5, 0x01, 0x90, 0xA0, 0xE1
- .byte 0x02, 0xB0, 0xA0, 0xE1, 0x00, 0x80, 0xA0, 0xE3, 0x2E, 0xFF, 0xFF, 0xEB, 0xF4, 0x11, 0x9F, 0xE5
- .byte 0x08, 0x00, 0xA0, 0xE1, 0xB0, 0x40, 0xD1, 0xE1, 0xB0, 0x00, 0xC1, 0xE1, 0x1B, 0xE1, 0xFF, 0xEB
+ .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x66, 0x00, 0x03, 0xE4, 0x54, 0x1D, 0x02
+
+ arm_func_start PM_GetLCDPower
+PM_GetLCDPower: ; 0x020D4D3C
+ ldr r0, _020D4D54 ; =0x04000304
+ ldrh r0, [r0, #0x0]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ .balign 4
+_020D4D54: .word 0x04000304
+
+ arm_func_start PM_SetLCDPower
+PM_SetLCDPower: ; 0x020D4D58
+ ldr ip, _020D4D74 ; =PMi_SetLCDPower
+ mov r1, #0x0
+ cmp r0, #0x1
+ movne r0, #0x0
+ mov r2, r1
+ mov r3, #0x1
+ bx r12
+ .balign 4
+_020D4D74: .word PMi_SetLCDPower
+
+ arm_func_start PMi_SetLCDPower
+PMi_SetLCDPower: ; 0x020D4D78
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ beq _020D4E00
+ cmp r0, #0x1
+ bne _020D4E4C
+ cmp r2, #0x0
+ bne _020D4DC0
+ ldr r2, _020D4E5C ; =0x027FFC3C
+ ldr r0, _020D4E60 ; =0x021D54DC
+ ldr r2, [r2, #0x0]
+ ldr r0, [r0, #0x0]
+ sub r0, r2, r0
+ cmp r0, #0x7
+ addls sp, sp, #0x4
+ movls r0, #0x0
+ ldmlsia sp!, {lr}
+ bxls lr
+_020D4DC0:
+ cmp r1, #0x0
+ beq _020D4DEC
+ cmp r3, #0x0
+ beq _020D4DDC
+ mov r0, r1
+ bl FUN_020D5338
+ b _020D4DEC
+_020D4DDC:
+ mov r0, r1
+ mov r1, #0x0
+ mov r2, r1
+ bl FUN_020D5374
+_020D4DEC:
+ ldr r1, _020D4E64 ; =0x04000304
+ ldrh r0, [r1, #0x0]
+ orr r0, r0, #0x1
+ strh r0, [r1, #0x0]
+ b _020D4E4C
+_020D4E00:
+ ldr lr, _020D4E64 ; =0x04000304
+ ldr r2, _020D4E5C ; =0x027FFC3C
+ ldrh r12, [lr, #0x0]
+ ldr r0, _020D4E60 ; =0x021D54DC
+ cmp r1, #0x0
+ bic r12, r12, #0x1
+ strh r12, [lr, #0x0]
+ ldr r2, [r2, #0x0]
+ str r2, [r0, #0x0]
+ beq _020D4E4C
+ cmp r3, #0x0
+ beq _020D4E3C
+ mov r0, r1
+ bl FUN_020D5338
+ b _020D4E4C
+_020D4E3C:
+ mov r0, r1
+ mov r1, #0x0
+ mov r2, r1
+ bl FUN_020D5374
+_020D4E4C:
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020D4E5C: .word 0x027FFC3C
+_020D4E60: .word 0x021D54DC
+_020D4E64: .word 0x04000304
+
+ arm_func_start PM_GoSleepMode
+PM_GoSleepMode: ; 0x020D4E68
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x1c
+ ldr r3, _020D5084 ; =0x021D54D8
+ mov r10, r0
+ ldr r0, [r3, #0x0]
+ mov r9, r1
+ mov r11, r2
+ mov r8, #0x0
+ bl PMi_ExecuteList
+ ldr r1, _020D5088 ; =0x04000208
+ mov r0, r8
+ ldrh r4, [r1, #0x0]
+ strh r0, [r1, #0x0]
+ bl OS_DisableInterrupts
+_020D4EA0:
.byte 0x00, 0x00, 0x8D, 0xE5, 0xE0, 0x01, 0x9F, 0xE5, 0xD9, 0xD3, 0xFF, 0xEB, 0x04, 0x00, 0x8D, 0xE5
.byte 0x01, 0x07, 0xA0, 0xE3, 0xF6, 0xD3, 0xFF, 0xEB, 0x00, 0x00, 0x9D, 0xE5, 0x18, 0xE1, 0xFF, 0xEB
.byte 0xC0, 0x21, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0xB0, 0x00, 0xD2, 0xE1, 0x08, 0x00, 0x1A, 0xE2
@@ -2915,11 +12119,26 @@ _020CD33C:
.byte 0xB3, 0xE0, 0xFF, 0xEB, 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x58, 0xE3, 0xB0, 0x00, 0xD1, 0xE1
.byte 0xB0, 0x40, 0xC1, 0xE1, 0x00, 0x00, 0x00, 0x0A, 0x44, 0x00, 0x00, 0xEB, 0x30, 0x00, 0x9F, 0xE5
.byte 0x00, 0x00, 0x90, 0xE5, 0xB3, 0xFE, 0xFF, 0xEB, 0x1C, 0xD0, 0x8D, 0xE2, 0xF0, 0x4F, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xD8, 0x54, 0x1D, 0x02, 0x08, 0x02, 0x00, 0x04, 0xFF, 0xFF, 0x3F, 0x00
+ .byte 0x1E, 0xFF, 0x2F, 0xE1
+_020D5084: .word 0x021D54D8
+_020D5088: .word 0x04000208
+_020D508C:
+ .byte 0xFF, 0xFF, 0x3F, 0x00
.byte 0x40, 0xFC, 0x7F, 0x02, 0x00, 0x10, 0x00, 0x04, 0x3C, 0xFC, 0x7F, 0x02, 0x00, 0x6A, 0x99, 0x00
- .byte 0x14, 0x02, 0x00, 0x04, 0xE0, 0x54, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xA0, 0xE1
- .byte 0x08, 0x50, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0x06, 0x10, 0xA0, 0xE1
- .byte 0x04, 0x20, 0xA0, 0xE1, 0x05, 0xEB, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A
+ .byte 0x14, 0x02, 0x00, 0x04, 0xE0, 0x54, 0x1D, 0x02
+
+ arm_func_start PMi_SendPxiData
+PMi_SendPxiData: ; 0x020D50A8
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, #0x8
+ mov r4, #0x0
+ mov r0, r5
+ mov r1, r6
+ mov r2, r4
+ bl PXI_SendWordByFifo
+_020D50C8:
+ .byte 0x00, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0x1A
.byte 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
arm_func_start PM_GetBackLight
@@ -2930,169 +12149,15 @@ PM_GetBackLight: ; 0x020D50D8
mov r5, r0
add r1, sp, #0x0
mov r0, #0x0
- bl _020D5498
+ bl FUN_020D5498
_020D50F4:
.byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18
.byte 0x1E, 0xFF, 0x2F, 0x11, 0x00, 0x00, 0x55, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0xB0, 0x10, 0xDD, 0xE1
.byte 0x08, 0x10, 0x11, 0xE2, 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03, 0x00, 0x10, 0x85, 0xE5
.byte 0x00, 0x00, 0x54, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
.byte 0xB0, 0x10, 0xDD, 0xE1, 0x04, 0x10, 0x11, 0xE2, 0x01, 0x10, 0xA0, 0x13, 0x00, 0x10, 0xA0, 0x03
- .byte 0x00, 0x10, 0x84, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x0C, 0xC0, 0x9F, 0xE5, 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x18, 0xA0, 0xE1, 0x03, 0x00, 0xA0, 0xE3
- .byte 0x1C, 0xFF, 0x2F, 0xE1, 0xDC, 0x53, 0x0D, 0x02, 0x0C, 0xC0, 0x9F, 0xE5, 0x00, 0x08, 0xA0, 0xE1
- .byte 0x20, 0x18, 0xA0, 0xE1, 0x02, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1, 0xDC, 0x53, 0x0D, 0x02
- .byte 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x8D, 0xE2
- .byte 0x09, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0xB6, 0x01, 0x00, 0xEB, 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x58, 0x0D, 0x02, 0xF0, 0x40, 0x2D, 0xE9
- .byte 0x0C, 0xD0, 0x4D, 0xE2, 0x00, 0x70, 0xA0, 0xE1, 0x98, 0x00, 0x9F, 0xE5, 0x01, 0x60, 0xA0, 0xE1
- .byte 0x6A, 0xE0, 0xFF, 0xEB, 0xD8, 0xFE, 0xFF, 0xEB, 0x01, 0x00, 0x50, 0xE3, 0x1A, 0x00, 0x00, 0x0A
- .byte 0x00, 0x00, 0x8D, 0xE2, 0x04, 0x10, 0x8D, 0xE2, 0xBA, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x9D, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE1
- .byte 0x19, 0x00, 0x00, 0xEB, 0x04, 0x00, 0x9D, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0x02, 0x00, 0x00, 0x0A
- .byte 0x01, 0x00, 0xA0, 0xE3, 0x00, 0x10, 0xA0, 0xE3, 0x13, 0x00, 0x00, 0xEB, 0x01, 0x00, 0xA0, 0xE3
- .byte 0xCC, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x07, 0x00, 0x00, 0x1A, 0x34, 0x50, 0x9F, 0xE5
- .byte 0x01, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0x50, 0xE0, 0xFF, 0xEB, 0x04, 0x00, 0xA0, 0xE1
- .byte 0xC4, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xF9, 0xFF, 0xFF, 0x0A, 0x07, 0x10, 0xA0, 0xE1
- .byte 0x06, 0x20, 0xA0, 0xE1, 0x0E, 0x00, 0xA0, 0xE3, 0xBB, 0x00, 0x00, 0xEB, 0x0C, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x6A, 0x99, 0x00, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x20, 0x9F, 0xE5, 0x00, 0x30, 0x8D, 0xE2, 0x09, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x7B, 0x01, 0x00, 0xEB, 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x58, 0x0D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x00, 0x50, 0xE3, 0x00, 0xC0, 0xA0, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x51, 0xE3
- .byte 0x06, 0xC0, 0xA0, 0x03, 0x00, 0x00, 0x51, 0xE3, 0x07, 0xC0, 0xA0, 0x03, 0x0C, 0x00, 0x00, 0xEA
- .byte 0x01, 0x00, 0x50, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x51, 0xE3, 0x04, 0xC0, 0xA0, 0x03
- .byte 0x00, 0x00, 0x51, 0xE3, 0x05, 0xC0, 0xA0, 0x03, 0x05, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x50, 0xE3
- .byte 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x51, 0xE3, 0x08, 0xC0, 0xA0, 0x03, 0x00, 0x00, 0x51, 0xE3
- .byte 0x09, 0xC0, 0xA0, 0x03, 0x00, 0x00, 0x5C, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x20, 0x00, 0x9F, 0x05
- .byte 0x00, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x02, 0x10, 0xA0, 0xE1, 0x0C, 0x00, 0xA0, 0xE1
- .byte 0x03, 0x20, 0xA0, 0xE1, 0x88, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x28, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0x8D, 0xE2, 0x09, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0x48, 0x01, 0x00, 0xEB
- .byte 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x7C, 0x58, 0x0D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x01, 0x00, 0x50, 0xE3
- .byte 0x04, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x50, 0xE3, 0x06, 0x00, 0x00, 0x0A, 0x03, 0x00, 0x50, 0xE3
- .byte 0x02, 0x00, 0x00, 0x0A, 0x05, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3, 0x04, 0x00, 0x00, 0xEA
- .byte 0x02, 0x00, 0xA0, 0xE3, 0x02, 0x00, 0x00, 0xEA, 0x03, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x00, 0xEA
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x14, 0x00, 0x9F, 0x05
- .byte 0x00, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x5F, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x40, 0x2D, 0xE9
- .byte 0x04, 0xD0, 0x4D, 0xE2, 0x28, 0x20, 0x9F, 0xE5, 0x00, 0x30, 0x8D, 0xE2, 0x09, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11
- .byte 0x1F, 0x01, 0x00, 0xEB, 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x7C, 0x58, 0x0D, 0x02, 0xF0, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x40, 0xA0, 0xE1, 0x02, 0x60, 0xA0, 0xE1, 0x03, 0x50, 0xA0, 0xE1
- .byte 0x23, 0x01, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x01, 0x00, 0xA0, 0x03
- .byte 0xF0, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x38, 0x00, 0x9F, 0xE5, 0x38, 0x10, 0x9F, 0xE5
- .byte 0xFF, 0x20, 0x07, 0xE2, 0x00, 0x00, 0x82, 0xE1, 0x04, 0x60, 0x81, 0xE5, 0x08, 0x50, 0x81, 0xE5
- .byte 0x10, 0xFF, 0xFF, 0xEB, 0x24, 0x00, 0x9F, 0xE5, 0x24, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x04, 0xE0
- .byte 0x01, 0x00, 0x80, 0xE1, 0x0B, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0xF0, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x64, 0x00, 0x02, 0xE4, 0x54, 0x1D, 0x02
- .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01
-_020D5498:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, _020D54D0 ; =0x020D587C
- add r3, sp, #0x0
- bl _020D54D4
-_020D54AC:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x04, 0xD0, 0x8D, 0x12, 0x00, 0x40, 0xBD, 0x18, 0x1E, 0xFF, 0x2F, 0x11, 0xF0, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x9D, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
-_020D54D0: .word 0x020D587C
-_020D54D4:
- stmdb sp!, {r4-r8,lr}
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl _020D58C4
-_020D54EC:
- .byte 0x00, 0x00, 0x50, 0xE3
- .byte 0x01, 0x00, 0xA0, 0x03, 0xF0, 0x41, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x38, 0xC0, 0x9F, 0xE5
- .byte 0x38, 0x10, 0x9F, 0xE5, 0x38, 0x00, 0x9F, 0xE5, 0xFF, 0x20, 0x07, 0xE2, 0x87, 0xE1, 0xA0, 0xE1
- .byte 0x00, 0x80, 0xA0, 0xE3, 0x2C, 0x30, 0x9F, 0xE5, 0xBE, 0x80, 0x8C, 0xE1, 0x00, 0x00, 0x82, 0xE1
- .byte 0x04, 0x50, 0x81, 0xE5, 0x08, 0x40, 0x81, 0xE5, 0x87, 0x61, 0x83, 0xE7, 0xDD, 0xFE, 0xFF, 0xEB
- .byte 0x08, 0x00, 0xA0, 0xE1, 0xF0, 0x41, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x0C, 0x55, 0x1D, 0x02
- .byte 0xE4, 0x54, 0x1D, 0x02, 0x00, 0x65, 0x00, 0x03, 0x10, 0x55, 0x1D, 0x02, 0x70, 0x40, 0x2D, 0xE9
- .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1, 0x02, 0x50, 0xA0, 0xE1, 0xD8, 0x00, 0x00, 0xEB
- .byte 0x00, 0x00, 0x50, 0xE3, 0x01, 0x00, 0xA0, 0x03, 0x70, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01
- .byte 0x24, 0x28, 0xA0, 0xE1, 0x34, 0x10, 0x9F, 0xE5, 0x34, 0x00, 0x9F, 0xE5, 0xFF, 0x20, 0x02, 0xE2
- .byte 0x00, 0x00, 0x82, 0xE1, 0x04, 0x60, 0x81, 0xE5, 0x08, 0x50, 0x81, 0xE5, 0xC5, 0xFE, 0xFF, 0xEB
- .byte 0x20, 0x00, 0x9F, 0xE5, 0x20, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x04, 0xE0, 0x01, 0x00, 0x80, 0xE1
- .byte 0xC0, 0xFE, 0xFF, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x70, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xE4, 0x54, 0x1D, 0x02, 0x00, 0x63, 0x00, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01
- .byte 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x50, 0xA0, 0xE1, 0x01, 0x40, 0xA0, 0xE1
- .byte 0xBB, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x02, 0x01, 0x00, 0xA0, 0x03
- .byte 0x30, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x70, 0x10, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
- .byte 0x6C, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0x81, 0xE5, 0xAA, 0xFE, 0xFF, 0xEB, 0x5C, 0x10, 0x9F, 0xE5
- .byte 0x00, 0x00, 0x91, 0xE5, 0x00, 0x00, 0x50, 0xE3, 0xFC, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x50, 0xC0, 0x9F, 0xE5, 0x00, 0x00, 0x81, 0xE5, 0x00, 0x20, 0xA0, 0xE1, 0x00, 0x30, 0xA0, 0xE1
- .byte 0x02, 0x10, 0xA0, 0xE3, 0x00, 0x00, 0x8C, 0xE5, 0xD2, 0xFD, 0xFF, 0xEB, 0x38, 0x00, 0x9F, 0xE5
- .byte 0xFF, 0x10, 0x05, 0xE2, 0x00, 0x00, 0x81, 0xE1, 0x9A, 0xFE, 0xFF, 0xEB, 0x2C, 0x00, 0x9F, 0xE5
- .byte 0x2C, 0x10, 0x9F, 0xE5, 0x00, 0x00, 0x04, 0xE0, 0x01, 0x00, 0x80, 0xE1, 0x95, 0xFE, 0xFF, 0xEB
- .byte 0x00, 0x00, 0xA0, 0xE3, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xD0, 0x54, 0x1D, 0x02, 0x00, 0x60, 0x00, 0x03, 0xD4, 0x54, 0x1D, 0x02, 0x00, 0x61, 0x00, 0x02
- .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x00, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x00, 0x0A, 0x02, 0x00, 0xA0, 0xE3, 0x65, 0x00, 0x00, 0xEB
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x7F, 0x0C, 0x01, 0xE2
- .byte 0x00, 0x04, 0xA0, 0xE1, 0xFF, 0x10, 0x01, 0xE2, 0x20, 0x28, 0xA0, 0xE1, 0x01, 0x08, 0xA0, 0xE1
- .byte 0x70, 0x00, 0x52, 0xE3, 0x20, 0x08, 0xA0, 0xE1, 0x0F, 0x00, 0x00, 0x3A, 0x74, 0x00, 0x52, 0xE3
- .byte 0x0D, 0x00, 0x00, 0x8A, 0x84, 0x10, 0x9F, 0xE5, 0x70, 0x20, 0x42, 0xE2, 0xFF, 0x00, 0x00, 0xE2
- .byte 0x82, 0x11, 0x91, 0xE7, 0x00, 0x08, 0xA0, 0xE1, 0x20, 0x08, 0xA0, 0xE1, 0x00, 0x00, 0x51, 0xE3
- .byte 0xB0, 0x00, 0xC1, 0x11, 0x82, 0x11, 0xA0, 0xE1, 0x64, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE3
- .byte 0xB1, 0x20, 0x80, 0xE1, 0x00, 0x00, 0xA0, 0xE3, 0x10, 0x00, 0x00, 0xEA, 0x60, 0x00, 0x52, 0xE3
- .byte 0x50, 0x10, 0x9F, 0x05, 0x01, 0x20, 0xA0, 0x03, 0x00, 0x20, 0x81, 0x05, 0x0B, 0x00, 0x00, 0x0A
- .byte 0x62, 0x00, 0x52, 0xE3, 0x40, 0x10, 0x9F, 0x05, 0x01, 0x20, 0xA0, 0x03, 0x00, 0x20, 0x81, 0x05
- .byte 0x06, 0x00, 0x00, 0x0A, 0x67, 0x00, 0x52, 0xE3, 0x04, 0x00, 0x00, 0x1A, 0x2C, 0x10, 0x9F, 0xE5
- .byte 0x0C, 0x10, 0x91, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x00, 0x00, 0x81, 0x15, 0x00, 0x00, 0xA0, 0xE3
- .byte 0x38, 0x00, 0x00, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0x10, 0x55, 0x1D, 0x02, 0x0C, 0x55, 0x1D, 0x02, 0xD0, 0x54, 0x1D, 0x02, 0xD4, 0x54, 0x1D, 0x02
- .byte 0xE4, 0x54, 0x1D, 0x02, 0x30, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x98, 0x10, 0x9F, 0xE5
- .byte 0xB0, 0x00, 0xD1, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x04, 0xD0, 0x8D, 0x12, 0x30, 0x40, 0xBD, 0x18
- .byte 0x1E, 0xFF, 0x2F, 0x11, 0x84, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x01, 0x30, 0xA0, 0xE3
- .byte 0xB0, 0x30, 0xC1, 0xE1, 0x00, 0x20, 0x80, 0xE5, 0x04, 0x20, 0x80, 0xE5, 0x03, 0xE9, 0xFF, 0xEB
- .byte 0x08, 0x50, 0xA0, 0xE3, 0x01, 0x40, 0xA0, 0xE3, 0x05, 0x00, 0xA0, 0xE1, 0x04, 0x10, 0xA0, 0xE1
- .byte 0x77, 0xE9, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3, 0xFA, 0xFF, 0xFF, 0x0A, 0x50, 0x10, 0x9F, 0xE5
- .byte 0x08, 0x00, 0xA0, 0xE3, 0x7C, 0xE9, 0xFF, 0xEB, 0x00, 0x30, 0xA0, 0xE3, 0x44, 0x00, 0x9F, 0xE5
- .byte 0x03, 0x20, 0xA0, 0xE1, 0x83, 0x11, 0xA0, 0xE1, 0x01, 0x30, 0x83, 0xE2, 0xB1, 0x20, 0x80, 0xE1
- .byte 0x05, 0x00, 0x53, 0xE3, 0xFA, 0xFF, 0xFF, 0xBA, 0x2C, 0x00, 0x9F, 0xE5, 0x2A, 0xDA, 0xFF, 0xEB
- .byte 0x28, 0x10, 0x9F, 0xE5, 0x28, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0x91, 0xE5, 0x00, 0x10, 0x80, 0xE5
- .byte 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xCC, 0x54, 0x1D, 0x02
- .byte 0xE4, 0x54, 0x1D, 0x02, 0x78, 0x56, 0x0D, 0x02, 0x0C, 0x55, 0x1D, 0x02, 0xF4, 0x54, 0x1D, 0x02
- .byte 0x3C, 0xFC, 0x7F, 0x02, 0xDC, 0x54, 0x1D, 0x02, 0x00, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2
- .byte 0x40, 0x20, 0x9F, 0xE5, 0x00, 0x10, 0x92, 0xE5, 0x04, 0xC0, 0x92, 0xE5, 0x00, 0x00, 0x51, 0xE3
- .byte 0x00, 0x30, 0xA0, 0x13, 0x00, 0x30, 0x82, 0x15, 0x00, 0x00, 0x5C, 0xE3, 0x04, 0xD0, 0x8D, 0x02
- .byte 0x08, 0x10, 0x92, 0xE5, 0x00, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0x14, 0x20, 0x9F, 0xE5
- .byte 0x00, 0x30, 0xA0, 0xE3, 0x04, 0x30, 0x82, 0xE5, 0x3C, 0xFF, 0x2F, 0xE1, 0x04, 0xD0, 0x8D, 0xE2
- .byte 0x00, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0xE4, 0x54, 0x1D, 0x02, 0x00, 0x00, 0x81, 0xE5
- .byte 0x1E, 0xFF, 0x2F, 0xE1, 0x10, 0x40, 0x2D, 0xE9, 0x30, 0x40, 0x9F, 0xE5, 0x00, 0x00, 0x94, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0x10, 0x40, 0xBD, 0x08, 0x1E, 0xFF, 0x2F, 0x01, 0xB1, 0xDE, 0xFF, 0xEB
- .byte 0x80, 0x00, 0x50, 0xE3, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0xE8, 0xFF, 0xEB, 0x00, 0x00, 0x94, 0xE5
- .byte 0x00, 0x00, 0x50, 0xE3, 0xF8, 0xFF, 0xFF, 0x1A, 0x10, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
- .byte 0xE4, 0x54, 0x1D, 0x02
-_020D58C4:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl FUN_020CD310
- ldr r1, _020D5910 ; =0x021D54E4
- ldr r2, [r1, #0x0]
- cmp r2, #0x0
- beq _020D58F4
- bl FUN_020CD324
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {lr}
+ .byte 0x00, 0x10, 0x84, 0xE5, 0x04, 0xD0, 0x8D, 0xE2, 0x30, 0x40, 0xBD, 0xE8
+_020D5150:
bx lr
-_020D58F4:
- mov r2, #0x1
- str r2, [r1, #0x0]
- bl FUN_020CD324
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D5910: .word 0x021D54E4
+
+; end before _020D5910: .word 0x021D54E4
diff --git a/asm/rom2.s b/asm/rom2.s
index 95a5107f..c0ec08f4 100644
--- a/asm/rom2.s
+++ b/asm/rom2.s
@@ -2,7 +2,8 @@
.section .text
-.incbin "baserom.nds", 0xD9914, 0x16CB8
+.incbin "baserom.nds", 0xD9150, 0x1747C
+
.global FUN_020EC5CC
FUN_020EC5CC:
diff --git a/asm/secure.s b/asm/secure.s
index 7f3a678c..f889a118 100644
--- a/asm/secure.s
+++ b/asm/secure.s
@@ -2,4 +2,12 @@
.section .text
-.incbin "baserom.nds", 0x4000, 0x800
+.incbin "baserom.nds", 0x4000, 0x5F2
+
+ .global FUN_020005F2
+ .thumb
+FUN_020005F2:
+ swi 3
+ bx lr
+
+.incbin "baserom.nds", 0x45F6, 0x20A
diff --git a/undefined_syms.txt b/undefined_syms.txt
index d2a0c6e8..329641bd 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -902,6 +902,21 @@ FUN_0224F12C = 0x0224F12C;
FUN_02252534 = 0x02252534;
FUN_02252538 = 0x02252538;
FUN_022567E0 = 0x022567E0;
+FUN_01FF84E4 = 0x01FF84E4;
+FUN_01FF857C = 0x01FF857C;
+FUN_01FF85F0 = 0x01FF85F0;
+FUN_020005F2 = 0x020005F2;
+FUN_02000950 = 0x02000950;
+FUN_020CD380 = 0x020CD380;
+FUN_020D5338 = 0x020D5338;
+FUN_020D5374 = 0x020D5374;
+FUN_020D5498 = 0x020D5498;
+FUN_020D5764 = 0x020D5764;
+FUN_020D58C4 = 0x020D58C4;
+FUN_020D66C0 = 0x020D66C0;
+FUN_020D66E0 = 0x020D66E0;
+FUN_020D72AC = 0x020D72AC;
+FUN_020DBC80 = 0x020DBC80;
CONST_3F = 0x0000003F;
CONST_34 = 0x00000034;
gBacklightTop = 0x2106FA0;