diff options
Diffstat (limited to 'asm/rom_24C.s')
-rwxr-xr-x | asm/rom_24C.s | 4503 |
1 files changed, 4503 insertions, 0 deletions
diff --git a/asm/rom_24C.s b/asm/rom_24C.s new file mode 100755 index 0000000..9c0fc14 --- /dev/null +++ b/asm/rom_24C.s @@ -0,0 +1,4503 @@ + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_24C +sub_24C: @ 0x0800024C + push {r4, r5, r6, lr} + ldr r3, _080002A4 @ =0x04000050 + movs r0, #0 + strh r0, [r3] + ldr r4, _080002A8 @ =0x04000054 + movs r0, #0x10 + strh r0, [r4] + movs r2, #0x80 + lsls r2, r2, #0x13 + ldrh r1, [r2] + movs r0, #0xf8 + lsls r0, r0, #5 + ands r0, r1 + lsrs r0, r0, #8 + movs r1, #0xa0 + orrs r0, r1 + strh r0, [r3] + ldrh r1, [r2] + ldr r0, _080002AC @ =0x0000FF7F + ands r0, r1 + strh r0, [r2] + ldr r1, _080002B0 @ =0x0200B0C0 + ldrh r0, [r2] + strh r0, [r1, #0x16] + movs r5, #0 + adds r6, r4, #0 + movs r4, #0xf +_08000282: + lsrs r0, r5, #1 + subs r0, r4, r0 + strh r0, [r6] + bl sub_D74 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x1f + bls _08000282 + ldr r1, _080002A4 @ =0x04000050 + movs r0, #0 + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080002A4: .4byte 0x04000050 +_080002A8: .4byte 0x04000054 +_080002AC: .4byte 0x0000FF7F +_080002B0: .4byte 0x0200B0C0 + + thumb_func_start sub_2B4 +sub_2B4: @ 0x080002B4 + push {r4, r5, lr} + sub sp, #4 + ldr r3, _08000344 @ =0x04000050 + movs r0, #0 + strh r0, [r3] + ldr r2, _08000348 @ =0x04000054 + strh r0, [r2] + movs r0, #0x80 + lsls r0, r0, #0x13 + ldrh r1, [r0] + movs r0, #0xf8 + lsls r0, r0, #5 + ands r0, r1 + lsrs r0, r0, #8 + movs r1, #0xa0 + orrs r0, r1 + strh r0, [r3] + movs r4, #0 + adds r5, r2, #0 +_080002DA: + adds r4, #1 + strh r4, [r5] + bl sub_D74 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #0xf + bls _080002DA + ldr r1, _0800034C @ =0x0200B0C0 + ldrh r0, [r1, #0x16] + movs r3, #0x80 + movs r2, #0 + orrs r0, r3 + strh r0, [r1, #0x16] + movs r1, #0x80 + lsls r1, r1, #0x13 + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + mov r0, sp + strh r2, [r0] + adds r1, #0xd4 + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08000350 @ =0x8100C000 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, _08000354 @ =0x04000010 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #0x32 + strh r2, [r0] + adds r0, #4 + strh r2, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08000344: .4byte 0x04000050 +_08000348: .4byte 0x04000054 +_0800034C: .4byte 0x0200B0C0 +_08000350: .4byte 0x8100C000 +_08000354: .4byte 0x04000010 + + thumb_func_start sub_358 +sub_358: @ 0x08000358 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + str r0, [sp] + str r2, [sp, #8] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #4] + ldr r4, _08000424 @ =0x03005000 + movs r7, #0 + ldr r2, _08000428 @ =0x040000D4 + ldr r0, _0800042C @ =0x08057C46 + str r0, [r2] + str r4, [r2, #4] + ldr r0, _08000430 @ =0x80000200 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0 + ldr r0, [sp, #4] + cmp r7, r0 + bhs _0800040E + mov ip, r2 +_0800038A: + movs r0, #0xb8 + muls r0, r1, r0 + ldr r2, [sp, #8] + adds r6, r2, r0 + ldrh r0, [r6] + adds r2, r1, #1 + str r2, [sp, #0xc] + cmp r0, #0 + beq _08000402 + lsls r0, r1, #2 + ldr r1, [sp] + adds r0, r0, r1 + ldr r0, [r0] + ldrh r5, [r0] + adds r0, #2 + mov r2, ip + str r0, [r2] + lsls r0, r7, #3 + ldr r1, _08000424 @ =0x03005000 + adds r0, r0, r1 + str r0, [r2, #4] + lsls r0, r5, #2 + movs r1, #0x80 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r3, #0 + cmp r3, r5 + bhs _08000402 + ldr r2, _08000424 @ =0x03005000 + mov sb, r2 + ldr r0, _08000434 @ =0x000001FF + mov sl, r0 + movs r1, #0xff + mov r8, r1 +_080003D2: + adds r2, r7, #0 + lsls r0, r2, #3 + mov r1, sb + adds r4, r0, r1 + lsls r1, r3, #3 + adds r1, #8 + adds r1, r6, r1 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + strh r2, [r1] + ldrh r2, [r4, #2] + mov r0, sl + ands r0, r2 + strh r0, [r1, #2] + ldrh r2, [r4] + mov r0, r8 + ands r0, r2 + strh r0, [r1, #4] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r5 + blo _080003D2 +_08000402: + ldr r2, [sp, #0xc] + lsls r0, r2, #0x10 + lsrs r1, r0, #0x10 + ldr r0, [sp, #4] + cmp r1, r0 + blo _0800038A +_0800040E: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08000424: .4byte 0x03005000 +_08000428: .4byte 0x040000D4 +_0800042C: .4byte 0x08057C46 +_08000430: .4byte 0x80000200 +_08000434: .4byte 0x000001FF + + thumb_func_start sub_438 +sub_438: @ 0x08000438 + push {r4, r5, r6, lr} + ldr r4, _0800048C @ =0x0200B0C0 + ldrh r0, [r4, #0x16] + movs r2, #0x80 + movs r6, #0 + movs r5, #0 + orrs r0, r2 + strh r0, [r4, #0x16] + movs r1, #0x80 + lsls r1, r1, #0x13 + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + bl sub_490 + bl sub_518 + bl sub_578 + strb r6, [r4, #0xf] + strb r6, [r4, #0x10] + str r5, [r4, #0x50] + strb r6, [r4, #0x11] + strh r5, [r4, #0x12] + strh r5, [r4, #0x14] + movs r0, #0x90 + strh r0, [r4, #0x26] + strh r5, [r4, #0x28] + strh r5, [r4, #0x2a] + adds r0, r4, #0 + adds r0, #0x36 + strb r6, [r0] + ldrh r0, [r4, #0x38] + strh r5, [r4, #0x38] + ldrh r0, [r4, #0x3a] + strh r5, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + strh r5, [r4, #0x3c] + strh r5, [r4, #0x2c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800048C: .4byte 0x0200B0C0 + + thumb_func_start sub_490 +sub_490: @ 0x08000490 + sub sp, #8 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _08000504 @ =0x040000D4 + mov r0, sp + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08000508 @ =0x8100C000 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0 + str r2, [sp, #4] + add r0, sp, #4 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _0800050C @ =0x85000100 + str r0, [r1, #8] + ldr r0, [r1, #8] + mov r0, sp + strh r2, [r0] + str r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08000510 @ =0x81000200 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, _08000514 @ =0x04000010 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #0x32 + strh r2, [r0] + adds r0, #4 + strh r2, [r0] + subs r0, #0x50 + strh r2, [r0] + adds r0, #0x4e + strh r2, [r0] + add sp, #8 + bx lr + .align 2, 0 +_08000504: .4byte 0x040000D4 +_08000508: .4byte 0x8100C000 +_0800050C: .4byte 0x85000100 +_08000510: .4byte 0x81000200 +_08000514: .4byte 0x04000010 + + thumb_func_start sub_518 +sub_518: @ 0x08000518 + push {r4, r5, r6, lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _08000564 @ =0x040000D4 + mov r0, sp + str r0, [r1] + ldr r0, _08000568 @ =0x03005C00 + str r0, [r1, #4] + ldr r0, _0800056C @ =0x81000600 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r1, #0 + ldr r6, _08000570 @ =0x0200B0C0 + movs r5, #0xba + lsls r5, r5, #2 + movs r3, #0 + ldr r4, _08000574 @ =0x000002EA +_0800053E: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r6 + adds r2, r1, r5 + strh r3, [r2] + adds r1, r1, r4 + strh r3, [r1] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0800053E + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08000564: .4byte 0x040000D4 +_08000568: .4byte 0x03005C00 +_0800056C: .4byte 0x81000600 +_08000570: .4byte 0x0200B0C0 +_08000574: .4byte 0x000002EA + + thumb_func_start sub_578 +sub_578: @ 0x08000578 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r5, #0 + ldr r6, _08000660 @ =0x0200B0C0 + movs r0, #0xb8 + mov sb, r0 + movs r4, #0 + movs r1, #0xc0 + lsls r1, r1, #2 + mov r8, r1 + ldr r3, _08000664 @ =0x00000302 + mov ip, r3 + movs r7, #0xc1 + lsls r7, r7, #2 + mov sl, r7 +_0800059C: + mov r2, sb + muls r2, r5, r2 + adds r1, r2, r6 + movs r3, #0xbe + lsls r3, r3, #2 + adds r0, r1, r3 + strh r4, [r0] + ldr r7, _08000668 @ =0x000002FA + adds r0, r1, r7 + strh r4, [r0] + movs r0, #0xbf + lsls r0, r0, #2 + adds r1, r1, r0 + strh r4, [r1] + movs r3, #0 +_080005BA: + lsls r0, r3, #3 + adds r0, r0, r2 + adds r0, r0, r6 + mov r7, r8 + adds r1, r0, r7 + strh r4, [r1] + mov r7, ip + adds r1, r0, r7 + strh r4, [r1] + add r0, sl + strh r4, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x15 + bls _080005BA + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x63 + bls _0800059C + movs r5, #0 + mov sl, r5 + movs r0, #0xd + rsbs r0, r0, #0 + mov ip, r0 + movs r1, #0x11 + rsbs r1, r1, #0 + mov sb, r1 + movs r3, #0x21 + rsbs r3, r3, #0 + mov r8, r3 + movs r4, #0x3f + ldr r6, _0800066C @ =0xFFFFFE00 + adds r3, #0x12 +_08000600: + lsls r2, r5, #3 + ldr r7, _08000670 @ =0x03005000 + adds r2, r2, r7 + movs r0, #0xf4 + strb r0, [r2] + movs r0, #0 + strb r0, [r2, #1] + ldrh r1, [r2, #2] + adds r0, r6, #0 + ands r0, r1 + movs r7, #0xfa + lsls r7, r7, #1 + adds r1, r7, #0 + orrs r0, r1 + strh r0, [r2, #2] + ldrb r1, [r2, #3] + adds r0, r3, #0 + ands r0, r1 + mov r1, sb + ands r0, r1 + mov r7, r8 + ands r0, r7 + ands r0, r4 + strb r0, [r2, #3] + ldrh r1, [r2, #4] + ldr r0, _08000674 @ =0xFFFFFC00 + ands r0, r1 + strh r0, [r2, #4] + ldrb r1, [r2, #5] + mov r0, ip + ands r0, r1 + movs r1, #0xf + ands r0, r1 + strb r0, [r2, #5] + mov r0, sl + strh r0, [r2, #6] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x7f + bls _08000600 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08000660: .4byte 0x0200B0C0 +_08000664: .4byte 0x00000302 +_08000668: .4byte 0x000002FA +_0800066C: .4byte 0xFFFFFE00 +_08000670: .4byte 0x03005000 +_08000674: .4byte 0xFFFFFC00 + + thumb_func_start sub_678 +sub_678: @ 0x08000678 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_55A24 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0xb + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r4, r4, r5 + lsls r4, r4, #1 + ldr r0, _080006C4 @ =0x03005C00 + adds r4, r4, r0 +_080006A2: + ldrb r0, [r6] + subs r0, #0x20 + strh r0, [r4] + adds r6, #1 + adds r4, #2 + adds r1, r2, #0 + lsls r0, r1, #0x10 + ldr r2, _080006C8 @ =0xFFFF0000 + adds r0, r0, r2 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _080006A2 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080006C4: .4byte 0x03005C00 +_080006C8: .4byte 0xFFFF0000 + + thumb_func_start sub_6CC +sub_6CC: @ 0x080006CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + cmp r6, #0 + bge _080006E8 + movs r0, #0x2d + strb r0, [r5] + adds r5, #1 + rsbs r6, r6, #0 +_080006E8: + lsls r7, r3, #0x10 + movs r0, #0x30 + mov r8, r0 +_080006EE: + cmp r4, #1 + ble _08000708 + subs r4, #1 + movs r0, #0xa + adds r1, r4, #0 + bl sub_780 + cmp r6, r0 + bge _08000708 + mov r0, r8 + strb r0, [r5] + adds r5, #1 + b _080006EE +_08000708: + asrs r4, r7, #0x10 + cmp r4, #0 + beq _0800071A + adds r0, r6, #0 + adds r1, r5, #0 + movs r2, #0xa + bl sub_734 + b _08000726 +_0800071A: + adds r0, r6, #0 + adds r1, r5, #0 + movs r2, #0xa + bl sub_734 + strb r4, [r0] +_08000726: + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + + thumb_func_start sub_734 +sub_734: @ 0x08000734 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + adds r1, r6, #0 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r8, r5 + adds r0, r4, #0 + adds r1, r6, #0 + bl __udivsi3 + cmp r0, #0 + beq _08000762 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_734 + adds r7, r0, #0 +_08000762: + cmp r5, #9 + bhi _0800076C + adds r0, r5, #0 + adds r0, #0x30 + b _08000770 +_0800076C: + mov r0, r8 + adds r0, #0x57 +_08000770: + strb r0, [r7] + adds r0, r7, #1 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + + thumb_func_start sub_780 +sub_780: @ 0x08000780 + push {r4, r5, lr} + adds r3, r0, #0 + adds r2, r1, #0 + cmp r1, #0 + bge _0800078C + rsbs r2, r1, #0 +_0800078C: + movs r4, #1 + cmp r2, #0 + beq _080007AA + movs r5, #1 +_08000794: + adds r0, r2, #0 + ands r0, r5 + cmp r0, #0 + beq _0800079E + muls r4, r3, r4 +_0800079E: + adds r0, r3, #0 + muls r0, r3, r0 + adds r3, r0, #0 + asrs r2, r2, #1 + cmp r2, #0 + bne _08000794 +_080007AA: + cmp r1, #0 + bge _080007B8 + movs r0, #1 + adds r1, r4, #0 + bl __divsi3 + b _080007BA +_080007B8: + adds r0, r4, #0 +_080007BA: + pop {r4, r5} + pop {r1} + bx r1 + + thumb_func_start sub_7C0 +sub_7C0: @ 0x080007C0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + movs r0, #0x80 + lsls r0, r0, #9 + mov r8, r0 + adds r1, r3, #0 + bl __divsi3 + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r0, r8 + adds r1, r4, #0 + bl __divsi3 + mov r1, sp + strh r6, [r1] + mov r4, sp + adds r4, #2 + movs r1, #0 + strh r1, [r4] + add r6, sp, #4 + strh r1, [r6] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + adds r1, #6 + strh r0, [r1] + ldr r3, _0800084C @ =0x03005000 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r1, r5, #5 + adds r1, r1, r3 + mov r2, sp + ldrh r2, [r2] + strh r2, [r1, #6] + lsls r5, r5, #2 + adds r1, r5, #1 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrh r2, [r4] + strh r2, [r1, #6] + adds r1, r5, #2 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrh r2, [r6] + strh r2, [r1, #6] + adds r5, #3 + lsls r5, r5, #3 + adds r5, r5, r3 + strh r0, [r5, #6] + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800084C: .4byte 0x03005000 + + thumb_func_start sub_850 +sub_850: @ 0x08000850 + ldr r0, _08000888 @ =0x04000208 + ldrh r1, [r0] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08000894 + ldr r0, _0800088C @ =0x04000004 + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08000894 + ldr r0, _08000890 @ =0x04000200 + ldrh r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08000894 + movs r0, #0x80 + lsls r0, r0, #0x13 + ldrh r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08000894 + movs r0, #1 + b _08000896 + .align 2, 0 +_08000888: .4byte 0x04000208 +_0800088C: .4byte 0x04000004 +_08000890: .4byte 0x04000200 +_08000894: + movs r0, #0 +_08000896: + bx lr + + thumb_func_start sub_898 +sub_898: @ 0x08000898 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080008B4 @ =0x02017BD4 + str r4, [r0] + bl sub_850 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080008AE + ldr r0, _080008B8 @ =0x0200FB9C + str r4, [r0] +_080008AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080008B4: .4byte 0x02017BD4 +_080008B8: .4byte 0x0200FB9C + + thumb_func_start sub_8BC +sub_8BC: @ 0x080008BC + ldr r0, _080008C8 @ =0x0200FB9C + ldr r1, _080008CC @ =sub_DC4 + 1 + str r1, [r0] + ldr r0, _080008D0 @ =0x02017BD4 + str r1, [r0] + bx lr + .align 2, 0 +_080008C8: .4byte 0x0200FB9C +_080008CC: .4byte sub_DC4 + 1 +_080008D0: .4byte 0x02017BD4 + + thumb_func_start sub_8D4 +sub_8D4: @ 0x080008D4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080008F4 @ =0x02017BD0 + str r4, [r0] + bl sub_850 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080008EC + ldr r0, _080008F8 @ =0x0200FB98 + ldr r0, [r0] + str r4, [r0] +_080008EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080008F4: .4byte 0x02017BD0 +_080008F8: .4byte 0x0200FB98 + + thumb_func_start sub_8FC +sub_8FC: @ 0x080008FC + ldr r0, _0800090C @ =0x0200FB98 + ldr r0, [r0] + ldr r1, _08000910 @ =sub_A08 + 1 + str r1, [r0] + ldr r0, _08000914 @ =0x02017BD0 + str r1, [r0] + bx lr + .align 2, 0 +_0800090C: .4byte 0x0200FB98 +_08000910: .4byte sub_A08 + 1 +_08000914: .4byte 0x02017BD0 + + thumb_func_start sub_918 +sub_918: @ 0x08000918 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08000938 @ =0x0200FBA0 + str r4, [r0] + bl sub_850 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08000930 + ldr r0, _0800093C @ =0x02019BE0 + ldr r0, [r0] + str r4, [r0] +_08000930: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000938: .4byte 0x0200FBA0 +_0800093C: .4byte 0x02019BE0 + + thumb_func_start sub_940 +sub_940: @ 0x08000940 + ldr r0, _08000950 @ =0x02019BE0 + ldr r0, [r0] + ldr r1, _08000954 @ =sub_A20 + 1 + str r1, [r0] + ldr r0, _08000958 @ =0x0200FBA0 + str r1, [r0] + bx lr + .align 2, 0 +_08000950: .4byte 0x02019BE0 +_08000954: .4byte sub_A20 + 1 +_08000958: .4byte 0x0200FBA0 + + thumb_func_start AgbMain +AgbMain: @ 0x0800095C + push {r4, r5, lr} + movs r0, #0xff + bl RegisterRamReset + bl sub_BBC + ldr r1, _080009A0 @ =0x040000D4 + ldr r0, _080009A4 @ =IntrMain + str r0, [r1] + ldr r2, _080009A8 @ =0x03005400 + str r2, [r1, #4] + ldr r0, _080009AC @ =0x84000200 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, _080009B0 @ =0x03007FFC + str r2, [r0] + bl sub_B54 + bl sub_FE8 + ldr r5, _080009B4 @ =gMainFuncs + ldr r4, _080009B8 @ =0x0200B0C0 +_08000988: + bl ReadKeys + ldrb r0, [r4, #2] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + bl _call_via_r0 + bl sub_D74 + b _08000988 + .align 2, 0 +_080009A0: .4byte 0x040000D4 +_080009A4: .4byte IntrMain +_080009A8: .4byte 0x03005400 +_080009AC: .4byte 0x84000200 +_080009B0: .4byte 0x03007FFC +_080009B4: .4byte gMainFuncs +_080009B8: .4byte 0x0200B0C0 + + thumb_func_start sub_9BC_Main +sub_9BC_Main: @ 0x080009BC + push {r4, lr} + ldr r4, _080009DC @ =0x0200B0C0 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _080009E0 + cmp r0, #1 + beq _080009EE + bl sub_2B4 + bl sub_D10 + movs r0, #1 + bl sub_23C + b _080009FC + .align 2, 0 +_080009DC: .4byte 0x0200B0C0 +_080009E0: + bl sub_CBC + bl sub_24C + ldrb r0, [r4, #3] + adds r0, #1 + b _080009FA +_080009EE: + ldrh r1, [r4, #0x18] + ldr r0, _08000A04 @ =0x000003FF + ands r0, r1 + cmp r0, #0 + beq _080009FC + movs r0, #2 +_080009FA: + strb r0, [r4, #3] +_080009FC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000A04: .4byte 0x000003FF + + thumb_func_start sub_A08 +sub_A08: @ 0x08000A08 + push {lr} + bl m4aSoundVSync + ldr r0, _08000A1C @ =0x03007FF8 + ldrh r1, [r0] + movs r2, #1 + orrs r1, r2 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08000A1C: .4byte 0x03007FF8 + + thumb_func_start sub_A20 +sub_A20: @ 0x08000A20 + push {r4, r5, lr} + ldr r2, _08000A78 @ =0x03007FF8 + ldrh r0, [r2] + movs r1, #4 + orrs r0, r1 + strh r0, [r2] + ldr r2, _08000A7C @ =0x04000004 + ldrh r1, [r2] + movs r0, #2 + ands r0, r1 + ldr r3, _08000A80 @ =0x0200B0C0 + cmp r0, #0 + bne _08000A46 + movs r4, #2 +_08000A3C: + ldrh r1, [r2] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08000A3C +_08000A46: + adds r2, r3, #0 + ldrb r0, [r2, #2] + cmp r0, #2 + bne _08000B2E + ldr r0, _08000A84 @ =0x04000010 + movs r4, #0 + strh r4, [r0] + movs r0, #0x28 + ldrsh r1, [r2, r0] + cmp r1, #0 + beq _08000AA0 + movs r1, #0x26 + ldrsh r0, [r2, r1] + cmp r0, #0x48 + bne _08000A8C + ldr r1, _08000A88 @ =0x04000012 + movs r3, #0x2a + ldrsh r0, [r2, r3] + lsls r0, r0, #2 + adds r0, #0x58 + strh r0, [r1] + movs r1, #0x90 + strh r1, [r2, #0x26] + b _08000B00 + .align 2, 0 +_08000A78: .4byte 0x03007FF8 +_08000A7C: .4byte 0x04000004 +_08000A80: .4byte 0x0200B0C0 +_08000A84: .4byte 0x04000010 +_08000A88: .4byte 0x04000012 +_08000A8C: + ldr r1, _08000A9C @ =0x04000012 + movs r5, #0xb0 + lsls r5, r5, #1 + adds r0, r5, #0 + strh r0, [r1] + movs r1, #0x48 + strh r1, [r2, #0x26] + b _08000B00 + .align 2, 0 +_08000A9C: .4byte 0x04000012 +_08000AA0: + movs r5, #0x2c + ldrsh r0, [r2, r5] + cmp r0, #0 + beq _08000B24 + movs r5, #0x26 + ldrsh r0, [r2, r5] + cmp r0, #0x28 + bne _08000ADC + ldrh r0, [r2, #0x38] + ldr r0, _08000AD0 @ =0x00001E41 + strh r0, [r2, #0x38] + ldrh r0, [r2, #0x3a] + ldr r0, _08000AD4 @ =0x00000A06 + strh r0, [r2, #0x3a] + ldr r1, _08000AD8 @ =0x04000050 + ldrh r0, [r2, #0x38] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #0x3a] + strh r0, [r1] + movs r1, #0x90 + strh r1, [r2, #0x26] + b _08000B00 + .align 2, 0 +_08000AD0: .4byte 0x00001E41 +_08000AD4: .4byte 0x00000A06 +_08000AD8: .4byte 0x04000050 +_08000ADC: + ldrh r0, [r3, #0x38] + ldr r0, _08000B18 @ =0x00001E01 + strh r0, [r3, #0x38] + ldrh r0, [r3, #0x3a] + strh r1, [r3, #0x3a] + ldr r1, _08000B1C @ =0x04000050 + ldrh r0, [r3, #0x38] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r3, #0x3a] + strh r0, [r1] + subs r1, #0x40 + movs r2, #0xb0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + movs r1, #0x28 + strh r1, [r3, #0x26] +_08000B00: + ldr r2, _08000B20 @ =0x04000004 + ldrh r3, [r2] + movs r0, #0xff + ands r0, r3 + strh r0, [r2] + lsls r1, r1, #8 + adds r1, #0x20 + ldrh r0, [r2] + orrs r1, r0 + strh r1, [r2] + b _08000B2E + .align 2, 0 +_08000B18: .4byte 0x00001E01 +_08000B1C: .4byte 0x04000050 +_08000B20: .4byte 0x04000004 +_08000B24: + ldr r1, _08000B34 @ =0x04000012 + movs r3, #0xb0 + lsls r3, r3, #1 + adds r0, r3, #0 + strh r0, [r1] +_08000B2E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08000B34: .4byte 0x04000012 + + thumb_func_start sub_B38 +sub_B38: @ 0x08000B38 + push {lr} + bl sub_1F5C + pop {r0} + bx r0 + + thumb_func_start sub_B44 +sub_B44: @ 0x08000B44 + push {lr} + bl sub_1F4C + pop {r0} + bx r0 + + thumb_func_start sub_B50 +sub_B50: @ 0x08000B50 + bx lr + + thumb_func_start sub_B54 +sub_B54: @ 0x08000B54 + push {lr} + ldr r1, _08000B84 @ =0x04000204 + ldr r2, _08000B88 @ =0x000045B6 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #4 + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r2, #0 + strh r0, [r1] + adds r1, #8 + movs r0, #1 + strh r0, [r1] + bl sub_B8C + bl m4aSoundInit + bl m4aSoundVSyncOff + bl sub_52A18 + pop {r0} + bx r0 + .align 2, 0 +_08000B84: .4byte 0x04000204 +_08000B88: .4byte 0x000045B6 + + thumb_func_start sub_B8C +sub_B8C: @ 0x08000B8C + push {lr} + ldr r0, _08000BB8 @ =0x0200B0C0 + movs r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + strh r1, [r0, #0x16] + strh r1, [r0, #0x1c] + strh r1, [r0, #0x18] + strh r1, [r0, #0x20] + str r1, [r0, #0x48] + str r1, [r0, #0x4c] + strh r1, [r0, #0x30] + movs r2, #0x90 + strh r2, [r0, #0x26] + strh r1, [r0, #0x2c] + bl sub_1090C + bl sub_438 + pop {r0} + bx r0 + .align 2, 0 +_08000BB8: .4byte 0x0200B0C0 + + thumb_func_start sub_BBC +sub_BBC: @ 0x08000BBC + push {r4, r5, r6, lr} + ldr r5, _08000BF0 @ =0x0200FB98 + ldr r2, _08000BF4 @ =0x02003068 + ldr r6, _08000BF8 @ =0x02019BE0 + ldr r4, _08000BFC @ =0x086A4AA0 + adds r3, r2, #0 + subs r3, #8 + movs r1, #0xd +_08000BCC: + ldm r4!, {r0} + stm r3!, {r0} + subs r1, #1 + cmp r1, #0 + bge _08000BCC + str r2, [r5] + adds r0, r2, #0 + adds r0, #8 + str r0, [r6] + bl sub_8BC + bl sub_8FC + bl sub_940 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08000BF0: .4byte 0x0200FB98 +_08000BF4: .4byte 0x02003068 +_08000BF8: .4byte 0x02019BE0 +_08000BFC: .4byte 0x086A4AA0 + + thumb_func_start sub_C00 +sub_C00: @ 0x08000C00 + ldr r2, _08000C14 @ =0x0200B0C0 + ldr r1, [r2, #0x48] + ldr r0, _08000C18 @ =0x41C64E6D + muls r0, r1, r0 + ldr r1, _08000C1C @ =0x00003039 + adds r0, r0, r1 + str r0, [r2, #0x48] + ldr r1, _08000C20 @ =0x0000FFFF + ands r0, r1 + bx lr + .align 2, 0 +_08000C14: .4byte 0x0200B0C0 +_08000C18: .4byte 0x41C64E6D +_08000C1C: .4byte 0x00003039 +_08000C20: .4byte 0x0000FFFF + + thumb_func_start sub_C24 +sub_C24: @ 0x08000C24 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x12 + movs r3, #1 + ldr r0, _08000C60 @ =0x00001FFF + cmp r2, r0 + bls _08000C3A + ldr r1, _08000C64 @ =0xFFFFE000 + adds r0, r2, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r3, _08000C68 @ =0x0000FFFF +_08000C3A: + ldr r0, _08000C6C @ =0x00000FFF + cmp r2, r0 + bls _08000C4C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r1, #0 + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_08000C4C: + ldr r1, _08000C70 @ =0x08055C44 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + muls r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bx lr + .align 2, 0 +_08000C60: .4byte 0x00001FFF +_08000C64: .4byte 0xFFFFE000 +_08000C68: .4byte 0x0000FFFF +_08000C6C: .4byte 0x00000FFF +_08000C70: .4byte 0x08055C44 + + thumb_func_start sub_C74 +sub_C74: @ 0x08000C74 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0x17 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_C24 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + + thumb_func_start ReadKeys +ReadKeys: @ 0x08000C8C + push {r4, lr} + ldr r0, _08000CB4 @ =0x04000130 + ldrh r2, [r0] + mvns r2, r2 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r3, _08000CB8 @ =0x0200B0C0 + ldrh r4, [r3, #0x1c] + adds r1, r2, #0 + eors r1, r4 + adds r0, r2, #0 + ands r0, r1 + strh r0, [r3, #0x18] + ands r1, r4 + strh r1, [r3, #0x1a] + strh r2, [r3, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000CB4: .4byte 0x04000130 +_08000CB8: .4byte 0x0200B0C0 + + thumb_func_start sub_CBC +sub_CBC: @ 0x08000CBC + push {r4, lr} + ldr r3, _08000CFC @ =0x04000200 + ldrh r1, [r3] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _08000CF6 + ldr r1, _08000D00 @ =0x04000202 + ldrh r0, [r1] + movs r2, #5 + orrs r0, r2 + strh r0, [r1] + ldrh r1, [r3] + ldr r0, _08000D04 @ =0x00003FFF + ands r0, r1 + strh r0, [r3] + ldr r0, _08000D08 @ =0x04000208 + strh r4, [r0] + ldrh r0, [r3] + orrs r0, r2 + strh r0, [r3] + ldr r2, _08000D0C @ =0x04000004 + ldrh r0, [r2] + movs r1, #8 + orrs r0, r1 + strh r0, [r2] + bl m4aSoundVSyncOn +_08000CF6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000CFC: .4byte 0x04000200 +_08000D00: .4byte 0x04000202 +_08000D04: .4byte 0x00003FFF +_08000D08: .4byte 0x04000208 +_08000D0C: .4byte 0x04000004 + + thumb_func_start sub_D10 +sub_D10: @ 0x08000D10 + push {lr} + ldr r1, _08000D54 @ =0x04000004 + ldrh r2, [r1] + ldr r0, _08000D58 @ =0x0000FFF7 + ands r0, r2 + strh r0, [r1] + ldrh r2, [r1] + ldr r0, _08000D5C @ =0x0000FFDF + ands r0, r2 + strh r0, [r1] + ldr r1, _08000D60 @ =0x04000200 + ldrh r2, [r1] + ldr r0, _08000D64 @ =0x00003FFF + ands r0, r2 + strh r0, [r1] + ldrh r2, [r1] + ldr r0, _08000D68 @ =0x00003FFE + ands r0, r2 + strh r0, [r1] + ldrh r0, [r1] + adds r1, r0, #0 + cmp r1, #0 + bne _08000D42 + ldr r0, _08000D6C @ =0x04000208 + strh r1, [r0] +_08000D42: + ldr r0, _08000D70 @ =0x04000202 + ldrh r1, [r0] + movs r2, #1 + orrs r1, r2 + strh r1, [r0] + bl m4aSoundVSyncOff + pop {r0} + bx r0 + .align 2, 0 +_08000D54: .4byte 0x04000004 +_08000D58: .4byte 0x0000FFF7 +_08000D5C: .4byte 0x0000FFDF +_08000D60: .4byte 0x04000200 +_08000D64: .4byte 0x00003FFF +_08000D68: .4byte 0x00003FFE +_08000D6C: .4byte 0x04000208 +_08000D70: .4byte 0x04000202 + + thumb_func_start sub_D74 +sub_D74: @ 0x08000D74 + push {lr} + ldr r2, _08000DA8 @ =0x0200FB9C + ldr r0, _08000DAC @ =0x02017BD4 + ldr r0, [r0] + str r0, [r2] + ldr r0, _08000DB0 @ =0x0200FB98 + ldr r1, [r0] + ldr r0, _08000DB4 @ =0x02017BD0 + ldr r0, [r0] + str r0, [r1] + ldr r0, _08000DB8 @ =0x02019BE0 + ldr r1, [r0] + ldr r0, _08000DBC @ =0x0200FBA0 + ldr r0, [r0] + str r0, [r1] + ldr r2, [r2] + cmp r2, #0 + beq _08000D9C + bl _call_via_r2 +_08000D9C: + ldr r1, _08000DC0 @ =0x0200B0C0 + ldr r0, [r1, #0x4c] + adds r0, #1 + str r0, [r1, #0x4c] + pop {r0} + bx r0 + .align 2, 0 +_08000DA8: .4byte 0x0200FB9C +_08000DAC: .4byte 0x02017BD4 +_08000DB0: .4byte 0x0200FB98 +_08000DB4: .4byte 0x02017BD0 +_08000DB8: .4byte 0x02019BE0 +_08000DBC: .4byte 0x0200FBA0 +_08000DC0: .4byte 0x0200B0C0 + + thumb_func_start sub_DC4 +sub_DC4: @ 0x08000DC4 + push {r4, lr} + ldr r4, _08000E7C @ =0x04000004 + ldrh r1, [r4] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08000E76 + bl VBlankIntrWait + ldr r1, _08000E80 @ =0x040000D4 + ldr r0, _08000E84 @ =0x03005000 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08000E88 @ =0x84000100 + str r0, [r1, #8] + ldr r0, [r1, #8] + subs r1, #0xd4 + ldr r2, _08000E8C @ =0x0200B0C0 + ldrh r0, [r2, #0x16] + strh r0, [r1] + adds r1, #0x10 + movs r3, #0xba + lsls r3, r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _08000E5E + adds r1, #0x32 + ldrh r0, [r2, #0x38] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #0x3a] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #0x3c] + strh r0, [r1] +_08000E5E: + ldrh r1, [r4] + movs r0, #0xff + ands r0, r1 + strh r0, [r4] + ldrh r0, [r2, #0x26] + lsls r0, r0, #8 + adds r0, #0x20 + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r4] + bl m4aSoundMain +_08000E76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000E7C: .4byte 0x04000004 +_08000E80: .4byte 0x040000D4 +_08000E84: .4byte 0x03005000 +_08000E88: .4byte 0x84000100 +_08000E8C: .4byte 0x0200B0C0 + + thumb_func_start sub_E90 +sub_E90: @ 0x08000E90 + ldr r0, _08000EA8 @ =0x04000130 + ldrh r0, [r0] + ldr r2, _08000EAC @ =0x000003FF + adds r1, r2, #0 + eors r1, r0 + ldr r3, _08000EB0 @ =0x02002002 + ldr r2, _08000EB4 @ =0x02002000 + ldrh r0, [r2] + strh r0, [r3] + strh r1, [r2] + bx lr + .align 2, 0 +_08000EA8: .4byte 0x04000130 +_08000EAC: .4byte 0x000003FF +_08000EB0: .4byte 0x02002002 +_08000EB4: .4byte 0x02002000 + + thumb_func_start sub_EB8 +sub_EB8: @ 0x08000EB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r7, #0 + movs r0, #0 + mov sl, r0 + mov sb, r0 + mov r8, r0 + bl VBlankIntrWait + ldr r0, _08000F30 @ =0x040000D4 + ldr r1, _08000F34 @ =0x08058248 + str r1, [r0] + ldr r1, _08000F38 @ =0x06008000 + str r1, [r0, #4] + ldr r1, _08000F3C @ =0x80002000 + str r1, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _08000F40 @ =0x08058048 + str r1, [r0] + movs r1, #0xa0 + lsls r1, r1, #0x13 + str r1, [r0, #4] + ldr r1, _08000F44 @ =0x80000100 + str r1, [r0, #8] + ldr r1, [r0, #8] + ldr r1, _08000F48 @ =0x0805C248 + str r1, [r0] + ldr r2, _08000F4C @ =0x02002008 + str r2, [r0, #4] + ldr r1, _08000F50 @ =0x80000280 + str r1, [r0, #8] + ldr r1, [r0, #8] + str r2, [r0] + movs r1, #0xc0 + lsls r1, r1, #0x13 + str r1, [r0, #4] + ldr r1, _08000F54 @ =0x80000400 + str r1, [r0, #8] + ldr r0, [r0, #8] + ldr r1, _08000F58 @ =0x04000008 + movs r0, #0x88 + strh r0, [r1] + movs r4, #0 + ldr r6, _08000F5C @ =0x04000054 + movs r5, #0x10 +_08000F18: + bl VBlankIntrWait + subs r0, r5, r4 + strh r0, [r6] + adds r4, #1 + cmp r4, #0x10 + bls _08000F18 + ldr r6, _08000F60 @ =0x02002002 + ldr r5, _08000F64 @ =0x02002000 + ldr r4, _08000F30 @ =0x040000D4 + b _08000FA4 + .align 2, 0 +_08000F30: .4byte 0x040000D4 +_08000F34: .4byte 0x08058248 +_08000F38: .4byte 0x06008000 +_08000F3C: .4byte 0x80002000 +_08000F40: .4byte 0x08058048 +_08000F44: .4byte 0x80000100 +_08000F48: .4byte 0x0805C248 +_08000F4C: .4byte 0x02002008 +_08000F50: .4byte 0x80000280 +_08000F54: .4byte 0x80000400 +_08000F58: .4byte 0x04000008 +_08000F5C: .4byte 0x04000054 +_08000F60: .4byte 0x02002002 +_08000F64: .4byte 0x02002000 +_08000F68: + ldrh r0, [r6] + ldrh r1, [r5] + eors r0, r1 + ands r0, r1 + movs r1, #0xf0 + ands r0, r1 + cmp r0, #0xf0 + bne _08000F7C + mov r8, sb + mov sb, r7 +_08000F7C: + mov r1, r8 + cmp r1, #0 + beq _08000F8E + mov r2, sb + subs r0, r2, r1 + cmp r0, #3 + bgt _08000F8E + movs r0, #1 + mov sl, r0 +_08000F8E: + adds r7, #1 + bl VBlankIntrWait + ldr r0, _08000FB0 @ =0x02002008 + str r0, [r4] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r4, #4] + ldr r0, _08000FB4 @ =0x84000200 + str r0, [r4, #8] + ldr r0, [r4, #8] +_08000FA4: + cmp r7, #0x1d + bgt _08000FB8 + bl sub_E90 + b _08000F68 + .align 2, 0 +_08000FB0: .4byte 0x02002008 +_08000FB4: .4byte 0x84000200 +_08000FB8: + movs r4, #0 + ldr r5, _08000FD4 @ =0x04000054 +_08000FBC: + bl VBlankIntrWait + strh r4, [r5] + adds r4, #1 + cmp r4, #0x10 + bls _08000FBC + mov r1, sl + cmp r1, #0 + bne _08000FD8 + movs r0, #0 + b _08000FDA + .align 2, 0 +_08000FD4: .4byte 0x04000054 +_08000FD8: + movs r0, #1 +_08000FDA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + + thumb_func_start sub_FE8 +sub_FE8: @ 0x08000FE8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + ldr r2, _08001080 @ =0x04000200 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + ldr r6, _08001084 @ =0x04000004 + ldrh r0, [r6] + movs r1, #8 + orrs r0, r1 + strh r0, [r6] + ldr r1, _08001088 @ =0x04000050 + ldr r3, _0800108C @ =0x00003FBF + adds r0, r3, #0 + strh r0, [r1] + adds r1, #4 + movs r0, #0x10 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #0x13 + mov r8, r0 + movs r1, #0x88 + lsls r1, r1, #5 + adds r0, r1, #0 + mov r3, r8 + strh r0, [r3] + ldr r0, _08001090 @ =0x02019C00 + movs r4, #0 + str r4, [r0] + ldr r0, _08001094 @ =0x02019BEC + str r4, [r0] + ldr r0, _08001098 @ =0x02019BF4 + str r4, [r0] + ldr r0, _0800109C @ =0x02019BF0 + str r4, [r0] + ldr r5, _080010A0 @ =0x02019C0C + str r2, [sp] + bl sub_EB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r5] + ldr r2, [sp] + ldrh r1, [r2] + ldr r0, _080010A4 @ =0x0000FFFE + ands r0, r1 + strh r0, [r2] + ldrh r1, [r6] + ldr r0, _080010A8 @ =0x0000FFF7 + ands r0, r1 + strh r0, [r6] + mov r0, r8 + strh r4, [r0] + ldr r1, _080010AC @ =0x02019BFC + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] + ldr r0, _080010B0 @ =0x02019BE4 + str r4, [r0] + ldr r0, _080010B4 @ =0x02019BE8 + str r4, [r0] + ldr r0, _080010B8 @ =0x02019BF8 + str r4, [r0] + ldr r1, _080010BC @ =0x02019C08 + movs r0, #2 + str r0, [r1] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08001080: .4byte 0x04000200 +_08001084: .4byte 0x04000004 +_08001088: .4byte 0x04000050 +_0800108C: .4byte 0x00003FBF +_08001090: .4byte 0x02019C00 +_08001094: .4byte 0x02019BEC +_08001098: .4byte 0x02019BF4 +_0800109C: .4byte 0x02019BF0 +_080010A0: .4byte 0x02019C0C +_080010A4: .4byte 0x0000FFFE +_080010A8: .4byte 0x0000FFF7 +_080010AC: .4byte 0x02019BFC +_080010B0: .4byte 0x02019BE4 +_080010B4: .4byte 0x02019BE8 +_080010B8: .4byte 0x02019BF8 +_080010BC: .4byte 0x02019C08 + + thumb_func_start sub_10C0 +sub_10C0: @ 0x080010C0 + push {lr} + ldr r0, _080010F8 @ =0x02019C0C + ldr r2, [r0] + cmp r2, #1 + bne _080010DC + ldr r1, _080010FC @ =0x02003060 + ldr r0, _08001100 @ =sub_13FC + 1 + str r0, [r1] + ldr r0, _08001104 @ =sub_1828 + 1 + str r0, [r1, #4] + ldr r0, _08001108 @ =0x02019BF4 + str r2, [r0] + bl sub_1340 +_080010DC: + ldr r1, _0800110C @ =0x02019BFC + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] + ldr r0, _08001110 @ =0x02019BE4 + movs r2, #0 + str r2, [r0] + ldr r1, _08001114 @ =0x02019C08 + movs r0, #2 + str r0, [r1] + ldr r0, _08001118 @ =0x02019C04 + str r2, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080010F8: .4byte 0x02019C0C +_080010FC: .4byte 0x02003060 +_08001100: .4byte sub_13FC + 1 +_08001104: .4byte sub_1828 + 1 +_08001108: .4byte 0x02019BF4 +_0800110C: .4byte 0x02019BFC +_08001110: .4byte 0x02019BE4 +_08001114: .4byte 0x02019C08 +_08001118: .4byte 0x02019C04 + + thumb_func_start sub_111C +sub_111C: @ 0x0800111C + ldr r2, _0800114C @ =0x02019BF4 + movs r1, #0 + ldr r0, _08001150 @ =0x02019C00 + str r1, [r0] + ldr r0, _08001154 @ =0x02019BEC + str r1, [r0] + str r1, [r2] + ldr r0, _08001158 @ =0x02019BF0 + str r1, [r0] + ldr r2, _0800115C @ =0x02019BFC + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r2] + ldr r0, _08001160 @ =0x02019BE4 + str r1, [r0] + ldr r0, _08001164 @ =0x02019BE8 + str r1, [r0] + ldr r0, _08001168 @ =0x02019BF8 + str r1, [r0] + ldr r1, _0800116C @ =0x02019C08 + movs r0, #2 + str r0, [r1] + bx lr + .align 2, 0 +_0800114C: .4byte 0x02019BF4 +_08001150: .4byte 0x02019C00 +_08001154: .4byte 0x02019BEC +_08001158: .4byte 0x02019BF0 +_0800115C: .4byte 0x02019BFC +_08001160: .4byte 0x02019BE4 +_08001164: .4byte 0x02019BE8 +_08001168: .4byte 0x02019BF8 +_0800116C: .4byte 0x02019C08 + + thumb_func_start sub_1170 +sub_1170: @ 0x08001170 + ldr r0, _0800118C @ =0x02019C0C + ldr r0, [r0] + cmp r0, #1 + bne _08001194 + ldr r0, _08001190 @ =0x02019C10 + ldrb r0, [r0] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08001194 + movs r0, #0 + b _08001196 + .align 2, 0 +_0800118C: .4byte 0x02019C0C +_08001190: .4byte 0x02019C10 +_08001194: + movs r0, #1 +_08001196: + bx lr + + thumb_func_start sub_1198 +sub_1198: @ 0x08001198 + ldr r0, _080011A4 @ =0x02003060 + ldr r1, _080011A8 @ =sub_B38 + 1 + str r1, [r0] + ldr r1, _080011AC @ =sub_B44 + 1 + str r1, [r0, #4] + bx lr + .align 2, 0 +_080011A4: .4byte 0x02003060 +_080011A8: .4byte sub_B38 + 1 +_080011AC: .4byte sub_B44 + 1 + + thumb_func_start sub_11B0 +sub_11B0: @ 0x080011B0 + adds r1, r0, #0 + ldr r0, _080011D0 @ =0x0200B134 + adds r0, #0xcd + ldrb r0, [r0] + cmp r0, #0 + beq _080011CE + ldr r0, _080011D4 @ =0x02019BF8 + str r1, [r0] + ldr r0, _080011D8 @ =0x02019BFC + movs r1, #0 + str r1, [r0] + ldr r0, _080011DC @ =0x02019BE4 + str r1, [r0] + ldr r0, _080011E0 @ =0x02019BE8 + str r1, [r0] +_080011CE: + bx lr + .align 2, 0 +_080011D0: .4byte 0x0200B134 +_080011D4: .4byte 0x02019BF8 +_080011D8: .4byte 0x02019BFC +_080011DC: .4byte 0x02019BE4 +_080011E0: .4byte 0x02019BE8 + + thumb_func_start sub_11E4 +sub_11E4: @ 0x080011E4 + ldr r1, _080011EC @ =0x02019C08 + str r0, [r1] + bx lr + .align 2, 0 +_080011EC: .4byte 0x02019C08 + + thumb_func_start sub_11F0 +sub_11F0: @ 0x080011F0 + ldr r1, _080011F8 @ =0x02019C04 + str r0, [r1] + bx lr + .align 2, 0 +_080011F8: .4byte 0x02019C04 + + thumb_func_start sub_11FC +sub_11FC: @ 0x080011FC + push {r4, r5, r6, r7, lr} + ldr r0, _0800121C @ =0x02019C0C + ldr r0, [r0] + cmp r0, #1 + beq _08001208 + b _08001324 +_08001208: + ldr r0, _08001220 @ =0x02019C10 + ldrb r0, [r0] + cmp r0, #5 + bls _08001212 + b _08001324 +_08001212: + lsls r0, r0, #2 + ldr r1, _08001224 @ =_08001228 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800121C: .4byte 0x02019C0C +_08001220: .4byte 0x02019C10 +_08001224: .4byte _08001228 +_08001228: @ jump table + .4byte _08001324 @ case 0 + .4byte _08001324 @ case 1 + .4byte _08001324 @ case 2 + .4byte _08001240 @ case 3 + .4byte _08001240 @ case 4 + .4byte _08001308 @ case 5 +_08001240: + ldr r0, _080012A8 @ =0x02019BFC + ldr r1, [r0] + mov ip, r0 + cmp r1, #0 + blt _080012FC + ldr r0, _080012AC @ =0x02019C08 + ldr r3, [r0] + cmp r3, #0 + beq _080012FC + ldr r0, _080012B0 @ =0x02019C04 + ldr r2, [r0] + cmp r2, #0 + bne _080012FC + ldr r0, _080012B4 @ =0x02019BE8 + ldr r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080012DC + ldr r1, _080012B8 @ =0x086A4C44 + ldr r0, _080012BC @ =0x02019BF8 + ldr r0, [r0] + lsls r0, r0, #2 + adds r7, r0, r1 + mov r5, ip + movs r6, #1 + rsbs r6, r6, #0 +_08001276: + ldr r2, [r5] + ldr r0, [r7] + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r3, [r1] + adds r2, #1 + str r2, [r5] + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r4, [r1] + cmp r3, r6 + beq _080012F8 + cmp r3, r6 + bge _080012D0 + ldr r1, _080012C0 @ =0x02019BE4 + ldr r0, [r1] + cmp r0, #0 + beq _080012C4 + subs r0, #1 + str r0, [r1] + cmp r0, #0 + bne _080012C8 + adds r0, r2, #1 + str r0, [r5] + b _08001276 + .align 2, 0 +_080012A8: .4byte 0x02019BFC +_080012AC: .4byte 0x02019C08 +_080012B0: .4byte 0x02019C04 +_080012B4: .4byte 0x02019BE8 +_080012B8: .4byte 0x086A4C44 +_080012BC: .4byte 0x02019BF8 +_080012C0: .4byte 0x02019BE4 +_080012C4: + mvns r0, r3 + str r0, [r1] +_080012C8: + subs r0, r2, #1 + subs r0, r0, r4 + str r0, [r5] + b _08001276 +_080012D0: + ldr r0, _080012D8 @ =0x02019C00 + str r3, [r0] + b _08001324 + .align 2, 0 +_080012D8: .4byte 0x02019C00 +_080012DC: + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r0, r1, r0 + cmp r0, #1 + bne _08001324 + cmp r3, #1 + bne _08001324 + ldr r0, _080012F4 @ =0x02019C00 + str r2, [r0] + b _08001324 + .align 2, 0 +_080012F4: .4byte 0x02019C00 +_080012F8: + mov r0, ip + str r3, [r0] +_080012FC: + ldr r1, _08001304 @ =0x02019C00 + movs r0, #0 + str r0, [r1] + b _08001324 + .align 2, 0 +_08001304: .4byte 0x02019C00 +_08001308: + ldr r4, _08001334 @ =0x02019BF0 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + cmp r0, #0x3c + bls _08001324 + ldr r0, _08001338 @ =0x02019BF4 + ldr r0, [r0] + cmp r0, #0 + beq _08001320 + bl sub_1340 +_08001320: + movs r0, #0 + str r0, [r4] +_08001324: + ldr r1, _0800133C @ =0x02019BE8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08001334: .4byte 0x02019BF0 +_08001338: .4byte 0x02019BF4 +_0800133C: .4byte 0x02019BE8 + + thumb_func_start sub_1340 +sub_1340: @ 0x08001340 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + ldr r6, _080013D0 @ =0x04000208 + movs r3, #0 + strh r3, [r6] + ldr r2, _080013D4 @ =0x04000200 + ldrh r1, [r2] + ldr r0, _080013D8 @ =0x0000FF3F + ands r0, r1 + strh r0, [r2] + movs r0, #1 + mov r8, r0 + strh r0, [r6] + ldr r0, _080013DC @ =0x04000134 + strh r3, [r0] + ldr r4, _080013E0 @ =0x04000128 + ldr r1, _080013E4 @ =0x00001008 + adds r0, r1, #0 + strh r0, [r4] + ldrh r0, [r4] + movs r5, #0x80 + lsls r5, r5, #7 + adds r1, r5, #0 + orrs r0, r1 + strh r0, [r4] + ldr r0, _080013E8 @ =0x04000202 + movs r1, #0xc0 + strh r1, [r0] + strh r3, [r6] + ldrh r0, [r2] + orrs r0, r1 + strh r0, [r2] + mov r0, r8 + strh r0, [r6] + ldrb r1, [r4] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldr r0, _080013EC @ =0x02019C10 + strb r3, [r0] + movs r5, #0 + str r5, [sp] + ldr r1, _080013F0 @ =0x02002808 + ldr r2, _080013F4 @ =0x05000003 + mov r0, sp + bl CpuSet + strh r5, [r6] + ldrh r0, [r4] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r4] + mov r1, r8 + strh r1, [r6] + ldr r1, _080013F8 @ =0x0400010C + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + strh r0, [r1] + adds r1, #2 + movs r0, #0xc1 + strh r0, [r1] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080013D0: .4byte 0x04000208 +_080013D4: .4byte 0x04000200 +_080013D8: .4byte 0x0000FF3F +_080013DC: .4byte 0x04000134 +_080013E0: .4byte 0x04000128 +_080013E4: .4byte 0x00001008 +_080013E8: .4byte 0x04000202 +_080013EC: .4byte 0x02019C10 +_080013F0: .4byte 0x02002808 +_080013F4: .4byte 0x05000003 +_080013F8: .4byte 0x0400010C + + thumb_func_start sub_13FC +sub_13FC: @ 0x080013FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + ldr r1, _08001434 @ =0x02002818 + ldr r0, _08001438 @ =0x04000120 + ldr r0, [r0] + str r0, [r1] + ldr r1, _0800143C @ =0x0400010E + movs r0, #0 + strh r0, [r1] + subs r1, #2 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _08001440 @ =0x02019C10 + ldrb r1, [r0] + mov sb, r0 + cmp r1, #5 + bls _0800142A + b _0800161C +_0800142A: + lsls r0, r1, #2 + ldr r1, _08001444 @ =_08001448 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001434: .4byte 0x02002818 +_08001438: .4byte 0x04000120 +_0800143C: .4byte 0x0400010E +_08001440: .4byte 0x02019C10 +_08001444: .4byte _08001448 +_08001448: @ jump table + .4byte _08001460 @ case 0 + .4byte _08001520 @ case 1 + .4byte _08001574 @ case 2 + .4byte _080015C8 @ case 3 + .4byte _0800161C @ case 4 + .4byte _0800161C @ case 5 +_08001460: + ldr r0, _080014B0 @ =0x04000120 + mov r8, r0 + ldr r6, [r0] + ldr r3, _080014B4 @ =0x02002808 + ldrb r1, [r3] + lsls r2, r1, #4 + adds r0, r6, #0 + lsls r0, r2 + lsrs r0, r0, #0x10 + movs r7, #1 + subs r1, r7, r1 + lsls r1, r1, #4 + lsls r6, r1 + adds r1, r6, #0 + lsrs r6, r1, #0x10 + ldrh r5, [r3, #0xa] + adds r4, r3, #0 + cmp r5, #0 + bne _080014E4 + ldrh r2, [r4, #6] + adds r1, r0, #0 + cmp r1, r2 + bne _080014E2 + ldrh r3, [r4, #2] + cmp r3, #3 + bhi _080014B8 + ldrh r0, [r4, #4] + mvns r0, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bne _080014E4 + mvns r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r6, r0 + bne _080014E4 + adds r0, r3, #1 + strh r0, [r4, #2] + b _080014E4 + .align 2, 0 +_080014B0: .4byte 0x04000120 +_080014B4: .4byte 0x02002808 +_080014B8: + strh r6, [r4, #0xa] + ldr r0, _080014D8 @ =0x00008002 + cmp r6, r0 + bne _080014E0 + mov r1, sb + strb r7, [r1] + movs r0, #1 + bl sub_1748 + ldr r1, _080014DC @ =0x02002814 + str r0, [r1] + mov r2, r8 + str r0, [r2] + strh r5, [r4, #2] + b _08001640 + .align 2, 0 +_080014D8: .4byte 0x00008002 +_080014DC: .4byte 0x02002814 +_080014E0: + strh r5, [r4, #0xa] +_080014E2: + strh r5, [r4, #2] +_080014E4: + ldrh r0, [r4, #2] + cmp r0, #3 + bhi _080014F8 + lsls r0, r0, #1 + ldr r1, _080014F4 @ =0x0805C748 + adds r0, r0, r1 + ldrh r0, [r0] + b _080014FC + .align 2, 0 +_080014F4: .4byte 0x0805C748 +_080014F8: + movs r0, #0x80 + lsls r0, r0, #8 +_080014FC: + strh r0, [r4, #4] + mvns r0, r6 + strh r0, [r4, #6] + ldr r3, _0800151C @ =0x04000120 + ldrh r2, [r4, #4] + ldrb r1, [r4] + movs r0, #1 + subs r0, r0, r1 + lsls r0, r0, #4 + lsls r2, r0 + ldrh r0, [r4, #6] + lsls r1, r1, #4 + lsls r0, r1 + adds r2, r2, r0 + str r2, [r3] + b _08001640 + .align 2, 0 +_0800151C: .4byte 0x04000120 +_08001520: + ldr r5, _08001544 @ =0x02019C10 + ldrb r0, [r5] + bl sub_16A0 + cmp r0, #0 + beq _08001550 + ldr r1, _08001548 @ =0x02002808 + movs r4, #0 + movs r0, #0 + strh r0, [r1, #2] + str r0, [sp] + ldr r2, _0800154C @ =0x05000003 + mov r0, sp + bl CpuSet + strb r4, [r5] + b _08001554 + .align 2, 0 +_08001544: .4byte 0x02019C10 +_08001548: .4byte 0x02002808 +_0800154C: .4byte 0x05000003 +_08001550: + movs r0, #2 + strb r0, [r5] +_08001554: + ldr r0, _0800156C @ =0x02019BF4 + ldr r0, [r0] + ldr r1, _08001570 @ =0x02019C10 + mov sb, r1 + cmp r0, #0 + bne _08001564 + movs r0, #4 + strb r0, [r1] +_08001564: + mov r2, sb + ldrb r0, [r2] + b _080015F8 + .align 2, 0 +_0800156C: .4byte 0x02019BF4 +_08001570: .4byte 0x02019C10 +_08001574: + ldr r5, _08001598 @ =0x02019C10 + ldrb r0, [r5] + bl sub_16A0 + cmp r0, #0 + beq _080015A4 + ldr r1, _0800159C @ =0x02002808 + movs r4, #0 + movs r0, #0 + strh r0, [r1, #2] + str r0, [sp, #4] + add r0, sp, #4 + ldr r2, _080015A0 @ =0x05000003 + bl CpuSet + strb r4, [r5] + b _080015A8 + .align 2, 0 +_08001598: .4byte 0x02019C10 +_0800159C: .4byte 0x02002808 +_080015A0: .4byte 0x05000003 +_080015A4: + movs r0, #3 + strb r0, [r5] +_080015A8: + ldr r0, _080015C0 @ =0x02019BF4 + ldr r0, [r0] + ldr r1, _080015C4 @ =0x02019C10 + mov sb, r1 + cmp r0, #0 + bne _080015B8 + movs r0, #4 + strb r0, [r1] +_080015B8: + mov r2, sb + ldrb r0, [r2] + b _080015F8 + .align 2, 0 +_080015C0: .4byte 0x02019BF4 +_080015C4: .4byte 0x02019C10 +_080015C8: + mov r5, sb + ldrb r0, [r5] + bl sub_16A0 + cmp r0, #0 + beq _080015E8 + ldr r1, _08001608 @ =0x02002808 + movs r4, #0 + movs r0, #0 + strh r0, [r1, #2] + str r0, [sp, #8] + add r0, sp, #8 + ldr r2, _0800160C @ =0x05000003 + bl CpuSet + strb r4, [r5] +_080015E8: + ldr r0, _08001610 @ =0x02019BF4 + ldr r0, [r0] + cmp r0, #0 + bne _080015F4 + movs r0, #4 + strb r0, [r5] +_080015F4: + mov r1, sb + ldrb r0, [r1] +_080015F8: + bl sub_1748 + ldr r1, _08001614 @ =0x02002814 + str r0, [r1] + ldr r1, _08001618 @ =0x04000120 + str r0, [r1] + b _08001640 + .align 2, 0 +_08001608: .4byte 0x02002808 +_0800160C: .4byte 0x05000003 +_08001610: .4byte 0x02019BF4 +_08001614: .4byte 0x02002814 +_08001618: .4byte 0x04000120 +_0800161C: + ldr r3, _08001634 @ =0x04000208 + movs r0, #0 + strh r0, [r3] + ldr r2, _08001638 @ =0x04000200 + ldrh r1, [r2] + ldr r0, _0800163C @ =0x0000FF7F + ands r0, r1 + strh r0, [r2] + movs r0, #1 + strh r0, [r3] + b _08001650 + .align 2, 0 +_08001634: .4byte 0x04000208 +_08001638: .4byte 0x04000200 +_0800163C: .4byte 0x0000FF7F +_08001640: + ldr r2, _08001660 @ =0x04000128 + ldrh r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r2] + ldr r1, _08001664 @ =0x0400010E + movs r0, #0xc1 + strh r0, [r1] +_08001650: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08001660: .4byte 0x04000128 +_08001664: .4byte 0x0400010E + + thumb_func_start sub_1668 +sub_1668: @ 0x08001668 + push {r4, r5, lr} + ldr r2, _0800169C @ =0x00FFFFFF + ands r2, r0 + lsls r4, r2, #4 + lsls r1, r1, #0x1c + orrs r4, r1 + lsrs r3, r4, #0x1c + movs r2, #6 + movs r5, #0xf +_0800167A: + lsls r0, r2, #2 + adds r1, r4, #0 + lsrs r1, r0 + ands r1, r5 + eors r3, r1 + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0800167A + movs r0, #0xf + ands r3, r0 + orrs r4, r3 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0800169C: .4byte 0x00FFFFFF + + thumb_func_start sub_16A0 +sub_16A0: @ 0x080016A0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _080016C4 @ =0x02002818 + ldr r0, [r6] + lsrs r5, r0, #0x1c + bl sub_170C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080016DE + cmp r4, #2 + beq _080016E8 + cmp r4, #2 + bgt _080016C8 + cmp r4, #1 + beq _080016CE + b _080016DE + .align 2, 0 +_080016C4: .4byte 0x02002818 +_080016C8: + cmp r4, #3 + beq _08001700 + b _080016DE +_080016CE: + ldr r1, _080016E4 @ =0x0200281C + ldr r0, [r6] + lsls r0, r0, #4 + lsrs r0, r0, #8 + ands r0, r4 + str r0, [r1] + cmp r5, #1 + beq _08001704 +_080016DE: + movs r0, #1 + b _08001706 + .align 2, 0 +_080016E4: .4byte 0x0200281C +_080016E8: + cmp r5, #2 + bne _080016DE + ldr r0, _080016FC @ =0x0200281C + ldr r1, [r6] + lsls r1, r1, #4 + lsrs r1, r1, #8 + ldr r0, [r0] + cmp r0, r1 + beq _08001704 + b _080016DE + .align 2, 0 +_080016FC: .4byte 0x0200281C +_08001700: + cmp r5, #3 + bne _080016DE +_08001704: + movs r0, #0 +_08001706: + pop {r4, r5, r6} + pop {r1} + bx r1 + + thumb_func_start sub_170C +sub_170C: @ 0x0800170C + push {r4, r5, r6, lr} + ldr r0, _0800173C @ =0x02002818 + ldr r0, [r0] + lsrs r4, r0, #4 + movs r5, #0xf + ands r5, r0 + lsrs r3, r4, #0x18 + movs r0, #6 + movs r6, #0xf +_0800171E: + subs r0, #1 + lsls r2, r0, #2 + adds r1, r4, #0 + lsrs r1, r2 + ands r1, r6 + eors r3, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0800171E + cmp r3, r5 + beq _08001740 + movs r0, #1 + b _08001742 + .align 2, 0 +_0800173C: .4byte 0x02002818 +_08001740: + movs r0, #0 +_08001742: + pop {r4, r5, r6} + pop {r1} + bx r1 + + thumb_func_start sub_1748 +sub_1748: @ 0x08001748 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #4 + bhi _080017CE + lsls r0, r0, #2 + ldr r1, _08001760 @ =_08001764 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001760: .4byte _08001764 +_08001764: @ jump table + .4byte _080017C4 @ case 0 + .4byte _08001778 @ case 1 + .4byte _08001784 @ case 2 + .4byte _080017C4 @ case 3 + .4byte _080017C4 @ case 4 +_08001778: + ldr r0, _08001780 @ =0x0200281C + ldr r0, [r0] + movs r1, #2 + b _080017C8 + .align 2, 0 +_08001780: .4byte 0x0200281C +_08001784: + ldr r4, _080017C0 @ =0x02019C00 + ldr r0, [r4] + cmp r0, #0 + bne _0800179A + movs r0, #0 + bl sub_17D8 + movs r1, #4 + bl sub_1668 + adds r2, r0, #0 +_0800179A: + ldr r0, [r4] + cmp r0, #1 + bne _080017AE + movs r0, #1 + bl sub_17D8 + movs r1, #4 + bl sub_1668 + adds r2, r0, #0 +_080017AE: + ldr r0, [r4] + cmp r0, #2 + bne _080017CE + movs r0, #2 + bl sub_17D8 + movs r1, #4 + b _080017C8 + .align 2, 0 +_080017C0: .4byte 0x02019C00 +_080017C4: + movs r0, #1 + movs r1, #1 +_080017C8: + bl sub_1668 + adds r2, r0, #0 +_080017CE: + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + + thumb_func_start sub_17D8 +sub_17D8: @ 0x080017D8 + adds r2, r0, #0 + ldr r0, _080017EC @ =0x02019BEC + ldr r0, [r0] + cmp r0, #4 + bhi _08001824 + lsls r0, r0, #2 + ldr r1, _080017F0 @ =_080017F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080017EC: .4byte 0x02019BEC +_080017F0: .4byte _080017F4 +_080017F4: @ jump table + .4byte _08001808 @ case 0 + .4byte _0800180C @ case 1 + .4byte _08001810 @ case 2 + .4byte _08001814 @ case 3 + .4byte _08001818 @ case 4 +_08001808: + adds r1, r2, #0 + b _08001824 +_0800180C: + lsls r1, r2, #2 + b _08001824 +_08001810: + lsls r1, r2, #4 + b _08001824 +_08001814: + lsls r1, r2, #6 + b _08001824 +_08001818: + lsls r1, r2, #2 + orrs r1, r2 + lsls r0, r2, #4 + orrs r1, r0 + lsls r0, r2, #6 + orrs r1, r0 +_08001824: + adds r0, r1, #0 + bx lr + + thumb_func_start sub_1828 +sub_1828: @ 0x08001828 + push {r4, r5, lr} + ldr r3, _08001868 @ =0x04000208 + movs r4, #0 + strh r4, [r3] + ldr r2, _0800186C @ =0x04000200 + ldrh r1, [r2] + ldr r0, _08001870 @ =0x0000FFBF + ands r0, r1 + strh r0, [r2] + movs r5, #1 + strh r5, [r3] + strh r4, [r3] + subs r2, #0xd8 + ldrh r1, [r2] + ldr r0, _08001874 @ =0x0000FF7F + ands r0, r1 + strh r0, [r2] + strh r5, [r3] + ldr r0, _08001878 @ =0x0400010E + strh r4, [r0] + ldr r1, _0800187C @ =0x0400010C + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _08001880 @ =0x02019C10 + movs r0, #5 + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08001868: .4byte 0x04000208 +_0800186C: .4byte 0x04000200 +_08001870: .4byte 0x0000FFBF +_08001874: .4byte 0x0000FF7F +_08001878: .4byte 0x0400010E +_0800187C: .4byte 0x0400010C +_08001880: .4byte 0x02019C10 + + thumb_func_start sub_1884 +sub_1884: @ 0x08001884 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + ldr r0, _08001944 @ =0x02002822 + mov r8, r0 + ldr r5, _08001948 @ =0x04000208 + ldrh r2, [r5] + movs r4, #0 + strh r4, [r5] + ldr r6, _0800194C @ =0x04000200 + ldrh r1, [r6] + ldr r0, _08001950 @ =0x0000FF3F + ands r0, r1 + strh r0, [r6] + strh r2, [r5] + ldr r0, _08001954 @ =0x04000134 + strh r4, [r0] + ldr r2, _08001958 @ =0x04000128 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r1, #0 + strh r0, [r2] + ldrh r0, [r2] + ldr r3, _0800195C @ =0x00004003 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r5] + mov r1, r8 + strh r0, [r1] + ldr r0, _08001960 @ =sub_19CC + 1 + bl sub_898 + ldr r0, _08001964 @ =sub_1A78 + 1 + bl sub_8D4 + strh r4, [r5] + ldrh r0, [r6] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r6] + mov r3, r8 + ldrh r0, [r3] + strh r0, [r5] + ldr r0, _08001968 @ =0x0400012A + strh r4, [r0] + ldr r2, _0800196C @ =0x04000120 + movs r0, #0 + movs r1, #0 + str r0, [r2] + str r1, [r2, #4] + movs r5, #0 + str r5, [sp] + ldr r1, _08001970 @ =0x0202BF20 + ldr r2, _08001974 @ =0x05000189 + mov r0, sp + bl CpuSet + ldr r0, _08001978 @ =0x02002824 + strb r4, [r0] + ldr r0, _0800197C @ =0x02002825 + strb r4, [r0] + ldr r0, _08001980 @ =0x02002827 + strb r4, [r0] + ldr r0, _08001984 @ =0x02019C2C + strb r4, [r0] + ldr r0, _08001988 @ =0x0202A554 + strb r4, [r0] + ldr r0, _0800198C @ =0x0202C5E0 + strb r4, [r0] + ldr r0, _08001990 @ =0x0202ADD0 + str r5, [r0] + ldr r0, _08001994 @ =0x0201A444 + strh r5, [r0] + ldr r0, _08001998 @ =0x0202BDF0 + str r5, [r0] + ldr r0, _0800199C @ =0x0201C1AC + strb r4, [r0] + ldr r0, _080019A0 @ =0x0202ADDC + strb r4, [r0] + ldr r0, _080019A4 @ =0x0202BEC8 + strb r4, [r0] + ldr r0, _080019A8 @ =0x02002820 + strb r4, [r0] + ldr r0, _080019AC @ =0x02002828 + strh r5, [r0] + ldr r0, _080019B0 @ =0x0200282A + strh r5, [r0] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08001944: .4byte 0x02002822 +_08001948: .4byte 0x04000208 +_0800194C: .4byte 0x04000200 +_08001950: .4byte 0x0000FF3F +_08001954: .4byte 0x04000134 +_08001958: .4byte 0x04000128 +_0800195C: .4byte 0x00004003 +_08001960: .4byte sub_19CC + 1 +_08001964: .4byte sub_1A78 + 1 +_08001968: .4byte 0x0400012A +_0800196C: .4byte 0x04000120 +_08001970: .4byte 0x0202BF20 +_08001974: .4byte 0x05000189 +_08001978: .4byte 0x02002824 +_0800197C: .4byte 0x02002825 +_08001980: .4byte 0x02002827 +_08001984: .4byte 0x02019C2C +_08001988: .4byte 0x0202A554 +_0800198C: .4byte 0x0202C5E0 +_08001990: .4byte 0x0202ADD0 +_08001994: .4byte 0x0201A444 +_08001998: .4byte 0x0202BDF0 +_0800199C: .4byte 0x0201C1AC +_080019A0: .4byte 0x0202ADDC +_080019A4: .4byte 0x0202BEC8 +_080019A8: .4byte 0x02002820 +_080019AC: .4byte 0x02002828 +_080019B0: .4byte 0x0200282A + + thumb_func_start sub_19B4 +sub_19B4: @ 0x080019B4 + push {lr} + bl sub_24DC + bl sub_250C + bl sub_1884 + bl sub_1AA4 + pop {r0} + bx r0 + + thumb_func_start sub_19CC +sub_19CC: @ 0x080019CC + push {lr} + ldr r0, _08001A6C @ =0x04000004 + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08001A64 + ldr r0, _08001A70 @ =0x03005000 + movs r1, #0xe0 + lsls r1, r1, #0x13 + movs r2, #0x80 + lsls r2, r2, #2 + bl CpuSet + movs r1, #0x80 + lsls r1, r1, #0x13 + ldr r2, _08001A74 @ =0x0200B0C0 + ldrh r0, [r2, #0x16] + strh r0, [r1] + adds r1, #0x10 + movs r3, #0xba + lsls r3, r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _08001A60 + adds r1, #0x32 + ldrh r0, [r2, #0x38] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #0x3a] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #0x3c] + strh r0, [r1] +_08001A60: + bl VBlankIntrWait +_08001A64: + bl m4aSoundMain + pop {r0} + bx r0 + .align 2, 0 +_08001A6C: .4byte 0x04000004 +_08001A70: .4byte 0x03005000 +_08001A74: .4byte 0x0200B0C0 + + thumb_func_start sub_1A78 +sub_1A78: @ 0x08001A78 + push {lr} + bl sub_1EC0 + bl m4aSoundVSync + ldr r3, _08001A98 @ =0x04000208 + movs r0, #0 + strh r0, [r3] + ldr r2, _08001A9C @ =0x03007FF8 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + strh r1, [r3] + pop {r0} + bx r0 + .align 2, 0 +_08001A98: .4byte 0x04000208 +_08001A9C: .4byte 0x03007FF8 + + thumb_func_start nullsub_15 +nullsub_15: @ 0x08001AA0 + bx lr + + thumb_func_start sub_1AA4 +sub_1AA4: @ 0x08001AA4 + push {r4, r5, lr} + sub sp, #4 + ldr r0, _08001AE4 @ =0x02002822 + ldr r2, _08001AE8 @ =0x04000208 + ldrh r5, [r2] + strh r5, [r0] + movs r4, #0 + strh r4, [r2] + ldr r3, _08001AEC @ =0x04000200 + ldrh r1, [r3] + ldr r0, _08001AF0 @ =0x0000FF3F + ands r0, r1 + strh r0, [r3] + strh r5, [r2] + ldr r0, _08001AF4 @ =0x04000128 + strh r4, [r0] + subs r0, #0x1a + strh r4, [r0] + ldr r1, _08001AF8 @ =0x04000202 + movs r0, #0xc0 + strh r0, [r1] + movs r0, #0 + str r0, [sp] + ldr r1, _08001AFC @ =0x0202BF20 + ldr r2, _08001B00 @ =0x05000189 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08001AE4: .4byte 0x02002822 +_08001AE8: .4byte 0x04000208 +_08001AEC: .4byte 0x04000200 +_08001AF0: .4byte 0x0000FF3F +_08001AF4: .4byte 0x04000128 +_08001AF8: .4byte 0x04000202 +_08001AFC: .4byte 0x0202BF20 +_08001B00: .4byte 0x05000189 + + thumb_func_start sub_1B04 +sub_1B04: @ 0x08001B04 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r0, _08001B20 @ =0x0202BF20 + ldrb r0, [r0, #1] + cmp r0, #4 + bhi _08001BEE + lsls r0, r0, #2 + ldr r1, _08001B24 @ =_08001B28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001B20: .4byte 0x0202BF20 +_08001B24: .4byte _08001B28 +_08001B28: @ jump table + .4byte _08001B3C @ case 0 + .4byte _08001B4C @ case 1 + .4byte _08001B5C @ case 2 + .4byte _08001BD0 @ case 3 + .4byte _08001BDA @ case 4 +_08001B3C: + bl sub_1AA4 + ldr r1, _08001B48 @ =0x0202BF20 + movs r0, #1 + strb r0, [r1, #1] + b _08001BEE + .align 2, 0 +_08001B48: .4byte 0x0202BF20 +_08001B4C: + bl sub_1884 + ldr r1, _08001B58 @ =0x0202BF20 + movs r0, #2 + strb r0, [r1, #1] + b _08001BEE + .align 2, 0 +_08001B58: .4byte 0x0202BF20 +_08001B5C: + ldrb r1, [r6] + cmp r1, #1 + beq _08001B98 + cmp r1, #2 + beq _08001BBC + bl sub_1C5C + ldr r2, _08001B90 @ =0x0202C5E0 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + bne _08001BEE + ldr r1, _08001B94 @ =0x0202BF20 + ldrb r0, [r1] + cmp r0, #0 + beq _08001BEE + ldrb r0, [r1, #3] + cmp r0, #2 + bne _08001BEE + movs r0, #1 + strb r0, [r1, #0x10] + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r1, #0 + strb r0, [r2] + b _08001BEE + .align 2, 0 +_08001B90: .4byte 0x0202C5E0 +_08001B94: .4byte 0x0202BF20 +_08001B98: + ldr r2, _08001BB4 @ =0x0202BF20 + ldrb r0, [r2] + cmp r0, #0 + beq _08001BA8 + ldrb r0, [r2, #3] + cmp r0, #2 + bne _08001BA8 + strb r1, [r2, #0x10] +_08001BA8: + ldr r1, _08001BB8 @ =0x0202C5E0 + movs r2, #1 + rsbs r2, r2, #0 + adds r0, r2, #0 + strb r0, [r1] + b _08001BEE + .align 2, 0 +_08001BB4: .4byte 0x0202BF20 +_08001BB8: .4byte 0x0202C5E0 +_08001BBC: + ldr r0, _08001BC8 @ =0x0202BF20 + movs r1, #0 + strb r1, [r0, #1] + ldr r0, _08001BCC @ =0x0400012A + strh r1, [r0] + b _08001BEE + .align 2, 0 +_08001BC8: .4byte 0x0202BF20 +_08001BCC: .4byte 0x0400012A +_08001BD0: + bl sub_1C84 + ldr r1, _08001C30 @ =0x0202BF20 + movs r0, #4 + strb r0, [r1, #1] +_08001BDA: + ldr r0, _08001C30 @ =0x0202BF20 + ldrb r0, [r0, #0xe] + cmp r0, #0 + bne _08001BE8 + adds r0, r4, #0 + bl sub_1CD4 +_08001BE8: + adds r0, r5, #0 + bl sub_1DB8 +_08001BEE: + movs r0, #0 + strb r0, [r6] + ldr r1, _08001C30 @ =0x0202BF20 + ldrb r2, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #2 + orrs r2, r0 + ldrb r0, [r1] + cmp r0, #8 + bne _08001C06 + movs r0, #0x20 + orrs r2, r0 +_08001C06: + ldrb r0, [r1, #0xc] + lsls r3, r0, #8 + ldrb r0, [r1, #0x11] + lsls r4, r0, #9 + ldrb r0, [r1, #0x12] + lsls r5, r0, #0x10 + ldrb r0, [r1, #0x13] + lsls r6, r0, #0x11 + ldrb r0, [r1, #0x14] + lsls r7, r0, #0x12 + ldrb r0, [r1, #0x15] + lsls r0, r0, #0x14 + mov ip, r0 + ldrb r0, [r1, #1] + cmp r0, #4 + bne _08001C34 + movs r0, #0x40 + orrs r0, r3 + orrs r0, r2 + b _08001C38 + .align 2, 0 +_08001C30: .4byte 0x0202BF20 +_08001C34: + adds r0, r2, #0 + orrs r0, r3 +_08001C38: + orrs r0, r4 + orrs r0, r5 + orrs r0, r6 + orrs r0, r7 + mov r2, ip + orrs r0, r2 + adds r2, r0, #0 + ldrb r0, [r1, #2] + cmp r0, #1 + bls _08001C52 + movs r0, #0x80 + lsls r0, r0, #0xf + orrs r2, r0 +_08001C52: + adds r0, r2, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + + thumb_func_start sub_1C5C +sub_1C5C: @ 0x08001C5C + ldr r0, _08001C74 @ =0x04000128 + ldr r1, [r0] + movs r0, #0xc + ands r1, r0 + ldr r2, _08001C78 @ =0x0202BF20 + cmp r1, #8 + bne _08001C7C + ldrb r0, [r2, #2] + cmp r0, #0 + bne _08001C7C + strb r1, [r2] + b _08001C80 + .align 2, 0 +_08001C74: .4byte 0x04000128 +_08001C78: .4byte 0x0202BF20 +_08001C7C: + movs r0, #0 + strb r0, [r2] +_08001C80: + bx lr + + thumb_func_start sub_1C84 +sub_1C84: @ 0x08001C84 + push {r4, lr} + ldr r0, _08001CBC @ =0x0202BF20 + ldrb r0, [r0] + cmp r0, #0 + beq _08001CB4 + ldr r1, _08001CC0 @ =0x0400010C + ldr r2, _08001CC4 @ =0x0000FF3B + adds r0, r2, #0 + strh r0, [r1] + adds r1, #2 + movs r0, #0x41 + strh r0, [r1] + ldr r0, _08001CC8 @ =0x02002822 + ldr r2, _08001CCC @ =0x04000208 + ldrh r4, [r2] + strh r4, [r0] + movs r0, #0 + strh r0, [r2] + ldr r3, _08001CD0 @ =0x04000200 + ldrh r0, [r3] + movs r1, #0x40 + orrs r0, r1 + strh r0, [r3] + strh r4, [r2] +_08001CB4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08001CBC: .4byte 0x0202BF20 +_08001CC0: .4byte 0x0400010C +_08001CC4: .4byte 0x0000FF3B +_08001CC8: .4byte 0x02002822 +_08001CCC: .4byte 0x04000208 +_08001CD0: .4byte 0x04000200 + + thumb_func_start sub_1CD4 +sub_1CD4: @ 0x08001CD4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r3, r0, #0 + ldr r2, _08001D48 @ =0x02002822 + ldr r1, _08001D4C @ =0x04000208 + ldrh r0, [r1] + strh r0, [r2] + movs r0, #0 + strh r0, [r1] + ldr r1, _08001D50 @ =0x0202BF20 + ldr r4, _08001D54 @ =0x0000021D + adds r0, r1, r4 + ldrb r4, [r0] + mov sl, r2 + adds r6, r1, #0 + cmp r4, #0x1f + bhi _08001D60 + movs r1, #0x87 + lsls r1, r1, #2 + adds r0, r6, r1 + ldrb r0, [r0] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _08001D14 + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08001D14: + movs r2, #0 + ldr r4, _08001D58 @ =0x02002828 + mov r8, r4 + ldr r1, _08001D5C @ =0x02019C2C + mov sb, r1 + lsls r5, r0, #1 + movs r0, #0x1c + adds r0, r0, r6 + mov ip, r0 + movs r7, #0 +_08001D28: + ldrh r0, [r4] + ldrh r1, [r3] + orrs r0, r1 + strh r0, [r4] + lsls r0, r2, #6 + adds r0, r5, r0 + add r0, ip + strh r1, [r0] + strh r7, [r3] + adds r3, #2 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _08001D28 + b _08001D70 + .align 2, 0 +_08001D48: .4byte 0x02002822 +_08001D4C: .4byte 0x04000208 +_08001D50: .4byte 0x0202BF20 +_08001D54: .4byte 0x0000021D +_08001D58: .4byte 0x02002828 +_08001D5C: .4byte 0x02019C2C +_08001D60: + ldrb r1, [r6, #0x14] + movs r0, #1 + orrs r0, r1 + strb r0, [r6, #0x14] + ldr r1, _08001DA8 @ =0x02002828 + mov r8, r1 + ldr r2, _08001DAC @ =0x02019C2C + mov sb, r2 +_08001D70: + mov r4, r8 + ldrh r0, [r4] + cmp r0, #0 + beq _08001D86 + ldr r1, _08001DB0 @ =0x0000021D + adds r0, r6, r1 + ldrb r1, [r0] + adds r1, #1 + movs r2, #0 + strb r1, [r0] + strh r2, [r4] +_08001D86: + ldr r1, _08001DB4 @ =0x04000208 + mov r2, sl + ldrh r0, [r2] + strh r0, [r1] + ldr r4, _08001DB0 @ =0x0000021D + adds r0, r6, r4 + ldrb r0, [r0] + mov r1, sb + strb r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08001DA8: .4byte 0x02002828 +_08001DAC: .4byte 0x02019C2C +_08001DB0: .4byte 0x0000021D +_08001DB4: .4byte 0x04000208 + + thumb_func_start sub_1DB8 +sub_1DB8: @ 0x08001DB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov ip, r0 + ldr r2, _08001E18 @ =0x02002822 + ldr r1, _08001E1C @ =0x04000208 + ldrh r0, [r1] + strh r0, [r2] + movs r0, #0 + strh r0, [r1] + ldr r1, _08001E20 @ =0x0202BF20 + ldr r3, _08001E24 @ =0x00000621 + adds r0, r1, r3 + ldrb r0, [r0] + adds r7, r1, #0 + cmp r0, #0 + bne _08001E28 + movs r1, #0 + mov r8, r7 + ldrb r6, [r7, #3] +_08001DE4: + movs r2, #0 + adds r5, r1, #1 + cmp r2, r6 + bhs _08001E08 + lsls r0, r1, #2 + mov r3, ip + adds r1, r0, r3 + movs r4, #0 + mov r0, r8 + ldrb r3, [r0, #3] +_08001DF8: + lsls r0, r2, #1 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _08001DF8 +_08001E08: + lsls r0, r5, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _08001DE4 + movs r0, #1 + strb r0, [r7, #0xc] + b _08001E9A + .align 2, 0 +_08001E18: .4byte 0x02002822 +_08001E1C: .4byte 0x04000208 +_08001E20: .4byte 0x0202BF20 +_08001E24: .4byte 0x00000621 +_08001E28: + movs r1, #0 + ldrb r2, [r7, #3] + mov sb, r2 + movs r3, #0x88 + lsls r3, r3, #2 + adds r3, r3, r7 + mov r8, r3 + mov sl, r7 +_08001E38: + movs r2, #0 + adds r5, r1, #1 + cmp r2, sb + bhs _08001E6C + lsls r0, r1, #2 + mov r3, ip + adds r6, r0, r3 + ldr r0, _08001EB0 @ =0x0202C540 + ldrb r0, [r0] + lsls r0, r0, #1 + lsls r1, r1, #6 + adds r4, r0, r1 + mov r0, sl + ldrb r3, [r0, #3] +_08001E54: + lsls r1, r2, #1 + adds r1, r1, r6 + lsls r0, r2, #9 + adds r0, r4, r0 + add r0, r8 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _08001E54 +_08001E6C: + lsls r0, r5, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _08001E38 + adds r2, r7, #0 + ldr r3, _08001EB4 @ =0x00000621 + adds r1, r2, r3 + ldrb r0, [r1] + subs r0, #1 + movs r3, #0 + strb r0, [r1] + movs r0, #0xc4 + lsls r0, r0, #3 + adds r2, r2, r0 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _08001E98 + strb r3, [r2] +_08001E98: + strb r3, [r7, #0xc] +_08001E9A: + ldr r1, _08001EB8 @ =0x04000208 + ldr r2, _08001EBC @ =0x02002822 + ldrh r0, [r2] + strh r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08001EB0: .4byte 0x0202C540 +_08001EB4: .4byte 0x00000621 +_08001EB8: .4byte 0x04000208 +_08001EBC: .4byte 0x02002822 + + thumb_func_start sub_1EC0 +sub_1EC0: @ 0x08001EC0 + push {r4, lr} + ldr r4, _08001F00 @ =0x0202BF20 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08001EDC + ldr r1, _08001F04 @ =0x02002826 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08001F42 + strb r0, [r4, #0xe] +_08001EDC: + ldrb r3, [r4] + cmp r3, #0 + beq _08001F16 + ldrb r0, [r4, #1] + cmp r0, #2 + beq _08001F10 + cmp r0, #4 + bne _08001F42 + ldrb r0, [r4, #0xd] + cmp r0, #8 + bhi _08001F08 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _08001F10 + movs r0, #1 + strb r0, [r4, #0x15] + b _08001F42 + .align 2, 0 +_08001F00: .4byte 0x0202BF20 +_08001F04: .4byte 0x02002826 +_08001F08: + ldrb r0, [r4, #0x15] + cmp r0, #0 + bne _08001F42 + strb r0, [r4, #0xd] +_08001F10: + bl sub_1FEC + b _08001F42 +_08001F16: + ldrb r2, [r4, #1] + cmp r2, #4 + beq _08001F20 + cmp r2, #2 + bne _08001F42 +_08001F20: + ldr r1, _08001F48 @ =0x02002824 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bls _08001F42 + cmp r2, #4 + bne _08001F38 + movs r0, #2 + strb r0, [r4, #0x15] +_08001F38: + cmp r2, #2 + bne _08001F42 + strb r3, [r4, #2] + strb r3, [r4, #3] + strb r3, [r4, #0x11] +_08001F42: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08001F48: .4byte 0x02002824 + + thumb_func_start sub_1F4C +sub_1F4C: @ 0x08001F4C + push {lr} + bl sub_2308 + bl sub_1FEC + pop {r0} + bx r0 + + thumb_func_start sub_1F5C +sub_1F5C: @ 0x08001F5C + push {r4, lr} + ldr r0, _08001F90 @ =0x04000128 + ldr r1, [r0] + ldr r4, _08001F94 @ =0x0202BF20 + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1e + strb r0, [r4, #2] + ldrb r0, [r4, #1] + cmp r0, #2 + beq _08001F98 + cmp r0, #4 + bne _08001FB6 + movs r0, #0x40 + ands r1, r0 + cmp r1, #0 + beq _08001F80 + movs r0, #1 + strb r0, [r4, #0x12] +_08001F80: + bl sub_20FC + bl sub_223C + bl sub_2338 + b _08001FB6 + .align 2, 0 +_08001F90: .4byte 0x04000128 +_08001F94: .4byte 0x0202BF20 +_08001F98: + bl sub_1FFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08001FB6 + ldrb r0, [r4] + cmp r0, #0 + beq _08001FB2 + movs r0, #3 + strb r0, [r4, #1] + movs r0, #8 + strb r0, [r4, #0xd] + b _08001FB6 +_08001FB2: + movs r0, #4 + strb r0, [r4, #1] +_08001FB6: + ldr r3, _08001FDC @ =0x0202BF20 + ldrb r0, [r3, #0xd] + adds r0, #1 + movs r2, #0 + strb r0, [r3, #0xd] + ldr r1, _08001FE0 @ =0x02002824 + strb r2, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bne _08001FD6 + ldr r0, _08001FE4 @ =0x0202A554 + ldr r2, _08001FE8 @ =0x00000621 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] +_08001FD6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08001FDC: .4byte 0x0202BF20 +_08001FE0: .4byte 0x02002824 +_08001FE4: .4byte 0x0202A554 +_08001FE8: .4byte 0x00000621 + + thumb_func_start sub_1FEC +sub_1FEC: @ 0x08001FEC + ldr r0, _08001FF8 @ =0x04000128 + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_08001FF8: .4byte 0x04000128 + + thumb_func_start sub_1FFC +sub_1FFC: @ 0x08001FFC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r7, #0 + ldr r5, _08002018 @ =0x0000FFFF + ldr r0, _0800201C @ =0x0202BF20 + ldrb r1, [r0, #0x10] + adds r4, r0, #0 + cmp r1, #1 + bne _0800202C + ldr r1, _08002020 @ =0x0400012A + ldr r2, _08002024 @ =0x00008FFF + b _08002030 + .align 2, 0 +_08002018: .4byte 0x0000FFFF +_0800201C: .4byte 0x0202BF20 +_08002020: .4byte 0x0400012A +_08002024: .4byte 0x00008FFF +_08002028: + movs r7, #0 + b _080020B2 +_0800202C: + ldr r1, _08002080 @ =0x0400012A + ldr r2, _08002084 @ =0x0000D13B +_08002030: + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0 + strb r0, [r4, #0x10] + ldr r0, _08002088 @ =0x04000120 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r4, #4] + str r1, [r4, #8] + movs r3, #0 + ldr r0, _0800208C @ =0x02002827 + mov sb, r0 + adds r6, r4, #0 + ldr r1, _08002090 @ =0x00008FFF + mov r8, r1 + ldr r2, _08002094 @ =0x0000FFFF + mov ip, r2 +_08002052: + lsls r0, r3, #1 + adds r1, r6, #4 + adds r0, r0, r1 + ldrh r2, [r0] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + ldr r1, _08002098 @ =0x0000D138 + cmp r0, r1 + beq _0800206C + adds r0, r2, #0 + cmp r0, r8 + bne _0800209C +_0800206C: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r2, #0 + cmp r5, r0 + bls _080020A8 + cmp r0, #0 + beq _080020A8 + adds r5, r2, #0 + b _080020A8 + .align 2, 0 +_08002080: .4byte 0x0400012A +_08002084: .4byte 0x0000D13B +_08002088: .4byte 0x04000120 +_0800208C: .4byte 0x02002827 +_08002090: .4byte 0x00008FFF +_08002094: .4byte 0x0000FFFF +_08002098: .4byte 0x0000D138 +_0800209C: + cmp r0, ip + bne _08002028 + ldrb r0, [r6, #2] + cmp r3, r0 + bne _080020A8 + movs r7, #0 +_080020A8: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _08002052 +_080020B2: + strb r7, [r4, #3] + adds r0, r7, #0 + cmp r0, #2 + bne _080020E2 + mov r1, sb + ldrb r1, [r1] + cmp r0, r1 + bne _080020D4 + ldrh r1, [r4, #4] + ldr r0, _080020D0 @ =0x00008FFF + cmp r1, r0 + bne _080020D4 + movs r0, #1 + b _080020EE + .align 2, 0 +_080020D0: .4byte 0x00008FFF +_080020D4: + ldrb r0, [r4, #3] + cmp r0, #2 + bne _080020E2 + movs r0, #3 + ands r5, r0 + adds r0, r5, #1 + b _080020E4 +_080020E2: + movs r0, #0 +_080020E4: + strb r0, [r4, #0x11] + ldrb r0, [r4, #3] + mov r2, sb + strb r0, [r2] + movs r0, #0 +_080020EE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + + thumb_func_start sub_20FC +sub_20FC: @ 0x080020FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + ldr r0, _08002158 @ =0x04000120 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0800215C @ =0x0202BF20 + ldrb r1, [r0, #0x18] + adds r6, r0, #0 + cmp r1, #0 + bne _08002164 + movs r3, #0 + ldr r7, _08002160 @ =0x02002820 + ldrb r0, [r6, #3] + cmp r3, r0 + bhs _0800214C + adds r5, r6, #0 + ldrh r1, [r6, #0x16] + adds r4, r7, #0 + adds r2, r6, #0 +_0800212C: + lsls r0, r3, #1 + add r0, sp + ldrh r0, [r0] + cmp r1, r0 + beq _08002140 + ldrb r0, [r4] + cmp r0, #0 + beq _08002140 + movs r0, #1 + strb r0, [r5, #0x13] +_08002140: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2, #3] + cmp r3, r0 + blo _0800212C +_0800214C: + movs r0, #0 + strh r0, [r6, #0x16] + movs r0, #1 + strb r0, [r7] + b _08002224 + .align 2, 0 +_08002158: .4byte 0x04000120 +_0800215C: .4byte 0x0202BF20 +_08002160: .4byte 0x02002820 +_08002164: + movs r2, #0xc4 + lsls r2, r2, #3 + adds r1, r6, r2 + adds r2, #1 + adds r0, r6, r2 + ldrb r2, [r0] + ldrb r1, [r1] + adds r0, r2, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _08002182 + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08002182: + cmp r2, #0x1f + bhi _080021F8 + movs r3, #0 + ldrb r1, [r6, #3] + cmp r3, r1 + bhs _08002200 + adds r5, r6, #0 + ldr r7, _080021F0 @ =0x0200282A + lsls r0, r0, #1 + mov ip, r0 + movs r2, #0x88 + lsls r2, r2, #2 + adds r2, r2, r6 + mov sb, r2 + ldr r0, _080021F4 @ =0x02002826 + mov r8, r0 +_080021A2: + lsls r0, r3, #1 + mov r1, sp + adds r4, r1, r0 + ldrh r2, [r4] + ldrh r1, [r5, #0x16] + adds r0, r2, r1 + strh r0, [r5, #0x16] + ldrh r0, [r7] + orrs r0, r2 + strh r0, [r7] + ldrb r0, [r5, #0x19] + lsls r0, r0, #6 + add r0, ip + lsls r1, r3, #9 + adds r0, r0, r1 + add r0, sb + strh r2, [r0] + ldrb r0, [r5, #0x18] + cmp r0, #1 + bne _080021E2 + ldrb r0, [r6, #0xe] + cmp r0, #0 + bne _080021E2 + ldrh r0, [r4] + movs r1, #0xf + ands r1, r0 + cmp r1, #1 + bne _080021E2 + strb r1, [r5, #0xe] + movs r0, #5 + mov r2, r8 + strb r0, [r2] +_080021E2: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r5, #3] + cmp r3, r0 + blo _080021A2 + b _08002200 + .align 2, 0 +_080021F0: .4byte 0x0200282A +_080021F4: .4byte 0x02002826 +_080021F8: + ldrb r1, [r6, #0x14] + movs r0, #2 + orrs r0, r1 + strb r0, [r6, #0x14] +_08002200: + ldrb r0, [r6, #0x19] + adds r0, #1 + strb r0, [r6, #0x19] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bne _08002224 + ldr r2, _08002234 @ =0x0200282A + ldrh r0, [r2] + cmp r0, #0 + beq _08002224 + ldr r1, _08002238 @ =0x00000621 + adds r0, r6, r1 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + movs r0, #0 + strh r0, [r2] +_08002224: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08002234: .4byte 0x0200282A +_08002238: .4byte 0x00000621 + + thumb_func_start sub_223C +sub_223C: @ 0x0800223C + ldr r0, _08002278 @ =0x0202BF20 + ldrb r2, [r0, #0x18] + adds r3, r0, #0 + cmp r2, #8 + bne _0800228E + ldr r1, _0800227C @ =0x0400012A + ldrh r0, [r3, #0x16] + strh r0, [r1] + ldr r1, _08002280 @ =0x02002825 + ldrb r2, [r1] + cmp r2, #0 + bne _08002288 + ldr r0, _08002284 @ =0x0000021D + adds r1, r3, r0 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + movs r0, #0x87 + lsls r0, r0, #2 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _080022FE + strb r2, [r1] + b _080022FE + .align 2, 0 +_08002278: .4byte 0x0202BF20 +_0800227C: .4byte 0x0400012A +_08002280: .4byte 0x02002825 +_08002284: .4byte 0x0000021D +_08002288: + movs r0, #0 + strb r0, [r1] + b _080022FE +_0800228E: + ldr r1, _080022B0 @ =0x02002825 + cmp r2, #0 + bne _080022A2 + ldr r2, _080022B4 @ =0x0000021D + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080022A2 + movs r0, #1 + strb r0, [r1] +_080022A2: + ldrb r0, [r1] + cmp r0, #0 + beq _080022BC + ldr r1, _080022B8 @ =0x0400012A + movs r0, #0 + strh r0, [r1] + b _080022D8 + .align 2, 0 +_080022B0: .4byte 0x02002825 +_080022B4: .4byte 0x0000021D +_080022B8: .4byte 0x0400012A +_080022BC: + ldr r2, _08002300 @ =0x0400012A + movs r1, #0x87 + lsls r1, r1, #2 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #1 + ldrb r0, [r3, #0x18] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x1c + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r2] +_080022D8: + ldrb r0, [r3, #0xe] + cmp r0, #0 + bne _080022F8 + ldrb r0, [r3, #0x18] + cmp r0, #0 + bne _080022F8 + ldr r2, _08002304 @ =0x00000621 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #3 + bls _080022F8 + ldr r0, _08002300 @ =0x0400012A + ldrh r1, [r0] + movs r2, #1 + orrs r1, r2 + strh r1, [r0] +_080022F8: + ldrb r0, [r3, #0x18] + adds r0, #1 + strb r0, [r3, #0x18] +_080022FE: + bx lr + .align 2, 0 +_08002300: .4byte 0x0400012A +_08002304: .4byte 0x00000621 + + thumb_func_start sub_2308 +sub_2308: @ 0x08002308 + ldr r0, _08002324 @ =0x0202BF20 + ldrb r0, [r0] + cmp r0, #0 + beq _08002322 + ldr r2, _08002328 @ =0x0400010E + ldrh r1, [r2] + ldr r0, _0800232C @ =0x0000FF7F + ands r0, r1 + strh r0, [r2] + ldr r1, _08002330 @ =0x0400010C + ldr r2, _08002334 @ =0x0000FF3B + adds r0, r2, #0 + strh r0, [r1] +_08002322: + bx lr + .align 2, 0 +_08002324: .4byte 0x0202BF20 +_08002328: .4byte 0x0400010E +_0800232C: .4byte 0x0000FF7F +_08002330: .4byte 0x0400010C +_08002334: .4byte 0x0000FF3B + + thumb_func_start sub_2338 +sub_2338: @ 0x08002338 + ldr r1, _08002348 @ =0x0202BF20 + ldrb r0, [r1, #0x19] + cmp r0, #8 + bne _0800234C + movs r0, #0 + strb r0, [r1, #0x18] + strb r0, [r1, #0x19] + b _0800235C + .align 2, 0 +_08002348: .4byte 0x0202BF20 +_0800234C: + ldrb r0, [r1] + cmp r0, #0 + beq _0800235C + ldr r0, _08002360 @ =0x0400010E + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] +_0800235C: + bx lr + .align 2, 0 +_08002360: .4byte 0x0400010E + + thumb_func_start sub_2364 +sub_2364: @ 0x08002364 + push {r4, r5, lr} + ldr r1, _080023A8 @ =0x0202BF20 + ldr r2, _080023AC @ =0x0000021D + adds r0, r1, r2 + movs r2, #0 + strb r2, [r0] + movs r3, #0x87 + lsls r3, r3, #2 + adds r0, r1, r3 + strb r2, [r0] + movs r0, #0 + adds r5, r1, #0 + adds r5, #0x1c + ldr r4, _080023B0 @ =0x0000EFFF +_08002380: + movs r2, #0 + adds r1, r0, #1 + lsls r3, r0, #6 +_08002386: + lsls r0, r2, #1 + adds r0, r0, r3 + adds r0, r0, r5 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _08002386 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _08002380 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080023A8: .4byte 0x0202BF20 +_080023AC: .4byte 0x0000021D +_080023B0: .4byte 0x0000EFFF + + thumb_func_start sub_23B4 +sub_23B4: @ 0x080023B4 + push {r4, r5, r6, r7, lr} + ldr r1, _08002408 @ =0x0202BF20 + ldr r2, _0800240C @ =0x00000621 + adds r0, r1, r2 + movs r2, #0 + strb r2, [r0] + movs r3, #0xc4 + lsls r3, r3, #3 + adds r0, r1, r3 + strb r2, [r0] + movs r0, #0x88 + lsls r0, r0, #2 + adds r7, r1, r0 + ldr r6, _08002410 @ =0x0000EFFF +_080023D0: + movs r0, #0 + adds r5, r2, #1 + lsls r4, r2, #9 +_080023D6: + movs r2, #0 + adds r1, r0, #1 + lsls r3, r0, #6 +_080023DC: + lsls r0, r2, #1 + adds r0, r0, r3 + adds r0, r0, r4 + adds r0, r0, r7 + strh r6, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _080023DC + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _080023D6 + lsls r0, r5, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #1 + bls _080023D0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08002408: .4byte 0x0202BF20 +_0800240C: .4byte 0x00000621 +_08002410: .4byte 0x0000EFFF + + thumb_func_start sub_2414 +sub_2414: @ 0x08002414 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r0, [sp] + str r2, [sp, #8] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #4] + ldr r4, _080024CC @ =0x03005000 + movs r7, #0 + ldr r0, _080024D0 @ =0x08057C46 + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r4, #0 + bl CpuSet + movs r1, #0 + ldr r0, [sp, #4] + cmp r7, r0 + bhs _080024B8 +_08002442: + movs r0, #0xb8 + muls r0, r1, r0 + ldr r2, [sp, #8] + adds r6, r2, r0 + ldrh r0, [r6] + adds r2, r1, #1 + mov sl, r2 + cmp r0, #0 + beq _080024AC + lsls r0, r1, #2 + ldr r1, [sp] + adds r0, r0, r1 + ldr r0, [r0] + ldrh r5, [r0] + adds r0, #2 + lsls r1, r7, #3 + ldr r4, _080024CC @ =0x03005000 + adds r1, r1, r4 + lsls r2, r5, #2 + bl CpuSet + movs r3, #0 + cmp r3, r5 + bhs _080024AC + mov r8, r4 + ldr r2, _080024D4 @ =0x000001FF + mov sb, r2 + movs r0, #0xff + mov ip, r0 +_0800247C: + adds r2, r7, #0 + lsls r0, r2, #3 + mov r1, r8 + adds r4, r0, r1 + lsls r1, r3, #3 + adds r1, #8 + adds r1, r6, r1 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + strh r2, [r1] + ldrh r2, [r4, #2] + mov r0, sb + ands r0, r2 + strh r0, [r1, #2] + ldrh r2, [r4] + mov r0, ip + ands r0, r2 + strh r0, [r1, #4] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r5 + blo _0800247C +_080024AC: + mov r2, sl + lsls r0, r2, #0x10 + lsrs r1, r0, #0x10 + ldr r0, [sp, #4] + cmp r1, r0 + blo _08002442 +_080024B8: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080024CC: .4byte 0x03005000 +_080024D0: .4byte 0x08057C46 +_080024D4: .4byte 0x000001FF + + thumb_func_start nullsub_16 +nullsub_16: @ 0x080024D8 + bx lr + + thumb_func_start sub_24DC +sub_24DC: @ 0x080024DC + ldr r1, _08002504 @ =0x04000134 + movs r0, #0 + strh r0, [r1] + subs r1, #0xc + strh r0, [r1] + ldr r2, _08002508 @ =0x0400012A + strh r0, [r2] + subs r1, #8 + strh r0, [r1] + strh r0, [r2] + strh r0, [r1] + strh r0, [r1] + adds r1, #2 + strh r0, [r1] + adds r1, #2 + strh r0, [r1] + adds r1, #2 + strh r0, [r1] + bx lr + .align 2, 0 +_08002504: .4byte 0x04000134 +_08002508: .4byte 0x0400012A + + thumb_func_start sub_250C +sub_250C: @ 0x0800250C + ldr r2, _08002528 @ =0x04000208 + movs r0, #0 + strh r0, [r2] + ldr r1, _0800252C @ =0x04000200 + ldr r3, _08002530 @ =0x00002001 + adds r0, r3, #0 + strh r0, [r1] + ldr r1, _08002534 @ =0x04000004 + movs r0, #8 + strh r0, [r1] + movs r0, #1 + strh r0, [r2] + bx lr + .align 2, 0 +_08002528: .4byte 0x04000208 +_0800252C: .4byte 0x04000200 +_08002530: .4byte 0x00002001 +_08002534: .4byte 0x04000004 + + thumb_func_start sub_2538 +sub_2538: @ 0x08002538 + ldr r0, _08002554 @ =0x0202ADD0 + movs r1, #0 + str r1, [r0] + ldr r0, _08002558 @ =0x0201A444 + movs r2, #0 + strh r1, [r0] + ldr r0, _0800255C @ =0x0202BDF0 + str r1, [r0] + ldr r0, _08002560 @ =0x0201C1AC + strb r2, [r0] + ldr r0, _08002564 @ =0x0202ADDC + strb r2, [r0] + bx lr + .align 2, 0 +_08002554: .4byte 0x0202ADD0 +_08002558: .4byte 0x0201A444 +_0800255C: .4byte 0x0202BDF0 +_08002560: .4byte 0x0201C1AC +_08002564: .4byte 0x0202ADDC + + thumb_func_start sub_2568 +sub_2568: @ 0x08002568 + push {r4, lr} + bl sub_24DC + ldr r4, _08002594 @ =0x04000208 + movs r0, #0 + strh r0, [r4] + bl sub_8BC + bl sub_8FC + ldr r1, _08002598 @ =0x04000200 + ldr r2, _0800259C @ =0x00002005 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080025A0 @ =0x04000004 + movs r0, #0x28 + strh r0, [r1] + movs r0, #1 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08002594: .4byte 0x04000208 +_08002598: .4byte 0x04000200 +_0800259C: .4byte 0x00002005 +_080025A0: .4byte 0x04000004 |