#include "asm/constants/gba_constants.inc" #include "asm/macros.inc" .syntax unified .text thumb_func_start sub_800D224 sub_800D224: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 str r0, [sp] movs r6, 0 ldr r0, _0800D280 mov r12, r0 ldr r1, _0800D284 mov r10, r1 movs r2, 0x2 mov r9, r2 _0800D240: ldr r1, [sp] asrs r1, r6 movs r0, 0x1 ands r1, r0 adds r3, r6, 0x1 mov r8, r3 cmp r1, 0 beq _0800D2CE lsls r0, r6, 2 ldr r1, _0800D288 adds r2, r0, r1 ldr r1, [r2] adds r5, r0, 0 cmp r1, 0x1 bne _0800D2CE lsls r0, r6, 5 adds r0, r6 lsls r0, 3 ldr r1, _0800D28C adds r7, r0, r1 movs r4, 0 mov r3, r12 adds r0, r5, r3 ldr r1, [r0] mov r3, r10 ldr r0, [r3] lsrs r0, 1 cmp r1, r0 bcc _0800D290 mov r0, r9 str r0, [r2] b _0800D2C4 .align 2, 0 _0800D280: .4byte gUnknown_202DB58 _0800D284: .4byte gUnknown_202DB74 _0800D288: .4byte gUnknown_202DB60 _0800D28C: .4byte gUnknown_202D910 _0800D290: mov r1, r12 adds r0, r5, r1 ldr r3, [r0] adds r2, r3, r4 lsls r2, 1 adds r2, r7 lsls r0, r4, 1 lsls r1, r6, 4 adds r0, r1 ldr r1, _0800D2E4 adds r0, r1 ldrh r0, [r0] strh r0, [r2] adds r4, 0x1 cmp r4, 0x7 bhi _0800D2C4 adds r1, r3, r4 mov r2, r10 ldr r0, [r2] lsrs r0, 1 cmp r1, r0 bcc _0800D290 ldr r3, _0800D2E8 adds r0, r5, r3 mov r1, r9 str r1, [r0] _0800D2C4: mov r2, r12 adds r1, r5, r2 ldr r0, [r1] adds r0, 0x8 str r0, [r1] _0800D2CE: mov r6, r8 cmp r6, 0x1 ble _0800D240 add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800D2E4: .4byte gUnknown_202DB30 _0800D2E8: .4byte gUnknown_202DB60 thumb_func_end sub_800D224 thumb_func_start sub_800D2EC sub_800D2EC: push {r4-r7,lr} ldr r0, _0800D318 mov r12, r0 ldr r3, _0800D31C adds r7, r3, 0 ldr r6, _0800D320 ldr r2, _0800D324 adds r5, r2, 0 adds r5, 0xE ldr r4, _0800D328 _0800D300: ldr r0, [r4] lsrs r0, 1 ldr r1, [r7] cmp r1, r0 bcs _0800D32C lsls r0, r1, 1 add r0, r12 ldrh r0, [r0] strh r0, [r2] adds r0, r1, 0x1 str r0, [r3] b _0800D32E .align 2, 0 _0800D318: .4byte gUnknown_202D808 _0800D31C: .4byte gUnknown_202DB50 _0800D320: .4byte 0x0000fcfc _0800D324: .4byte gUnknown_202DB20 _0800D328: .4byte gUnknown_202DB74 _0800D32C: strh r6, [r2] _0800D32E: adds r2, 0x2 cmp r2, r5 bls _0800D300 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800D2EC thumb_func_start sub_800D33C sub_800D33C: push {r4,r5,lr} movs r5, 0 ldr r1, _0800D370 ldr r4, _0800D374 ldr r0, [r4] str r0, [r1] ldr r0, _0800D378 ldr r1, _0800D37C bl sub_800D820 adds r2, r0, 0 str r2, [r4] ldr r1, _0800D380 ldrb r0, [r1] cmp r0, 0 bne _0800D384 movs r0, 0x80 lsls r0, 1 ands r0, r2 cmp r0, 0 beq _0800D36A movs r0, 0x1 strb r0, [r1] _0800D36A: movs r0, 0 b _0800D40E .align 2, 0 _0800D370: .4byte gUnknown_202DB6C _0800D374: .4byte gUnknown_202DB68 _0800D378: .4byte gUnknown_202DB20 _0800D37C: .4byte gUnknown_202DB30 _0800D380: .4byte gUnknown_202DB70 _0800D384: movs r0, 0x80 lsls r0, 5 ands r0, r2 cmp r0, 0 beq _0800D392 movs r0, 0x3 b _0800D40E _0800D392: movs r0, 0x80 lsls r0, 6 ands r0, r2 cmp r0, 0 beq _0800D3A0 movs r0, 0x4 b _0800D40E _0800D3A0: movs r0, 0x80 lsls r0, 8 ands r0, r2 cmp r0, 0 beq _0800D3BA lsls r1, r2, 28 lsrs r1, 28 lsls r0, r2, 20 lsrs r0, 28 cmp r1, r0 beq _0800D3BA movs r0, 0x5 b _0800D40E _0800D3BA: ldr r4, _0800D3F8 ldr r0, _0800D3FC ldr r2, [r4] ldr r0, [r0] orrs r0, r2 movs r1, 0xE ands r0, r1 cmp r0, 0 beq _0800D40C ldr r0, _0800D400 ldr r1, [r0] lsls r1, 26 lsrs r1, 30 movs r0, 0x1 lsls r0, r1 ands r2, r0 cmp r2, 0 beq _0800D40C bl sub_800D1E0 ldr r0, [r4] bl sub_800D224 ldr r0, [r4] bl sub_800D1C0 lsls r0, 24 cmp r0, 0 beq _0800D404 movs r0, 0x2 b _0800D40E .align 2, 0 _0800D3F8: .4byte gUnknown_202DB68 _0800D3FC: .4byte gUnknown_202DB6C _0800D400: .4byte 0x04000128 _0800D404: ldr r0, [r4] bl sub_800D2EC movs r5, 0x1 _0800D40C: adds r0, r5, 0 _0800D40E: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_800D33C thumb_func_start sub_800D414 sub_800D414: push {r4,lr} ldr r0, _0800D468 movs r4, 0 str r4, [r0] ldr r0, _0800D46C str r4, [r0] ldr r0, _0800D470 strb r4, [r0] ldr r0, _0800D474 str r4, [r0] ldr r0, _0800D478 str r4, [r0] str r4, [r0, 0x4] ldr r0, _0800D47C movs r1, 0x10 bl MemoryClear16 ldr r0, _0800D480 movs r1, 0x20 bl MemoryClear16 ldr r0, _0800D484 str r4, [r0] ldr r0, _0800D488 str r4, [r0] str r4, [r0, 0x4] ldr r0, _0800D48C movs r1, 0x84 lsls r1, 1 bl MemoryClear16 ldr r0, _0800D490 movs r1, 0x84 lsls r1, 2 bl MemoryClear16 bl sub_800D6AC pop {r4} pop {r0} bx r0 .align 2, 0 _0800D468: .4byte gUnknown_202DB68 _0800D46C: .4byte gUnknown_202DB6C _0800D470: .4byte gUnknown_202DB70 _0800D474: .4byte gUnknown_202DB74 _0800D478: .4byte gUnknown_202DB60 _0800D47C: .4byte gUnknown_202DB20 _0800D480: .4byte gUnknown_202DB30 _0800D484: .4byte gUnknown_202DB50 _0800D488: .4byte gUnknown_202DB58 _0800D48C: .4byte gUnknown_202D808 _0800D490: .4byte gUnknown_202D910 thumb_func_end sub_800D414 thumb_func_start sub_800D494 sub_800D494: push {r4,lr} ldr r0, _0800D4E4 movs r4, 0 str r4, [r0] ldr r0, _0800D4E8 str r4, [r0] ldr r0, _0800D4EC strb r4, [r0] ldr r0, _0800D4F0 str r4, [r0] ldr r0, _0800D4F4 str r4, [r0] str r4, [r0, 0x4] ldr r0, _0800D4F8 movs r1, 0x10 bl MemoryClear16 ldr r0, _0800D4FC movs r1, 0x20 bl MemoryClear16 ldr r0, _0800D500 str r4, [r0] ldr r0, _0800D504 str r4, [r0] str r4, [r0, 0x4] ldr r0, _0800D508 movs r1, 0x84 lsls r1, 1 bl MemoryClear16 ldr r0, _0800D50C movs r1, 0x84 lsls r1, 2 bl MemoryClear16 pop {r4} pop {r0} bx r0 .align 2, 0 _0800D4E4: .4byte gUnknown_202DB68 _0800D4E8: .4byte gUnknown_202DB6C _0800D4EC: .4byte gUnknown_202DB70 _0800D4F0: .4byte gUnknown_202DB74 _0800D4F4: .4byte gUnknown_202DB60 _0800D4F8: .4byte gUnknown_202DB20 _0800D4FC: .4byte gUnknown_202DB30 _0800D500: .4byte gUnknown_202DB50 _0800D504: .4byte gUnknown_202DB58 _0800D508: .4byte gUnknown_202D808 _0800D50C: .4byte gUnknown_202D910 thumb_func_end sub_800D494 thumb_func_start sub_800D510 sub_800D510: ldr r1, _0800D51C movs r2, 0x80 lsls r2, 8 adds r0, r2, 0 strh r0, [r1] bx lr .align 2, 0 _0800D51C: .4byte 0x04000134 thumb_func_end sub_800D510 thumb_func_start sub_800D520 sub_800D520: push {r4,r5,lr} sub sp, 0x4 mov r1, sp movs r0, 0x1 strh r0, [r1] ldr r0, _0800D568 ldrb r1, [r0] movs r0, 0x30 ands r0, r1 cmp r0, 0 bne _0800D55C mov r1, sp mov r0, sp ldrh r0, [r0] subs r0, 0x1 strh r0, [r1] ldrh r0, [r1] ldr r1, _0800D56C cmp r0, r1 beq _0800D55C mov r4, sp adds r5, r1, 0 _0800D54C: bl VBlankIntrWait ldrh r0, [r4] subs r0, 0x1 strh r0, [r4] ldrh r0, [r4] cmp r0, r5 bne _0800D54C _0800D55C: bl sub_800D7D0 add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800D568: .4byte 0x04000128 _0800D56C: .4byte 0x0000ffff thumb_func_end sub_800D520 thumb_func_start sub_800D570 sub_800D570: push {lr} bl sub_800D7B8 pop {r0} bx r0 thumb_func_end sub_800D570 thumb_func_start sub_800D57C sub_800D57C: ldr r0, _0800D584 ldrb r0, [r0] bx lr .align 2, 0 _0800D584: .4byte gUnknown_202DB70 thumb_func_end sub_800D57C thumb_func_start sub_800D588 sub_800D588: ldr r0, _0800D598 ldr r0, [r0] movs r1, 0x80 ands r0, r1 lsls r0, 24 lsrs r0, 24 bx lr .align 2, 0 _0800D598: .4byte gUnknown_202DB68 thumb_func_end sub_800D588 thumb_func_start sub_800D59C sub_800D59C: push {r4-r6,lr} adds r3, r0, 0 adds r2, r1, 0 movs r5, 0 ldr r6, _0800D5F4 ldr r4, _0800D5F8 adds r0, r2, 0x1 movs r1, 0x2 negs r1, r1 ands r0, r1 adds r0, 0x8 str r0, [r4] adds r0, r6, 0x4 adds r1, r3, 0 bl CpuCopy ldr r0, _0800D5FC strh r0, [r6] strh r5, [r6, 0x2] movs r2, 0 ldr r0, [r4] lsrs r0, 1 subs r0, 0x2 cmp r5, r0 bcs _0800D5DE adds r3, r0, 0 adds r1, r6, 0 _0800D5D2: ldrh r0, [r1] adds r5, r0 adds r1, 0x2 adds r2, 0x1 cmp r2, r3 bcc _0800D5D2 _0800D5DE: ldr r2, _0800D5F4 mvns r1, r5 ldr r0, _0800D5F8 ldr r0, [r0] lsrs r0, 1 subs r1, r0 strh r1, [r2, 0x2] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800D5F4: .4byte gUnknown_202D808 _0800D5F8: .4byte gUnknown_202DB74 _0800D5FC: .4byte 0x0000fdfd thumb_func_end sub_800D59C thumb_func_start sub_800D600 sub_800D600: push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0 ldr r0, _0800D64C mov r8, r0 ldr r7, _0800D650 ldr r0, [r7] lsrs r0, 1 subs r0, 0x2 mov r12, r0 movs r5, 0 _0800D618: movs r4, 0 mov r2, r8 adds r1, r5, r2 movs r3, 0 cmp r4, r12 bcs _0800D636 ldr r0, [r7] lsrs r0, 1 subs r2, r0, 0x2 _0800D62A: ldrh r0, [r1] adds r4, r0 adds r1, 0x2 adds r3, 0x1 cmp r3, r2 bcc _0800D62A _0800D636: ldr r0, [r7] lsrs r0, 1 ldr r2, _0800D654 adds r1, r2, 0 subs r1, r0 lsls r0, r4, 16 lsls r1, 16 cmp r0, r1 beq _0800D658 movs r0, 0 b _0800D666 .align 2, 0 _0800D64C: .4byte gUnknown_202D910 _0800D650: .4byte gUnknown_202DB74 _0800D654: .4byte 0x0000ffff _0800D658: movs r0, 0x84 lsls r0, 1 adds r5, r0 adds r6, 0x1 cmp r6, 0x1 bls _0800D618 movs r0, 0x1 _0800D666: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_800D600 thumb_func_start sub_800D670 sub_800D670: push {lr} adds r3, r1, 0 lsls r1, r0, 5 adds r1, r0 lsls r1, 3 ldr r0, _0800D688 adds r1, r0 adds r0, r3, 0 bl CpuCopy pop {r0} bx r0 .align 2, 0 _0800D688: .4byte gUnknown_202D914 thumb_func_end sub_800D670 thumb_func_start sub_800D68C sub_800D68C: push {lr} adds r1, r0, 0 lsls r0, r1, 5 adds r0, r1 lsls r0, 3 ldr r1, _0800D6A8 adds r0, r1 movs r2, 0x84 lsls r2, 1 movs r1, 0 bl MemoryFill8 pop {r0} bx r0 .align 2, 0 _0800D6A8: .4byte gUnknown_202D910 thumb_func_end sub_800D68C thumb_func_start sub_800D6AC sub_800D6AC: push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 ldr r3, _0800D784 movs r4, 0 strh r4, [r3] ldr r2, _0800D788 ldrh r1, [r2] ldr r0, _0800D78C ands r0, r1 strh r0, [r2] movs r0, 0x1 strh r0, [r3] ldr r0, _0800D790 strh r4, [r0] subs r2, 0xD8 movs r0, 0x80 lsls r0, 6 str r0, [r2] ldrh r0, [r2] ldr r3, _0800D794 adds r1, r3, 0 orrs r0, r1 strh r0, [r2] movs r0, 0 str r0, [sp] ldr r4, _0800D798 ldr r2, _0800D79C mov r0, sp adds r1, r4, 0 bl CpuSet ldr r0, _0800D7A0 ldr r1, _0800D7A4 ldr r2, _0800D7A8 bl CpuSet ldr r0, _0800D7AC ldr r1, _0800D7B0 ldr r2, _0800D7B4 bl CpuSet movs r0, 0x1 negs r0, r0 str r0, [r4, 0x14] adds r0, r4, 0 adds r0, 0x60 str r0, [r4, 0x28] adds r0, 0x18 str r0, [r4, 0x2C] movs r3, 0 adds r5, r4, 0 adds r5, 0xC0 movs r2, 0 movs r7, 0x30 adds r7, r4 mov r8, r7 movs r0, 0x90 adds r0, r4 mov r12, r0 adds r6, r4, 0 adds r6, 0xA8 movs r7, 0x40 adds r7, r4 mov r9, r7 _0800D732: lsls r1, r3, 2 mov r7, r12 adds r0, r2, r7 mov r7, r8 adds r7, 0x4 mov r8, r7 subs r7, 0x4 stm r7!, {r0} adds r0, r2, r6 mov r7, r9 adds r7, 0x4 mov r9, r7 subs r7, 0x4 stm r7!, {r0} adds r0, r4, 0 adds r0, 0x50 adds r1, r0 str r5, [r1] adds r5, 0x48 adds r2, 0x48 adds r3, 0x1 cmp r3, 0x1 ble _0800D732 movs r0, 0 ldr r3, _0800D784 strh r0, [r3] ldr r2, _0800D788 ldrh r0, [r2] movs r1, 0x80 orrs r0, r1 strh r0, [r2] movs r0, 0x1 strh r0, [r3] add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800D784: .4byte 0x04000208 _0800D788: .4byte 0x04000200 _0800D78C: .4byte 0x0000ff3f _0800D790: .4byte 0x04000134 _0800D794: .4byte 0x00004003 _0800D798: .4byte gUnknown_202DCF8 _0800D79C: .4byte 0x05000048 _0800D7A0: .4byte sub_80001E8 _0800D7A4: .4byte gUnknown_202DB78 _0800D7A8: .4byte 0x04000010 _0800D7AC: .4byte sub_8000228 _0800D7B0: .4byte gUnknown_202DBB8 _0800D7B4: .4byte 0x04000050 thumb_func_end sub_800D6AC thumb_func_start sub_800D7B8 sub_800D7B8: push {lr} ldr r1, _0800D7CC ldrb r0, [r1] cmp r0, 0 beq _0800D7C6 movs r0, 0x1 strb r0, [r1, 0x8] _0800D7C6: pop {r0} bx r0 .align 2, 0 _0800D7CC: .4byte gUnknown_202DCF8 thumb_func_end sub_800D7B8 thumb_func_start sub_800D7D0 sub_800D7D0: push {r4,lr} ldr r3, _0800D804 movs r4, 0 strh r4, [r3] ldr r2, _0800D808 ldrh r1, [r2] ldr r0, _0800D80C ands r0, r1 strh r0, [r2] movs r0, 0x1 strh r0, [r3] ldr r1, _0800D810 ldr r2, _0800D814 adds r0, r2, 0 strh r0, [r1] subs r1, 0x1C ldr r0, _0800D818 str r0, [r1] adds r1, 0xF6 movs r0, 0xC0 strh r0, [r1] ldr r0, _0800D81C strb r4, [r0, 0x8] pop {r4} pop {r0} bx r0 .align 2, 0 _0800D804: .4byte 0x04000208 _0800D808: .4byte 0x04000200 _0800D80C: .4byte 0x0000ff3f _0800D810: .4byte 0x04000128 _0800D814: .4byte 0x00002003 _0800D818: .4byte 0x0000b1fc _0800D81C: .4byte gUnknown_202DCF8 thumb_func_end sub_800D7D0 thumb_func_start sub_800D820 sub_800D820: push {r4-r7,lr} mov r7, r8 push {r7} mov r8, r0 mov r12, r1 ldr r5, _0800D844 ldr r6, [r5] ldr r0, _0800D848 ldrb r2, [r0, 0x1] adds r7, r0, 0 cmp r2, 0x1 beq _0800D8AA cmp r2, 0x1 bgt _0800D84C cmp r2, 0 beq _0800D852 b _0800D8E8 .align 2, 0 _0800D844: .4byte 0x04000128 _0800D848: .4byte gUnknown_202DCF8 _0800D84C: cmp r2, 0x2 beq _0800D8DC b _0800D8E8 _0800D852: ldr r1, [r7, 0x14] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _0800D8A6 movs r0, 0x88 adds r4, r6, 0 ands r4, r0 cmp r4, 0x8 bne _0800D8E8 movs r1, 0x4 adds r0, r6, 0 ands r0, r1 lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0800D8A6 ldr r3, _0800D8C0 strh r0, [r3] ldr r2, _0800D8C4 ldrh r1, [r2] ldr r0, _0800D8C8 ands r0, r1 strh r0, [r2] ldrh r0, [r2] movs r1, 0x40 orrs r0, r1 strh r0, [r2] movs r0, 0x1 strh r0, [r3] ldrb r1, [r5, 0x1] movs r0, 0x41 negs r0, r0 ands r0, r1 strb r0, [r5, 0x1] ldr r1, _0800D8CC movs r0, 0xC0 strh r0, [r1] subs r1, 0xF6 ldr r0, _0800D8D0 str r0, [r1] strb r4, [r7] _0800D8A6: movs r0, 0x1 strb r0, [r7, 0x1] _0800D8AA: ldr r1, _0800D8D4 ldrb r0, [r1, 0x2] cmp r0, 0 beq _0800D8DC ldrb r0, [r1, 0xA] cmp r0, 0x7 bhi _0800D8D8 adds r0, 0x1 strb r0, [r1, 0xA] b _0800D8DC .align 2, 0 _0800D8C0: .4byte 0x04000208 _0800D8C4: .4byte 0x04000200 _0800D8C8: .4byte 0x0000ff7f _0800D8CC: .4byte 0x04000202 _0800D8D0: .4byte 0x0000b1fc _0800D8D4: .4byte gUnknown_202DCF8 _0800D8D8: movs r0, 0x2 strb r0, [r1, 0x1] _0800D8DC: mov r0, r12 bl sub_800D9B8 mov r0, r8 bl sub_800D944 _0800D8E8: ldr r1, _0800D908 ldrb r0, [r1, 0xB] adds r0, 0x1 strb r0, [r1, 0xB] ldrb r3, [r1, 0x3] ldrb r0, [r1, 0x2] lsls r2, r0, 8 ldrb r0, [r1] adds r7, r1, 0 cmp r0, 0x8 bne _0800D90C movs r0, 0x80 orrs r0, r2 orrs r0, r3 b _0800D910 .align 2, 0 _0800D908: .4byte gUnknown_202DCF8 _0800D90C: adds r0, r3, 0 orrs r0, r2 _0800D910: adds r2, r0, 0 ldrb r0, [r7, 0x9] cmp r0, 0 beq _0800D91E movs r0, 0x80 lsls r0, 5 orrs r2, r0 _0800D91E: ldrb r0, [r7, 0xA] lsrs r0, 3 lsls r1, r0, 15 lsls r0, r6, 26 lsrs r0, 30 cmp r0, 0x1 bls _0800D936 movs r0, 0x80 lsls r0, 6 orrs r0, r1 orrs r0, r2 b _0800D93A _0800D936: adds r0, r2, 0 orrs r0, r1 _0800D93A: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_800D820 thumb_func_start sub_800D944 sub_800D944: push {r4,r5,lr} movs r5, 0 ldr r4, _0800D9AC ldr r2, [r4, 0x28] ldrb r1, [r4, 0xB] strb r1, [r2] ldr r3, [r4, 0x28] ldrb r1, [r4, 0x2] ldrb r2, [r4, 0x3] eors r1, r2 strb r1, [r3, 0x1] ldr r1, [r4, 0x28] strh r5, [r1, 0x2] ldr r1, [r4, 0x28] adds r1, 0x4 ldr r2, _0800D9B0 bl CpuSet movs r2, 0 ldr r1, [r4, 0x28] _0800D96C: ldrh r0, [r1] adds r5, r0 adds r1, 0x2 adds r2, 0x1 cmp r2, 0x9 bls _0800D96C adds r2, r4, 0 ldr r1, [r2, 0x28] mvns r0, r5 subs r0, 0xC strh r0, [r1, 0x2] ldrb r0, [r2] cmp r0, 0 beq _0800D98E ldr r1, _0800D9B4 movs r0, 0 strh r0, [r1] _0800D98E: movs r0, 0x1 negs r0, r0 str r0, [r4, 0x14] ldrb r0, [r4] cmp r0, 0 beq _0800D9A6 ldrb r0, [r4, 0x8] cmp r0, 0 beq _0800D9A6 ldr r1, _0800D9B4 movs r0, 0xC0 strh r0, [r1] _0800D9A6: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800D9AC: .4byte gUnknown_202DCF8 _0800D9B0: .4byte 0x04000004 _0800D9B4: .4byte 0x0400010e thumb_func_end sub_800D944 thumb_func_start sub_800D9B8 sub_800D9B8: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC str r0, [sp, 0x8] ldr r0, _0800DA68 bl _call_via_r0 str r0, [sp] ldr r1, _0800DA6C movs r0, 0 strb r0, [r1, 0x3] movs r6, 0 add r0, sp, 0x4 mov r10, r0 mov r9, r1 movs r1, 0x50 add r1, r9 mov r8, r1 _0800D9E2: movs r3, 0 movs r2, 0 lsls r5, r6, 2 mov r0, sp adds r4, r0, r6 adds r7, r6, 0x1 mov r1, r8 adds r0, r5, r1 ldr r1, [r0] _0800D9F4: ldrh r0, [r1] adds r3, r0 adds r1, 0x2 adds r2, 0x1 cmp r2, 0x9 bls _0800D9F4 ldrb r0, [r4] cmp r0, 0 beq _0800DA32 lsls r0, r3, 16 asrs r0, 16 movs r2, 0xD negs r2, r2 cmp r0, r2 bne _0800DA32 mov r1, r8 adds r0, r5, r1 ldr r0, [r0] adds r0, 0x4 lsls r1, r6, 4 ldr r2, [sp, 0x8] adds r1, r2, r1 ldr r2, _0800DA70 bl CpuSet movs r0, 0x1 lsls r0, r6 mov r2, r9 ldrb r1, [r2, 0x3] orrs r0, r1 strb r0, [r2, 0x3] _0800DA32: movs r0, 0 str r0, [sp, 0x4] mov r1, r8 adds r0, r5, r1 ldr r1, [r0] adds r1, 0x4 mov r0, r10 ldr r2, _0800DA74 bl CpuSet adds r6, r7, 0 cmp r6, 0x1 ble _0800D9E2 ldr r1, _0800DA6C ldrb r0, [r1, 0x2] ldrb r2, [r1, 0x3] orrs r0, r2 strb r0, [r1, 0x2] ldrb r0, [r1, 0x3] add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800DA68: .4byte gUnknown_202DB78 _0800DA6C: .4byte gUnknown_202DCF8 _0800DA70: .4byte 0x04000004 _0800DA74: .4byte 0x05000004 thumb_func_end sub_800D9B8 .align 2, 0 @ Don't pad with nop.