diff options
-rw-r--r-- | asm/code_80035F0.s | 1 | ||||
-rw-r--r-- | asm/code_803D110.s | 5477 | ||||
-rw-r--r-- | asm/code_8040094.s | 3385 | ||||
-rw-r--r-- | asm/code_8041AD0.s | 1757 | ||||
-rw-r--r-- | asm/memory.s | 33 | ||||
-rwxr-xr-x | ld_script.txt | 4 | ||||
-rw-r--r-- | src/code_8040094.c | 26 | ||||
-rw-r--r-- | src/code_8041AD0.c | 183 | ||||
-rw-r--r-- | src/memory.c | 33 |
9 files changed, 5389 insertions, 5510 deletions
diff --git a/asm/code_80035F0.s b/asm/code_80035F0.s index 1f51a2b..19bb1c3 100644 --- a/asm/code_80035F0.s +++ b/asm/code_80035F0.s @@ -5,6 +5,7 @@ .text + @ Unused thumb_func_start sub_80035F8 sub_80035F8: push {lr} diff --git a/asm/code_803D110.s b/asm/code_803D110.s index 7e74795..88bbc1f 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -6088,5481 +6088,4 @@ _0804008C: .4byte 0x0001820b _08040090: .4byte gUnknown_80FD040 thumb_func_end sub_804002C - thumb_func_start sub_8040094 -sub_8040094: - push {lr} - ldr r1, _080400C8 - ldr r1, [r1] - ldr r2, _080400CC - adds r1, r2 - strb r0, [r1] - bl sub_803F7BC - bl sub_80060EC - ldr r0, _080400D0 - ldr r0, [r0] - bl sub_8094FB4 - bl sub_800CB20 - bl sub_800485C - bl xxx_call_update_bg_sound_input - bl sub_8083F58 - bl sub_8011860 - pop {r0} - bx r0 - .align 2, 0 -_080400C8: .4byte gUnknown_203B418 -_080400CC: .4byte 0x00018217 -_080400D0: .4byte gUnknown_203B47C - thumb_func_end sub_8040094 - - thumb_func_start sub_80400D4 -sub_80400D4: - push {r4,lr} - ldr r0, _08040114 - ldr r4, [r0] - movs r0, 0xC1 - lsls r0, 9 - adds r3, r4, r0 - ldr r0, [r3] - cmp r0, 0 - beq _0804010C - cmp r0, 0x1E - ble _080400EC - movs r0, 0x1F -_080400EC: - ldr r1, _08040118 - adds r2, r4, r1 - ldr r1, _0804011C - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r3] - subs r0, 0x1 - str r0, [r3] - cmp r0, 0 - bne _0804010C - ldr r1, _08040120 - adds r0, r4, r1 - ldr r0, [r0] - str r0, [r3] -_0804010C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08040114: .4byte gUnknown_203B418 -_08040118: .4byte 0x000181fc -_0804011C: .4byte gUnknown_80F6568 -_08040120: .4byte 0x00018204 - thumb_func_end sub_80400D4 - - thumb_func_start sub_8040124 -sub_8040124: - ldr r1, _0804012C - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_0804012C: .4byte gUnknown_202EE01 - thumb_func_end sub_8040124 - - thumb_func_start sub_8040130 -sub_8040130: - push {lr} - ldr r0, _08040144 - ldr r1, _08040148 - bl OpenFileAndGetFileDataPtr - ldr r1, _0804014C - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08040144: .4byte gUnknown_80F6604 -_08040148: .4byte gUnknown_83B0000 -_0804014C: .4byte gUnknown_202EE04 - thumb_func_end sub_8040130 - - thumb_func_start sub_8040150 -sub_8040150: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0 - ldr r2, _080401EC -_08040164: - movs r4, 0 - lsls r1, r0, 3 - adds r3, r0, 0x1 - mov r8, r3 - subs r1, r0 - lsls r0, r1, 7 - ldr r3, _080401F0 - adds r6, r0, r3 - lsls r5, r1, 2 -_08040176: - ldr r0, [r2] - adds r0, r6 - lsls r1, r4, 5 - adds r0, r1 - movs r1, 0x20 - str r2, [sp] - bl CpuClear - ldr r2, [sp] - ldr r0, [r2] - adds r1, r4, r5 - ldr r3, _080401F4 - adds r0, r3 - adds r0, r1 - movs r7, 0 - strb r7, [r0] - adds r4, 0x1 - cmp r4, 0x1B - ble _08040176 - mov r0, r8 - cmp r0, 0xF - ble _08040164 - mov r0, r9 - cmp r0, 0 - bne _080401B0 - ldr r1, _080401F8 - movs r0, 0x64 - strh r0, [r1] - strh r0, [r1, 0x2] -_080401B0: - ldr r3, _080401EC - ldr r0, [r3] - ldr r2, _080401FC - adds r1, r0, r2 - str r7, [r1] - ldr r1, _08040200 - adds r0, r1 - movs r2, 0x1 - strb r2, [r0] - ldr r0, [r3] - ldr r3, _08040204 - adds r0, r3 - strb r7, [r0] - ldr r0, _08040208 - strb r2, [r0] - ldr r1, _0804020C - ldr r0, _08040210 - str r0, [r1] - ldr r0, _08040214 - strb r2, [r0] - bl sub_8040238 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080401EC: .4byte gUnknown_203B418 -_080401F0: .4byte 0x0001822c -_080401F4: .4byte 0x0001ba2c -_080401F8: .4byte gUnknown_203B410 -_080401FC: .4byte 0x0001bdcc -_08040200: .4byte 0x0001bdd0 -_08040204: .4byte 0x0001bdd2 -_08040208: .4byte gUnknown_202EE00 -_0804020C: .4byte gUnknown_202EE08 -_08040210: .4byte 0x06001700 -_08040214: .4byte gUnknown_202EE01 - thumb_func_end sub_8040150 - - thumb_func_start sub_8040218 -sub_8040218: - push {lr} - ldr r0, _08040230 - ldr r0, [r0] - cmp r0, 0 - beq _08040226 - bl CloseFile -_08040226: - bl sub_8040124 - pop {r0} - bx r0 - .align 2, 0 -_08040230: .4byte gUnknown_202EE04 - thumb_func_end sub_8040218 - - thumb_func_start nullsub_203 -nullsub_203: - bx lr - thumb_func_end nullsub_203 - - thumb_func_start sub_8040238 -sub_8040238: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _0804026C - ldr r0, [r1] - cmp r0, 0 - beq _080402A0 - ldr r0, _08040270 - ldrb r0, [r0] - cmp r0, 0 - beq _080402A0 - movs r6, 0 - ldr r0, _08040274 - mov r8, r0 - adds r7, r1, 0 -_08040256: - cmp r6, 0xE - bne _08040278 - movs r0, 0xEE - mov r1, r8 - bl SetBGPaletteBufferColorArray - movs r0, 0xEE - mov r1, r8 - bl nullsub_5 - b _0804029A - .align 2, 0 -_0804026C: .4byte gUnknown_202EE04 -_08040270: .4byte gUnknown_202EE01 -_08040274: .4byte gUnknown_202D03C -_08040278: - adds r5, r6, 0 - adds r5, 0xE0 - ldr r0, [r7] - ldr r0, [r0, 0x4] - lsls r4, r6, 2 - ldr r1, [r0, 0x4] - adds r1, r4 - adds r0, r5, 0 - bl SetBGPaletteBufferColorArray - ldr r0, [r7] - ldr r0, [r0, 0x4] - ldr r1, [r0, 0x4] - adds r1, r4 - adds r0, r5, 0 - bl nullsub_5 -_0804029A: - adds r6, 0x1 - cmp r6, 0xF - ble _08040256 -_080402A0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8040238 - - thumb_func_start sub_80402AC -sub_80402AC: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - mov r8, r0 - str r1, [sp] - ldr r4, _0804034C - ldr r0, [r4] - str r0, [sp, 0x4] - movs r1, 0x1 - mov r10, r1 - ldr r0, _08040350 - ldr r0, [r0] - cmp r0, 0 - bne _080402D0 - b _08040776 -_080402D0: - ldr r0, _08040354 - ldrb r0, [r0] - cmp r0, 0 - bne _080402DA - b _08040776 -_080402DA: - bl sub_800EC74 - lsls r0, 24 - cmp r0, 0 - beq _080402E6 - b _08040776 -_080402E6: - mov r2, r8 - cmp r2, 0 - bge _080402EE - b _08040776 -_080402EE: - ldr r3, [sp] - cmp r3, 0x1 - bgt _080402F6 - b _08040776 -_080402F6: - cmp r2, 0x37 - ble _080402FC - b _08040776 -_080402FC: - cmp r3, 0x1E - ble _08040302 - b _08040776 -_08040302: - mov r0, r8 - adds r1, r3, 0 - bl sub_804954C - mov r9, r0 - ldrh r0, [r0] - movs r5, 0x3 - ands r5, r0 - str r5, [sp, 0x8] - ldr r0, [r4] - ldr r7, _08040358 - adds r1, r0, r7 - ldrb r1, [r1] - str r1, [sp, 0xC] - ldr r2, _0804035C - adds r1, r0, r2 - ldrb r5, [r1] - ldr r3, _08040360 - adds r1, r0, r3 - ldrb r1, [r1] - str r1, [sp, 0x14] - subs r7, 0x2 - adds r1, r0, r7 - ldrb r1, [r1] - str r1, [sp, 0x10] - ldr r1, _08040364 - adds r0, r1 - ldrb r0, [r0] - cmp r5, 0 - beq _08040368 - mov r2, r9 - ldrb r0, [r2, 0x4] - mov r7, r10 - ands r7, r0 - movs r3, 0 - str r3, [sp, 0x18] - b _0804039C - .align 2, 0 -_0804034C: .4byte gUnknown_203B418 -_08040350: .4byte gUnknown_202EE04 -_08040354: .4byte gUnknown_202EE01 -_08040358: .4byte 0x00018210 -_0804035C: .4byte 0x0001820a -_08040360: .4byte 0x0001820f -_08040364: .4byte 0x0001820b -_08040368: - cmp r0, 0 - beq _08040370 - movs r7, 0x1 - b _08040378 -_08040370: - mov r7, r9 - ldrb r0, [r7, 0x4] - mov r7, r10 - ands r7, r0 -_08040378: - bl sub_8043D10 - lsls r0, 24 - cmp r0, 0 - bne _08040398 - ldr r0, _08040390 - ldr r0, [r0] - ldr r1, _08040394 - adds r0, r1 - ldrb r0, [r0] - str r0, [sp, 0x18] - b _0804039C - .align 2, 0 -_08040390: .4byte gUnknown_203B418 -_08040394: .4byte 0x00018211 -_08040398: - movs r2, 0 - str r2, [sp, 0x18] -_0804039C: - bl sub_8094C48 - lsls r0, 24 - cmp r0, 0 - bne _080403A8 - b _08040632 -_080403A8: - ldr r0, _080403FC - ldr r0, [r0] - ldr r3, _08040400 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _080403B8 - b _08040632 -_080403B8: - movs r6, 0 - cmp r5, 0 - bne _0804045E - mov r0, r9 - ldr r4, [r0, 0x10] - cmp r4, 0 - beq _0804045E - adds r0, r4, 0 - bl sub_80450F8 - adds r1, r0, 0 - ldr r0, _08040404 - ldrb r0, [r0] - cmp r0, 0 - beq _0804045E - cmp r1, 0x1 - bne _0804045E - adds r0, r4, 0 - bl sub_8045804 - lsls r0, 24 - cmp r0, 0 - beq _0804045E - ldr r1, [r4, 0x70] - adds r0, r1, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _080403F6 - cmp r0, 0x47 - bne _08040408 -_080403F6: - movs r0, 0x1 - b _0804040A - .align 2, 0 -_080403FC: .4byte gUnknown_203B418 -_08040400: .4byte 0x0001356c -_08040404: .4byte gUnknown_202EE00 -_08040408: - movs r0, 0 -_0804040A: - cmp r0, 0 - bne _08040458 - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08040458 - cmp r0, 0x4 - beq _08040458 - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _08040426 - movs r6, 0x2 - b _0804045A -_08040426: - ldrb r0, [r1, 0x7] - cmp r0, 0 - beq _08040458 - ldr r0, _0804044C - mov r1, r8 - strh r1, [r0] - mov r2, sp - ldrh r2, [r2] - strh r2, [r0, 0x2] - ldr r0, _08040450 - ldr r0, [r0] - ldr r3, _08040454 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804045A - movs r6, 0x8 - b _0804045A - .align 2, 0 -_0804044C: .4byte gUnknown_203B410 -_08040450: .4byte gUnknown_203B418 -_08040454: .4byte 0x00018214 -_08040458: - movs r6, 0xA -_0804045A: - movs r0, 0 - mov r10, r0 -_0804045E: - mov r1, r10 - cmp r1, 0 - beq _0804054E - cmp r5, 0 - bne _08040548 - mov r2, r9 - ldr r4, [r2, 0x14] - cmp r4, 0 - beq _08040500 - adds r0, r4, 0 - bl sub_80450F8 - adds r5, r0, 0 - cmp r7, 0 - bne _0804049E - movs r6, 0 - cmp r5, 0x3 - bne _0804054E - ldr r3, [sp, 0x10] - cmp r3, 0 - bne _08040494 - mov r5, r9 - ldrh r1, [r5, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804054E -_08040494: - ldr r0, [sp, 0x8] - cmp r0, 0 - beq _0804054E - movs r6, 0x3 - b _0804054E -_0804049E: - cmp r5, 0x2 - bne _080404C4 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - bne _080404B2 - ldr r1, [sp, 0x14] - cmp r1, 0 - beq _080404C4 -_080404B2: - adds r0, r4, 0 - bl sub_8045104 - ldr r1, _080404FC - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - movs r2, 0 - mov r10, r2 -_080404C4: - mov r3, r10 - cmp r3, 0 - beq _0804054E - cmp r5, 0x3 - bne _080404EC - ldr r5, [sp, 0x10] - cmp r5, 0 - bne _080404E0 - mov r0, r9 - ldrh r1, [r0, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080404EC -_080404E0: - ldr r1, [sp, 0x8] - cmp r1, 0 - beq _080404EC - movs r6, 0x3 - movs r2, 0 - mov r10, r2 -_080404EC: - mov r3, r10 - cmp r3, 0 - beq _0804054E - ldr r5, [sp, 0x8] - cmp r5, 0x1 - beq _08040548 - movs r6, 0 - b _0804054E - .align 2, 0 -_080404FC: .4byte gUnknown_80F65F0 -_08040500: - cmp r7, 0 - bne _08040528 - ldr r0, [sp, 0x18] - cmp r0, 0 - beq _08040548 - mov r2, r9 - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08040548 - bl sub_8043D10 - lsls r0, 24 - movs r6, 0x5 - cmp r0, 0 - bne _0804054E - movs r6, 0x6 - b _0804054E -_08040528: - mov r3, r9 - ldrh r1, [r3] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08040548 - bl sub_8043D10 - lsls r0, 24 - movs r6, 0x5 - cmp r0, 0 - bne _08040544 - movs r6, 0x6 -_08040544: - movs r5, 0 - mov r10, r5 -_08040548: - mov r0, r10 - cmp r0, 0 - bne _0804055A -_0804054E: - ldr r1, [sp, 0xC] - cmp r1, 0 - beq _0804055A - cmp r6, 0 - beq _0804055E - movs r6, 0xB -_0804055A: - cmp r6, 0 - bne _08040606 -_0804055E: - cmp r7, 0 - beq _08040568 - ldr r2, [sp, 0x8] - cmp r2, 0x1 - beq _0804056C -_08040568: - movs r6, 0x1 - b _08040606 -_0804056C: - movs r4, 0xF - ldr r3, [sp] - cmp r3, 0x1E - bgt _0804058A - adds r1, r3, 0 - adds r1, 0x1 - mov r0, r8 - bl sub_804954C - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0804058A - movs r4, 0xE -_0804058A: - ldr r5, [sp] - cmp r5, 0 - ble _080405AA - adds r1, r5, 0 - subs r1, 0x1 - mov r0, r8 - bl sub_804954C - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _080405AA - movs r0, 0x5 - negs r0, r0 - ands r4, r0 -_080405AA: - mov r7, r8 - cmp r7, 0x36 - bgt _080405CA - mov r0, r8 - adds r0, 0x1 - ldr r1, [sp] - bl sub_804954C - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _080405CA - movs r0, 0x3 - negs r0, r0 - ands r4, r0 -_080405CA: - mov r0, r8 - cmp r0, 0 - ble _080405E8 - subs r0, 0x1 - ldr r1, [sp] - bl sub_804954C - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _080405E8 - movs r0, 0x9 - negs r0, r0 - ands r4, r0 -_080405E8: - lsls r0, r4, 16 - asrs r6, r0, 16 - mov r2, r9 - ldrh r1, [r2, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080405FE - adds r0, r6, 0 - adds r0, 0x10 - b _08040602 -_080405FE: - adds r0, r6, 0 - adds r0, 0x20 -_08040602: - lsls r0, 16 - asrs r6, r0, 16 -_08040606: - ldr r0, _08040618 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0x6 - bne _0804061C - adds r0, r6, 0 - adds r0, 0x80 - b _0804062C - .align 2, 0 -_08040618: .4byte gUnknown_203B46C -_0804061C: - bl sub_8094C68 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0804063A - adds r0, r6, 0 - adds r0, 0x40 -_0804062C: - lsls r0, 16 - asrs r6, r0, 16 - b _0804063A -_08040632: - movs r6, 0x1 - ldr r1, _0804074C - movs r0, 0x64 - strh r0, [r1] -_0804063A: - mov r3, r8 - lsrs r0, r3, 31 - add r0, r8 - asrs r0, 1 - mov r9, r0 - ldr r0, [sp] - subs r0, 0x2 - lsrs r1, r0, 31 - adds r1, r0, r1 - asrs r1, 1 - mov r5, r9 - lsls r3, r5, 1 - mov r7, r8 - subs r3, r7, r3 - lsls r2, r1, 1 - subs r0, r2 - lsls r0, 1 - adds r3, r0 - lsls r0, r1, 3 - subs r5, r0, r1 - lsls r0, r5, 7 - ldr r1, _08040750 - adds r0, r1 - ldr r2, [sp, 0x4] - adds r0, r2, r0 - mov r7, r9 - lsls r1, r7, 5 - adds r4, r0, r1 - ldr r0, _08040754 - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r6, 2 - adds r0, r3 - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - ldr r0, [r4] - ldr r1, [r2] - ands r0, r1 - ldr r1, [r2, 0x4] - orrs r0, r1 - str r0, [r4] - ldr r0, [r4, 0x4] - ldr r1, [r2, 0x8] - ands r0, r1 - ldr r1, [r2, 0xC] - orrs r0, r1 - str r0, [r4, 0x4] - ldr r0, [r4, 0x8] - ldr r1, [r2, 0x10] - ands r0, r1 - ldr r1, [r2, 0x14] - orrs r0, r1 - str r0, [r4, 0x8] - ldr r0, [r4, 0xC] - ldr r1, [r2, 0x18] - ands r0, r1 - ldr r1, [r2, 0x1C] - orrs r0, r1 - str r0, [r4, 0xC] - ldr r0, [r4, 0x10] - ldr r1, [r2, 0x20] - ands r0, r1 - ldr r1, [r2, 0x24] - orrs r0, r1 - str r0, [r4, 0x10] - ldr r0, [r4, 0x14] - ldr r1, [r2, 0x28] - ands r0, r1 - ldr r1, [r2, 0x2C] - orrs r0, r1 - str r0, [r4, 0x14] - ldr r0, [r4, 0x18] - ldr r1, [r2, 0x30] - ands r0, r1 - ldr r1, [r2, 0x34] - orrs r0, r1 - str r0, [r4, 0x18] - ldr r0, [r4, 0x1C] - ldr r1, [r2, 0x38] - ands r0, r1 - ldr r1, [r2, 0x3C] - orrs r0, r1 - str r0, [r4, 0x1C] - ldr r0, [sp, 0x4] - ldr r1, _08040758 - adds r2, r0, r1 - ldrb r0, [r2] - cmp r0, 0 - bne _08040776 - lsls r5, 2 - mov r10, r5 - mov r3, r9 - add r3, r10 - ldr r5, _0804075C - mov r8, r5 - ldr r0, [sp, 0x4] - add r0, r8 - adds r1, r0, r3 - ldrb r0, [r1] - cmp r0, 0 - bne _08040776 - movs r0, 0x1 - strb r0, [r1] - ldr r7, [sp, 0x4] - ldr r1, _08040760 - adds r6, r7, r1 - ldr r5, [r6] - cmp r5, 0x27 - bgt _08040774 - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - ldr r0, _08040764 - adds r2, r7, r0 - adds r2, r1 - ldr r0, _08040768 - lsls r3, 5 - ldr r0, [r0] - adds r0, r3 - str r0, [r2] - ldr r2, _0804076C - adds r0, r7, r2 - adds r0, r1 - str r4, [r0] - ldr r3, _08040770 - adds r2, r7, r3 - adds r2, r1 - mov r0, r10 - add r0, r8 - adds r0, r7, r0 - add r0, r9 - str r0, [r2] - adds r0, r5, 0x1 - str r0, [r6] - b _08040776 - .align 2, 0 -_0804074C: .4byte gUnknown_203B410 -_08040750: .4byte 0x0001822c -_08040754: .4byte gUnknown_202EE04 -_08040758: .4byte 0x0001bdd1 -_0804075C: .4byte 0x0001ba2c -_08040760: .4byte 0x0001bdcc -_08040764: .4byte 0x0001bbec -_08040768: .4byte gUnknown_202EE08 -_0804076C: .4byte 0x0001bbf0 -_08040770: .4byte 0x0001bbf4 -_08040774: - strb r0, [r2] -_08040776: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80402AC - - thumb_func_start sub_8040788 -sub_8040788: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08040814 - ldr r0, [r0] - mov r8, r0 - cmp r0, 0 - beq _08040870 - ldr r0, _08040818 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0 - beq _08040870 - bl sub_800EC74 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _08040870 - ldr r1, _0804081C - add r1, r8 - ldrb r0, [r1] - cmp r0, 0 - bne _0804082C - movs r6, 0 - ldr r1, _08040820 - add r1, r8 - ldr r0, [r1] - cmp r6, r0 - bge _08040868 - adds r5, r1, 0 - movs r4, 0 -_080407C8: - ldr r1, _08040824 - adds r0, r4, r1 - mov r1, r8 - adds r3, r1, r0 - ldr r1, [r3, 0x4] - ldr r2, [r3] - ldr r0, _08040828 - ldr r0, [r0] - cmp r0, 0 - beq _080407E0 - cmp r0, 0x3 - bne _08040800 -_080407E0: - ldm r1!, {r0} - stm r2!, {r0} - ldm r1!, {r0} - stm r2!, {r0} - ldm r1!, {r0} - stm r2!, {r0} - ldm r1!, {r0} - stm r2!, {r0} - ldm r1!, {r0} - stm r2!, {r0} - ldm r1!, {r0} - stm r2!, {r0} - ldm r1!, {r0} - stm r2!, {r0} - ldr r0, [r1] - str r0, [r2] -_08040800: - ldr r0, [r3, 0x8] - movs r1, 0 - strb r1, [r0] - adds r4, 0xC - adds r6, 0x1 - ldr r0, [r5] - cmp r6, r0 - blt _080407C8 - b _08040868 - .align 2, 0 -_08040814: .4byte gUnknown_203B418 -_08040818: .4byte 0x0001bdd0 -_0804081C: .4byte 0x0001bdd1 -_08040820: .4byte 0x0001bdcc -_08040824: .4byte 0x0001bbec -_08040828: .4byte gUnknown_202EDD0 -_0804082C: - strb r2, [r1] - ldr r0, _0804087C - ldr r5, [r0] - ldr r4, _08040880 - add r4, r8 - movs r6, 0 - movs r7, 0x80 - lsls r7, 1 -_0804083C: - ldr r0, _08040884 - ldr r0, [r0] - cmp r0, 0 - beq _08040848 - cmp r0, 0x3 - bne _08040854 -_08040848: - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x80 - lsls r2, 1 - bl CpuCopy -_08040854: - adds r5, r7 - adds r4, r7 - adds r6, 0x8 - ldr r0, _08040888 - cmp r6, r0 - ble _0804083C - ldr r1, _0804088C - add r1, r8 - movs r0, 0x1 - strb r0, [r1] -_08040868: - ldr r1, _08040890 - add r1, r8 - movs r0, 0 - str r0, [r1] -_08040870: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804087C: .4byte gUnknown_202EE08 -_08040880: .4byte 0x0001822c -_08040884: .4byte gUnknown_202EDD0 -_08040888: .4byte 0x000001bf -_0804088C: .4byte 0x0001bdd2 -_08040890: .4byte 0x0001bdcc - thumb_func_end sub_8040788 - - thumb_func_start sub_8040894 -sub_8040894: - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _080409F4 - ldr r1, [r0] - ldr r2, _080409F8 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080408A8 - b _08040A6A -_080408A8: - adds r2, 0x5 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080408B4 - b _08040A6A -_080408B4: - ldr r7, _080409FC - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0x63 - ble _080408C0 - b _08040A6A -_080408C0: - ldr r0, _08040A00 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - movs r0, 0x8 - ands r1, r0 - cmp r1, 0 - beq _080408D2 - b _08040A6A -_080408D2: - movs r0, 0 - movs r1, 0 - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - ldrh r0, [r0] - ldr r1, _08040A04 - ands r1, r0 - ldr r3, _08040A08 - ldr r0, [sp] - ands r0, r3 - orrs r0, r1 - str r0, [sp] - mov r1, sp - ldrh r1, [r1] - adds r2, r3, 0 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08040A0C - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r5, _08040A10 - adds r0, r5, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08040A14 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r0, _08040A18 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - adds r2, r3, 0 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - mov r0, sp - ldrh r1, [r0] - ldr r4, _08040A1C - adds r0, r4, 0 - ands r0, r1 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - ldrh r0, [r0] - ands r3, r1 - orrs r3, r0 - str r3, [sp] - mov r3, sp - ldrh r0, [r3, 0x2] - ldr r6, _08040A20 - ands r6, r0 - ands r6, r4 - strh r6, [r3, 0x2] - ldr r2, _08040A24 - ldrh r1, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r5 - movs r5, 0xF - lsls r1, r5, 12 - ldr r4, _08040A28 - ands r0, r4 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r0, [r3, 0x6] - ldr r2, _08040A2C - ands r2, r0 - ldr r0, _08040A30 - ands r2, r0 - strh r2, [r3, 0x6] - ldr r0, _08040A34 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0x6 - bne _08040A3C - movs r1, 0 - ldrsh r0, [r7, r1] - lsls r0, 2 - adds r0, 0x10 - ldr r1, _08040A38 - ands r0, r1 - strh r0, [r3, 0x2] - movs r1, 0x2 - ldrsh r0, [r7, r1] - adds r0, 0x1 - lsls r0, 2 - ands r0, r4 - lsls r0, 4 - adds r1, r2, 0 - ands r1, r5 - orrs r1, r0 - strh r1, [r3, 0x6] - movs r1, 0x80 - lsls r1, 1 - mov r0, sp - movs r2, 0 - movs r3, 0 - bl nullsub_11 - b _08040A6A - .align 2, 0 -_080409F4: .4byte gUnknown_203B418 -_080409F8: .4byte 0x00018214 -_080409FC: .4byte gUnknown_203B410 -_08040A00: .4byte gUnknown_202EE02 -_08040A04: .4byte 0x0000feff -_08040A08: .4byte 0xffff0000 -_08040A0C: .4byte 0x0000fdff -_08040A10: .4byte 0x0000f3ff -_08040A14: .4byte 0x0000efff -_08040A18: .4byte 0x0000dfff -_08040A1C: .4byte 0x00003fff -_08040A20: .4byte 0x0000c1ff -_08040A24: .4byte 0x00000215 -_08040A28: .4byte 0x00000fff -_08040A2C: .4byte 0x0000fffe -_08040A30: .4byte 0x0000fffd -_08040A34: .4byte gUnknown_203B46C -_08040A38: .4byte 0x000001ff -_08040A3C: - movs r1, 0 - ldrsh r0, [r7, r1] - lsls r0, 2 - adds r0, 0x8 - ldr r1, _08040A74 - ands r0, r1 - strh r0, [r3, 0x2] - movs r1, 0x2 - ldrsh r0, [r7, r1] - lsls r0, 2 - ands r0, r4 - lsls r0, 4 - adds r1, r2, 0 - ands r1, r5 - orrs r1, r0 - strh r1, [r3, 0x6] - movs r1, 0x80 - lsls r1, 1 - mov r0, sp - movs r2, 0 - movs r3, 0 - bl AddSprite -_08040A6A: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08040A74: .4byte 0x000001ff - thumb_func_end sub_8040894 - - thumb_func_start sub_8040A78 -sub_8040A78: - ldr r1, _08040A80 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08040A80: .4byte gUnknown_202EE02 - thumb_func_end sub_8040A78 - - thumb_func_start sub_8040A84 -sub_8040A84: - push {r4-r6,lr} - ldr r0, _08040AB4 - ldr r0, [r0] - ldr r1, _08040AB8 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r5, 0 -_08040A94: - movs r4, 0 - adds r6, r5, 0x1 -_08040A98: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80402AC - adds r4, 0x1 - cmp r4, 0x37 - ble _08040A98 - adds r5, r6, 0 - cmp r5, 0x1F - ble _08040A94 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08040AB4: .4byte gUnknown_203B418 -_08040AB8: .4byte 0x0001bdd1 - thumb_func_end sub_8040A84 - - thumb_func_start sub_8040ABC -sub_8040ABC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _08040AD8 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0x6 - bne _08040ADC - movs r7, 0xF - movs r0, 0 - b _08040AEC - .align 2, 0 -_08040AD8: .4byte gUnknown_203B46C -_08040ADC: - cmp r1, 0 - beq _08040AE8 - movs r7, 0xE - movs r4, 0 - mov r8, r4 - b _08040AEE -_08040AE8: - movs r7, 0x10 - movs r0, 0x3 -_08040AEC: - mov r8, r0 -_08040AEE: - ldr r6, _08040B58 - movs r2, 0x1 - movs r1, 0 - cmp r1, r7 - bge _08040B22 - ldr r4, _08040B5C - mov r12, r4 -_08040AFC: - lsls r0, r2, 6 - mov r4, r12 - adds r3, r0, r4 - adds r4, r2, 0x1 - adds r5, r1, 0x1 - movs r2, 0x1B -_08040B08: - adds r1, r6, 0 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - strh r1, [r3] - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08040B08 - adds r2, r4, 0 - adds r1, r5, 0 - cmp r1, r7 - blt _08040AFC -_08040B22: - movs r1, 0 - cmp r1, r8 - bge _08040B4C - ldr r6, _08040B5C - movs r0, 0xE0 - lsls r0, 8 - adds r3, r0, 0 -_08040B30: - lsls r0, r2, 6 - adds r0, r6 - adds r4, r2, 0x1 - adds r5, r1, 0x1 - movs r2, 0x1B -_08040B3A: - strh r3, [r0] - adds r0, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08040B3A - adds r2, r4, 0 - adds r1, r5, 0 - cmp r1, r8 - blt _08040B30 -_08040B4C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08040B58: .4byte 0x0000e0b8 -_08040B5C: .4byte gUnknown_202B03A - thumb_func_end sub_8040ABC - - thumb_func_start sub_8040B60 -sub_8040B60: - push {r4,r5,lr} - ldr r0, _08040BA4 - ldr r3, [r0] - ldr r1, _08040BA8 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08040B9E - movs r1, 0 - ldr r2, _08040BAC - adds r5, r3, r2 - movs r4, 0 -_08040B78: - lsls r0, r1, 3 - adds r2, r1, 0x1 - subs r0, r1 - movs r1, 0x37 - lsls r0, 2 - adds r0, r5 - adds r0, 0x37 -_08040B86: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _08040B86 - adds r1, r2, 0 - cmp r1, 0x1F - ble _08040B78 - movs r1, 0 - ldr r2, _08040BA8 - adds r0, r3, r2 - strb r1, [r0] -_08040B9E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08040BA4: .4byte gUnknown_203B418 -_08040BA8: .4byte 0x0001bdd2 -_08040BAC: .4byte 0x0001ba2c - thumb_func_end sub_8040B60 - - thumb_func_start sub_8040BB0 -sub_8040BB0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - bl sub_804143C - mov r8, r0 - ldrh r4, [r7, 0x2] - adds r0, r6, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - mov r2, r8 - bl sub_804141C - lsls r0, 24 - lsrs r5, r0, 24 - mov r9, r5 - ldrh r4, [r7, 0x2] - adds r0, r6, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - mov r2, r8 - bl sub_80412E0 - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - movs r1, 0 - ldrsh r4, [r0, r1] - adds r0, r6, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08040C28 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_80414C0 - lsls r0, 24 - cmp r0, 0 - bne _08040C28 - mov r0, r10 - cmp r0, 0 - bne _08040C2C -_08040C28: - adds r0, r5, 0 - b _08040C3C -_08040C2C: - cmp r4, 0 - beq _08040C3A - adds r0, r6, 0 - adds r1, r7, 0 - mov r2, r8 - bl sub_8040C4C -_08040C3A: - mov r0, r9 -_08040C3C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8040BB0 - - thumb_func_start sub_8040C4C -sub_8040C4C: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - adds r7, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - ldrh r5, [r4, 0x2] - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - adds r2, r6, 0 - bl sub_80412E0 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - ldr r6, [r7, 0x70] - ldrh r0, [r4, 0x2] - bl sub_800EC94 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0x4 - ldrsh r5, [r6, r0] - ldrh r4, [r4, 0x2] - adds r0, r7, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_80412E0 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_800E710 - adds r2, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _08040CC4 - add r0, sp, 0x8 - adds r1, r7, 0 - adds r1, 0x28 - lsls r2, 24 - lsrs r2, 24 - bl sub_800569C - b _08040CC8 -_08040CC4: - movs r0, 0 - str r0, [sp, 0x8] -_08040CC8: - mov r0, sp - mov r1, r9 - strh r1, [r0] - mov r1, sp - ldrh r0, [r6, 0x4] - strh r0, [r1, 0x2] - ldr r0, [r7, 0xC] - cmp r0, 0 - bge _08040CDC - adds r0, 0xFF -_08040CDC: - asrs r0, 8 - strh r0, [r1, 0x4] - mov r1, sp - ldr r0, [r7, 0x10] - cmp r0, 0 - bge _08040CEA - adds r0, 0xFF -_08040CEA: - asrs r0, 8 - strh r0, [r1, 0x6] - adds r0, r6, 0 - adds r0, 0x46 - ldrb r0, [r0] - str r0, [sp, 0xC] - movs r0, 0 - str r0, [sp, 0x10] - mov r0, sp - bl sub_8041500 - mov r0, r9 - bl sub_800EEC8 - bl sub_800EF64 - movs r0, 0x58 - bl sub_803E46C - mov r0, sp - bl sub_800EA84 - adds r4, r0, 0 - adds r1, r7, 0 - movs r2, 0x5 - bl sub_8042DD4 - ldr r0, _08040D28 - ldrb r5, [r0] - ldr r6, _08040D2C - b _08040D78 - .align 2, 0 -_08040D28: .4byte gUnknown_203B40D -_08040D2C: .4byte 0x00001010 -_08040D30: - ldr r0, _08040D58 - movs r1, 0x1 - strb r1, [r0] - ldr r1, _08040D5C - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r6 - beq _08040D48 - ldr r3, _08040D60 - adds r0, r2, r3 - strh r0, [r1] -_08040D48: - ldr r1, _08040D64 - ldr r0, [r1] - cmp r0, 0x4 - ble _08040D68 - subs r0, 0x4 - str r0, [r1] - b _08040D6E - .align 2, 0 -_08040D58: .4byte gUnknown_203B40D -_08040D5C: .4byte gUnknown_2026E4E -_08040D60: .4byte 0x00000101 -_08040D64: .4byte gUnknown_202EDC8 -_08040D68: - movs r0, 0 - str r0, [r1] - mov r8, r0 -_08040D6E: - bl sub_803EA10 - movs r0, 0x26 - bl sub_803E46C -_08040D78: - adds r0, r4, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - beq _08040D8A - mov r0, r8 - cmp r0, 0 - bne _08040D30 -_08040D8A: - ldr r0, _08040D9C - strb r5, [r0] - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08040D9C: .4byte gUnknown_203B40D - thumb_func_end sub_8040C4C - - thumb_func_start sub_8040DA0 -sub_8040DA0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - adds r7, r0, 0 - mov r8, r1 - bl sub_804143C - mov r9, r0 - movs r0, 0 - str r0, [sp, 0x14] - ldr r1, [r7, 0x70] - mov r10, r1 - movs r0, 0x4 - ldrsh r5, [r1, r0] - mov r1, r8 - ldrh r4, [r1, 0x2] - adds r0, r7, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - mov r2, r9 - bl sub_80412E0 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_800EA44 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x18] - mov r0, sp - adds r1, r7, 0 - mov r2, r8 - mov r3, r9 - bl sub_8041038 - mov r0, sp - movs r1, 0x1 - bl sub_800E838 - lsls r0, 24 - cmp r0, 0 - bne _08040E0E - mov r1, r8 - ldrh r0, [r1, 0x2] - cmp r0, 0x52 - bne _08040E24 -_08040E0E: - ldr r0, _08040E1C - ldr r0, [r0] - ldr r1, _08040E20 - adds r0, r1 - ldr r6, [r0] - b _08040E26 - .align 2, 0 -_08040E1C: .4byte gUnknown_203B418 -_08040E20: .4byte 0x000181f8 -_08040E24: - adds r6, r7, 0 -_08040E26: - adds r0, r6, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - bne _08040E34 - adds r6, r7, 0 -_08040E34: - mov r1, sp - ldr r0, [r6, 0xC] - cmp r0, 0 - bge _08040E3E - adds r0, 0xFF -_08040E3E: - asrs r0, 8 - strh r0, [r1, 0x4] - mov r1, sp - ldr r0, [r6, 0x10] - cmp r0, 0 - bge _08040E4C - adds r0, 0xFF -_08040E4C: - asrs r0, 8 - strh r0, [r1, 0x6] - adds r0, r6, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - bne _08040E5E - b _08041026 -_08040E5E: - adds r0, r7, 0 - mov r1, r8 - bl sub_80414C0 - lsls r0, 24 - cmp r0, 0 - beq _08040E6E - b _08041026 -_08040E6E: - mov r0, r8 - ldrh r1, [r0, 0x2] - movs r0, 0x94 - lsls r0, 1 - cmp r1, r0 - bne _08040ED0 - movs r0, 0x7 - bl sub_8084100 - ldr r1, _08040EB8 - str r0, [r1] - ldr r1, _08040EBC - ldr r2, [r1] - ldr r1, _08040EC0 - adds r4, r2, r1 - subs r1, 0x4 - adds r2, r1 - ldr r3, _08040EC4 - lsls r1, r0, 2 - adds r1, r3 - ldr r1, [r1] - str r1, [r2] - str r1, [r4] - ldr r1, _08040EC8 - adds r0, 0x4 - str r0, [r1] - ldr r0, _08040ECC - ldr r1, [r0] - adds r0, r6, 0 - bl sub_80522A8 - movs r1, 0xD2 - lsls r1, 1 - adds r0, r6, 0 - bl sub_80421C0 - b _08040EF0 - .align 2, 0 -_08040EB8: .4byte gUnknown_202F224 -_08040EBC: .4byte gUnknown_203B418 -_08040EC0: .4byte 0x00018204 -_08040EC4: .4byte gUnknown_8106A8C -_08040EC8: .4byte gUnknown_202DE30 -_08040ECC: .4byte gUnknown_8100224 -_08040ED0: - cmp r1, 0x76 - bne _08040EF0 - ldr r0, _08040F70 - ldr r0, [r0] - ldr r1, _08040F74 - adds r2, r0, r1 - subs r1, 0x4 - adds r0, r1 - movs r1, 0xC - str r1, [r0] - str r1, [r2] - movs r1, 0xD2 - lsls r1, 1 - adds r0, r6, 0 - bl sub_80421C0 -_08040EF0: - mov r0, r10 - movs r1, 0x4 - ldrsh r5, [r0, r1] - mov r0, r8 - ldrh r4, [r0, 0x2] - adds r0, r7, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - mov r2, r9 - bl sub_80412E0 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_800E790 - adds r1, r0, 0 - ldr r0, _08040F78 - cmp r1, r0 - beq _08040F2A - lsls r0, r1, 16 - lsrs r0, 16 - bl sub_8083E38 -_08040F2A: - ldr r1, [sp, 0x18] - cmp r1, 0x63 - bne _08040F7C - adds r0, r6, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08041026 - mov r0, r10 - adds r0, 0x46 - ldrb r4, [r0] - mov r0, sp - adds r1, r7, 0 - mov r2, r8 - mov r3, r9 - bl sub_8041108 - movs r6, 0x7 - movs r5, 0x7 -_08040F52: - subs r4, 0x1 - ands r4, r6 - adds r0, r7, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_806CDD4 - movs r0, 0x2 - movs r1, 0x15 - bl sub_803E708 - subs r5, 0x1 - cmp r5, 0 - bge _08040F52 - b _08041026 - .align 2, 0 -_08040F70: .4byte gUnknown_203B418 -_08040F74: .4byte 0x00018204 -_08040F78: .4byte 0x000003e5 -_08040F7C: - ldr r0, [sp, 0x18] - cmp r0, 0x62 - bne _08040FC2 - adds r0, r6, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08041026 - mov r0, r10 - adds r0, 0x46 - ldrb r4, [r0] - mov r0, sp - adds r1, r7, 0 - mov r2, r8 - mov r3, r9 - bl sub_8041108 - movs r6, 0x7 - movs r5, 0x8 -_08040FA4: - ands r4, r6 - adds r0, r7, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_806CDD4 - movs r0, 0x2 - movs r1, 0x15 - bl sub_803E708 - adds r4, 0x1 - subs r5, 0x1 - cmp r5, 0 - bge _08040FA4 - b _08041026 -_08040FC2: - mov r0, r10 - adds r0, 0x46 - ldrb r2, [r0] - adds r0, r7, 0 - ldr r1, [sp, 0x18] - bl sub_806CDD4 - adds r0, r7, 0 - adds r0, 0x21 - movs r1, 0 - strb r1, [r0] - movs r5, 0 - adds r6, r0, 0 - b _08040FE6 -_08040FDE: - ldrb r0, [r6] - cmp r0, 0 - bne _08041022 - adds r5, 0x1 -_08040FE6: - cmp r5, 0x77 - bgt _08041022 - movs r0, 0x59 - bl sub_803E46C - ldr r4, [r7, 0x40] - ldr r1, [sp, 0x18] - cmp r1, 0x9 - bne _08040FFC - movs r0, 0x2 - orrs r4, r0 -_08040FFC: - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _0804101A - ldr r0, [sp, 0x14] - cmp r0, 0 - bne _0804101A - mov r0, sp - adds r1, r7, 0 - mov r2, r8 - mov r3, r9 - bl sub_8041108 - movs r1, 0x1 - str r1, [sp, 0x14] -_0804101A: - movs r0, 0x1 - ands r4, r0 - cmp r4, 0 - beq _08040FDE -_08041022: - movs r0, 0 - strb r0, [r6] -_08041026: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8040DA0 - - thumb_func_start sub_8041038 -sub_8041038: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r7, r1, 0 - mov r8, r2 - mov r10, r3 - ldr r0, [r7, 0x70] - mov r9, r0 - ldrh r4, [r2, 0x2] - adds r0, r7, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - mov r2, r10 - bl sub_80412E0 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - bl sub_800ECB8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _080410F4 - mov r0, r9 - movs r1, 0x4 - ldrsh r5, [r0, r1] - mov r0, r8 - ldrh r4, [r0, 0x2] - adds r0, r7, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - mov r2, r10 - bl sub_80412E0 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_800E710 - adds r2, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _080410BE - adds r0, r6, 0 - adds r0, 0x8 - adds r1, r7, 0 - adds r1, 0x28 - lsls r2, 24 - lsrs r2, 24 - bl sub_800569C - b _080410C2 -_080410BE: - movs r0, 0 - str r0, [r6, 0x8] -_080410C2: - mov r1, sp - ldrh r1, [r1] - strh r1, [r6] - mov r1, r9 - ldrh r0, [r1, 0x4] - strh r0, [r6, 0x2] - ldr r0, [r7, 0xC] - cmp r0, 0 - bge _080410D6 - adds r0, 0xFF -_080410D6: - asrs r0, 8 - strh r0, [r6, 0x4] - ldr r0, [r7, 0x10] - cmp r0, 0 - bge _080410E2 - adds r0, 0xFF -_080410E2: - asrs r0, 8 - strh r0, [r6, 0x6] - mov r0, r9 - adds r0, 0x46 - ldrb r0, [r0] - str r0, [r6, 0xC] - movs r0, 0 - str r0, [r6, 0x10] - b _080410F6 -_080410F4: - strh r0, [r6] -_080410F6: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8041038 - - thumb_func_start sub_8041108 -sub_8041108: - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - adds r5, r3, 0 - ldrh r4, [r2, 0x2] - adds r0, r7, 0 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - adds r2, r5, 0 - bl sub_80412E0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_800ECB8 - movs r2, 0x2 - ldrsh r1, [r0, r2] - ldrh r0, [r6] - cmp r0, 0 - beq _08041162 - cmp r1, 0 - beq _08041162 - adds r0, r6, 0 - bl sub_8041500 - adds r0, r4, 0 - bl sub_800EEF8 - bl sub_800EF64 - movs r0, 0x5A - bl sub_803E46C - adds r0, r6, 0 - bl sub_800E52C - adds r1, r7, 0 - movs r2, 0x1 - bl sub_8042DD4 -_08041162: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8041108 - - thumb_func_start sub_8041168 -sub_8041168: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - mov r8, r0 - adds r6, r1, 0 - adds r7, r2, 0 - mov r9, r3 - adds r1, r7, 0 - bl sub_804143C - adds r5, r0, 0 - cmp r5, 0 - beq _0804118A - movs r5, 0x1 -_0804118A: - ldrh r4, [r7, 0x2] - mov r0, r8 - bl sub_807E580 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - adds r2, r5, 0 - bl sub_80412E0 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - bl sub_800ECB8 - movs r1, 0x4 - ldrsh r5, [r0, r1] - movs r2, 0 - str r2, [sp, 0x14] - adds r0, r6, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - beq _080411CA - ldr r0, [r6, 0x70] - str r0, [sp, 0x14] - adds r0, r6, 0 - bl sub_8042768 - b _080411D0 -_080411CA: - mov r0, r9 - bl sub_803F428 -_080411D0: - lsls r0, 24 - cmp r0, 0 - beq _080412CE - mov r0, r8 - adds r1, r7, 0 - bl sub_80414C0 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080412CE - cmp r5, 0 - beq _080412CE - adds r0, r5, 0 - bl sub_800ECA4 - ldr r5, [r0, 0x1C] - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _08041216 - adds r0, r6, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - beq _08041216 - add r0, sp, 0x8 - adds r1, r6, 0 - adds r1, 0x28 - lsls r2, r5, 24 - lsrs r2, 24 - bl sub_800569C - b _08041218 -_08041216: - str r4, [sp, 0x8] -_08041218: - mov r0, sp - mov r1, r10 - strh r1, [r0] - ldr r2, [sp, 0x14] - cmp r2, 0 - beq _08041248 - mov r1, sp - ldrh r0, [r2, 0x4] - strh r0, [r1, 0x2] - ldr r0, [r6, 0xC] - cmp r0, 0 - bge _08041232 - adds r0, 0xFF -_08041232: - asrs r0, 8 - strh r0, [r1, 0x4] - mov r1, sp - ldr r0, [r6, 0x10] - cmp r0, 0 - bge _08041240 - adds r0, 0xFF -_08041240: - asrs r0, 8 - strh r0, [r1, 0x6] - movs r0, 0 - b _0804128C -_08041248: - mov r1, sp - movs r0, 0x1 - strh r0, [r1, 0x2] - mov r0, r9 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 11 - mov r1, sp - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2 - cmp r0, 0 - bge _08041268 - adds r0, 0xFF -_08041268: - asrs r0, 8 - strh r0, [r1, 0x4] - mov r0, r9 - movs r2, 0x2 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 11 - mov r1, sp - movs r2, 0x80 - lsls r2, 5 - adds r0, r2 - cmp r0, 0 - bge _08041286 - adds r0, 0xFF -_08041286: - asrs r0, 8 - strh r0, [r1, 0x6] - ldr r0, [sp, 0x14] -_0804128C: - str r0, [sp, 0xC] - movs r0, 0 - str r0, [sp, 0x10] - mov r0, sp - bl sub_8041500 - mov r0, r10 - bl sub_800EEE0 - bl sub_800EF64 - mov r0, sp - bl sub_800EBC8 - adds r4, r0, 0 - movs r0, 0x5B - bl sub_803E46C - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0x6 - bl sub_8042DD4 - b _080412C2 -_080412BC: - movs r0, 0x28 - bl sub_803E46C -_080412C2: - adds r0, r4, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _080412BC -_080412CE: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8041168 - - thumb_func_start sub_80412E0 -sub_80412E0: - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r0, r1, 24 - adds r3, r4, 0 - cmp r3, 0x1F - bne _08041344 - cmp r0, 0x7 - bls _080412F6 - b _080413F6 -_080412F6: - lsls r0, 2 - ldr r1, _08041300 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08041300: .4byte _08041304 - .align 2, 0 -_08041304: - .4byte _080413F4 - .4byte _08041324 - .4byte _0804132A - .4byte _080413F4 - .4byte _08041334 - .4byte _0804133A - .4byte _080413F4 - .4byte _0804133A -_08041324: - movs r3, 0xCF - lsls r3, 1 - b _080413F6 -_0804132A: - ldr r3, _08041330 - b _080413F6 - .align 2, 0 -_08041330: .4byte 0x000001a1 -_08041334: - movs r3, 0xD0 - lsls r3, 1 - b _080413F6 -_0804133A: - ldr r3, _08041340 - b _080413F6 - .align 2, 0 -_08041340: .4byte 0x0000019f -_08041344: - cmp r2, 0 - beq _080413F6 - cmp r3, 0x97 - beq _080413B4 - cmp r3, 0x97 - bgt _0804136C - cmp r3, 0x3C - beq _0804139C - cmp r3, 0x3C - bgt _08041362 - cmp r3, 0x8 - beq _08041396 - cmp r3, 0x19 - beq _080413E4 - b _080413F4 -_08041362: - cmp r3, 0x4B - beq _080413A4 - cmp r3, 0x64 - beq _080413AA - b _080413F4 -_0804136C: - cmp r3, 0xCD - beq _080413CA - cmp r3, 0xCD - bgt _0804137E - cmp r3, 0x99 - beq _080413BA - cmp r3, 0x9C - beq _080413C4 - b _080413F4 -_0804137E: - cmp r3, 0xED - beq _080413DA - cmp r3, 0xED - bgt _0804138C - cmp r3, 0xE3 - beq _080413EA - b _080413F4 -_0804138C: - movs r0, 0xAE - lsls r0, 1 - cmp r3, r0 - beq _080413D4 - b _080413F4 -_08041396: - movs r3, 0xD1 - lsls r3, 1 - b _080413F6 -_0804139C: - ldr r3, _080413A0 - b _080413F6 - .align 2, 0 -_080413A0: .4byte 0x000001a3 -_080413A4: - movs r3, 0xD2 - lsls r3, 1 - b _080413F6 -_080413AA: - ldr r3, _080413B0 - b _080413F6 - .align 2, 0 -_080413B0: .4byte 0x000001a5 -_080413B4: - movs r3, 0xD3 - lsls r3, 1 - b _080413F6 -_080413BA: - ldr r3, _080413C0 - b _080413F6 - .align 2, 0 -_080413C0: .4byte 0x000001a7 -_080413C4: - movs r3, 0xD4 - lsls r3, 1 - b _080413F6 -_080413CA: - ldr r3, _080413D0 - b _080413F6 - .align 2, 0 -_080413D0: .4byte 0x000001a9 -_080413D4: - movs r3, 0xD5 - lsls r3, 1 - b _080413F6 -_080413DA: - ldr r3, _080413E0 - b _080413F6 - .align 2, 0 -_080413E0: .4byte 0x000001ab -_080413E4: - movs r3, 0xD6 - lsls r3, 1 - b _080413F6 -_080413EA: - ldr r3, _080413F0 - b _080413F6 - .align 2, 0 -_080413F0: .4byte 0x000001ad -_080413F4: - adds r3, r4, 0 -_080413F6: - adds r0, r3, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80412E0 - - thumb_func_start sub_8041400 -sub_8041400: - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - bl sub_80412E0 - lsls r0, 16 - lsrs r0, 16 - bl sub_800ED20 - pop {r1} - bx r1 - thumb_func_end sub_8041400 - - thumb_func_start sub_804141C -sub_804141C: - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - bl sub_80412E0 - lsls r0, 16 - lsrs r0, 16 - bl sub_800EC84 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_804141C - - thumb_func_start sub_804143C -sub_804143C: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrh r0, [r5, 0x2] - cmp r0, 0xED - bne _08041476 - adds r0, r4, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - beq _080414A4 - adds r0, r4, 0 - bl sub_80450F8 - cmp r0, 0x1 - bne _080414A4 - ldr r1, [r4, 0x70] - adds r0, r1, 0 - adds r0, 0x5C - ldrb r0, [r0] - cmp r0, 0xE - beq _080414A0 - adds r0, r1, 0 - adds r0, 0x5D - ldrb r0, [r0] - cmp r0, 0xE - beq _080414A0 - b _0804148A -_08041476: - cmp r0, 0x19 - beq _0804147E - cmp r0, 0xE3 - bne _0804148E -_0804147E: - adds r0, r4, 0 - bl sub_8070B28 - lsls r0, 24 - cmp r0, 0 - beq _080414A0 -_0804148A: - movs r0, 0 - b _080414B8 -_0804148E: - cmp r0, 0x97 - bne _080414A4 - adds r0, r4, 0 - bl sub_807E580 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080414A4 -_080414A0: - movs r0, 0x1 - b _080414B8 -_080414A4: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80570AC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_080414B8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_804143C - - thumb_func_start sub_80414C0 -sub_80414C0: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrh r0, [r4, 0x2] - cmp r0, 0x9C - bne _080414DC - adds r0, r5, 0 - bl sub_8045128 - bl sub_804AF20 - lsls r0, 24 - cmp r0, 0 - bne _080414F2 -_080414DC: - ldrh r0, [r4, 0x2] - cmp r0, 0x8 - bne _080414F6 - adds r0, r5, 0 - bl sub_8045128 - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - beq _080414F6 -_080414F2: - movs r0, 0x1 - b _080414F8 -_080414F6: - movs r0, 0 -_080414F8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80414C0 - - thumb_func_start sub_8041500 -sub_8041500: - push {lr} - bl sub_800E7D0 - lsls r0, 24 - cmp r0, 0 - beq _08041518 - movs r0, 0x5C - bl sub_803E46C - movs r0, 0x5D - bl sub_8052740 -_08041518: - pop {r0} - bx r0 - thumb_func_end sub_8041500 - - thumb_func_start sub_804151C -sub_804151C: - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - adds r5, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_800DC9C - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8041550 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_804151C - - thumb_func_start sub_8041550 -sub_8041550: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - adds r7, r0, 0 - mov r10, r1 - ldr r0, [sp, 0x54] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x2C] - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r7, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - beq _0804159C - ldr r0, [r7, 0x70] - mov r8, r0 - adds r0, r7, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _0804159C - cmp r6, 0 - bne _080415A2 - mov r0, r8 - adds r0, 0xFF - ldrb r0, [r0] - cmp r0, 0x2 - bne _080415A2 -_0804159C: - movs r0, 0x1 - negs r0, r0 - b _08041692 -_080415A2: - ldr r1, [sp, 0x50] - cmp r1, 0 - beq _080415B4 - movs r0, 0 - cmp r1, 0x2 - bne _080415B0 - movs r0, 0x1 -_080415B0: - bl sub_804178C -_080415B4: - add r6, sp, 0x28 - adds r1, r7, 0 - adds r1, 0x28 - adds r0, r6, 0 - mov r2, r9 - bl sub_800569C - movs r2, 0 - ldrsh r0, [r6, r2] - cmp r0, 0x63 - beq _080415F2 - ldrh r0, [r6, 0x2] - cmp r0, 0x63 - beq _080415F2 - movs r1, 0 - ldrsh r0, [r6, r1] - lsls r0, 8 - ldr r1, [r7, 0xC] - adds r4, r1, r0 - movs r2, 0x2 - ldrsh r0, [r6, r2] - lsls r0, 8 - ldr r2, [r7, 0x10] - adds r0, r2, r0 - movs r1, 0xBA - lsls r1, 1 - add r1, r8 - ldr r1, [r1] - subs r5, r0, r1 - adds r1, r2, 0 - b _08041600 -_080415F2: - ldr r4, [r7, 0xC] - movs r0, 0xBA - lsls r0, 1 - add r0, r8 - ldr r1, [r7, 0x10] - ldr r0, [r0] - subs r5, r1, r0 -_08041600: - cmp r1, 0 - bge _08041606 - adds r1, 0xFF -_08041606: - asrs r1, 8 - ldr r0, _0804166C - ldr r0, [r0] - ldr r2, _08041670 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r1, r0 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r1, r0, 1 - adds r1, 0x1 - mov r0, r10 - str r0, [sp] - movs r3, 0 - str r3, [sp, 0x4] - movs r6, 0x1 - negs r6, r6 - str r6, [sp, 0x8] - mov r2, sp - adds r0, r4, 0 - cmp r4, 0 - bge _08041636 - adds r0, 0xFF -_08041636: - asrs r0, 8 - strh r0, [r2, 0xC] - mov r2, sp - adds r0, r5, 0 - cmp r0, 0 - bge _08041644 - adds r0, 0xFF -_08041644: - asrs r0, 8 - strh r0, [r2, 0xE] - str r6, [sp, 0x14] - mov r0, sp - strh r3, [r0, 0x10] - strh r3, [r0, 0x12] - str r1, [sp, 0x18] - add r0, sp, 0x1C - bl sub_8004E8C - mov r0, sp - movs r1, 0 - bl sub_8041764 - adds r4, r0, 0 - ldr r1, [sp, 0x2C] - cmp r1, 0 - beq _08041690 - movs r5, 0 - b _0804167C - .align 2, 0 -_0804166C: .4byte gUnknown_203B418 -_08041670: .4byte 0x000181f2 -_08041674: - movs r0, 0x42 - bl sub_803E46C - adds r5, 0x1 -_0804167C: - cmp r5, 0x63 - bgt _0804168C - adds r0, r4, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _08041674 -_0804168C: - movs r4, 0x1 - negs r4, r4 -_08041690: - adds r0, r4, 0 -_08041692: - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8041550 - - thumb_func_start sub_80416A4 -sub_80416A4: - push {r4,lr} - sub sp, 0x8 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0 - ldrsh r4, [r0, r3] - lsls r3, r4, 1 - adds r3, r4 - lsls r3, 11 - movs r4, 0xC0 - lsls r4, 4 - adds r3, r4 - str r3, [sp] - movs r4, 0x2 - ldrsh r3, [r0, r4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 11 - movs r3, 0x80 - lsls r3, 5 - adds r0, r3 - str r0, [sp, 0x4] - mov r0, sp - bl sub_80416E0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80416A4 - - thumb_func_start sub_80416E0 -sub_80416E0: - push {r4,r5,lr} - sub sp, 0x28 - adds r3, r0, 0 - lsls r2, 24 - lsrs r5, r2, 24 - str r1, [sp] - movs r2, 0 - str r2, [sp, 0x4] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x8] - mov r1, sp - ldr r0, [r3] - cmp r0, 0 - bge _08041700 - adds r0, 0xFF -_08041700: - asrs r0, 8 - strh r0, [r1, 0xC] - mov r1, sp - ldr r0, [r3, 0x4] - cmp r0, 0 - bge _0804170E - adds r0, 0xFF -_0804170E: - asrs r0, 8 - strh r0, [r1, 0xE] - str r4, [sp, 0x14] - mov r0, sp - strh r2, [r0, 0x10] - strh r2, [r0, 0x12] - ldr r0, _08041738 - str r0, [sp, 0x18] - add r0, sp, 0x1C - bl sub_8004E8C - mov r0, sp - movs r1, 0 - bl sub_8041764 - adds r4, r0, 0 - cmp r5, 0 - beq _08041758 - movs r5, 0 - b _08041744 - .align 2, 0 -_08041738: .4byte 0x0000ffff -_0804173C: - movs r0, 0x42 - bl sub_803E46C - adds r5, 0x1 -_08041744: - cmp r5, 0x63 - bgt _08041754 - adds r0, r4, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _0804173C -_08041754: - movs r4, 0x1 - negs r4, r4 -_08041758: - adds r0, r4, 0 - add sp, 0x28 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80416E0 - - thumb_func_start sub_8041764 -sub_8041764: - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - ldr r0, [r5] - bl sub_800EE5C - bl sub_800EF64 - cmp r4, 0 - beq _08041780 - movs r0, 0x42 - bl sub_803E46C -_08041780: - adds r0, r5, 0 - bl sub_800E890 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8041764 - - thumb_func_start sub_804178C -sub_804178C: - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r0, _080417B0 - ldr r0, [r0] - ldr r1, _080417B4 - adds r0, r1 - str r4, [r0] - adds r0, r5, 0 - bl sub_800E9FC - lsls r0, 24 - cmp r0, 0 - beq _080417E0 - ldr r6, _080417B8 - b _080417C4 - .align 2, 0 -_080417B0: .4byte gUnknown_203B418 -_080417B4: .4byte 0x00018204 -_080417B8: .4byte 0x000003e7 -_080417BC: - movs r0, 0x4A - bl sub_803E46C - adds r4, 0x1 -_080417C4: - cmp r4, r6 - bgt _080417D4 - adds r0, r5, 0 - bl sub_800E9FC - lsls r0, 24 - cmp r0, 0 - bne _080417BC -_080417D4: - movs r0, 0x4A - bl sub_803E46C - movs r0, 0x4A - bl sub_803E46C -_080417E0: - movs r0, 0xFA - lsls r0, 2 - cmp r4, r0 - beq _080417EC - cmp r5, 0 - beq _080417F0 -_080417EC: - bl sub_800DBBC -_080417F0: - ldr r2, _08041824 - ldr r0, [r2] - cmp r0, 0x1E - bgt _08041860 - ldr r1, _08041828 - ldrb r7, [r1] - movs r0, 0x1 - strb r0, [r1] - movs r4, 0 - adds r5, r2, 0 - ldr r6, _0804182C -_08041806: - ldr r0, [r5] - cmp r0, 0x1E - bgt _08041838 - adds r0, 0x4 - str r0, [r5] - ldr r1, _08041830 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r6 - beq _0804183C - ldr r3, _08041834 - adds r0, r2, r3 - strh r0, [r1] - b _0804183C - .align 2, 0 -_08041824: .4byte gUnknown_202EDC8 -_08041828: .4byte gUnknown_203B40D -_0804182C: .4byte 0x00000808 -_08041830: .4byte gUnknown_2026E4E -_08041834: .4byte 0xfffffeff -_08041838: - movs r0, 0x1F - str r0, [r5] -_0804183C: - bl sub_803EA10 - movs r0, 0x4A - bl sub_803E46C - ldr r0, [r5] - cmp r0, 0x1F - beq _08041854 - adds r4, 0x1 - ldr r0, _0804186C - cmp r4, r0 - ble _08041806 -_08041854: - ldr r0, _08041870 - ldr r2, _08041874 - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _08041878 - strb r7, [r0] -_08041860: - bl sub_8042E98 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804186C: .4byte 0x000003e7 -_08041870: .4byte gUnknown_2026E4E -_08041874: .4byte 0x00000808 -_08041878: .4byte gUnknown_203B40D - thumb_func_end sub_804178C - - thumb_func_start sub_804187C -sub_804187C: - ldr r0, [r0, 0x70] - movs r1, 0x80 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bx lr - thumb_func_end sub_804187C - - thumb_func_start sub_8041888 -sub_8041888: - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 -_08041890: - ldr r0, _080418CC - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _080418D0 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - beq _080418C0 - ldr r1, [r4, 0x70] - cmp r6, 0 - beq _080418BA - movs r0, 0xA6 - lsls r0, 1 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] -_080418BA: - adds r0, r4, 0 - bl sub_80418D4 -_080418C0: - adds r5, 0x1 - cmp r5, 0x13 - ble _08041890 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080418CC: .4byte gUnknown_203B418 -_080418D0: .4byte 0x000135cc - thumb_func_end sub_8041888 - - thumb_func_start sub_80418D4 -sub_80418D4: - push {r4,lr} - adds r4, r0, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - bne _080418E4 - b _08041A8C -_080418E4: - ldr r2, [r4, 0x70] - movs r3, 0 - movs r1, 0x1 - movs r4, 0x2 - ldrsh r0, [r2, r4] - cmp r0, 0xB9 - bne _08041902 - adds r0, r2, 0 - adds r0, 0xA9 - ldrb r0, [r0] - movs r1, 0x7F - eors r0, r1 - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 -_08041902: - cmp r1, 0 - beq _08041914 - ldr r1, _08041A94 - adds r0, r2, 0 - adds r0, 0xA8 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] -_08041914: - ldr r1, _08041A98 - adds r0, r2, 0 - adds r0, 0xAC - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041A9C - adds r0, r2, 0 - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AA0 - adds r0, r2, 0 - adds r0, 0xBC - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AA4 - adds r0, r2, 0 - adds r0, 0xC0 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AA8 - adds r0, r2, 0 - adds r0, 0xC4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AAC - adds r0, r2, 0 - adds r0, 0xC8 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AB0 - adds r0, r2, 0 - adds r0, 0xD0 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AB4 - adds r0, r2, 0 - adds r0, 0xDC - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AB8 - adds r0, r2, 0 - adds r0, 0xE0 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041ABC - adds r0, r2, 0 - adds r0, 0xE4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AC0 - adds r0, r2, 0 - adds r0, 0xE8 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - ldr r1, _08041AC4 - adds r0, r2, 0 - adds r0, 0xEC - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r3, r0 - adds r0, r2, 0 - adds r0, 0xF4 - ldrb r0, [r0] - cmp r0, 0 - beq _080419E4 - movs r0, 0x80 - lsls r0, 17 - orrs r3, r0 -_080419E4: - adds r0, r2, 0 - adds r0, 0xF5 - ldrb r0, [r0] - cmp r0, 0 - beq _080419F4 - movs r0, 0x80 - lsls r0, 18 - orrs r3, r0 -_080419F4: - ldrb r0, [r2, 0x6] - cmp r0, 0 - bne _08041A14 - movs r0, 0x10 - ldrsh r1, [r2, r0] - cmp r1, 0 - bge _08041A04 - adds r1, 0x3 -_08041A04: - asrs r1, 2 - movs r4, 0xE - ldrsh r0, [r2, r4] - cmp r1, r0 - ble _08041A14 - movs r0, 0x80 - lsls r0, 6 - orrs r3, r0 -_08041A14: - ldr r0, _08041AC8 - ldr r0, [r0] - ldr r1, _08041ACC - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08041A36 - adds r0, r2, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08041A36 - movs r0, 0x80 - lsls r0, 6 - orrs r3, r0 -_08041A36: - ldr r0, [r2, 0x2C] - cmp r0, 0xFF - ble _08041A7E - ldr r0, [r2, 0x30] - cmp r0, 0xFF - ble _08041A7E - ldr r0, [r2, 0x34] - cmp r0, 0xFF - ble _08041A7E - ldr r0, [r2, 0x38] - cmp r0, 0xFF - ble _08041A7E - movs r4, 0x1C - ldrsh r0, [r2, r4] - cmp r0, 0x9 - ble _08041A7E - movs r1, 0x1E - ldrsh r0, [r2, r1] - cmp r0, 0x9 - ble _08041A7E - movs r4, 0x20 - ldrsh r0, [r2, r4] - cmp r0, 0x9 - ble _08041A7E - movs r1, 0x22 - ldrsh r0, [r2, r1] - cmp r0, 0x9 - ble _08041A7E - movs r4, 0x24 - ldrsh r0, [r2, r4] - cmp r0, 0x9 - ble _08041A7E - movs r1, 0x26 - ldrsh r0, [r2, r1] - cmp r0, 0x9 - bgt _08041A84 -_08041A7E: - movs r0, 0x80 - lsls r0, 20 - orrs r3, r0 -_08041A84: - movs r4, 0x80 - lsls r4, 2 - adds r0, r2, r4 - str r3, [r0] -_08041A8C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08041A94: .4byte gUnknown_80F669C -_08041A98: .4byte gUnknown_80F66B4 -_08041A9C: .4byte gUnknown_80F66C8 -_08041AA0: .4byte gUnknown_80F66E8 -_08041AA4: .4byte gUnknown_80F6708 -_08041AA8: .4byte gUnknown_80F673C -_08041AAC: .4byte gUnknown_80F6778 -_08041AB0: .4byte gUnknown_80F6788 -_08041AB4: .4byte gUnknown_80F6794 -_08041AB8: .4byte gUnknown_80F67A8 -_08041ABC: .4byte gUnknown_80F67B4 -_08041AC0: .4byte gUnknown_80F67C4 -_08041AC4: .4byte gUnknown_80F67D4 -_08041AC8: .4byte gUnknown_203B418 -_08041ACC: .4byte 0x00000676 - thumb_func_end sub_80418D4 - - thumb_func_start sub_8041AD0 -sub_8041AD0: - push {lr} - movs r1, 0xA2 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041AD0 - - thumb_func_start sub_8041AE0 -sub_8041AE0: - push {lr} - ldr r1, _08041AF0 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041AF0: .4byte 0x00000143 - thumb_func_end sub_8041AE0 - - thumb_func_start sub_8041AF4 -sub_8041AF4: - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x25 - movs r2, 0x1 - bl sub_804151C - ldr r1, _08041B10 - adds r0, r4, 0 - bl sub_80421C0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08041B10: .4byte 0x00000197 - thumb_func_end sub_8041AF4 - - thumb_func_start nullsub_57 -nullsub_57: - bx lr - thumb_func_end nullsub_57 - - thumb_func_start sub_8041B18 -sub_8041B18: - push {lr} - ldr r1, _08041B28 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041B28: .4byte 0x00000141 - thumb_func_end sub_8041B18 - - thumb_func_start nullsub_58 -nullsub_58: - bx lr - thumb_func_end nullsub_58 - - thumb_func_start nullsub_59 -nullsub_59: - bx lr - thumb_func_end nullsub_59 - - thumb_func_start sub_8041B34 -sub_8041B34: - push {lr} - movs r1, 0x7 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041B34 - - thumb_func_start nullsub_60 -nullsub_60: - bx lr - thumb_func_end nullsub_60 - - thumb_func_start sub_8041B48 -sub_8041B48: - push {lr} - movs r1, 0x4 - movs r2, 0 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041B48 - - thumb_func_start nullsub_61 -nullsub_61: - bx lr - thumb_func_end nullsub_61 - - thumb_func_start sub_8041B5C -sub_8041B5C: - push {lr} - ldr r1, _08041B6C - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041B6C: .4byte 0x00000171 - thumb_func_end sub_8041B5C - - thumb_func_start nullsub_62 -nullsub_62: - bx lr - thumb_func_end nullsub_62 - - thumb_func_start sub_8041B74 -sub_8041B74: - push {lr} - ldr r1, _08041B84 - movs r2, 0 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041B84: .4byte 0x00000171 - thumb_func_end sub_8041B74 - - thumb_func_start nullsub_63 -nullsub_63: - bx lr - thumb_func_end nullsub_63 - - thumb_func_start nullsub_64 -nullsub_64: - bx lr - thumb_func_end nullsub_64 - - thumb_func_start sub_8041B90 -sub_8041B90: - push {lr} - movs r1, 0xD6 - lsls r1, 1 - movs r2, 0 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041B90 - - thumb_func_start nullsub_65 -nullsub_65: - bx lr - thumb_func_end nullsub_65 - - thumb_func_start nullsub_66 -nullsub_66: - bx lr - thumb_func_end nullsub_66 - - thumb_func_start sub_8041BA8 -sub_8041BA8: - push {lr} - movs r1, 0x4 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041BA8 - - thumb_func_start nullsub_67 -nullsub_67: - bx lr - thumb_func_end nullsub_67 - - thumb_func_start sub_8041BBC -sub_8041BBC: - push {lr} - movs r1, 0xD4 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041BBC - - thumb_func_start nullsub_68 -nullsub_68: - bx lr - thumb_func_end nullsub_68 - - thumb_func_start sub_8041BD0 -sub_8041BD0: - push {lr} - lsls r1, 24 - cmp r1, 0 - beq _08041BDE - ldr r1, _08041BE4 - bl sub_80421C0 -_08041BDE: - pop {r0} - bx r0 - .align 2, 0 -_08041BE4: .4byte 0x000001a5 - thumb_func_end sub_8041BD0 - - thumb_func_start sub_8041BE8 -sub_8041BE8: - push {lr} - movs r1, 0xCB - lsls r1, 1 - bl sub_80421C0 - pop {r0} - bx r0 - thumb_func_end sub_8041BE8 - - thumb_func_start sub_8041BF8 -sub_8041BF8: - push {lr} - movs r1, 0xA - movs r2, 0x8 - bl sub_806CDD4 - pop {r0} - bx r0 - thumb_func_end sub_8041BF8 - - thumb_func_start sub_8041C08 -sub_8041C08: - push {lr} - ldr r1, _08041C18 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041C18: .4byte 0x000001a7 - thumb_func_end sub_8041C08 - - thumb_func_start sub_8041C1C -sub_8041C1C: - push {lr} - ldr r1, _08041C2C - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041C2C: .4byte 0x000001a7 - thumb_func_end sub_8041C1C - - thumb_func_start nullsub_69 -nullsub_69: - bx lr - thumb_func_end nullsub_69 - - thumb_func_start sub_8041C34 -sub_8041C34: - push {lr} - movs r1, 0x4C - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041C34 - - thumb_func_start nullsub_70 -nullsub_70: - bx lr - thumb_func_end nullsub_70 - - thumb_func_start nullsub_71 -nullsub_71: - bx lr - thumb_func_end nullsub_71 - - thumb_func_start sub_8041C4C -sub_8041C4C: - push {lr} - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041C4C - - thumb_func_start sub_8041C58 -sub_8041C58: - push {lr} - ldr r1, _08041C68 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041C68: .4byte 0x000001a9 - thumb_func_end sub_8041C58 - - thumb_func_start sub_8041C6C -sub_8041C6C: - push {lr} - movs r1, 0x9D - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041C6C - - thumb_func_start sub_8041C7C -sub_8041C7C: - push {lr} - movs r1, 0x9D - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041C7C - - thumb_func_start nullsub_72 -nullsub_72: - bx lr - thumb_func_end nullsub_72 - - thumb_func_start nullsub_73 -nullsub_73: - bx lr - thumb_func_end nullsub_73 - - thumb_func_start sub_8041C94 -sub_8041C94: - push {lr} - ldr r1, _08041CA4 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041CA4: .4byte 0x00000171 - thumb_func_end sub_8041C94 - - thumb_func_start sub_8041CA8 -sub_8041CA8: - push {lr} - movs r1, 0x7 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041CA8 - - thumb_func_start sub_8041CB8 -sub_8041CB8: - push {lr} - ldr r1, _08041CC8 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041CC8: .4byte 0x0000018b - thumb_func_end sub_8041CB8 - - thumb_func_start sub_8041CCC -sub_8041CCC: - push {lr} - movs r1, 0xC5 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041CCC - - thumb_func_start sub_8041CDC -sub_8041CDC: - push {lr} - movs r1, 0x5 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041CDC - - thumb_func_start sub_8041CEC -sub_8041CEC: - push {lr} - ldr r1, _08041CF8 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041CF8: .4byte 0x0000019d - thumb_func_end sub_8041CEC - - thumb_func_start nullsub_74 -nullsub_74: - bx lr - thumb_func_end nullsub_74 - - thumb_func_start sub_8041D00 -sub_8041D00: - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - movs r1, 0x2F - movs r2, 0x1 - bl sub_804151C - adds r0, r4, 0 - movs r1, 0x30 - movs r2, 0x1 - bl sub_804151C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041D00 - - thumb_func_start nullsub_75 -nullsub_75: - bx lr - thumb_func_end nullsub_75 - - thumb_func_start nullsub_76 -nullsub_76: - bx lr - thumb_func_end nullsub_76 - - thumb_func_start nullsub_77 -nullsub_77: - bx lr - thumb_func_end nullsub_77 - - thumb_func_start nullsub_78 -nullsub_78: - bx lr - thumb_func_end nullsub_78 - - thumb_func_start nullsub_79 -nullsub_79: - bx lr - thumb_func_end nullsub_79 - - thumb_func_start nullsub_80 -nullsub_80: - bx lr - thumb_func_end nullsub_80 - - thumb_func_start sub_8041D38 -sub_8041D38: - push {lr} - movs r1, 0x21 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041D38 - - thumb_func_start sub_8041D48 -sub_8041D48: - push {lr} - ldr r1, _08041D54 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041D54: .4byte 0x00000191 - thumb_func_end sub_8041D48 - - thumb_func_start nullsub_81 -nullsub_81: - bx lr - thumb_func_end nullsub_81 - - thumb_func_start sub_8041D5C -sub_8041D5C: - push {r4,lr} - adds r4, r0, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08041D7E - ldr r0, [r4, 0x70] - movs r1, 0x89 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - adds r1, r4, 0 - movs r2, 0x1 - movs r3, 0xB - bl sub_803ED30 -_08041D7E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041D5C - - thumb_func_start sub_8041D84 -sub_8041D84: - push {lr} - ldr r1, _08041D90 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041D90: .4byte 0x0000019f - thumb_func_end sub_8041D84 - - thumb_func_start nullsub_82 -nullsub_82: - bx lr - thumb_func_end nullsub_82 - - thumb_func_start nullsub_83 -nullsub_83: - bx lr - thumb_func_end nullsub_83 - - thumb_func_start sub_8041D9C -sub_8041D9C: - push {lr} - ldr r1, _08041DAC - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041DAC: .4byte 0x00000131 - thumb_func_end sub_8041D9C - - thumb_func_start sub_8041DB0 -sub_8041DB0: - push {lr} - movs r1, 0x30 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041DB0 - - thumb_func_start nullsub_84 -nullsub_84: - bx lr - thumb_func_end nullsub_84 - - thumb_func_start nullsub_85 -nullsub_85: - bx lr - thumb_func_end nullsub_85 - - thumb_func_start nullsub_204 -nullsub_204: - bx lr - thumb_func_end nullsub_204 - - thumb_func_start nullsub_86 -nullsub_86: - bx lr - thumb_func_end nullsub_86 - - thumb_func_start nullsub_87 -nullsub_87: - bx lr - thumb_func_end nullsub_87 - - thumb_func_start nullsub_88 -nullsub_88: - bx lr - thumb_func_end nullsub_88 - - thumb_func_start sub_8041DD8 -sub_8041DD8: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - asrs r5, r1, 16 - movs r1, 0xE - bl sub_8071858 - lsls r0, 24 - cmp r0, 0 - beq _08041DF8 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_804151C - b _08041E02 -_08041DF8: - adds r0, r4, 0 - movs r1, 0xE - movs r2, 0x1 - bl sub_804151C -_08041E02: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8041DD8 - - thumb_func_start nullsub_89 -nullsub_89: - bx lr - thumb_func_end nullsub_89 - - thumb_func_start sub_8041E0C -sub_8041E0C: - push {lr} - movs r1, 0x41 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E0C - - thumb_func_start sub_8041E1C -sub_8041E1C: - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x8F - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - movs r1, 0xCE - lsls r1, 1 - adds r0, r4, 0 - bl sub_80421C0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8041E1C - - thumb_func_start sub_8041E3C -sub_8041E3C: - push {lr} - movs r1, 0xD7 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E3C - - thumb_func_start sub_8041E4C -sub_8041E4C: - push {lr} - ldr r1, _08041E5C - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041E5C: .4byte 0x000001b1 - thumb_func_end sub_8041E4C - - thumb_func_start sub_8041E60 -sub_8041E60: - push {lr} - ldr r1, _08041E70 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041E70: .4byte 0x000001a9 - thumb_func_end sub_8041E60 - - thumb_func_start sub_8041E74 -sub_8041E74: - push {lr} - movs r1, 0xC9 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E74 - - thumb_func_start sub_8041E84 -sub_8041E84: - push {lr} - movs r1, 0xC7 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E84 - - thumb_func_start sub_8041E94 -sub_8041E94: - push {lr} - movs r1, 0xC8 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041E94 - - thumb_func_start sub_8041EA4 -sub_8041EA4: - push {lr} - movs r1, 0x15 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041EA4 - - thumb_func_start sub_8041EB4 -sub_8041EB4: - push {lr} - ldr r1, _08041EC4 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_08041EC4: .4byte 0x00000171 - thumb_func_end sub_8041EB4 - - thumb_func_start sub_8041EC8 -sub_8041EC8: - push {lr} - ldr r1, _08041ED4 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041ED4: .4byte 0x00000197 - thumb_func_end sub_8041EC8 - - thumb_func_start sub_8041ED8 -sub_8041ED8: - push {lr} - ldr r1, _08041EE4 - bl sub_80421C0 - pop {r0} - bx r0 - .align 2, 0 -_08041EE4: .4byte 0x00000197 - thumb_func_end sub_8041ED8 - - thumb_func_start sub_8041EE8 -sub_8041EE8: - push {lr} - movs r1, 0x15 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041EE8 - - thumb_func_start sub_8041EF8 -sub_8041EF8: - push {lr} - movs r1, 0xF - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_8041EF8 - - thumb_func_start sub_8041F08 -sub_8041F08: - push {lr} - sub sp, 0x8 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x15 - movs r2, 0x1 - movs r3, 0x3 - bl sub_8041550 - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_8041F08 - - thumb_func_start nullsub_90 -nullsub_90: - bx lr - thumb_func_end nullsub_90 - - thumb_func_start sub_8041F28 -sub_8041F28: - push {lr} - cmp r1, 0 - bne _08041F3A - movs r1, 0xCA - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - b _08041F42 -_08041F3A: - ldr r1, _08041F48 - movs r2, 0x1 - bl sub_804151C -_08041F42: - pop {r0} - bx r0 - .align 2, 0 -_08041F48: .4byte 0x00000193 - thumb_func_end sub_8041F28 - - thumb_func_start sub_8041F4C -sub_8041F4C: - push {lr} - cmp r1, 0 - bne _08041F60 - ldr r1, _08041F5C - movs r2, 0x1 - bl sub_804151C - b _08041F68 - .align 2, 0 -_08041F5C: .4byte 0x0000018f -_08041F60: - ldr r1, _08041F6C - movs r2, 0x1 - bl sub_804151C -_08041F68: - pop {r0} - bx r0 - .align 2, 0 -_08041F6C: .4byte 0x00000191 - thumb_func_end sub_8041F4C - - thumb_func_start sub_8041F70 -sub_8041F70: - push {lr} - cmp r1, 0 - bne _08041F84 - ldr r1, _08041F80 - movs r2, 0x1 - bl sub_804151C - b _08041F8E - .align 2, 0 -_08041F80: .4byte 0x000001a9 -_08041F84: - movs r1, 0xC9 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C -_08041F8E: - pop {r0} - bx r0 - thumb_func_end sub_8041F70 - - thumb_func_start sub_8041F94 -sub_8041F94: - push {lr} - cmp r1, 0 - bne _08041FA6 - movs r1, 0xC7 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - b _08041FB0 -_08041FA6: - movs r1, 0xC8 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C -_08041FB0: - pop {r0} - bx r0 - thumb_func_end sub_8041F94 - - thumb_func_start sub_8041FB4 -sub_8041FB4: - push {lr} - cmp r1, 0 - bne _08041FC8 - ldr r1, _08041FC4 - movs r2, 0x1 - bl sub_804151C - b _08041FD2 - .align 2, 0 -_08041FC4: .4byte 0x000001a9 -_08041FC8: - movs r1, 0xC9 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C -_08041FD2: - pop {r0} - bx r0 - thumb_func_end sub_8041FB4 - - thumb_func_start sub_8041FD8 -sub_8041FD8: - push {lr} - cmp r1, 0 - bne _08041FEA - movs r1, 0xCA - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - b _08041FF2 -_08041FEA: - ldr r1, _08041FF8 - movs r2, 0x1 - bl sub_804151C -_08041FF2: - pop {r0} - bx r0 - .align 2, 0 -_08041FF8: .4byte 0x00000193 - thumb_func_end sub_8041FD8 - - thumb_func_start sub_8041FFC -sub_8041FFC: - push {lr} - cmp r1, 0 - bne _0804200E - movs r1, 0xC7 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - b _08042018 -_0804200E: - movs r1, 0xC8 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C -_08042018: - pop {r0} - bx r0 - thumb_func_end sub_8041FFC - - thumb_func_start sub_804201C -sub_804201C: - push {lr} - cmp r1, 0 - bne _08042030 - ldr r1, _0804202C - movs r2, 0x1 - bl sub_804151C - b _08042038 - .align 2, 0 -_0804202C: .4byte 0x0000018f -_08042030: - ldr r1, _0804203C - movs r2, 0x1 - bl sub_804151C -_08042038: - pop {r0} - bx r0 - .align 2, 0 -_0804203C: .4byte 0x00000191 - thumb_func_end sub_804201C - - thumb_func_start sub_8042040 -sub_8042040: - push {lr} - cmp r1, 0 - bne _08042052 - movs r1, 0xC6 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - b _0804205A -_08042052: - movs r1, 0xD - movs r2, 0x1 - bl sub_804151C -_0804205A: - pop {r0} - bx r0 - thumb_func_end sub_8042040 - - thumb_func_start sub_8042060 -sub_8042060: - push {lr} - cmp r1, 0 - bne _08042074 - ldr r1, _08042070 - movs r2, 0x1 - bl sub_804151C - b _0804207C - .align 2, 0 -_08042070: .4byte 0x0000018d -_08042074: - movs r1, 0xE - movs r2, 0x1 - bl sub_804151C -_0804207C: - pop {r0} - bx r0 - thumb_func_end sub_8042060 - - thumb_func_start sub_8042080 -sub_8042080: - push {lr} - cmp r1, 0 - bne _08042092 - movs r1, 0xC6 - lsls r1, 1 - movs r2, 0x1 - bl sub_804151C - b _0804209A -_08042092: - movs r1, 0xD - movs r2, 0x1 - bl sub_804151C -_0804209A: - pop {r0} - bx r0 - thumb_func_end sub_8042080 - - thumb_func_start sub_80420A0 -sub_80420A0: - push {lr} - ldr r1, _080420B0 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_080420B0: .4byte 0x00000143 - thumb_func_end sub_80420A0 - - thumb_func_start nullsub_91 -nullsub_91: - bx lr - thumb_func_end nullsub_91 - - thumb_func_start sub_80420B8 -sub_80420B8: - push {lr} - movs r1, 0x19 - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_80420B8 - - thumb_func_start sub_80420C8 -sub_80420C8: - push {lr} - sub sp, 0x8 - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - movs r1, 0x15 - movs r2, 0x1 - movs r3, 0x3 - bl sub_8041550 - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_80420C8 - - thumb_func_start nullsub_92 -nullsub_92: - bx lr - thumb_func_end nullsub_92 - - thumb_func_start sub_80420E8 -sub_80420E8: - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, [r1, 0x8] - ldr r0, _0804211C - ldr r0, [r0] - ldr r2, _08042120 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08042106 - adds r0, r1, 0 - bl sub_806F62C - adds r1, r0, 0 -_08042106: - cmp r1, 0x1 - beq _08042124 - cmp r1, 0x1 - bcc _08042116 - cmp r1, 0x2 - beq _08042128 - cmp r1, 0x3 - beq _0804212C -_08042116: - movs r1, 0x8 - b _0804212E - .align 2, 0 -_0804211C: .4byte gUnknown_203B418 -_08042120: .4byte 0x0000016d -_08042124: - movs r1, 0x9 - b _0804212E -_08042128: - movs r1, 0xA - b _0804212E -_0804212C: - movs r1, 0xB -_0804212E: - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl sub_8041550 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80420E8 - - thumb_func_start sub_8042148 -sub_8042148: - push {r4,lr} - adds r4, r0, 0 - ldr r1, _08042164 - bl sub_80421C0 - movs r1, 0x9F - lsls r1, 1 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_804151C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08042164: .4byte 0x000001a7 - thumb_func_end sub_8042148 - - thumb_func_start nullsub_93 -nullsub_93: - bx lr - thumb_func_end nullsub_93 - - thumb_func_start sub_804216C -sub_804216C: - push {lr} - adds r0, r1, 0 - cmp r2, 0x1 - bne _0804217E - movs r1, 0xF8 - movs r2, 0x1 - bl sub_804151C - b _08042186 -_0804217E: - movs r1, 0xF9 - movs r2, 0x1 - bl sub_804151C -_08042186: - pop {r0} - bx r0 - thumb_func_end sub_804216C - - thumb_func_start sub_804218C -sub_804218C: - push {lr} - adds r0, r1, 0 - movs r1, 0x2A - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - thumb_func_end sub_804218C - - thumb_func_start sub_804219C -sub_804219C: - push {lr} - movs r1, 0x90 - movs r2, 0x1 - bl sub_80416E0 - pop {r0} - bx r0 - thumb_func_end sub_804219C - - thumb_func_start sub_80421AC -sub_80421AC: - push {lr} - adds r0, r1, 0 - ldr r1, _080421BC - movs r2, 0x1 - bl sub_804151C - pop {r0} - bx r0 - .align 2, 0 -_080421BC: .4byte 0x00000167 - thumb_func_end sub_80421AC - - thumb_func_start sub_80421C0 -sub_80421C0: - push {r4,lr} - adds r2, r0, 0 - lsls r1, 16 - lsrs r0, r1, 16 - adds r4, r0, 0 - cmp r2, 0 - bne _080421D4 - bl sub_8083E38 - b _080421E6 -_080421D4: - adds r0, r2, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _080421E6 - adds r0, r4, 0 - bl sub_8083E38 -_080421E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80421C0 - - thumb_func_start sub_80421EC -sub_80421EC: - push {r4,lr} - lsls r1, 16 - lsrs r4, r1, 16 - bl sub_803F428 - lsls r0, 24 - cmp r0, 0 - beq _08042202 - adds r0, r4, 0 - bl sub_8083E38 -_08042202: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80421EC - - thumb_func_start sub_8042208 -sub_8042208: - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - bne _0804221C - movs r0, 0xA9 - lsls r0, 1 - bl sub_8083E38 - b _08042234 -_0804221C: - cmp r1, 0x1 - bne _0804222C - ldr r0, _08042228 - bl sub_8083E38 - b _08042234 - .align 2, 0 -_08042228: .4byte 0x00000151 -_0804222C: - movs r0, 0xA8 - lsls r0, 1 - bl sub_8083E38 -_08042234: - pop {r0} - bx r0 - thumb_func_end sub_8042208 - - thumb_func_start sub_8042238 -sub_8042238: - push {lr} - ldr r0, [r1, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _08042250 - ldr r0, _0804224C - bl sub_8083E38 - b _08042258 - .align 2, 0 -_0804224C: .4byte 0x00000157 -_08042250: - movs r0, 0xAB - lsls r0, 1 - bl sub_8083E38 -_08042258: - pop {r0} - bx r0 - thumb_func_end sub_8042238 - - thumb_func_start sub_804225C -sub_804225C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - adds r7, r4, 0 - cmp r4, 0x11 - bne _08042274 - b _08042384 -_08042274: - adds r0, r5, 0 - bl sub_803F428 - lsls r0, 24 - cmp r0, 0 - bne _08042282 - b _08042384 -_08042282: - adds r0, r4, 0 - bl sub_800EF28 - bl sub_800EF64 - movs r0, 0x4 - movs r1, 0x42 - bl sub_803E708 - movs r0, 0 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 11 - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1 - cmp r0, 0 - bge _080422AA - adds r0, 0xFF -_080422AA: - lsls r0, 8 - lsrs r0, 16 - ldr r1, _080422FC - ldr r2, [sp] - ands r2, r1 - orrs r2, r0 - str r2, [sp] - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 11 - movs r1, 0x80 - lsls r1, 5 - adds r0, r1 - cmp r0, 0 - bge _080422CE - adds r0, 0xFF -_080422CE: - lsls r0, 8 - lsrs r0, 16 - lsls r0, 16 - ldr r1, _08042300 - ands r2, r1 - orrs r2, r0 - str r2, [sp] - adds r0, r4, 0 - mov r1, sp - bl sub_800E448 - adds r6, r0, 0 - cmp r4, 0x4 - bne _08042308 - ldr r1, _08042304 - movs r0, 0 - bl sub_80421C0 - movs r0, 0x28 - movs r1, 0x33 - bl sub_803E708 - b _08042360 - .align 2, 0 -_080422FC: .4byte 0xffff0000 -_08042300: .4byte 0x0000ffff -_08042304: .4byte 0x00000193 -_08042308: - cmp r7, 0x8 - bne _08042358 - mov r0, r8 - ldr r7, [r0, 0x70] - adds r0, r7, 0 - adds r0, 0x46 - ldrb r4, [r0] - movs r5, 0 - b _0804231C -_0804231A: - adds r5, 0x2 -_0804231C: - ldr r0, _08042354 - cmp r5, r0 - bgt _08042346 - subs r4, 0x1 - movs r0, 0x7 - ands r4, r0 - mov r0, r8 - movs r1, 0 - adds r2, r4, 0 - bl sub_806CDD4 - movs r0, 0x2 - movs r1, 0x33 - bl sub_803E708 - adds r0, r6, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _0804231A -_08042346: - movs r0, 0x7 - ands r4, r0 - adds r0, r7, 0 - adds r0, 0x46 - strb r4, [r0] - b _08042360 - .align 2, 0 -_08042354: .4byte 0x000003e7 -_08042358: - movs r0, 0x28 - movs r1, 0x33 - bl sub_803E708 -_08042360: - movs r5, 0 - ldr r4, _08042368 - b _0804236E - .align 2, 0 -_08042368: .4byte 0x000003e7 -_0804236C: - adds r5, 0x1 -_0804236E: - cmp r5, r4 - bgt _08042384 - movs r0, 0x42 - bl sub_803E46C - adds r0, r6, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _0804236C -_08042384: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804225C - - thumb_func_start sub_8042390 -sub_8042390: - push {r4-r6,lr} - sub sp, 0x18 - adds r5, r0, 0 - adds r4, r1, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08042454 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - movs r6, 0 - cmp r0, 0 - bne _080423B0 - ldrb r6, [r4, 0x2] -_080423B0: - adds r0, r6, 0 - movs r1, 0 - bl sub_800EF40 - bl sub_800EF64 - movs r0, 0x4 - movs r1, 0x42 - bl sub_803E708 - ldr r0, [r5, 0xC] - cmp r0, 0 - bge _080423CC - adds r0, 0xFF -_080423CC: - lsls r0, 8 - lsrs r0, 16 - ldr r1, _08042428 - ldr r2, [sp, 0x14] - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x14] - ldr r0, [r5, 0x10] - cmp r0, 0 - bge _080423E2 - adds r0, 0xFF -_080423E2: - lsls r0, 8 - lsrs r0, 16 - lsls r0, 16 - ldr r4, _0804242C - ands r4, r2 - orrs r4, r0 - str r4, [sp, 0x14] - asrs r4, 16 - ldr r0, _08042430 - ldr r0, [r0] - ldr r1, _08042434 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - subs r4, r0 - lsrs r0, r4, 31 - adds r4, r0 - asrs r4, 1 - adds r4, 0x1 - adds r1, r5, 0 - adds r1, 0x28 - add r0, sp, 0x4 - bl sub_8005700 - add r1, sp, 0x14 - str r4, [sp] - adds r0, r6, 0 - add r2, sp, 0x4 - movs r3, 0 - bl sub_800E49C - adds r5, r0, 0 - movs r4, 0 - ldr r6, _08042438 - b _0804243E - .align 2, 0 -_08042428: .4byte 0xffff0000 -_0804242C: .4byte 0x0000ffff -_08042430: .4byte gUnknown_203B418 -_08042434: .4byte 0x000181f2 -_08042438: .4byte 0x000003e7 -_0804243C: - adds r4, 0x1 -_0804243E: - cmp r4, r6 - bgt _08042454 - movs r0, 0x42 - bl sub_803E46C - adds r0, r5, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _0804243C -_08042454: - add sp, 0x18 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8042390 - - thumb_func_start sub_804245C -sub_804245C: - push {r4-r6,lr} - sub sp, 0x18 - adds r5, r0, 0 - adds r4, r1, 0 - bl sub_8042768 - lsls r0, 24 - cmp r0, 0 - beq _08042518 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - movs r6, 0 - cmp r0, 0 - bne _0804247C - ldrb r6, [r4, 0x2] -_0804247C: - bl sub_800EF64 - movs r0, 0x4 - movs r1, 0x42 - bl sub_803E708 - ldr r0, [r5, 0xC] - cmp r0, 0 - bge _08042490 - adds r0, 0xFF -_08042490: - lsls r0, 8 - lsrs r0, 16 - ldr r1, _080424EC - ldr r2, [sp, 0x14] - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x14] - ldr r0, [r5, 0x10] - cmp r0, 0 - bge _080424A6 - adds r0, 0xFF -_080424A6: - lsls r0, 8 - lsrs r0, 16 - lsls r0, 16 - ldr r4, _080424F0 - ands r4, r2 - orrs r4, r0 - str r4, [sp, 0x14] - asrs r4, 16 - ldr r0, _080424F4 - ldr r0, [r0] - ldr r1, _080424F8 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - subs r4, r0 - lsrs r0, r4, 31 - adds r4, r0 - asrs r4, 1 - adds r4, 0x1 - adds r1, r5, 0 - adds r1, 0x28 - add r0, sp, 0x4 - bl sub_8005700 - add r1, sp, 0x14 - str r4, [sp] - adds r0, r6, 0 - add r2, sp, 0x4 - movs r3, 0x1 - bl sub_800E49C - adds r5, r0, 0 - movs r4, 0 - ldr r6, _080424FC - b _08042502 - .align 2, 0 -_080424EC: .4byte 0xffff0000 -_080424F0: .4byte 0x0000ffff -_080424F4: .4byte gUnknown_203B418 -_080424F8: .4byte 0x000181f2 -_080424FC: .4byte 0x000003e7 -_08042500: - adds r4, 0x1 -_08042502: - cmp r4, r6 - bgt _08042518 - movs r0, 0x42 - bl sub_803E46C - adds r0, r5, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _08042500 -_08042518: - add sp, 0x18 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804245C - - thumb_func_start sub_8042520 -sub_8042520: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x3C - adds r4, r0, 0 - bl sub_8045888 - lsls r0, 24 - cmp r0, 0 - bne _0804253A - b _08042664 -_0804253A: - ldr r0, [r4, 0x70] - adds r0, 0x46 - ldrb r5, [r0] - ldr r0, [r4, 0xC] - cmp r0, 0 - bge _08042548 - adds r0, 0xFF -_08042548: - lsls r0, 8 - lsrs r0, 16 - ldr r1, _0804264C - ldr r2, [sp, 0x2C] - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x2C] - ldr r0, [r4, 0x10] - cmp r0, 0 - bge _0804255E - adds r0, 0xFF -_0804255E: - lsls r0, 8 - lsrs r0, 16 - lsls r0, 16 - ldr r1, _08042650 - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x2C] - asrs r1, 16 - ldr r0, _08042654 - ldr r0, [r0] - ldr r2, _08042658 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r7, r1, 1 - ldr r0, _0804265C - str r0, [sp, 0x4] - movs r2, 0 - str r2, [sp, 0x8] - str r5, [sp, 0xC] - add r1, sp, 0x4 - add r4, sp, 0x2C - ldrh r0, [r4] - strh r0, [r1, 0xC] - ldr r0, [sp, 0x2C] - asrs r0, 16 - strh r0, [r1, 0xE] - adds r0, r1, 0 - strh r2, [r0, 0x10] - strh r2, [r0, 0x12] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x18] - str r7, [sp, 0x1C] - add r0, sp, 0x20 - bl sub_8004E8C - add r0, sp, 0x4 - movs r1, 0 - bl sub_8041764 - adds r6, r0, 0 - mov r10, r4 - lsls r1, r5, 2 - mov r0, sp - adds r0, 0x30 - str r0, [sp, 0x38] - ldr r0, _08042660 - adds r5, r1, r0 - movs r1, 0x5 - mov r8, r1 - mov r9, r10 -_080425CC: - movs r0, 0 - str r0, [sp] - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - adds r3, r7, 0 - bl sub_800E8AC - movs r0, 0x42 - bl sub_803E46C - movs r2, 0 - ldrsh r0, [r5, r2] - lsls r0, 2 - mov r1, r9 - ldrh r1, [r1] - adds r0, r1 - mov r2, r9 - strh r0, [r2] - movs r0, 0x2 - ldrsh r1, [r5, r0] - lsls r1, 2 - ldrh r0, [r4, 0x2] - adds r0, r1 - strh r0, [r4, 0x2] - movs r2, 0x2 - ldrsh r1, [r4, r2] - ldr r0, _08042654 - ldr r0, [r0] - ldr r2, _08042658 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r7, r1, 1 - movs r0, 0x1 - negs r0, r0 - add r8, r0 - mov r1, r8 - cmp r1, 0 - bge _080425CC - bl sub_800DBBC - mov r2, r10 - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r0, 8 - str r0, [sp, 0x30] - add r0, sp, 0x2C - movs r2, 0x2 - ldrsh r0, [r0, r2] - lsls r0, 8 - ldr r1, [sp, 0x38] - str r0, [r1, 0x4] - movs r1, 0xD0 - lsls r1, 1 - ldr r0, [sp, 0x38] - movs r2, 0x1 - bl sub_80416E0 - adds r6, r0, 0 - b _08042668 - .align 2, 0 -_0804264C: .4byte 0xffff0000 -_08042650: .4byte 0x0000ffff -_08042654: .4byte gUnknown_203B418 -_08042658: .4byte 0x000181f2 -_0804265C: .4byte 0x00000165 -_08042660: .4byte gUnknown_80F4448 -_08042664: - movs r6, 0x1 - negs r6, r6 -_08042668: - adds r0, r6, 0 - add sp, 0x3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8042520 - - thumb_func_start sub_804267C -sub_804267C: - push {r4,lr} - ldr r4, _080426B8 - bl sub_8043D10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08042694 - cmp r0, 0 - blt _08042694 - cmp r0, 0x2 - ble _080426AC -_08042694: - ldr r0, _080426BC - ldr r0, [r0] - ldr r1, _080426C0 - adds r0, r1 - ldrb r0, [r0] - bl GetStairDirection - lsls r0, 24 - ldr r4, _080426C4 - cmp r0, 0 - beq _080426AC - subs r4, 0x1 -_080426AC: - adds r0, r4, 0 - bl sub_8083E38 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080426B8: .4byte 0x000003e5 -_080426BC: .4byte gUnknown_203B418 -_080426C0: .4byte 0x00000644 -_080426C4: .4byte 0x00000155 - thumb_func_end sub_804267C - - thumb_func_start sub_80426C8 -sub_80426C8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0x3 - bne _080426D8 - movs r0, 0 - bl sub_8083E88 -_080426D8: - cmp r5, 0x4 - beq _080426F0 - ldr r0, _080426EC - lsls r1, r4, 1 - adds r1, r0 - ldrh r0, [r1] - bl sub_8083E38 - b _080426FC - .align 2, 0 -_080426EC: .4byte gUnknown_80F67DC -_080426F0: - ldr r0, _08042708 - lsls r1, r4, 1 - adds r1, r0 - ldrh r0, [r1] - bl sub_8083E38 -_080426FC: - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x80 - bl sub_8042B34 - b _08042712 - .align 2, 0 -_08042708: .4byte gUnknown_80F67E4 -_0804270C: - movs r0, 0x46 - bl sub_803E46C -_08042712: - bl sub_8042CC0 - lsls r0, 24 - cmp r0, 0 - bne _0804270C - bl sub_8042D7C - bl sub_8040238 - movs r0, 0x1 - bl sub_8052210 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80426C8 - - thumb_func_start sub_8042730 -sub_8042730: - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x8 - movs r2, 0x8 - bl sub_806CDD4 - movs r5, 0 - b _08042742 -_08042740: - adds r5, 0x1 -_08042742: - cmp r5, 0x63 - bgt _08042760 - movs r0, 0x51 - bl sub_803E46C - ldr r0, [r4, 0x40] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08042760 - adds r0, r4, 0 - adds r0, 0x6B - ldrb r0, [r0] - cmp r0, 0x8 - beq _08042740 -_08042760: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8042730 - - thumb_func_start sub_8042768 -sub_8042768: - push {lr} - adds r1, r0, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - bne _08042778 -_08042774: - movs r0, 0 - b _080427A6 -_08042778: - ldr r0, _08042794 - ldr r2, [r0] - ldr r3, _08042798 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804279C - subs r3, 0x12 - adds r0, r2, r3 - ldr r0, [r0] - cmp r0, r1 - bne _08042774 - movs r0, 0x1 - b _080427A6 - .align 2, 0 -_08042794: .4byte gUnknown_203B418 -_08042798: .4byte 0x0001820a -_0804279C: - adds r0, r1, 0 - bl sub_8045888 - lsls r0, 24 - lsrs r0, 24 -_080427A6: - pop {r1} - bx r1 - thumb_func_end sub_8042768 - - thumb_func_start sub_80427AC -sub_80427AC: - push {r4-r6,lr} - movs r6, 0 -_080427B0: - ldr r0, _08042808 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _0804280C - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl sub_80450E0 - lsls r0, 24 - cmp r0, 0 - beq _080427FA - ldr r5, [r4, 0x70] - adds r1, r5, 0 - adds r1, 0xF3 - ldrb r0, [r1] - cmp r0, 0 - beq _080427FA - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl sub_80429A0 - ldrb r0, [r5, 0x6] - cmp r0, 0 - bne _080427FA - ldr r0, _08042810 - adds r1, r4, 0 - movs r2, 0 - bl sub_8045B94 - ldr r0, _08042814 - ldr r1, [r0] - adds r0, r4, 0 - bl sub_805239C -_080427FA: - adds r6, 0x1 - cmp r6, 0x13 - ble _080427B0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042808: .4byte gUnknown_203B418 -_0804280C: .4byte 0x000135cc -_08042810: .4byte gUnknown_202DF98 -_08042814: .4byte gUnknown_8100270 - thumb_func_end sub_80427AC - - thumb_func_start sub_8042818 -sub_8042818: - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _08042874 - ldr r0, [r0] - ldr r1, _08042878 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - bne _08042836 - bl sub_8083600 - adds r4, r0, 0 -_08042836: - ldr r1, _0804287C - lsls r0, r5, 1 - adds r2, r0, r1 - ldrh r1, [r2] - ldr r0, _08042880 - cmp r1, r0 - beq _0804284A - adds r0, r4, 0 - bl sub_80421C0 -_0804284A: - ldr r0, _08042884 - lsls r1, r5, 2 - adds r0, r1, r0 - ldr r5, [r0] - adds r6, r1, 0 - cmp r5, 0 - blt _08042896 - cmp r7, 0 - beq _08042888 - bl sub_80441BC - lsls r0, 24 - cmp r0, 0 - bne _08042888 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_804151C - b _08042896 - .align 2, 0 -_08042874: .4byte gUnknown_203B418 -_08042878: .4byte 0x000181f8 -_0804287C: .4byte gUnknown_80F682C -_08042880: .4byte 0x000003e5 -_08042884: .4byte gUnknown_80F67EC -_08042888: - ldr r0, _0804289C - adds r0, r6, r0 - ldr r1, [r0] - adds r0, r4, 0 - movs r2, 0 - bl sub_804151C -_08042896: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804289C: .4byte gUnknown_80F680C - thumb_func_end sub_8042818 - .align 2,0 @ Don't pad with nop diff --git a/asm/code_8040094.s b/asm/code_8040094.s new file mode 100644 index 0000000..e18a420 --- /dev/null +++ b/asm/code_8040094.s @@ -0,0 +1,3385 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80400D4 +sub_80400D4: + push {r4,lr} + ldr r0, _08040114 + ldr r4, [r0] + movs r0, 0xC1 + lsls r0, 9 + adds r3, r4, r0 + ldr r0, [r3] + cmp r0, 0 + beq _0804010C + cmp r0, 0x1E + ble _080400EC + movs r0, 0x1F +_080400EC: + ldr r1, _08040118 + adds r2, r4, r1 + ldr r1, _0804011C + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r3] + subs r0, 0x1 + str r0, [r3] + cmp r0, 0 + bne _0804010C + ldr r1, _08040120 + adds r0, r4, r1 + ldr r0, [r0] + str r0, [r3] +_0804010C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08040114: .4byte gUnknown_203B418 +_08040118: .4byte 0x000181fc +_0804011C: .4byte gUnknown_80F6568 +_08040120: .4byte 0x00018204 + thumb_func_end sub_80400D4 + + thumb_func_start sub_8040124 +sub_8040124: + ldr r1, _0804012C + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_0804012C: .4byte gUnknown_202EE01 + thumb_func_end sub_8040124 + + thumb_func_start sub_8040130 +sub_8040130: + push {lr} + ldr r0, _08040144 + ldr r1, _08040148 + bl OpenFileAndGetFileDataPtr + ldr r1, _0804014C + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08040144: .4byte gUnknown_80F6604 +_08040148: .4byte gUnknown_83B0000 +_0804014C: .4byte gUnknown_202EE04 + thumb_func_end sub_8040130 + + thumb_func_start sub_8040150 +sub_8040150: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0 + ldr r2, _080401EC +_08040164: + movs r4, 0 + lsls r1, r0, 3 + adds r3, r0, 0x1 + mov r8, r3 + subs r1, r0 + lsls r0, r1, 7 + ldr r3, _080401F0 + adds r6, r0, r3 + lsls r5, r1, 2 +_08040176: + ldr r0, [r2] + adds r0, r6 + lsls r1, r4, 5 + adds r0, r1 + movs r1, 0x20 + str r2, [sp] + bl CpuClear + ldr r2, [sp] + ldr r0, [r2] + adds r1, r4, r5 + ldr r3, _080401F4 + adds r0, r3 + adds r0, r1 + movs r7, 0 + strb r7, [r0] + adds r4, 0x1 + cmp r4, 0x1B + ble _08040176 + mov r0, r8 + cmp r0, 0xF + ble _08040164 + mov r0, r9 + cmp r0, 0 + bne _080401B0 + ldr r1, _080401F8 + movs r0, 0x64 + strh r0, [r1] + strh r0, [r1, 0x2] +_080401B0: + ldr r3, _080401EC + ldr r0, [r3] + ldr r2, _080401FC + adds r1, r0, r2 + str r7, [r1] + ldr r1, _08040200 + adds r0, r1 + movs r2, 0x1 + strb r2, [r0] + ldr r0, [r3] + ldr r3, _08040204 + adds r0, r3 + strb r7, [r0] + ldr r0, _08040208 + strb r2, [r0] + ldr r1, _0804020C + ldr r0, _08040210 + str r0, [r1] + ldr r0, _08040214 + strb r2, [r0] + bl sub_8040238 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080401EC: .4byte gUnknown_203B418 +_080401F0: .4byte 0x0001822c +_080401F4: .4byte 0x0001ba2c +_080401F8: .4byte gUnknown_203B410 +_080401FC: .4byte 0x0001bdcc +_08040200: .4byte 0x0001bdd0 +_08040204: .4byte 0x0001bdd2 +_08040208: .4byte gUnknown_202EE00 +_0804020C: .4byte gUnknown_202EE08 +_08040210: .4byte 0x06001700 +_08040214: .4byte gUnknown_202EE01 + thumb_func_end sub_8040150 + + thumb_func_start sub_8040218 +sub_8040218: + push {lr} + ldr r0, _08040230 + ldr r0, [r0] + cmp r0, 0 + beq _08040226 + bl CloseFile +_08040226: + bl sub_8040124 + pop {r0} + bx r0 + .align 2, 0 +_08040230: .4byte gUnknown_202EE04 + thumb_func_end sub_8040218 + + thumb_func_start nullsub_203 +nullsub_203: + bx lr + thumb_func_end nullsub_203 + + thumb_func_start sub_8040238 +sub_8040238: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _0804026C + ldr r0, [r1] + cmp r0, 0 + beq _080402A0 + ldr r0, _08040270 + ldrb r0, [r0] + cmp r0, 0 + beq _080402A0 + movs r6, 0 + ldr r0, _08040274 + mov r8, r0 + adds r7, r1, 0 +_08040256: + cmp r6, 0xE + bne _08040278 + movs r0, 0xEE + mov r1, r8 + bl SetBGPaletteBufferColorArray + movs r0, 0xEE + mov r1, r8 + bl nullsub_5 + b _0804029A + .align 2, 0 +_0804026C: .4byte gUnknown_202EE04 +_08040270: .4byte gUnknown_202EE01 +_08040274: .4byte gUnknown_202D03C +_08040278: + adds r5, r6, 0 + adds r5, 0xE0 + ldr r0, [r7] + ldr r0, [r0, 0x4] + lsls r4, r6, 2 + ldr r1, [r0, 0x4] + adds r1, r4 + adds r0, r5, 0 + bl SetBGPaletteBufferColorArray + ldr r0, [r7] + ldr r0, [r0, 0x4] + ldr r1, [r0, 0x4] + adds r1, r4 + adds r0, r5, 0 + bl nullsub_5 +_0804029A: + adds r6, 0x1 + cmp r6, 0xF + ble _08040256 +_080402A0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8040238 + + thumb_func_start sub_80402AC +sub_80402AC: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + mov r8, r0 + str r1, [sp] + ldr r4, _0804034C + ldr r0, [r4] + str r0, [sp, 0x4] + movs r1, 0x1 + mov r10, r1 + ldr r0, _08040350 + ldr r0, [r0] + cmp r0, 0 + bne _080402D0 + b _08040776 +_080402D0: + ldr r0, _08040354 + ldrb r0, [r0] + cmp r0, 0 + bne _080402DA + b _08040776 +_080402DA: + bl sub_800EC74 + lsls r0, 24 + cmp r0, 0 + beq _080402E6 + b _08040776 +_080402E6: + mov r2, r8 + cmp r2, 0 + bge _080402EE + b _08040776 +_080402EE: + ldr r3, [sp] + cmp r3, 0x1 + bgt _080402F6 + b _08040776 +_080402F6: + cmp r2, 0x37 + ble _080402FC + b _08040776 +_080402FC: + cmp r3, 0x1E + ble _08040302 + b _08040776 +_08040302: + mov r0, r8 + adds r1, r3, 0 + bl sub_804954C + mov r9, r0 + ldrh r0, [r0] + movs r5, 0x3 + ands r5, r0 + str r5, [sp, 0x8] + ldr r0, [r4] + ldr r7, _08040358 + adds r1, r0, r7 + ldrb r1, [r1] + str r1, [sp, 0xC] + ldr r2, _0804035C + adds r1, r0, r2 + ldrb r5, [r1] + ldr r3, _08040360 + adds r1, r0, r3 + ldrb r1, [r1] + str r1, [sp, 0x14] + subs r7, 0x2 + adds r1, r0, r7 + ldrb r1, [r1] + str r1, [sp, 0x10] + ldr r1, _08040364 + adds r0, r1 + ldrb r0, [r0] + cmp r5, 0 + beq _08040368 + mov r2, r9 + ldrb r0, [r2, 0x4] + mov r7, r10 + ands r7, r0 + movs r3, 0 + str r3, [sp, 0x18] + b _0804039C + .align 2, 0 +_0804034C: .4byte gUnknown_203B418 +_08040350: .4byte gUnknown_202EE04 +_08040354: .4byte gUnknown_202EE01 +_08040358: .4byte 0x00018210 +_0804035C: .4byte 0x0001820a +_08040360: .4byte 0x0001820f +_08040364: .4byte 0x0001820b +_08040368: + cmp r0, 0 + beq _08040370 + movs r7, 0x1 + b _08040378 +_08040370: + mov r7, r9 + ldrb r0, [r7, 0x4] + mov r7, r10 + ands r7, r0 +_08040378: + bl sub_8043D10 + lsls r0, 24 + cmp r0, 0 + bne _08040398 + ldr r0, _08040390 + ldr r0, [r0] + ldr r1, _08040394 + adds r0, r1 + ldrb r0, [r0] + str r0, [sp, 0x18] + b _0804039C + .align 2, 0 +_08040390: .4byte gUnknown_203B418 +_08040394: .4byte 0x00018211 +_08040398: + movs r2, 0 + str r2, [sp, 0x18] +_0804039C: + bl sub_8094C48 + lsls r0, 24 + cmp r0, 0 + bne _080403A8 + b _08040632 +_080403A8: + ldr r0, _080403FC + ldr r0, [r0] + ldr r3, _08040400 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _080403B8 + b _08040632 +_080403B8: + movs r6, 0 + cmp r5, 0 + bne _0804045E + mov r0, r9 + ldr r4, [r0, 0x10] + cmp r4, 0 + beq _0804045E + adds r0, r4, 0 + bl sub_80450F8 + adds r1, r0, 0 + ldr r0, _08040404 + ldrb r0, [r0] + cmp r0, 0 + beq _0804045E + cmp r1, 0x1 + bne _0804045E + adds r0, r4, 0 + bl sub_8045804 + lsls r0, 24 + cmp r0, 0 + beq _0804045E + ldr r1, [r4, 0x70] + adds r0, r1, 0 + adds r0, 0x40 + ldrb r0, [r0] + cmp r0, 0x4A + beq _080403F6 + cmp r0, 0x47 + bne _08040408 +_080403F6: + movs r0, 0x1 + b _0804040A + .align 2, 0 +_080403FC: .4byte gUnknown_203B418 +_08040400: .4byte 0x0001356c +_08040404: .4byte gUnknown_202EE00 +_08040408: + movs r0, 0 +_0804040A: + cmp r0, 0 + bne _08040458 + adds r0, r1, 0 + adds r0, 0xA4 + ldrb r0, [r0] + cmp r0, 0x1 + beq _08040458 + cmp r0, 0x4 + beq _08040458 + ldrb r0, [r1, 0x6] + cmp r0, 0 + beq _08040426 + movs r6, 0x2 + b _0804045A +_08040426: + ldrb r0, [r1, 0x7] + cmp r0, 0 + beq _08040458 + ldr r0, _0804044C + mov r1, r8 + strh r1, [r0] + mov r2, sp + ldrh r2, [r2] + strh r2, [r0, 0x2] + ldr r0, _08040450 + ldr r0, [r0] + ldr r3, _08040454 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0804045A + movs r6, 0x8 + b _0804045A + .align 2, 0 +_0804044C: .4byte gUnknown_203B410 +_08040450: .4byte gUnknown_203B418 +_08040454: .4byte 0x00018214 +_08040458: + movs r6, 0xA +_0804045A: + movs r0, 0 + mov r10, r0 +_0804045E: + mov r1, r10 + cmp r1, 0 + beq _0804054E + cmp r5, 0 + bne _08040548 + mov r2, r9 + ldr r4, [r2, 0x14] + cmp r4, 0 + beq _08040500 + adds r0, r4, 0 + bl sub_80450F8 + adds r5, r0, 0 + cmp r7, 0 + bne _0804049E + movs r6, 0 + cmp r5, 0x3 + bne _0804054E + ldr r3, [sp, 0x10] + cmp r3, 0 + bne _08040494 + mov r5, r9 + ldrh r1, [r5, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0804054E +_08040494: + ldr r0, [sp, 0x8] + cmp r0, 0 + beq _0804054E + movs r6, 0x3 + b _0804054E +_0804049E: + cmp r5, 0x2 + bne _080404C4 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _080404B2 + ldr r1, [sp, 0x14] + cmp r1, 0 + beq _080404C4 +_080404B2: + adds r0, r4, 0 + bl sub_8045104 + ldr r1, _080404FC + ldrb r0, [r0] + adds r0, r1 + ldrb r6, [r0] + movs r2, 0 + mov r10, r2 +_080404C4: + mov r3, r10 + cmp r3, 0 + beq _0804054E + cmp r5, 0x3 + bne _080404EC + ldr r5, [sp, 0x10] + cmp r5, 0 + bne _080404E0 + mov r0, r9 + ldrh r1, [r0, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080404EC +_080404E0: + ldr r1, [sp, 0x8] + cmp r1, 0 + beq _080404EC + movs r6, 0x3 + movs r2, 0 + mov r10, r2 +_080404EC: + mov r3, r10 + cmp r3, 0 + beq _0804054E + ldr r5, [sp, 0x8] + cmp r5, 0x1 + beq _08040548 + movs r6, 0 + b _0804054E + .align 2, 0 +_080404FC: .4byte gUnknown_80F65F0 +_08040500: + cmp r7, 0 + bne _08040528 + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _08040548 + mov r2, r9 + ldrh r1, [r2] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _08040548 + bl sub_8043D10 + lsls r0, 24 + movs r6, 0x5 + cmp r0, 0 + bne _0804054E + movs r6, 0x6 + b _0804054E +_08040528: + mov r3, r9 + ldrh r1, [r3] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _08040548 + bl sub_8043D10 + lsls r0, 24 + movs r6, 0x5 + cmp r0, 0 + bne _08040544 + movs r6, 0x6 +_08040544: + movs r5, 0 + mov r10, r5 +_08040548: + mov r0, r10 + cmp r0, 0 + bne _0804055A +_0804054E: + ldr r1, [sp, 0xC] + cmp r1, 0 + beq _0804055A + cmp r6, 0 + beq _0804055E + movs r6, 0xB +_0804055A: + cmp r6, 0 + bne _08040606 +_0804055E: + cmp r7, 0 + beq _08040568 + ldr r2, [sp, 0x8] + cmp r2, 0x1 + beq _0804056C +_08040568: + movs r6, 0x1 + b _08040606 +_0804056C: + movs r4, 0xF + ldr r3, [sp] + cmp r3, 0x1E + bgt _0804058A + adds r1, r3, 0 + adds r1, 0x1 + mov r0, r8 + bl sub_804954C + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0804058A + movs r4, 0xE +_0804058A: + ldr r5, [sp] + cmp r5, 0 + ble _080405AA + adds r1, r5, 0 + subs r1, 0x1 + mov r0, r8 + bl sub_804954C + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _080405AA + movs r0, 0x5 + negs r0, r0 + ands r4, r0 +_080405AA: + mov r7, r8 + cmp r7, 0x36 + bgt _080405CA + mov r0, r8 + adds r0, 0x1 + ldr r1, [sp] + bl sub_804954C + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _080405CA + movs r0, 0x3 + negs r0, r0 + ands r4, r0 +_080405CA: + mov r0, r8 + cmp r0, 0 + ble _080405E8 + subs r0, 0x1 + ldr r1, [sp] + bl sub_804954C + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _080405E8 + movs r0, 0x9 + negs r0, r0 + ands r4, r0 +_080405E8: + lsls r0, r4, 16 + asrs r6, r0, 16 + mov r2, r9 + ldrh r1, [r2, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080405FE + adds r0, r6, 0 + adds r0, 0x10 + b _08040602 +_080405FE: + adds r0, r6, 0 + adds r0, 0x20 +_08040602: + lsls r0, 16 + asrs r6, r0, 16 +_08040606: + ldr r0, _08040618 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + bne _0804061C + adds r0, r6, 0 + adds r0, 0x80 + b _0804062C + .align 2, 0 +_08040618: .4byte gUnknown_203B46C +_0804061C: + bl sub_8094C68 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0804063A + adds r0, r6, 0 + adds r0, 0x40 +_0804062C: + lsls r0, 16 + asrs r6, r0, 16 + b _0804063A +_08040632: + movs r6, 0x1 + ldr r1, _0804074C + movs r0, 0x64 + strh r0, [r1] +_0804063A: + mov r3, r8 + lsrs r0, r3, 31 + add r0, r8 + asrs r0, 1 + mov r9, r0 + ldr r0, [sp] + subs r0, 0x2 + lsrs r1, r0, 31 + adds r1, r0, r1 + asrs r1, 1 + mov r5, r9 + lsls r3, r5, 1 + mov r7, r8 + subs r3, r7, r3 + lsls r2, r1, 1 + subs r0, r2 + lsls r0, 1 + adds r3, r0 + lsls r0, r1, 3 + subs r5, r0, r1 + lsls r0, r5, 7 + ldr r1, _08040750 + adds r0, r1 + ldr r2, [sp, 0x4] + adds r0, r2, r0 + mov r7, r9 + lsls r1, r7, 5 + adds r4, r0, r1 + ldr r0, _08040754 + ldr r0, [r0] + ldr r1, [r0, 0x4] + lsls r0, r6, 2 + adds r0, r3 + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r2, [r0] + ldr r0, [r4] + ldr r1, [r2] + ands r0, r1 + ldr r1, [r2, 0x4] + orrs r0, r1 + str r0, [r4] + ldr r0, [r4, 0x4] + ldr r1, [r2, 0x8] + ands r0, r1 + ldr r1, [r2, 0xC] + orrs r0, r1 + str r0, [r4, 0x4] + ldr r0, [r4, 0x8] + ldr r1, [r2, 0x10] + ands r0, r1 + ldr r1, [r2, 0x14] + orrs r0, r1 + str r0, [r4, 0x8] + ldr r0, [r4, 0xC] + ldr r1, [r2, 0x18] + ands r0, r1 + ldr r1, [r2, 0x1C] + orrs r0, r1 + str r0, [r4, 0xC] + ldr r0, [r4, 0x10] + ldr r1, [r2, 0x20] + ands r0, r1 + ldr r1, [r2, 0x24] + orrs r0, r1 + str r0, [r4, 0x10] + ldr r0, [r4, 0x14] + ldr r1, [r2, 0x28] + ands r0, r1 + ldr r1, [r2, 0x2C] + orrs r0, r1 + str r0, [r4, 0x14] + ldr r0, [r4, 0x18] + ldr r1, [r2, 0x30] + ands r0, r1 + ldr r1, [r2, 0x34] + orrs r0, r1 + str r0, [r4, 0x18] + ldr r0, [r4, 0x1C] + ldr r1, [r2, 0x38] + ands r0, r1 + ldr r1, [r2, 0x3C] + orrs r0, r1 + str r0, [r4, 0x1C] + ldr r0, [sp, 0x4] + ldr r1, _08040758 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, 0 + bne _08040776 + lsls r5, 2 + mov r10, r5 + mov r3, r9 + add r3, r10 + ldr r5, _0804075C + mov r8, r5 + ldr r0, [sp, 0x4] + add r0, r8 + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, 0 + bne _08040776 + movs r0, 0x1 + strb r0, [r1] + ldr r7, [sp, 0x4] + ldr r1, _08040760 + adds r6, r7, r1 + ldr r5, [r6] + cmp r5, 0x27 + bgt _08040774 + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + ldr r0, _08040764 + adds r2, r7, r0 + adds r2, r1 + ldr r0, _08040768 + lsls r3, 5 + ldr r0, [r0] + adds r0, r3 + str r0, [r2] + ldr r2, _0804076C + adds r0, r7, r2 + adds r0, r1 + str r4, [r0] + ldr r3, _08040770 + adds r2, r7, r3 + adds r2, r1 + mov r0, r10 + add r0, r8 + adds r0, r7, r0 + add r0, r9 + str r0, [r2] + adds r0, r5, 0x1 + str r0, [r6] + b _08040776 + .align 2, 0 +_0804074C: .4byte gUnknown_203B410 +_08040750: .4byte 0x0001822c +_08040754: .4byte gUnknown_202EE04 +_08040758: .4byte 0x0001bdd1 +_0804075C: .4byte 0x0001ba2c +_08040760: .4byte 0x0001bdcc +_08040764: .4byte 0x0001bbec +_08040768: .4byte gUnknown_202EE08 +_0804076C: .4byte 0x0001bbf0 +_08040770: .4byte 0x0001bbf4 +_08040774: + strb r0, [r2] +_08040776: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80402AC + + thumb_func_start sub_8040788 +sub_8040788: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08040814 + ldr r0, [r0] + mov r8, r0 + cmp r0, 0 + beq _08040870 + ldr r0, _08040818 + add r0, r8 + ldrb r0, [r0] + cmp r0, 0 + beq _08040870 + bl sub_800EC74 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _08040870 + ldr r1, _0804081C + add r1, r8 + ldrb r0, [r1] + cmp r0, 0 + bne _0804082C + movs r6, 0 + ldr r1, _08040820 + add r1, r8 + ldr r0, [r1] + cmp r6, r0 + bge _08040868 + adds r5, r1, 0 + movs r4, 0 +_080407C8: + ldr r1, _08040824 + adds r0, r4, r1 + mov r1, r8 + adds r3, r1, r0 + ldr r1, [r3, 0x4] + ldr r2, [r3] + ldr r0, _08040828 + ldr r0, [r0] + cmp r0, 0 + beq _080407E0 + cmp r0, 0x3 + bne _08040800 +_080407E0: + ldm r1!, {r0} + stm r2!, {r0} + ldm r1!, {r0} + stm r2!, {r0} + ldm r1!, {r0} + stm r2!, {r0} + ldm r1!, {r0} + stm r2!, {r0} + ldm r1!, {r0} + stm r2!, {r0} + ldm r1!, {r0} + stm r2!, {r0} + ldm r1!, {r0} + stm r2!, {r0} + ldr r0, [r1] + str r0, [r2] +_08040800: + ldr r0, [r3, 0x8] + movs r1, 0 + strb r1, [r0] + adds r4, 0xC + adds r6, 0x1 + ldr r0, [r5] + cmp r6, r0 + blt _080407C8 + b _08040868 + .align 2, 0 +_08040814: .4byte gUnknown_203B418 +_08040818: .4byte 0x0001bdd0 +_0804081C: .4byte 0x0001bdd1 +_08040820: .4byte 0x0001bdcc +_08040824: .4byte 0x0001bbec +_08040828: .4byte gUnknown_202EDD0 +_0804082C: + strb r2, [r1] + ldr r0, _0804087C + ldr r5, [r0] + ldr r4, _08040880 + add r4, r8 + movs r6, 0 + movs r7, 0x80 + lsls r7, 1 +_0804083C: + ldr r0, _08040884 + ldr r0, [r0] + cmp r0, 0 + beq _08040848 + cmp r0, 0x3 + bne _08040854 +_08040848: + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x80 + lsls r2, 1 + bl CpuCopy +_08040854: + adds r5, r7 + adds r4, r7 + adds r6, 0x8 + ldr r0, _08040888 + cmp r6, r0 + ble _0804083C + ldr r1, _0804088C + add r1, r8 + movs r0, 0x1 + strb r0, [r1] +_08040868: + ldr r1, _08040890 + add r1, r8 + movs r0, 0 + str r0, [r1] +_08040870: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804087C: .4byte gUnknown_202EE08 +_08040880: .4byte 0x0001822c +_08040884: .4byte gUnknown_202EDD0 +_08040888: .4byte 0x000001bf +_0804088C: .4byte 0x0001bdd2 +_08040890: .4byte 0x0001bdcc + thumb_func_end sub_8040788 + + thumb_func_start sub_8040894 +sub_8040894: + push {r4-r7,lr} + sub sp, 0x8 + ldr r0, _080409F4 + ldr r1, [r0] + ldr r2, _080409F8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _080408A8 + b _08040A6A +_080408A8: + adds r2, 0x5 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080408B4 + b _08040A6A +_080408B4: + ldr r7, _080409FC + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r0, 0x63 + ble _080408C0 + b _08040A6A +_080408C0: + ldr r0, _08040A00 + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + movs r0, 0x8 + ands r1, r0 + cmp r1, 0 + beq _080408D2 + b _08040A6A +_080408D2: + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r0, [r0] + ldr r1, _08040A04 + ands r1, r0 + ldr r3, _08040A08 + ldr r0, [sp] + ands r0, r3 + orrs r0, r1 + str r0, [sp] + mov r1, sp + ldrh r1, [r1] + adds r2, r3, 0 + ands r2, r0 + orrs r2, r1 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08040A0C + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r5, _08040A10 + adds r0, r5, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08040A14 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r0, _08040A18 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + mov r0, sp + ldrh r1, [r0] + ldr r4, _08040A1C + adds r0, r4, 0 + ands r0, r1 + adds r1, r3, 0 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + mov r0, sp + ldrh r0, [r0] + ands r3, r1 + orrs r3, r0 + str r3, [sp] + mov r3, sp + ldrh r0, [r3, 0x2] + ldr r6, _08040A20 + ands r6, r0 + ands r6, r4 + strh r6, [r3, 0x2] + ldr r2, _08040A24 + ldrh r1, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + ands r0, r5 + movs r5, 0xF + lsls r1, r5, 12 + ldr r4, _08040A28 + ands r0, r4 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r0, [r3, 0x6] + ldr r2, _08040A2C + ands r2, r0 + ldr r0, _08040A30 + ands r2, r0 + strh r2, [r3, 0x6] + ldr r0, _08040A34 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + bne _08040A3C + movs r1, 0 + ldrsh r0, [r7, r1] + lsls r0, 2 + adds r0, 0x10 + ldr r1, _08040A38 + ands r0, r1 + strh r0, [r3, 0x2] + movs r1, 0x2 + ldrsh r0, [r7, r1] + adds r0, 0x1 + lsls r0, 2 + ands r0, r4 + lsls r0, 4 + adds r1, r2, 0 + ands r1, r5 + orrs r1, r0 + strh r1, [r3, 0x6] + movs r1, 0x80 + lsls r1, 1 + mov r0, sp + movs r2, 0 + movs r3, 0 + bl nullsub_11 + b _08040A6A + .align 2, 0 +_080409F4: .4byte gUnknown_203B418 +_080409F8: .4byte 0x00018214 +_080409FC: .4byte gUnknown_203B410 +_08040A00: .4byte gUnknown_202EE02 +_08040A04: .4byte 0x0000feff +_08040A08: .4byte 0xffff0000 +_08040A0C: .4byte 0x0000fdff +_08040A10: .4byte 0x0000f3ff +_08040A14: .4byte 0x0000efff +_08040A18: .4byte 0x0000dfff +_08040A1C: .4byte 0x00003fff +_08040A20: .4byte 0x0000c1ff +_08040A24: .4byte 0x00000215 +_08040A28: .4byte 0x00000fff +_08040A2C: .4byte 0x0000fffe +_08040A30: .4byte 0x0000fffd +_08040A34: .4byte gUnknown_203B46C +_08040A38: .4byte 0x000001ff +_08040A3C: + movs r1, 0 + ldrsh r0, [r7, r1] + lsls r0, 2 + adds r0, 0x8 + ldr r1, _08040A74 + ands r0, r1 + strh r0, [r3, 0x2] + movs r1, 0x2 + ldrsh r0, [r7, r1] + lsls r0, 2 + ands r0, r4 + lsls r0, 4 + adds r1, r2, 0 + ands r1, r5 + orrs r1, r0 + strh r1, [r3, 0x6] + movs r1, 0x80 + lsls r1, 1 + mov r0, sp + movs r2, 0 + movs r3, 0 + bl AddSprite +_08040A6A: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08040A74: .4byte 0x000001ff + thumb_func_end sub_8040894 + + thumb_func_start sub_8040A78 +sub_8040A78: + ldr r1, _08040A80 + movs r0, 0 + strb r0, [r1] + bx lr + .align 2, 0 +_08040A80: .4byte gUnknown_202EE02 + thumb_func_end sub_8040A78 + + thumb_func_start sub_8040A84 +sub_8040A84: + push {r4-r6,lr} + ldr r0, _08040AB4 + ldr r0, [r0] + ldr r1, _08040AB8 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + movs r5, 0 +_08040A94: + movs r4, 0 + adds r6, r5, 0x1 +_08040A98: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80402AC + adds r4, 0x1 + cmp r4, 0x37 + ble _08040A98 + adds r5, r6, 0 + cmp r5, 0x1F + ble _08040A94 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08040AB4: .4byte gUnknown_203B418 +_08040AB8: .4byte 0x0001bdd1 + thumb_func_end sub_8040A84 + + thumb_func_start sub_8040ABC +sub_8040ABC: + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _08040AD8 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + bne _08040ADC + movs r7, 0xF + movs r0, 0 + b _08040AEC + .align 2, 0 +_08040AD8: .4byte gUnknown_203B46C +_08040ADC: + cmp r1, 0 + beq _08040AE8 + movs r7, 0xE + movs r4, 0 + mov r8, r4 + b _08040AEE +_08040AE8: + movs r7, 0x10 + movs r0, 0x3 +_08040AEC: + mov r8, r0 +_08040AEE: + ldr r6, _08040B58 + movs r2, 0x1 + movs r1, 0 + cmp r1, r7 + bge _08040B22 + ldr r4, _08040B5C + mov r12, r4 +_08040AFC: + lsls r0, r2, 6 + mov r4, r12 + adds r3, r0, r4 + adds r4, r2, 0x1 + adds r5, r1, 0x1 + movs r2, 0x1B +_08040B08: + adds r1, r6, 0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + strh r1, [r3] + adds r3, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _08040B08 + adds r2, r4, 0 + adds r1, r5, 0 + cmp r1, r7 + blt _08040AFC +_08040B22: + movs r1, 0 + cmp r1, r8 + bge _08040B4C + ldr r6, _08040B5C + movs r0, 0xE0 + lsls r0, 8 + adds r3, r0, 0 +_08040B30: + lsls r0, r2, 6 + adds r0, r6 + adds r4, r2, 0x1 + adds r5, r1, 0x1 + movs r2, 0x1B +_08040B3A: + strh r3, [r0] + adds r0, 0x2 + subs r2, 0x1 + cmp r2, 0 + bge _08040B3A + adds r2, r4, 0 + adds r1, r5, 0 + cmp r1, r8 + blt _08040B30 +_08040B4C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08040B58: .4byte 0x0000e0b8 +_08040B5C: .4byte gUnknown_202B03A + thumb_func_end sub_8040ABC + + thumb_func_start sub_8040B60 +sub_8040B60: + push {r4,r5,lr} + ldr r0, _08040BA4 + ldr r3, [r0] + ldr r1, _08040BA8 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08040B9E + movs r1, 0 + ldr r2, _08040BAC + adds r5, r3, r2 + movs r4, 0 +_08040B78: + lsls r0, r1, 3 + adds r2, r1, 0x1 + subs r0, r1 + movs r1, 0x37 + lsls r0, 2 + adds r0, r5 + adds r0, 0x37 +_08040B86: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _08040B86 + adds r1, r2, 0 + cmp r1, 0x1F + ble _08040B78 + movs r1, 0 + ldr r2, _08040BA8 + adds r0, r3, r2 + strb r1, [r0] +_08040B9E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08040BA4: .4byte gUnknown_203B418 +_08040BA8: .4byte 0x0001bdd2 +_08040BAC: .4byte 0x0001ba2c + thumb_func_end sub_8040B60 + + thumb_func_start sub_8040BB0 +sub_8040BB0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + adds r7, r1, 0 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + bl sub_804143C + mov r8, r0 + ldrh r4, [r7, 0x2] + adds r0, r6, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + mov r2, r8 + bl sub_804141C + lsls r0, 24 + lsrs r5, r0, 24 + mov r9, r5 + ldrh r4, [r7, 0x2] + adds r0, r6, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + mov r2, r8 + bl sub_80412E0 + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + movs r1, 0 + ldrsh r4, [r0, r1] + adds r0, r6, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _08040C28 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_80414C0 + lsls r0, 24 + cmp r0, 0 + bne _08040C28 + mov r0, r10 + cmp r0, 0 + bne _08040C2C +_08040C28: + adds r0, r5, 0 + b _08040C3C +_08040C2C: + cmp r4, 0 + beq _08040C3A + adds r0, r6, 0 + adds r1, r7, 0 + mov r2, r8 + bl sub_8040C4C +_08040C3A: + mov r0, r9 +_08040C3C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8040BB0 + + thumb_func_start sub_8040C4C +sub_8040C4C: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + adds r7, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + ldrh r5, [r4, 0x2] + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + adds r2, r6, 0 + bl sub_80412E0 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + ldr r6, [r7, 0x70] + ldrh r0, [r4, 0x2] + bl sub_800EC94 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r0, 0x4 + ldrsh r5, [r6, r0] + ldrh r4, [r4, 0x2] + adds r0, r7, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_80412E0 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_800E710 + adds r2, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _08040CC4 + add r0, sp, 0x8 + adds r1, r7, 0 + adds r1, 0x28 + lsls r2, 24 + lsrs r2, 24 + bl sub_800569C + b _08040CC8 +_08040CC4: + movs r0, 0 + str r0, [sp, 0x8] +_08040CC8: + mov r0, sp + mov r1, r9 + strh r1, [r0] + mov r1, sp + ldrh r0, [r6, 0x4] + strh r0, [r1, 0x2] + ldr r0, [r7, 0xC] + cmp r0, 0 + bge _08040CDC + adds r0, 0xFF +_08040CDC: + asrs r0, 8 + strh r0, [r1, 0x4] + mov r1, sp + ldr r0, [r7, 0x10] + cmp r0, 0 + bge _08040CEA + adds r0, 0xFF +_08040CEA: + asrs r0, 8 + strh r0, [r1, 0x6] + adds r0, r6, 0 + adds r0, 0x46 + ldrb r0, [r0] + str r0, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + mov r0, sp + bl sub_8041500 + mov r0, r9 + bl sub_800EEC8 + bl sub_800EF64 + movs r0, 0x58 + bl sub_803E46C + mov r0, sp + bl sub_800EA84 + adds r4, r0, 0 + adds r1, r7, 0 + movs r2, 0x5 + bl sub_8042DD4 + ldr r0, _08040D28 + ldrb r5, [r0] + ldr r6, _08040D2C + b _08040D78 + .align 2, 0 +_08040D28: .4byte gUnknown_203B40D +_08040D2C: .4byte 0x00001010 +_08040D30: + ldr r0, _08040D58 + movs r1, 0x1 + strb r1, [r0] + ldr r1, _08040D5C + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, r6 + beq _08040D48 + ldr r3, _08040D60 + adds r0, r2, r3 + strh r0, [r1] +_08040D48: + ldr r1, _08040D64 + ldr r0, [r1] + cmp r0, 0x4 + ble _08040D68 + subs r0, 0x4 + str r0, [r1] + b _08040D6E + .align 2, 0 +_08040D58: .4byte gUnknown_203B40D +_08040D5C: .4byte gUnknown_2026E4E +_08040D60: .4byte 0x00000101 +_08040D64: .4byte gUnknown_202EDC8 +_08040D68: + movs r0, 0 + str r0, [r1] + mov r8, r0 +_08040D6E: + bl sub_803EA10 + movs r0, 0x26 + bl sub_803E46C +_08040D78: + adds r0, r4, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + beq _08040D8A + mov r0, r8 + cmp r0, 0 + bne _08040D30 +_08040D8A: + ldr r0, _08040D9C + strb r5, [r0] + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08040D9C: .4byte gUnknown_203B40D + thumb_func_end sub_8040C4C + + thumb_func_start sub_8040DA0 +sub_8040DA0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r7, r0, 0 + mov r8, r1 + bl sub_804143C + mov r9, r0 + movs r0, 0 + str r0, [sp, 0x14] + ldr r1, [r7, 0x70] + mov r10, r1 + movs r0, 0x4 + ldrsh r5, [r1, r0] + mov r1, r8 + ldrh r4, [r1, 0x2] + adds r0, r7, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + mov r2, r9 + bl sub_80412E0 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_800EA44 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x18] + mov r0, sp + adds r1, r7, 0 + mov r2, r8 + mov r3, r9 + bl sub_8041038 + mov r0, sp + movs r1, 0x1 + bl sub_800E838 + lsls r0, 24 + cmp r0, 0 + bne _08040E0E + mov r1, r8 + ldrh r0, [r1, 0x2] + cmp r0, 0x52 + bne _08040E24 +_08040E0E: + ldr r0, _08040E1C + ldr r0, [r0] + ldr r1, _08040E20 + adds r0, r1 + ldr r6, [r0] + b _08040E26 + .align 2, 0 +_08040E1C: .4byte gUnknown_203B418 +_08040E20: .4byte 0x000181f8 +_08040E24: + adds r6, r7, 0 +_08040E26: + adds r0, r6, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + bne _08040E34 + adds r6, r7, 0 +_08040E34: + mov r1, sp + ldr r0, [r6, 0xC] + cmp r0, 0 + bge _08040E3E + adds r0, 0xFF +_08040E3E: + asrs r0, 8 + strh r0, [r1, 0x4] + mov r1, sp + ldr r0, [r6, 0x10] + cmp r0, 0 + bge _08040E4C + adds r0, 0xFF +_08040E4C: + asrs r0, 8 + strh r0, [r1, 0x6] + adds r0, r6, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + bne _08040E5E + b _08041026 +_08040E5E: + adds r0, r7, 0 + mov r1, r8 + bl sub_80414C0 + lsls r0, 24 + cmp r0, 0 + beq _08040E6E + b _08041026 +_08040E6E: + mov r0, r8 + ldrh r1, [r0, 0x2] + movs r0, 0x94 + lsls r0, 1 + cmp r1, r0 + bne _08040ED0 + movs r0, 0x7 + bl sub_8084100 + ldr r1, _08040EB8 + str r0, [r1] + ldr r1, _08040EBC + ldr r2, [r1] + ldr r1, _08040EC0 + adds r4, r2, r1 + subs r1, 0x4 + adds r2, r1 + ldr r3, _08040EC4 + lsls r1, r0, 2 + adds r1, r3 + ldr r1, [r1] + str r1, [r2] + str r1, [r4] + ldr r1, _08040EC8 + adds r0, 0x4 + str r0, [r1] + ldr r0, _08040ECC + ldr r1, [r0] + adds r0, r6, 0 + bl sub_80522A8 + movs r1, 0xD2 + lsls r1, 1 + adds r0, r6, 0 + bl sub_80421C0 + b _08040EF0 + .align 2, 0 +_08040EB8: .4byte gUnknown_202F224 +_08040EBC: .4byte gUnknown_203B418 +_08040EC0: .4byte 0x00018204 +_08040EC4: .4byte gUnknown_8106A8C +_08040EC8: .4byte gUnknown_202DE30 +_08040ECC: .4byte gUnknown_8100224 +_08040ED0: + cmp r1, 0x76 + bne _08040EF0 + ldr r0, _08040F70 + ldr r0, [r0] + ldr r1, _08040F74 + adds r2, r0, r1 + subs r1, 0x4 + adds r0, r1 + movs r1, 0xC + str r1, [r0] + str r1, [r2] + movs r1, 0xD2 + lsls r1, 1 + adds r0, r6, 0 + bl sub_80421C0 +_08040EF0: + mov r0, r10 + movs r1, 0x4 + ldrsh r5, [r0, r1] + mov r0, r8 + ldrh r4, [r0, 0x2] + adds r0, r7, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + mov r2, r9 + bl sub_80412E0 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_800E790 + adds r1, r0, 0 + ldr r0, _08040F78 + cmp r1, r0 + beq _08040F2A + lsls r0, r1, 16 + lsrs r0, 16 + bl sub_8083E38 +_08040F2A: + ldr r1, [sp, 0x18] + cmp r1, 0x63 + bne _08040F7C + adds r0, r6, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _08041026 + mov r0, r10 + adds r0, 0x46 + ldrb r4, [r0] + mov r0, sp + adds r1, r7, 0 + mov r2, r8 + mov r3, r9 + bl sub_8041108 + movs r6, 0x7 + movs r5, 0x7 +_08040F52: + subs r4, 0x1 + ands r4, r6 + adds r0, r7, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_806CDD4 + movs r0, 0x2 + movs r1, 0x15 + bl sub_803E708 + subs r5, 0x1 + cmp r5, 0 + bge _08040F52 + b _08041026 + .align 2, 0 +_08040F70: .4byte gUnknown_203B418 +_08040F74: .4byte 0x00018204 +_08040F78: .4byte 0x000003e5 +_08040F7C: + ldr r0, [sp, 0x18] + cmp r0, 0x62 + bne _08040FC2 + adds r0, r6, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _08041026 + mov r0, r10 + adds r0, 0x46 + ldrb r4, [r0] + mov r0, sp + adds r1, r7, 0 + mov r2, r8 + mov r3, r9 + bl sub_8041108 + movs r6, 0x7 + movs r5, 0x8 +_08040FA4: + ands r4, r6 + adds r0, r7, 0 + movs r1, 0 + adds r2, r4, 0 + bl sub_806CDD4 + movs r0, 0x2 + movs r1, 0x15 + bl sub_803E708 + adds r4, 0x1 + subs r5, 0x1 + cmp r5, 0 + bge _08040FA4 + b _08041026 +_08040FC2: + mov r0, r10 + adds r0, 0x46 + ldrb r2, [r0] + adds r0, r7, 0 + ldr r1, [sp, 0x18] + bl sub_806CDD4 + adds r0, r7, 0 + adds r0, 0x21 + movs r1, 0 + strb r1, [r0] + movs r5, 0 + adds r6, r0, 0 + b _08040FE6 +_08040FDE: + ldrb r0, [r6] + cmp r0, 0 + bne _08041022 + adds r5, 0x1 +_08040FE6: + cmp r5, 0x77 + bgt _08041022 + movs r0, 0x59 + bl sub_803E46C + ldr r4, [r7, 0x40] + ldr r1, [sp, 0x18] + cmp r1, 0x9 + bne _08040FFC + movs r0, 0x2 + orrs r4, r0 +_08040FFC: + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _0804101A + ldr r0, [sp, 0x14] + cmp r0, 0 + bne _0804101A + mov r0, sp + adds r1, r7, 0 + mov r2, r8 + mov r3, r9 + bl sub_8041108 + movs r1, 0x1 + str r1, [sp, 0x14] +_0804101A: + movs r0, 0x1 + ands r4, r0 + cmp r4, 0 + beq _08040FDE +_08041022: + movs r0, 0 + strb r0, [r6] +_08041026: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8040DA0 + + thumb_func_start sub_8041038 +sub_8041038: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + adds r7, r1, 0 + mov r8, r2 + mov r10, r3 + ldr r0, [r7, 0x70] + mov r9, r0 + ldrh r4, [r2, 0x2] + adds r0, r7, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + mov r2, r10 + bl sub_80412E0 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + bl sub_800ECB8 + movs r1, 0x2 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _080410F4 + mov r0, r9 + movs r1, 0x4 + ldrsh r5, [r0, r1] + mov r0, r8 + ldrh r4, [r0, 0x2] + adds r0, r7, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + mov r2, r10 + bl sub_80412E0 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_800E710 + adds r2, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _080410BE + adds r0, r6, 0 + adds r0, 0x8 + adds r1, r7, 0 + adds r1, 0x28 + lsls r2, 24 + lsrs r2, 24 + bl sub_800569C + b _080410C2 +_080410BE: + movs r0, 0 + str r0, [r6, 0x8] +_080410C2: + mov r1, sp + ldrh r1, [r1] + strh r1, [r6] + mov r1, r9 + ldrh r0, [r1, 0x4] + strh r0, [r6, 0x2] + ldr r0, [r7, 0xC] + cmp r0, 0 + bge _080410D6 + adds r0, 0xFF +_080410D6: + asrs r0, 8 + strh r0, [r6, 0x4] + ldr r0, [r7, 0x10] + cmp r0, 0 + bge _080410E2 + adds r0, 0xFF +_080410E2: + asrs r0, 8 + strh r0, [r6, 0x6] + mov r0, r9 + adds r0, 0x46 + ldrb r0, [r0] + str r0, [r6, 0xC] + movs r0, 0 + str r0, [r6, 0x10] + b _080410F6 +_080410F4: + strh r0, [r6] +_080410F6: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8041038 + + thumb_func_start sub_8041108 +sub_8041108: + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + adds r5, r3, 0 + ldrh r4, [r2, 0x2] + adds r0, r7, 0 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + adds r2, r5, 0 + bl sub_80412E0 + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl sub_800ECB8 + movs r2, 0x2 + ldrsh r1, [r0, r2] + ldrh r0, [r6] + cmp r0, 0 + beq _08041162 + cmp r1, 0 + beq _08041162 + adds r0, r6, 0 + bl sub_8041500 + adds r0, r4, 0 + bl sub_800EEF8 + bl sub_800EF64 + movs r0, 0x5A + bl sub_803E46C + adds r0, r6, 0 + bl sub_800E52C + adds r1, r7, 0 + movs r2, 0x1 + bl sub_8042DD4 +_08041162: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8041108 + + thumb_func_start sub_8041168 +sub_8041168: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + mov r8, r0 + adds r6, r1, 0 + adds r7, r2, 0 + mov r9, r3 + adds r1, r7, 0 + bl sub_804143C + adds r5, r0, 0 + cmp r5, 0 + beq _0804118A + movs r5, 0x1 +_0804118A: + ldrh r4, [r7, 0x2] + mov r0, r8 + bl sub_807E580 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + adds r2, r5, 0 + bl sub_80412E0 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + bl sub_800ECB8 + movs r1, 0x4 + ldrsh r5, [r0, r1] + movs r2, 0 + str r2, [sp, 0x14] + adds r0, r6, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + beq _080411CA + ldr r0, [r6, 0x70] + str r0, [sp, 0x14] + adds r0, r6, 0 + bl sub_8042768 + b _080411D0 +_080411CA: + mov r0, r9 + bl sub_803F428 +_080411D0: + lsls r0, 24 + cmp r0, 0 + beq _080412CE + mov r0, r8 + adds r1, r7, 0 + bl sub_80414C0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080412CE + cmp r5, 0 + beq _080412CE + adds r0, r5, 0 + bl sub_800ECA4 + ldr r5, [r0, 0x1C] + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _08041216 + adds r0, r6, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + beq _08041216 + add r0, sp, 0x8 + adds r1, r6, 0 + adds r1, 0x28 + lsls r2, r5, 24 + lsrs r2, 24 + bl sub_800569C + b _08041218 +_08041216: + str r4, [sp, 0x8] +_08041218: + mov r0, sp + mov r1, r10 + strh r1, [r0] + ldr r2, [sp, 0x14] + cmp r2, 0 + beq _08041248 + mov r1, sp + ldrh r0, [r2, 0x4] + strh r0, [r1, 0x2] + ldr r0, [r6, 0xC] + cmp r0, 0 + bge _08041232 + adds r0, 0xFF +_08041232: + asrs r0, 8 + strh r0, [r1, 0x4] + mov r1, sp + ldr r0, [r6, 0x10] + cmp r0, 0 + bge _08041240 + adds r0, 0xFF +_08041240: + asrs r0, 8 + strh r0, [r1, 0x6] + movs r0, 0 + b _0804128C +_08041248: + mov r1, sp + movs r0, 0x1 + strh r0, [r1, 0x2] + mov r0, r9 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 11 + mov r1, sp + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2 + cmp r0, 0 + bge _08041268 + adds r0, 0xFF +_08041268: + asrs r0, 8 + strh r0, [r1, 0x4] + mov r0, r9 + movs r2, 0x2 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 11 + mov r1, sp + movs r2, 0x80 + lsls r2, 5 + adds r0, r2 + cmp r0, 0 + bge _08041286 + adds r0, 0xFF +_08041286: + asrs r0, 8 + strh r0, [r1, 0x6] + ldr r0, [sp, 0x14] +_0804128C: + str r0, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + mov r0, sp + bl sub_8041500 + mov r0, r10 + bl sub_800EEE0 + bl sub_800EF64 + mov r0, sp + bl sub_800EBC8 + adds r4, r0, 0 + movs r0, 0x5B + bl sub_803E46C + adds r0, r4, 0 + adds r1, r6, 0 + movs r2, 0x6 + bl sub_8042DD4 + b _080412C2 +_080412BC: + movs r0, 0x28 + bl sub_803E46C +_080412C2: + adds r0, r4, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _080412BC +_080412CE: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8041168 + + thumb_func_start sub_80412E0 +sub_80412E0: + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r0, r1, 24 + adds r3, r4, 0 + cmp r3, 0x1F + bne _08041344 + cmp r0, 0x7 + bls _080412F6 + b _080413F6 +_080412F6: + lsls r0, 2 + ldr r1, _08041300 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08041300: .4byte _08041304 + .align 2, 0 +_08041304: + .4byte _080413F4 + .4byte _08041324 + .4byte _0804132A + .4byte _080413F4 + .4byte _08041334 + .4byte _0804133A + .4byte _080413F4 + .4byte _0804133A +_08041324: + movs r3, 0xCF + lsls r3, 1 + b _080413F6 +_0804132A: + ldr r3, _08041330 + b _080413F6 + .align 2, 0 +_08041330: .4byte 0x000001a1 +_08041334: + movs r3, 0xD0 + lsls r3, 1 + b _080413F6 +_0804133A: + ldr r3, _08041340 + b _080413F6 + .align 2, 0 +_08041340: .4byte 0x0000019f +_08041344: + cmp r2, 0 + beq _080413F6 + cmp r3, 0x97 + beq _080413B4 + cmp r3, 0x97 + bgt _0804136C + cmp r3, 0x3C + beq _0804139C + cmp r3, 0x3C + bgt _08041362 + cmp r3, 0x8 + beq _08041396 + cmp r3, 0x19 + beq _080413E4 + b _080413F4 +_08041362: + cmp r3, 0x4B + beq _080413A4 + cmp r3, 0x64 + beq _080413AA + b _080413F4 +_0804136C: + cmp r3, 0xCD + beq _080413CA + cmp r3, 0xCD + bgt _0804137E + cmp r3, 0x99 + beq _080413BA + cmp r3, 0x9C + beq _080413C4 + b _080413F4 +_0804137E: + cmp r3, 0xED + beq _080413DA + cmp r3, 0xED + bgt _0804138C + cmp r3, 0xE3 + beq _080413EA + b _080413F4 +_0804138C: + movs r0, 0xAE + lsls r0, 1 + cmp r3, r0 + beq _080413D4 + b _080413F4 +_08041396: + movs r3, 0xD1 + lsls r3, 1 + b _080413F6 +_0804139C: + ldr r3, _080413A0 + b _080413F6 + .align 2, 0 +_080413A0: .4byte 0x000001a3 +_080413A4: + movs r3, 0xD2 + lsls r3, 1 + b _080413F6 +_080413AA: + ldr r3, _080413B0 + b _080413F6 + .align 2, 0 +_080413B0: .4byte 0x000001a5 +_080413B4: + movs r3, 0xD3 + lsls r3, 1 + b _080413F6 +_080413BA: + ldr r3, _080413C0 + b _080413F6 + .align 2, 0 +_080413C0: .4byte 0x000001a7 +_080413C4: + movs r3, 0xD4 + lsls r3, 1 + b _080413F6 +_080413CA: + ldr r3, _080413D0 + b _080413F6 + .align 2, 0 +_080413D0: .4byte 0x000001a9 +_080413D4: + movs r3, 0xD5 + lsls r3, 1 + b _080413F6 +_080413DA: + ldr r3, _080413E0 + b _080413F6 + .align 2, 0 +_080413E0: .4byte 0x000001ab +_080413E4: + movs r3, 0xD6 + lsls r3, 1 + b _080413F6 +_080413EA: + ldr r3, _080413F0 + b _080413F6 + .align 2, 0 +_080413F0: .4byte 0x000001ad +_080413F4: + adds r3, r4, 0 +_080413F6: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80412E0 + + thumb_func_start sub_8041400 +sub_8041400: + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r1, 24 + bl sub_80412E0 + lsls r0, 16 + lsrs r0, 16 + bl sub_800ED20 + pop {r1} + bx r1 + thumb_func_end sub_8041400 + + thumb_func_start sub_804141C +sub_804141C: + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r1, 24 + bl sub_80412E0 + lsls r0, 16 + lsrs r0, 16 + bl sub_800EC84 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_804141C + + thumb_func_start sub_804143C +sub_804143C: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrh r0, [r5, 0x2] + cmp r0, 0xED + bne _08041476 + adds r0, r4, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + beq _080414A4 + adds r0, r4, 0 + bl sub_80450F8 + cmp r0, 0x1 + bne _080414A4 + ldr r1, [r4, 0x70] + adds r0, r1, 0 + adds r0, 0x5C + ldrb r0, [r0] + cmp r0, 0xE + beq _080414A0 + adds r0, r1, 0 + adds r0, 0x5D + ldrb r0, [r0] + cmp r0, 0xE + beq _080414A0 + b _0804148A +_08041476: + cmp r0, 0x19 + beq _0804147E + cmp r0, 0xE3 + bne _0804148E +_0804147E: + adds r0, r4, 0 + bl sub_8070B28 + lsls r0, 24 + cmp r0, 0 + beq _080414A0 +_0804148A: + movs r0, 0 + b _080414B8 +_0804148E: + cmp r0, 0x97 + bne _080414A4 + adds r0, r4, 0 + bl sub_807E580 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080414A4 +_080414A0: + movs r0, 0x1 + b _080414B8 +_080414A4: + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80570AC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 +_080414B8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_804143C + + thumb_func_start sub_80414C0 +sub_80414C0: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrh r0, [r4, 0x2] + cmp r0, 0x9C + bne _080414DC + adds r0, r5, 0 + bl sub_8045128 + bl sub_804AF20 + lsls r0, 24 + cmp r0, 0 + bne _080414F2 +_080414DC: + ldrh r0, [r4, 0x2] + cmp r0, 0x8 + bne _080414F6 + adds r0, r5, 0 + bl sub_8045128 + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _080414F6 +_080414F2: + movs r0, 0x1 + b _080414F8 +_080414F6: + movs r0, 0 +_080414F8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80414C0 + + thumb_func_start sub_8041500 +sub_8041500: + push {lr} + bl sub_800E7D0 + lsls r0, 24 + cmp r0, 0 + beq _08041518 + movs r0, 0x5C + bl sub_803E46C + movs r0, 0x5D + bl sub_8052740 +_08041518: + pop {r0} + bx r0 + thumb_func_end sub_8041500 + + thumb_func_start sub_804151C +sub_804151C: + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + adds r5, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + adds r0, r5, 0 + bl sub_800DC9C + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_8041550 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_804151C + + thumb_func_start sub_8041550 +sub_8041550: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + adds r7, r0, 0 + mov r10, r1 + ldr r0, [sp, 0x54] + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x2C] + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r7, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + beq _0804159C + ldr r0, [r7, 0x70] + mov r8, r0 + adds r0, r7, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _0804159C + cmp r6, 0 + bne _080415A2 + mov r0, r8 + adds r0, 0xFF + ldrb r0, [r0] + cmp r0, 0x2 + bne _080415A2 +_0804159C: + movs r0, 0x1 + negs r0, r0 + b _08041692 +_080415A2: + ldr r1, [sp, 0x50] + cmp r1, 0 + beq _080415B4 + movs r0, 0 + cmp r1, 0x2 + bne _080415B0 + movs r0, 0x1 +_080415B0: + bl sub_804178C +_080415B4: + add r6, sp, 0x28 + adds r1, r7, 0 + adds r1, 0x28 + adds r0, r6, 0 + mov r2, r9 + bl sub_800569C + movs r2, 0 + ldrsh r0, [r6, r2] + cmp r0, 0x63 + beq _080415F2 + ldrh r0, [r6, 0x2] + cmp r0, 0x63 + beq _080415F2 + movs r1, 0 + ldrsh r0, [r6, r1] + lsls r0, 8 + ldr r1, [r7, 0xC] + adds r4, r1, r0 + movs r2, 0x2 + ldrsh r0, [r6, r2] + lsls r0, 8 + ldr r2, [r7, 0x10] + adds r0, r2, r0 + movs r1, 0xBA + lsls r1, 1 + add r1, r8 + ldr r1, [r1] + subs r5, r0, r1 + adds r1, r2, 0 + b _08041600 +_080415F2: + ldr r4, [r7, 0xC] + movs r0, 0xBA + lsls r0, 1 + add r0, r8 + ldr r1, [r7, 0x10] + ldr r0, [r0] + subs r5, r1, r0 +_08041600: + cmp r1, 0 + bge _08041606 + adds r1, 0xFF +_08041606: + asrs r1, 8 + ldr r0, _0804166C + ldr r0, [r0] + ldr r2, _08041670 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + subs r1, r0 + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r1, r0, 1 + adds r1, 0x1 + mov r0, r10 + str r0, [sp] + movs r3, 0 + str r3, [sp, 0x4] + movs r6, 0x1 + negs r6, r6 + str r6, [sp, 0x8] + mov r2, sp + adds r0, r4, 0 + cmp r4, 0 + bge _08041636 + adds r0, 0xFF +_08041636: + asrs r0, 8 + strh r0, [r2, 0xC] + mov r2, sp + adds r0, r5, 0 + cmp r0, 0 + bge _08041644 + adds r0, 0xFF +_08041644: + asrs r0, 8 + strh r0, [r2, 0xE] + str r6, [sp, 0x14] + mov r0, sp + strh r3, [r0, 0x10] + strh r3, [r0, 0x12] + str r1, [sp, 0x18] + add r0, sp, 0x1C + bl sub_8004E8C + mov r0, sp + movs r1, 0 + bl sub_8041764 + adds r4, r0, 0 + ldr r1, [sp, 0x2C] + cmp r1, 0 + beq _08041690 + movs r5, 0 + b _0804167C + .align 2, 0 +_0804166C: .4byte gUnknown_203B418 +_08041670: .4byte 0x000181f2 +_08041674: + movs r0, 0x42 + bl sub_803E46C + adds r5, 0x1 +_0804167C: + cmp r5, 0x63 + bgt _0804168C + adds r0, r4, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _08041674 +_0804168C: + movs r4, 0x1 + negs r4, r4 +_08041690: + adds r0, r4, 0 +_08041692: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8041550 + + thumb_func_start sub_80416A4 +sub_80416A4: + push {r4,lr} + sub sp, 0x8 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0 + ldrsh r4, [r0, r3] + lsls r3, r4, 1 + adds r3, r4 + lsls r3, 11 + movs r4, 0xC0 + lsls r4, 4 + adds r3, r4 + str r3, [sp] + movs r4, 0x2 + ldrsh r3, [r0, r4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 11 + movs r3, 0x80 + lsls r3, 5 + adds r0, r3 + str r0, [sp, 0x4] + mov r0, sp + bl sub_80416E0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80416A4 + + thumb_func_start sub_80416E0 +sub_80416E0: + push {r4,r5,lr} + sub sp, 0x28 + adds r3, r0, 0 + lsls r2, 24 + lsrs r5, r2, 24 + str r1, [sp] + movs r2, 0 + str r2, [sp, 0x4] + movs r4, 0x1 + negs r4, r4 + str r4, [sp, 0x8] + mov r1, sp + ldr r0, [r3] + cmp r0, 0 + bge _08041700 + adds r0, 0xFF +_08041700: + asrs r0, 8 + strh r0, [r1, 0xC] + mov r1, sp + ldr r0, [r3, 0x4] + cmp r0, 0 + bge _0804170E + adds r0, 0xFF +_0804170E: + asrs r0, 8 + strh r0, [r1, 0xE] + str r4, [sp, 0x14] + mov r0, sp + strh r2, [r0, 0x10] + strh r2, [r0, 0x12] + ldr r0, _08041738 + str r0, [sp, 0x18] + add r0, sp, 0x1C + bl sub_8004E8C + mov r0, sp + movs r1, 0 + bl sub_8041764 + adds r4, r0, 0 + cmp r5, 0 + beq _08041758 + movs r5, 0 + b _08041744 + .align 2, 0 +_08041738: .4byte 0x0000ffff +_0804173C: + movs r0, 0x42 + bl sub_803E46C + adds r5, 0x1 +_08041744: + cmp r5, 0x63 + bgt _08041754 + adds r0, r4, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _0804173C +_08041754: + movs r4, 0x1 + negs r4, r4 +_08041758: + adds r0, r4, 0 + add sp, 0x28 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80416E0 + + thumb_func_start sub_8041764 +sub_8041764: + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r0, [r5] + bl sub_800EE5C + bl sub_800EF64 + cmp r4, 0 + beq _08041780 + movs r0, 0x42 + bl sub_803E46C +_08041780: + adds r0, r5, 0 + bl sub_800E890 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8041764 + + thumb_func_start sub_804178C +sub_804178C: + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 + ldr r0, _080417B0 + ldr r0, [r0] + ldr r1, _080417B4 + adds r0, r1 + str r4, [r0] + adds r0, r5, 0 + bl sub_800E9FC + lsls r0, 24 + cmp r0, 0 + beq _080417E0 + ldr r6, _080417B8 + b _080417C4 + .align 2, 0 +_080417B0: .4byte gUnknown_203B418 +_080417B4: .4byte 0x00018204 +_080417B8: .4byte 0x000003e7 +_080417BC: + movs r0, 0x4A + bl sub_803E46C + adds r4, 0x1 +_080417C4: + cmp r4, r6 + bgt _080417D4 + adds r0, r5, 0 + bl sub_800E9FC + lsls r0, 24 + cmp r0, 0 + bne _080417BC +_080417D4: + movs r0, 0x4A + bl sub_803E46C + movs r0, 0x4A + bl sub_803E46C +_080417E0: + movs r0, 0xFA + lsls r0, 2 + cmp r4, r0 + beq _080417EC + cmp r5, 0 + beq _080417F0 +_080417EC: + bl sub_800DBBC +_080417F0: + ldr r2, _08041824 + ldr r0, [r2] + cmp r0, 0x1E + bgt _08041860 + ldr r1, _08041828 + ldrb r7, [r1] + movs r0, 0x1 + strb r0, [r1] + movs r4, 0 + adds r5, r2, 0 + ldr r6, _0804182C +_08041806: + ldr r0, [r5] + cmp r0, 0x1E + bgt _08041838 + adds r0, 0x4 + str r0, [r5] + ldr r1, _08041830 + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, r6 + beq _0804183C + ldr r3, _08041834 + adds r0, r2, r3 + strh r0, [r1] + b _0804183C + .align 2, 0 +_08041824: .4byte gUnknown_202EDC8 +_08041828: .4byte gUnknown_203B40D +_0804182C: .4byte 0x00000808 +_08041830: .4byte gUnknown_2026E4E +_08041834: .4byte 0xfffffeff +_08041838: + movs r0, 0x1F + str r0, [r5] +_0804183C: + bl sub_803EA10 + movs r0, 0x4A + bl sub_803E46C + ldr r0, [r5] + cmp r0, 0x1F + beq _08041854 + adds r4, 0x1 + ldr r0, _0804186C + cmp r4, r0 + ble _08041806 +_08041854: + ldr r0, _08041870 + ldr r2, _08041874 + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _08041878 + strb r7, [r0] +_08041860: + bl sub_8042E98 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804186C: .4byte 0x000003e7 +_08041870: .4byte gUnknown_2026E4E +_08041874: .4byte 0x00000808 +_08041878: .4byte gUnknown_203B40D + thumb_func_end sub_804178C + + thumb_func_start sub_804187C +sub_804187C: + ldr r0, [r0, 0x70] + movs r1, 0x80 + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + bx lr + thumb_func_end sub_804187C + + thumb_func_start sub_8041888 +sub_8041888: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 +_08041890: + ldr r0, _080418CC + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _080418D0 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + beq _080418C0 + ldr r1, [r4, 0x70] + cmp r6, 0 + beq _080418BA + movs r0, 0xA6 + lsls r0, 1 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] +_080418BA: + adds r0, r4, 0 + bl sub_80418D4 +_080418C0: + adds r5, 0x1 + cmp r5, 0x13 + ble _08041890 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080418CC: .4byte gUnknown_203B418 +_080418D0: .4byte 0x000135cc + thumb_func_end sub_8041888 + + thumb_func_start sub_80418D4 +sub_80418D4: + push {r4,lr} + adds r4, r0, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + bne _080418E4 + b _08041A8C +_080418E4: + ldr r2, [r4, 0x70] + movs r3, 0 + movs r1, 0x1 + movs r4, 0x2 + ldrsh r0, [r2, r4] + cmp r0, 0xB9 + bne _08041902 + adds r0, r2, 0 + adds r0, 0xA9 + ldrb r0, [r0] + movs r1, 0x7F + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 +_08041902: + cmp r1, 0 + beq _08041914 + ldr r1, _08041A94 + adds r0, r2, 0 + adds r0, 0xA8 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] +_08041914: + ldr r1, _08041A98 + adds r0, r2, 0 + adds r0, 0xAC + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041A9C + adds r0, r2, 0 + adds r0, 0xB0 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AA0 + adds r0, r2, 0 + adds r0, 0xBC + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AA4 + adds r0, r2, 0 + adds r0, 0xC0 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AA8 + adds r0, r2, 0 + adds r0, 0xC4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AAC + adds r0, r2, 0 + adds r0, 0xC8 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AB0 + adds r0, r2, 0 + adds r0, 0xD0 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AB4 + adds r0, r2, 0 + adds r0, 0xDC + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AB8 + adds r0, r2, 0 + adds r0, 0xE0 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041ABC + adds r0, r2, 0 + adds r0, 0xE4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AC0 + adds r0, r2, 0 + adds r0, 0xE8 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + ldr r1, _08041AC4 + adds r0, r2, 0 + adds r0, 0xEC + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + orrs r3, r0 + adds r0, r2, 0 + adds r0, 0xF4 + ldrb r0, [r0] + cmp r0, 0 + beq _080419E4 + movs r0, 0x80 + lsls r0, 17 + orrs r3, r0 +_080419E4: + adds r0, r2, 0 + adds r0, 0xF5 + ldrb r0, [r0] + cmp r0, 0 + beq _080419F4 + movs r0, 0x80 + lsls r0, 18 + orrs r3, r0 +_080419F4: + ldrb r0, [r2, 0x6] + cmp r0, 0 + bne _08041A14 + movs r0, 0x10 + ldrsh r1, [r2, r0] + cmp r1, 0 + bge _08041A04 + adds r1, 0x3 +_08041A04: + asrs r1, 2 + movs r4, 0xE + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _08041A14 + movs r0, 0x80 + lsls r0, 6 + orrs r3, r0 +_08041A14: + ldr r0, _08041AC8 + ldr r0, [r0] + ldr r1, _08041ACC + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08041A36 + adds r0, r2, 0 + adds r0, 0x60 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08041A36 + movs r0, 0x80 + lsls r0, 6 + orrs r3, r0 +_08041A36: + ldr r0, [r2, 0x2C] + cmp r0, 0xFF + ble _08041A7E + ldr r0, [r2, 0x30] + cmp r0, 0xFF + ble _08041A7E + ldr r0, [r2, 0x34] + cmp r0, 0xFF + ble _08041A7E + ldr r0, [r2, 0x38] + cmp r0, 0xFF + ble _08041A7E + movs r4, 0x1C + ldrsh r0, [r2, r4] + cmp r0, 0x9 + ble _08041A7E + movs r1, 0x1E + ldrsh r0, [r2, r1] + cmp r0, 0x9 + ble _08041A7E + movs r4, 0x20 + ldrsh r0, [r2, r4] + cmp r0, 0x9 + ble _08041A7E + movs r1, 0x22 + ldrsh r0, [r2, r1] + cmp r0, 0x9 + ble _08041A7E + movs r4, 0x24 + ldrsh r0, [r2, r4] + cmp r0, 0x9 + ble _08041A7E + movs r1, 0x26 + ldrsh r0, [r2, r1] + cmp r0, 0x9 + bgt _08041A84 +_08041A7E: + movs r0, 0x80 + lsls r0, 20 + orrs r3, r0 +_08041A84: + movs r4, 0x80 + lsls r4, 2 + adds r0, r2, r4 + str r3, [r0] +_08041A8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08041A94: .4byte gUnknown_80F669C +_08041A98: .4byte gUnknown_80F66B4 +_08041A9C: .4byte gUnknown_80F66C8 +_08041AA0: .4byte gUnknown_80F66E8 +_08041AA4: .4byte gUnknown_80F6708 +_08041AA8: .4byte gUnknown_80F673C +_08041AAC: .4byte gUnknown_80F6778 +_08041AB0: .4byte gUnknown_80F6788 +_08041AB4: .4byte gUnknown_80F6794 +_08041AB8: .4byte gUnknown_80F67A8 +_08041ABC: .4byte gUnknown_80F67B4 +_08041AC0: .4byte gUnknown_80F67C4 +_08041AC4: .4byte gUnknown_80F67D4 +_08041AC8: .4byte gUnknown_203B418 +_08041ACC: .4byte 0x00000676 + thumb_func_end sub_80418D4 + + .align 2,0 diff --git a/asm/code_8041AD0.s b/asm/code_8041AD0.s new file mode 100644 index 0000000..6ddeb36 --- /dev/null +++ b/asm/code_8041AD0.s @@ -0,0 +1,1757 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8041C94 +sub_8041C94: + push {lr} + ldr r1, _08041CA4 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_08041CA4: .4byte 0x00000171 + thumb_func_end sub_8041C94 + + thumb_func_start sub_8041CA8 +sub_8041CA8: + push {lr} + movs r1, 0x7 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041CA8 + + thumb_func_start sub_8041CB8 +sub_8041CB8: + push {lr} + ldr r1, _08041CC8 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_08041CC8: .4byte 0x0000018b + thumb_func_end sub_8041CB8 + + thumb_func_start sub_8041CCC +sub_8041CCC: + push {lr} + movs r1, 0xC5 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041CCC + + thumb_func_start sub_8041CDC +sub_8041CDC: + push {lr} + movs r1, 0x5 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041CDC + + thumb_func_start sub_8041CEC +sub_8041CEC: + push {lr} + ldr r1, _08041CF8 + bl sub_80421C0 + pop {r0} + bx r0 + .align 2, 0 +_08041CF8: .4byte 0x0000019d + thumb_func_end sub_8041CEC + + thumb_func_start nullsub_74 +nullsub_74: + bx lr + thumb_func_end nullsub_74 + + thumb_func_start sub_8041D00 +sub_8041D00: + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + movs r1, 0x2F + movs r2, 0x1 + bl sub_804151C + adds r0, r4, 0 + movs r1, 0x30 + movs r2, 0x1 + bl sub_804151C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8041D00 + + thumb_func_start nullsub_75 +nullsub_75: + bx lr + thumb_func_end nullsub_75 + + thumb_func_start nullsub_76 +nullsub_76: + bx lr + thumb_func_end nullsub_76 + + thumb_func_start nullsub_77 +nullsub_77: + bx lr + thumb_func_end nullsub_77 + + thumb_func_start nullsub_78 +nullsub_78: + bx lr + thumb_func_end nullsub_78 + + thumb_func_start nullsub_79 +nullsub_79: + bx lr + thumb_func_end nullsub_79 + + thumb_func_start nullsub_80 +nullsub_80: + bx lr + thumb_func_end nullsub_80 + + thumb_func_start sub_8041D38 +sub_8041D38: + push {lr} + movs r1, 0x21 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041D38 + + thumb_func_start sub_8041D48 +sub_8041D48: + push {lr} + ldr r1, _08041D54 + bl sub_80421C0 + pop {r0} + bx r0 + .align 2, 0 +_08041D54: .4byte 0x00000191 + thumb_func_end sub_8041D48 + + thumb_func_start nullsub_81 +nullsub_81: + bx lr + thumb_func_end nullsub_81 + + thumb_func_start sub_8041D5C +sub_8041D5C: + push {r4,lr} + adds r4, r0, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _08041D7E + ldr r0, [r4, 0x70] + movs r1, 0x89 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0xB + bl sub_803ED30 +_08041D7E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8041D5C + + thumb_func_start sub_8041D84 +sub_8041D84: + push {lr} + ldr r1, _08041D90 + bl sub_80421C0 + pop {r0} + bx r0 + .align 2, 0 +_08041D90: .4byte 0x0000019f + thumb_func_end sub_8041D84 + + thumb_func_start nullsub_82 +nullsub_82: + bx lr + thumb_func_end nullsub_82 + + thumb_func_start nullsub_83 +nullsub_83: + bx lr + thumb_func_end nullsub_83 + + thumb_func_start sub_8041D9C +sub_8041D9C: + push {lr} + ldr r1, _08041DAC + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_08041DAC: .4byte 0x00000131 + thumb_func_end sub_8041D9C + + thumb_func_start sub_8041DB0 +sub_8041DB0: + push {lr} + movs r1, 0x30 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041DB0 + + thumb_func_start nullsub_84 +nullsub_84: + bx lr + thumb_func_end nullsub_84 + + thumb_func_start nullsub_85 +nullsub_85: + bx lr + thumb_func_end nullsub_85 + + thumb_func_start nullsub_204 +nullsub_204: + bx lr + thumb_func_end nullsub_204 + + thumb_func_start nullsub_86 +nullsub_86: + bx lr + thumb_func_end nullsub_86 + + thumb_func_start nullsub_87 +nullsub_87: + bx lr + thumb_func_end nullsub_87 + + thumb_func_start nullsub_88 +nullsub_88: + bx lr + thumb_func_end nullsub_88 + + thumb_func_start sub_8041DD8 +sub_8041DD8: + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + asrs r5, r1, 16 + movs r1, 0xE + bl sub_8071858 + lsls r0, 24 + cmp r0, 0 + beq _08041DF8 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_804151C + b _08041E02 +_08041DF8: + adds r0, r4, 0 + movs r1, 0xE + movs r2, 0x1 + bl sub_804151C +_08041E02: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8041DD8 + + thumb_func_start nullsub_89 +nullsub_89: + bx lr + thumb_func_end nullsub_89 + + thumb_func_start sub_8041E0C +sub_8041E0C: + push {lr} + movs r1, 0x41 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041E0C + + thumb_func_start sub_8041E1C +sub_8041E1C: + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x8F + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + movs r1, 0xCE + lsls r1, 1 + adds r0, r4, 0 + bl sub_80421C0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8041E1C + + thumb_func_start sub_8041E3C +sub_8041E3C: + push {lr} + movs r1, 0xD7 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041E3C + + thumb_func_start sub_8041E4C +sub_8041E4C: + push {lr} + ldr r1, _08041E5C + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_08041E5C: .4byte 0x000001b1 + thumb_func_end sub_8041E4C + + thumb_func_start sub_8041E60 +sub_8041E60: + push {lr} + ldr r1, _08041E70 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_08041E70: .4byte 0x000001a9 + thumb_func_end sub_8041E60 + + thumb_func_start sub_8041E74 +sub_8041E74: + push {lr} + movs r1, 0xC9 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041E74 + + thumb_func_start sub_8041E84 +sub_8041E84: + push {lr} + movs r1, 0xC7 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041E84 + + thumb_func_start sub_8041E94 +sub_8041E94: + push {lr} + movs r1, 0xC8 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041E94 + + thumb_func_start sub_8041EA4 +sub_8041EA4: + push {lr} + movs r1, 0x15 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041EA4 + + thumb_func_start sub_8041EB4 +sub_8041EB4: + push {lr} + ldr r1, _08041EC4 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_08041EC4: .4byte 0x00000171 + thumb_func_end sub_8041EB4 + + thumb_func_start sub_8041EC8 +sub_8041EC8: + push {lr} + ldr r1, _08041ED4 + bl sub_80421C0 + pop {r0} + bx r0 + .align 2, 0 +_08041ED4: .4byte 0x00000197 + thumb_func_end sub_8041EC8 + + thumb_func_start sub_8041ED8 +sub_8041ED8: + push {lr} + ldr r1, _08041EE4 + bl sub_80421C0 + pop {r0} + bx r0 + .align 2, 0 +_08041EE4: .4byte 0x00000197 + thumb_func_end sub_8041ED8 + + thumb_func_start sub_8041EE8 +sub_8041EE8: + push {lr} + movs r1, 0x15 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041EE8 + + thumb_func_start sub_8041EF8 +sub_8041EF8: + push {lr} + movs r1, 0xF + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_8041EF8 + + thumb_func_start sub_8041F08 +sub_8041F08: + push {lr} + sub sp, 0x8 + movs r1, 0x2 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + movs r1, 0x15 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8041550 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_8041F08 + + thumb_func_start nullsub_90 +nullsub_90: + bx lr + thumb_func_end nullsub_90 + + thumb_func_start sub_8041F28 +sub_8041F28: + push {lr} + cmp r1, 0 + bne _08041F3A + movs r1, 0xCA + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + b _08041F42 +_08041F3A: + ldr r1, _08041F48 + movs r2, 0x1 + bl sub_804151C +_08041F42: + pop {r0} + bx r0 + .align 2, 0 +_08041F48: .4byte 0x00000193 + thumb_func_end sub_8041F28 + + thumb_func_start sub_8041F4C +sub_8041F4C: + push {lr} + cmp r1, 0 + bne _08041F60 + ldr r1, _08041F5C + movs r2, 0x1 + bl sub_804151C + b _08041F68 + .align 2, 0 +_08041F5C: .4byte 0x0000018f +_08041F60: + ldr r1, _08041F6C + movs r2, 0x1 + bl sub_804151C +_08041F68: + pop {r0} + bx r0 + .align 2, 0 +_08041F6C: .4byte 0x00000191 + thumb_func_end sub_8041F4C + + thumb_func_start sub_8041F70 +sub_8041F70: + push {lr} + cmp r1, 0 + bne _08041F84 + ldr r1, _08041F80 + movs r2, 0x1 + bl sub_804151C + b _08041F8E + .align 2, 0 +_08041F80: .4byte 0x000001a9 +_08041F84: + movs r1, 0xC9 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C +_08041F8E: + pop {r0} + bx r0 + thumb_func_end sub_8041F70 + + thumb_func_start sub_8041F94 +sub_8041F94: + push {lr} + cmp r1, 0 + bne _08041FA6 + movs r1, 0xC7 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + b _08041FB0 +_08041FA6: + movs r1, 0xC8 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C +_08041FB0: + pop {r0} + bx r0 + thumb_func_end sub_8041F94 + + thumb_func_start sub_8041FB4 +sub_8041FB4: + push {lr} + cmp r1, 0 + bne _08041FC8 + ldr r1, _08041FC4 + movs r2, 0x1 + bl sub_804151C + b _08041FD2 + .align 2, 0 +_08041FC4: .4byte 0x000001a9 +_08041FC8: + movs r1, 0xC9 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C +_08041FD2: + pop {r0} + bx r0 + thumb_func_end sub_8041FB4 + + thumb_func_start sub_8041FD8 +sub_8041FD8: + push {lr} + cmp r1, 0 + bne _08041FEA + movs r1, 0xCA + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + b _08041FF2 +_08041FEA: + ldr r1, _08041FF8 + movs r2, 0x1 + bl sub_804151C +_08041FF2: + pop {r0} + bx r0 + .align 2, 0 +_08041FF8: .4byte 0x00000193 + thumb_func_end sub_8041FD8 + + thumb_func_start sub_8041FFC +sub_8041FFC: + push {lr} + cmp r1, 0 + bne _0804200E + movs r1, 0xC7 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + b _08042018 +_0804200E: + movs r1, 0xC8 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C +_08042018: + pop {r0} + bx r0 + thumb_func_end sub_8041FFC + + thumb_func_start sub_804201C +sub_804201C: + push {lr} + cmp r1, 0 + bne _08042030 + ldr r1, _0804202C + movs r2, 0x1 + bl sub_804151C + b _08042038 + .align 2, 0 +_0804202C: .4byte 0x0000018f +_08042030: + ldr r1, _0804203C + movs r2, 0x1 + bl sub_804151C +_08042038: + pop {r0} + bx r0 + .align 2, 0 +_0804203C: .4byte 0x00000191 + thumb_func_end sub_804201C + + thumb_func_start sub_8042040 +sub_8042040: + push {lr} + cmp r1, 0 + bne _08042052 + movs r1, 0xC6 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + b _0804205A +_08042052: + movs r1, 0xD + movs r2, 0x1 + bl sub_804151C +_0804205A: + pop {r0} + bx r0 + thumb_func_end sub_8042040 + + thumb_func_start sub_8042060 +sub_8042060: + push {lr} + cmp r1, 0 + bne _08042074 + ldr r1, _08042070 + movs r2, 0x1 + bl sub_804151C + b _0804207C + .align 2, 0 +_08042070: .4byte 0x0000018d +_08042074: + movs r1, 0xE + movs r2, 0x1 + bl sub_804151C +_0804207C: + pop {r0} + bx r0 + thumb_func_end sub_8042060 + + thumb_func_start sub_8042080 +sub_8042080: + push {lr} + cmp r1, 0 + bne _08042092 + movs r1, 0xC6 + lsls r1, 1 + movs r2, 0x1 + bl sub_804151C + b _0804209A +_08042092: + movs r1, 0xD + movs r2, 0x1 + bl sub_804151C +_0804209A: + pop {r0} + bx r0 + thumb_func_end sub_8042080 + + thumb_func_start sub_80420A0 +sub_80420A0: + push {lr} + ldr r1, _080420B0 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_080420B0: .4byte 0x00000143 + thumb_func_end sub_80420A0 + + thumb_func_start nullsub_91 +nullsub_91: + bx lr + thumb_func_end nullsub_91 + + thumb_func_start sub_80420B8 +sub_80420B8: + push {lr} + movs r1, 0x19 + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_80420B8 + + thumb_func_start sub_80420C8 +sub_80420C8: + push {lr} + sub sp, 0x8 + movs r1, 0x2 + str r1, [sp] + movs r1, 0 + str r1, [sp, 0x4] + movs r1, 0x15 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8041550 + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_80420C8 + + thumb_func_start nullsub_92 +nullsub_92: + bx lr + thumb_func_end nullsub_92 + + thumb_func_start sub_80420E8 +sub_80420E8: + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, [r1, 0x8] + ldr r0, _0804211C + ldr r0, [r0] + ldr r2, _08042120 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08042106 + adds r0, r1, 0 + bl sub_806F62C + adds r1, r0, 0 +_08042106: + cmp r1, 0x1 + beq _08042124 + cmp r1, 0x1 + bcc _08042116 + cmp r1, 0x2 + beq _08042128 + cmp r1, 0x3 + beq _0804212C +_08042116: + movs r1, 0x8 + b _0804212E + .align 2, 0 +_0804211C: .4byte gUnknown_203B418 +_08042120: .4byte 0x0000016d +_08042124: + movs r1, 0x9 + b _0804212E +_08042128: + movs r1, 0xA + b _0804212E +_0804212C: + movs r1, 0xB +_0804212E: + movs r0, 0 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x3 + bl sub_8041550 + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80420E8 + + thumb_func_start sub_8042148 +sub_8042148: + push {r4,lr} + adds r4, r0, 0 + ldr r1, _08042164 + bl sub_80421C0 + movs r1, 0x9F + lsls r1, 1 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_804151C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08042164: .4byte 0x000001a7 + thumb_func_end sub_8042148 + + thumb_func_start nullsub_93 +nullsub_93: + bx lr + thumb_func_end nullsub_93 + + thumb_func_start sub_804216C +sub_804216C: + push {lr} + adds r0, r1, 0 + cmp r2, 0x1 + bne _0804217E + movs r1, 0xF8 + movs r2, 0x1 + bl sub_804151C + b _08042186 +_0804217E: + movs r1, 0xF9 + movs r2, 0x1 + bl sub_804151C +_08042186: + pop {r0} + bx r0 + thumb_func_end sub_804216C + + thumb_func_start sub_804218C +sub_804218C: + push {lr} + adds r0, r1, 0 + movs r1, 0x2A + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + thumb_func_end sub_804218C + + thumb_func_start sub_804219C +sub_804219C: + push {lr} + movs r1, 0x90 + movs r2, 0x1 + bl sub_80416E0 + pop {r0} + bx r0 + thumb_func_end sub_804219C + + thumb_func_start sub_80421AC +sub_80421AC: + push {lr} + adds r0, r1, 0 + ldr r1, _080421BC + movs r2, 0x1 + bl sub_804151C + pop {r0} + bx r0 + .align 2, 0 +_080421BC: .4byte 0x00000167 + thumb_func_end sub_80421AC + + thumb_func_start sub_80421C0 +sub_80421C0: + push {r4,lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r0, r1, 16 + adds r4, r0, 0 + cmp r2, 0 + bne _080421D4 + bl sub_8083E38 + b _080421E6 +_080421D4: + adds r0, r2, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _080421E6 + adds r0, r4, 0 + bl sub_8083E38 +_080421E6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80421C0 + + thumb_func_start sub_80421EC +sub_80421EC: + push {r4,lr} + lsls r1, 16 + lsrs r4, r1, 16 + bl sub_803F428 + lsls r0, 24 + cmp r0, 0 + beq _08042202 + adds r0, r4, 0 + bl sub_8083E38 +_08042202: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80421EC + + thumb_func_start sub_8042208 +sub_8042208: + push {lr} + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + bne _0804221C + movs r0, 0xA9 + lsls r0, 1 + bl sub_8083E38 + b _08042234 +_0804221C: + cmp r1, 0x1 + bne _0804222C + ldr r0, _08042228 + bl sub_8083E38 + b _08042234 + .align 2, 0 +_08042228: .4byte 0x00000151 +_0804222C: + movs r0, 0xA8 + lsls r0, 1 + bl sub_8083E38 +_08042234: + pop {r0} + bx r0 + thumb_func_end sub_8042208 + + thumb_func_start sub_8042238 +sub_8042238: + push {lr} + ldr r0, [r1, 0x70] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _08042250 + ldr r0, _0804224C + bl sub_8083E38 + b _08042258 + .align 2, 0 +_0804224C: .4byte 0x00000157 +_08042250: + movs r0, 0xAB + lsls r0, 1 + bl sub_8083E38 +_08042258: + pop {r0} + bx r0 + thumb_func_end sub_8042238 + + thumb_func_start sub_804225C +sub_804225C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r8, r0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r4, r2, 24 + adds r7, r4, 0 + cmp r4, 0x11 + bne _08042274 + b _08042384 +_08042274: + adds r0, r5, 0 + bl sub_803F428 + lsls r0, 24 + cmp r0, 0 + bne _08042282 + b _08042384 +_08042282: + adds r0, r4, 0 + bl sub_800EF28 + bl sub_800EF64 + movs r0, 0x4 + movs r1, 0x42 + bl sub_803E708 + movs r0, 0 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 11 + movs r1, 0xC0 + lsls r1, 4 + adds r0, r1 + cmp r0, 0 + bge _080422AA + adds r0, 0xFF +_080422AA: + lsls r0, 8 + lsrs r0, 16 + ldr r1, _080422FC + ldr r2, [sp] + ands r2, r1 + orrs r2, r0 + str r2, [sp] + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 11 + movs r1, 0x80 + lsls r1, 5 + adds r0, r1 + cmp r0, 0 + bge _080422CE + adds r0, 0xFF +_080422CE: + lsls r0, 8 + lsrs r0, 16 + lsls r0, 16 + ldr r1, _08042300 + ands r2, r1 + orrs r2, r0 + str r2, [sp] + adds r0, r4, 0 + mov r1, sp + bl sub_800E448 + adds r6, r0, 0 + cmp r4, 0x4 + bne _08042308 + ldr r1, _08042304 + movs r0, 0 + bl sub_80421C0 + movs r0, 0x28 + movs r1, 0x33 + bl sub_803E708 + b _08042360 + .align 2, 0 +_080422FC: .4byte 0xffff0000 +_08042300: .4byte 0x0000ffff +_08042304: .4byte 0x00000193 +_08042308: + cmp r7, 0x8 + bne _08042358 + mov r0, r8 + ldr r7, [r0, 0x70] + adds r0, r7, 0 + adds r0, 0x46 + ldrb r4, [r0] + movs r5, 0 + b _0804231C +_0804231A: + adds r5, 0x2 +_0804231C: + ldr r0, _08042354 + cmp r5, r0 + bgt _08042346 + subs r4, 0x1 + movs r0, 0x7 + ands r4, r0 + mov r0, r8 + movs r1, 0 + adds r2, r4, 0 + bl sub_806CDD4 + movs r0, 0x2 + movs r1, 0x33 + bl sub_803E708 + adds r0, r6, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _0804231A +_08042346: + movs r0, 0x7 + ands r4, r0 + adds r0, r7, 0 + adds r0, 0x46 + strb r4, [r0] + b _08042360 + .align 2, 0 +_08042354: .4byte 0x000003e7 +_08042358: + movs r0, 0x28 + movs r1, 0x33 + bl sub_803E708 +_08042360: + movs r5, 0 + ldr r4, _08042368 + b _0804236E + .align 2, 0 +_08042368: .4byte 0x000003e7 +_0804236C: + adds r5, 0x1 +_0804236E: + cmp r5, r4 + bgt _08042384 + movs r0, 0x42 + bl sub_803E46C + adds r0, r6, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _0804236C +_08042384: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804225C + + thumb_func_start sub_8042390 +sub_8042390: + push {r4-r6,lr} + sub sp, 0x18 + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _08042454 + ldrb r1, [r4] + movs r0, 0x8 + ands r0, r1 + movs r6, 0 + cmp r0, 0 + bne _080423B0 + ldrb r6, [r4, 0x2] +_080423B0: + adds r0, r6, 0 + movs r1, 0 + bl sub_800EF40 + bl sub_800EF64 + movs r0, 0x4 + movs r1, 0x42 + bl sub_803E708 + ldr r0, [r5, 0xC] + cmp r0, 0 + bge _080423CC + adds r0, 0xFF +_080423CC: + lsls r0, 8 + lsrs r0, 16 + ldr r1, _08042428 + ldr r2, [sp, 0x14] + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0x14] + ldr r0, [r5, 0x10] + cmp r0, 0 + bge _080423E2 + adds r0, 0xFF +_080423E2: + lsls r0, 8 + lsrs r0, 16 + lsls r0, 16 + ldr r4, _0804242C + ands r4, r2 + orrs r4, r0 + str r4, [sp, 0x14] + asrs r4, 16 + ldr r0, _08042430 + ldr r0, [r0] + ldr r1, _08042434 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + subs r4, r0 + lsrs r0, r4, 31 + adds r4, r0 + asrs r4, 1 + adds r4, 0x1 + adds r1, r5, 0 + adds r1, 0x28 + add r0, sp, 0x4 + bl sub_8005700 + add r1, sp, 0x14 + str r4, [sp] + adds r0, r6, 0 + add r2, sp, 0x4 + movs r3, 0 + bl sub_800E49C + adds r5, r0, 0 + movs r4, 0 + ldr r6, _08042438 + b _0804243E + .align 2, 0 +_08042428: .4byte 0xffff0000 +_0804242C: .4byte 0x0000ffff +_08042430: .4byte gUnknown_203B418 +_08042434: .4byte 0x000181f2 +_08042438: .4byte 0x000003e7 +_0804243C: + adds r4, 0x1 +_0804243E: + cmp r4, r6 + bgt _08042454 + movs r0, 0x42 + bl sub_803E46C + adds r0, r5, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _0804243C +_08042454: + add sp, 0x18 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8042390 + + thumb_func_start sub_804245C +sub_804245C: + push {r4-r6,lr} + sub sp, 0x18 + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8042768 + lsls r0, 24 + cmp r0, 0 + beq _08042518 + ldrb r1, [r4] + movs r0, 0x8 + ands r0, r1 + movs r6, 0 + cmp r0, 0 + bne _0804247C + ldrb r6, [r4, 0x2] +_0804247C: + bl sub_800EF64 + movs r0, 0x4 + movs r1, 0x42 + bl sub_803E708 + ldr r0, [r5, 0xC] + cmp r0, 0 + bge _08042490 + adds r0, 0xFF +_08042490: + lsls r0, 8 + lsrs r0, 16 + ldr r1, _080424EC + ldr r2, [sp, 0x14] + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0x14] + ldr r0, [r5, 0x10] + cmp r0, 0 + bge _080424A6 + adds r0, 0xFF +_080424A6: + lsls r0, 8 + lsrs r0, 16 + lsls r0, 16 + ldr r4, _080424F0 + ands r4, r2 + orrs r4, r0 + str r4, [sp, 0x14] + asrs r4, 16 + ldr r0, _080424F4 + ldr r0, [r0] + ldr r1, _080424F8 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + subs r4, r0 + lsrs r0, r4, 31 + adds r4, r0 + asrs r4, 1 + adds r4, 0x1 + adds r1, r5, 0 + adds r1, 0x28 + add r0, sp, 0x4 + bl sub_8005700 + add r1, sp, 0x14 + str r4, [sp] + adds r0, r6, 0 + add r2, sp, 0x4 + movs r3, 0x1 + bl sub_800E49C + adds r5, r0, 0 + movs r4, 0 + ldr r6, _080424FC + b _08042502 + .align 2, 0 +_080424EC: .4byte 0xffff0000 +_080424F0: .4byte 0x0000ffff +_080424F4: .4byte gUnknown_203B418 +_080424F8: .4byte 0x000181f2 +_080424FC: .4byte 0x000003e7 +_08042500: + adds r4, 0x1 +_08042502: + cmp r4, r6 + bgt _08042518 + movs r0, 0x42 + bl sub_803E46C + adds r0, r5, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _08042500 +_08042518: + add sp, 0x18 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_804245C + + thumb_func_start sub_8042520 +sub_8042520: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + adds r4, r0, 0 + bl sub_8045888 + lsls r0, 24 + cmp r0, 0 + bne _0804253A + b _08042664 +_0804253A: + ldr r0, [r4, 0x70] + adds r0, 0x46 + ldrb r5, [r0] + ldr r0, [r4, 0xC] + cmp r0, 0 + bge _08042548 + adds r0, 0xFF +_08042548: + lsls r0, 8 + lsrs r0, 16 + ldr r1, _0804264C + ldr r2, [sp, 0x2C] + ands r2, r1 + orrs r2, r0 + str r2, [sp, 0x2C] + ldr r0, [r4, 0x10] + cmp r0, 0 + bge _0804255E + adds r0, 0xFF +_0804255E: + lsls r0, 8 + lsrs r0, 16 + lsls r0, 16 + ldr r1, _08042650 + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x2C] + asrs r1, 16 + ldr r0, _08042654 + ldr r0, [r0] + ldr r2, _08042658 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r7, r1, 1 + ldr r0, _0804265C + str r0, [sp, 0x4] + movs r2, 0 + str r2, [sp, 0x8] + str r5, [sp, 0xC] + add r1, sp, 0x4 + add r4, sp, 0x2C + ldrh r0, [r4] + strh r0, [r1, 0xC] + ldr r0, [sp, 0x2C] + asrs r0, 16 + strh r0, [r1, 0xE] + adds r0, r1, 0 + strh r2, [r0, 0x10] + strh r2, [r0, 0x12] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x18] + str r7, [sp, 0x1C] + add r0, sp, 0x20 + bl sub_8004E8C + add r0, sp, 0x4 + movs r1, 0 + bl sub_8041764 + adds r6, r0, 0 + mov r10, r4 + lsls r1, r5, 2 + mov r0, sp + adds r0, 0x30 + str r0, [sp, 0x38] + ldr r0, _08042660 + adds r5, r1, r0 + movs r1, 0x5 + mov r8, r1 + mov r9, r10 +_080425CC: + movs r0, 0 + str r0, [sp] + adds r0, r6, 0 + adds r1, r4, 0 + movs r2, 0 + adds r3, r7, 0 + bl sub_800E8AC + movs r0, 0x42 + bl sub_803E46C + movs r2, 0 + ldrsh r0, [r5, r2] + lsls r0, 2 + mov r1, r9 + ldrh r1, [r1] + adds r0, r1 + mov r2, r9 + strh r0, [r2] + movs r0, 0x2 + ldrsh r1, [r5, r0] + lsls r1, 2 + ldrh r0, [r4, 0x2] + adds r0, r1 + strh r0, [r4, 0x2] + movs r2, 0x2 + ldrsh r1, [r4, r2] + ldr r0, _08042654 + ldr r0, [r0] + ldr r2, _08042658 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r7, r1, 1 + movs r0, 0x1 + negs r0, r0 + add r8, r0 + mov r1, r8 + cmp r1, 0 + bge _080425CC + bl sub_800DBBC + mov r2, r10 + movs r1, 0 + ldrsh r0, [r2, r1] + lsls r0, 8 + str r0, [sp, 0x30] + add r0, sp, 0x2C + movs r2, 0x2 + ldrsh r0, [r0, r2] + lsls r0, 8 + ldr r1, [sp, 0x38] + str r0, [r1, 0x4] + movs r1, 0xD0 + lsls r1, 1 + ldr r0, [sp, 0x38] + movs r2, 0x1 + bl sub_80416E0 + adds r6, r0, 0 + b _08042668 + .align 2, 0 +_0804264C: .4byte 0xffff0000 +_08042650: .4byte 0x0000ffff +_08042654: .4byte gUnknown_203B418 +_08042658: .4byte 0x000181f2 +_0804265C: .4byte 0x00000165 +_08042660: .4byte gUnknown_80F4448 +_08042664: + movs r6, 0x1 + negs r6, r6 +_08042668: + adds r0, r6, 0 + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8042520 + + thumb_func_start sub_804267C +sub_804267C: + push {r4,lr} + ldr r4, _080426B8 + bl sub_8043D10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08042694 + cmp r0, 0 + blt _08042694 + cmp r0, 0x2 + ble _080426AC +_08042694: + ldr r0, _080426BC + ldr r0, [r0] + ldr r1, _080426C0 + adds r0, r1 + ldrb r0, [r0] + bl GetStairDirection + lsls r0, 24 + ldr r4, _080426C4 + cmp r0, 0 + beq _080426AC + subs r4, 0x1 +_080426AC: + adds r0, r4, 0 + bl sub_8083E38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080426B8: .4byte 0x000003e5 +_080426BC: .4byte gUnknown_203B418 +_080426C0: .4byte 0x00000644 +_080426C4: .4byte 0x00000155 + thumb_func_end sub_804267C + + thumb_func_start sub_80426C8 +sub_80426C8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + cmp r4, 0x3 + bne _080426D8 + movs r0, 0 + bl sub_8083E88 +_080426D8: + cmp r5, 0x4 + beq _080426F0 + ldr r0, _080426EC + lsls r1, r4, 1 + adds r1, r0 + ldrh r0, [r1] + bl sub_8083E38 + b _080426FC + .align 2, 0 +_080426EC: .4byte gUnknown_80F67DC +_080426F0: + ldr r0, _08042708 + lsls r1, r4, 1 + adds r1, r0 + ldrh r0, [r1] + bl sub_8083E38 +_080426FC: + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x80 + bl sub_8042B34 + b _08042712 + .align 2, 0 +_08042708: .4byte gUnknown_80F67E4 +_0804270C: + movs r0, 0x46 + bl sub_803E46C +_08042712: + bl sub_8042CC0 + lsls r0, 24 + cmp r0, 0 + bne _0804270C + bl sub_8042D7C + bl sub_8040238 + movs r0, 0x1 + bl sub_8052210 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80426C8 + + thumb_func_start sub_8042730 +sub_8042730: + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x8 + movs r2, 0x8 + bl sub_806CDD4 + movs r5, 0 + b _08042742 +_08042740: + adds r5, 0x1 +_08042742: + cmp r5, 0x63 + bgt _08042760 + movs r0, 0x51 + bl sub_803E46C + ldr r0, [r4, 0x40] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08042760 + adds r0, r4, 0 + adds r0, 0x6B + ldrb r0, [r0] + cmp r0, 0x8 + beq _08042740 +_08042760: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8042730 + + thumb_func_start sub_8042768 +sub_8042768: + push {lr} + adds r1, r0, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + bne _08042778 +_08042774: + movs r0, 0 + b _080427A6 +_08042778: + ldr r0, _08042794 + ldr r2, [r0] + ldr r3, _08042798 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0804279C + subs r3, 0x12 + adds r0, r2, r3 + ldr r0, [r0] + cmp r0, r1 + bne _08042774 + movs r0, 0x1 + b _080427A6 + .align 2, 0 +_08042794: .4byte gUnknown_203B418 +_08042798: .4byte 0x0001820a +_0804279C: + adds r0, r1, 0 + bl sub_8045888 + lsls r0, 24 + lsrs r0, 24 +_080427A6: + pop {r1} + bx r1 + thumb_func_end sub_8042768 + + thumb_func_start sub_80427AC +sub_80427AC: + push {r4-r6,lr} + movs r6, 0 +_080427B0: + ldr r0, _08042808 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _0804280C + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl sub_80450E0 + lsls r0, 24 + cmp r0, 0 + beq _080427FA + ldr r5, [r4, 0x70] + adds r1, r5, 0 + adds r1, 0xF3 + ldrb r0, [r1] + cmp r0, 0 + beq _080427FA + movs r0, 0 + strb r0, [r1] + adds r0, r4, 0 + bl sub_80429A0 + ldrb r0, [r5, 0x6] + cmp r0, 0 + bne _080427FA + ldr r0, _08042810 + adds r1, r4, 0 + movs r2, 0 + bl sub_8045B94 + ldr r0, _08042814 + ldr r1, [r0] + adds r0, r4, 0 + bl sub_805239C +_080427FA: + adds r6, 0x1 + cmp r6, 0x13 + ble _080427B0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08042808: .4byte gUnknown_203B418 +_0804280C: .4byte 0x000135cc +_08042810: .4byte gUnknown_202DF98 +_08042814: .4byte gUnknown_8100270 + thumb_func_end sub_80427AC + + thumb_func_start sub_8042818 +sub_8042818: + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + ldr r0, _08042874 + ldr r0, [r0] + ldr r1, _08042878 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + bne _08042836 + bl sub_8083600 + adds r4, r0, 0 +_08042836: + ldr r1, _0804287C + lsls r0, r5, 1 + adds r2, r0, r1 + ldrh r1, [r2] + ldr r0, _08042880 + cmp r1, r0 + beq _0804284A + adds r0, r4, 0 + bl sub_80421C0 +_0804284A: + ldr r0, _08042884 + lsls r1, r5, 2 + adds r0, r1, r0 + ldr r5, [r0] + adds r6, r1, 0 + cmp r5, 0 + blt _08042896 + cmp r7, 0 + beq _08042888 + bl sub_80441BC + lsls r0, 24 + cmp r0, 0 + bne _08042888 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl sub_804151C + b _08042896 + .align 2, 0 +_08042874: .4byte gUnknown_203B418 +_08042878: .4byte 0x000181f8 +_0804287C: .4byte gUnknown_80F682C +_08042880: .4byte 0x000003e5 +_08042884: .4byte gUnknown_80F67EC +_08042888: + ldr r0, _0804289C + adds r0, r6, r0 + ldr r1, [r0] + adds r0, r4, 0 + movs r2, 0 + bl sub_804151C +_08042896: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804289C: .4byte gUnknown_80F680C + thumb_func_end sub_8042818 + + .align 2,0 diff --git a/asm/memory.s b/asm/memory.s index 1b9d36e..d113ece 100644 --- a/asm/memory.s +++ b/asm/memory.s @@ -5,39 +5,6 @@ .text - thumb_func_start xxx_memory_attr_related -xxx_memory_attr_related: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - bne _0800303C - movs r0, 0 - b _08003060 -_0800303C: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08003048 - movs r0, 0x4 - b _08003060 -_08003048: - movs r2, 0x7 - ands r2, r1 - movs r0, 0x1 - cmp r2, 0x7 - beq _08003060 - movs r0, 0x2 - cmp r2, 0x1 - beq _08003060 - movs r0, 0x5 - cmp r2, 0x3 - bne _08003060 - movs r0, 0x3 -_08003060: - pop {r1} - bx r1 - thumb_func_end xxx_memory_attr_related - thumb_func_start MemorySearchFromFront MemorySearchFromFront: push {r4-r7,lr} diff --git a/ld_script.txt b/ld_script.txt index 6f44f1b..2467507 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -91,6 +91,10 @@ SECTIONS { asm/code_8027C84.o(.text); src/code_8027C84.o(.text); asm/code_803D110.o(.text); + src/code_8040094.o(.text); + asm/code_8040094.o(.text); + src/code_8041AD0.o(.text); + asm/code_8041AD0.o(.text); src/code_80428A0.o(.text); asm/code_80428A0.o(.text); src/code_8048480.o(.text); diff --git a/src/code_8040094.c b/src/code_8040094.c new file mode 100644 index 0000000..c384b51 --- /dev/null +++ b/src/code_8040094.c @@ -0,0 +1,26 @@ +#include "global.h" + +extern u8 *gUnknown_203B418; +extern u32 gUnknown_203B47C; + +extern void sub_803F7BC(void); +extern void sub_80060EC(void); +extern void sub_8094FB4(u32); +extern void sub_800CB20(void); +extern void sub_800485C(void); +extern void xxx_call_update_bg_sound_input(void); +extern void sub_8083F58(void); +extern void sub_8011860(void); + +void sub_8040094(u8 r0) +{ + gUnknown_203B418[0x18217] = r0; + sub_803F7BC(); + sub_80060EC(); + sub_8094FB4(gUnknown_203B47C); + sub_800CB20(); + sub_800485C(); + xxx_call_update_bg_sound_input(); + sub_8083F58(); + sub_8011860(); +} diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c new file mode 100644 index 0000000..050f756 --- /dev/null +++ b/src/code_8041AD0.c @@ -0,0 +1,183 @@ +#include "global.h" + +extern void sub_804151C(u32 r0, u32 r1, u32 r2); +extern void sub_80421C0(u32 r0, u32 r1); +extern void sub_806CDD4(u32 r0, u8, u8); + +void sub_8041AD0(u32 r0) +{ + sub_804151C(r0, 0xA2 << 1, 1); +} + +void sub_8041AE0(u32 r0) +{ + sub_804151C(r0, 0x143, 1); +} + +void sub_8041AF4(u32 r0) +{ + sub_804151C(r0, 0x25, 1); + sub_80421C0(r0, 0x197); +} + +void nullsub_57(void) +{ +} + +void sub_8041B18(u32 r0) +{ + sub_804151C(r0, 0x141, 1); +} + +void nullsub_58(void) +{ +} + +void nullsub_59(void) +{ +} + +void sub_8041B34(u32 r0) +{ + sub_804151C(r0, 7, 1); +} + +void nullsub_60(void) +{ +} + +void sub_8041B48(u32 r0) +{ + sub_804151C(r0, 4, 0); +} + +void nullsub_61(void) +{ +} + +void sub_8041B5C(u32 r0) +{ + sub_804151C(r0, 0x171, 1); +} + +void nullsub_62(void) +{ +} + +void sub_8041B74(u32 r0) +{ + sub_804151C(r0, 0x171, 0); +} + +void nullsub_63(void) +{ +} + +void nullsub_64(void) +{ +} + +void sub_8041B90(u32 r0) +{ + sub_804151C(r0, 0xD6 << 1, 0); +} + +void nullsub_65(void) +{ +} + +void nullsub_66(void) +{ +} + +void sub_8041BA8(u32 r0) +{ + sub_804151C(r0, 4, 1); +} + +void nullsub_67(void) +{ +} + +void sub_8041BBC(u32 r0) +{ + sub_804151C(r0, 0xD4 << 1, 1); +} + +void nullsub_68(void) +{ +} + +void sub_8041BD0(u32 r0, u8 r1) +{ + if(r1 == 0) + { + return; + } + sub_80421C0(r0, 0x1a5); +} + +void sub_8041BE8(u32 r0) +{ + sub_80421C0(r0, 0xCB << 1); +} + +void sub_8041BF8(u32 r0) +{ + sub_806CDD4(r0, 0xA, 8); +} + +void sub_8041C08(u32 r0) +{ + sub_804151C(r0, 0x1a7, 1); +} + +void sub_8041C1C(u32 r0) +{ + sub_804151C(r0, 0x1a7, 1); +} + +void nullsub_69(void) +{ +} + +void sub_8041C34(u32 r0) +{ + sub_804151C(r0, 0x4C, 1); +} + +void nullsub_70(void) +{ +} + +void nullsub_71(void) +{ +} + +void sub_8041C4C(u32 r0, u32 r1) +{ + sub_804151C(r0, r1, 1); +} + +void sub_8041C58(u32 r0) +{ + sub_804151C(r0, 0x1a9, 1); +} + +void sub_8041C6C(u32 r0) +{ + sub_804151C(r0, 0x9D << 1, 1); +} + +void sub_8041C7C(u32 r0) +{ + sub_804151C(r0, 0x9D << 1, 1); +} + +void nullsub_72(void) +{ +} + +void nullsub_73(void) +{ +} diff --git a/src/memory.c b/src/memory.c index 05c89a2..3ac8772 100644 --- a/src/memory.c +++ b/src/memory.c @@ -143,3 +143,36 @@ void InitSubHeap(struct HeapDescriptor *parentHeap, struct HeapMemoryBlock *bloc settings.size = aligned_size; DoInitHeap(parentHeap, &settings, freeList, freeListMax); } + +u8 xxx_memory_attr_related(u32 r0) +{ + u32 temp; + u32 return_var; + if(r0 == 0) + { + return 0; + } + if((r0 & 8) != 0) + { + return 4; + } + + temp = r0 & 7; + if(temp == 7) + { + return_var = 1;; + } + else if(temp == 1) + { + return_var = 2; + } + else if(temp == 3) + { + return_var = 3; + } + else + { + return_var = 5; + } + return return_var; +} |