diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-16 23:54:22 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-16 23:54:22 -0800 |
commit | 670fef77ac4d9116d5fdc28c0da40622919a062b (patch) | |
tree | 61c0e925f059404473826ac775305ba5e2706ab1 /asm/text_printer.s |
first commit
Diffstat (limited to 'asm/text_printer.s')
-rw-r--r-- | asm/text_printer.s | 2070 |
1 files changed, 2070 insertions, 0 deletions
diff --git a/asm/text_printer.s b/asm/text_printer.s new file mode 100644 index 000000000..10f46603d --- /dev/null +++ b/asm/text_printer.s @@ -0,0 +1,2070 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8002C1C +sub_8002C1C: @ 8002C1C + ldr r1, _08002C24 @ =gUnknown_3003D90 + str r0, [r1] + bx lr + .align 2, 0 +_08002C24: .4byte gUnknown_3003D90 + thumb_func_end sub_8002C1C + + thumb_func_start sub_8002C28 +sub_8002C28: @ 8002C28 + push {lr} + ldr r1, _08002C40 @ =gUnknown_2020034 + movs r2, 0 + ldr r3, _08002C44 @ =0x0000045c + adds r0, r1, r3 +_08002C32: + strb r2, [r0, 0x1B] + subs r0, 0x24 + cmp r0, r1 + bge _08002C32 + pop {r0} + bx r0 + .align 2, 0 +_08002C40: .4byte gUnknown_2020034 +_08002C44: .4byte 0x0000045c + thumb_func_end sub_8002C28 + + thumb_func_start sub_8002C48 +sub_8002C48: @ 8002C48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r4, [sp, 0x28] + ldr r5, [sp, 0x2C] + ldr r7, [sp, 0x30] + lsls r1, 24 + lsrs r1, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + mov r8, r5 + str r2, [sp] + mov r2, sp + strb r0, [r2, 0x4] + mov r0, sp + strb r1, [r0, 0x5] + strb r3, [r0, 0x6] + strb r4, [r0, 0x7] + strb r3, [r0, 0x8] + strb r4, [r0, 0x9] + ldr r0, _08002CF0 @ =gUnknown_3003D90 + ldr r0, [r0] + lsls r3, r1, 1 + adds r3, r1 + lsls r3, 2 + adds r3, r0 + ldrb r0, [r3, 0x6] + strb r0, [r2, 0xA] + mov r1, sp + ldrb r0, [r3, 0x7] + strb r0, [r1, 0xB] + mov r5, sp + ldrb r1, [r3, 0x8] + lsls r1, 28 + movs r6, 0xF + lsrs r1, 28 + ldrb r4, [r5, 0xC] + movs r2, 0x10 + negs r2, r2 + adds r0, r2, 0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, 0xC] + mov r4, sp + ldrb r1, [r3, 0x8] + lsrs r1, 4 + lsls r1, 4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0xC] + ldrb r0, [r3, 0x9] + lsls r0, 28 + lsrs r0, 28 + adds r1, r6, 0 + ands r1, r0 + ldrb r0, [r4, 0xD] + ands r2, r0 + orrs r2, r1 + strb r2, [r4, 0xD] + mov r1, sp + ldrb r0, [r3, 0x9] + lsrs r0, 4 + lsls r0, 4 + ands r2, r6 + orrs r2, r0 + strb r2, [r1, 0xD] + mov r0, sp + mov r1, r8 + adds r2, r7, 0 + bl sub_8002CF4 + lsls r0, 16 + lsrs r0, 16 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08002CF0: .4byte gUnknown_3003D90 + thumb_func_end sub_8002C48 + + thumb_func_start sub_8002CF4 +sub_8002CF4: @ 8002CF4 + push {r4-r7,lr} + adds r6, r0, 0 + mov r12, r2 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _08002D0C @ =gUnknown_3003D90 + ldr r0, [r0] + cmp r0, 0 + bne _08002D10 + movs r0, 0 + b _08002DD8 + .align 2, 0 +_08002D0C: .4byte gUnknown_3003D90 +_08002D10: + ldr r0, _08002D88 @ =gUnknown_2020010 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0, 0x1B] + strb r2, [r0, 0x1C] + strb r5, [r0, 0x1D] + strb r2, [r0, 0x1E] + strb r2, [r0, 0x1F] + adds r4, r0, 0 + movs r1, 0x6 + adds r0, 0x1A +_08002D26: + strb r2, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _08002D26 + adds r1, r4, 0 + adds r0, r6, 0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r0, [r0] + str r0, [r1] + mov r0, r12 + str r0, [r4, 0x10] + adds r0, r4, 0 + adds r0, 0x20 + movs r1, 0 + strb r1, [r0] + adds r0, 0x1 + strb r1, [r0] + ldrb r0, [r6, 0xC] + lsrs r0, 4 + ldrb r2, [r6, 0xD] + lsls r1, r2, 28 + lsrs r1, 28 + lsrs r2, 4 + bl sub_8002EA8 + cmp r5, 0xFF + beq _08002D90 + cmp r5, 0 + beq _08002D90 + ldrb r0, [r4, 0x1D] + subs r0, 0x1 + strb r0, [r4, 0x1D] + ldr r2, _08002D8C @ =gUnknown_2020034 + ldrb r0, [r6, 0x4] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r0, r4, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + b _08002DD6 + .align 2, 0 +_08002D88: .4byte gUnknown_2020010 +_08002D8C: .4byte gUnknown_2020034 +_08002D90: + ldr r1, _08002D9C @ =gUnknown_2020010 + movs r0, 0 + strb r0, [r1, 0x1D] + movs r4, 0 + ldr r7, _08002DA0 @ =0x000003ff + b _08002DAA + .align 2, 0 +_08002D9C: .4byte gUnknown_2020010 +_08002DA0: .4byte 0x000003ff +_08002DA4: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_08002DAA: + cmp r4, r7 + bhi _08002DB8 + ldr r0, _08002DE0 @ =gUnknown_2020010 + bl sub_8002E7C + cmp r0, 0x1 + bne _08002DA4 +_08002DB8: + cmp r5, 0xFF + beq _08002DC6 + ldr r0, _08002DE0 @ =gUnknown_2020010 + ldrb r0, [r0, 0x4] + movs r1, 0x2 + bl sub_8003F20 +_08002DC6: + ldr r2, _08002DE4 @ =gUnknown_2020034 + ldrb r1, [r6, 0x4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x1B] +_08002DD6: + movs r0, 0x1 +_08002DD8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08002DE0: .4byte gUnknown_2020010 +_08002DE4: .4byte gUnknown_2020034 + thumb_func_end sub_8002CF4 + + thumb_func_start sub_8002DE8 +sub_8002DE8: @ 8002DE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08002E18 @ =gUnknown_2020034 + movs r6, 0 + adds r5, r0, 0x4 + mov r8, r0 + movs r7, 0x1F +_08002DF8: + ldrb r0, [r5, 0x17] + cmp r0, 0 + beq _08002E4C + mov r0, r8 + bl sub_8002E7C + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0x1 + beq _08002E48 + cmp r4, 0x1 + bgt _08002E1C + cmp r4, 0 + beq _08002E22 + b _08002E4C + .align 2, 0 +_08002E18: .4byte gUnknown_2020034 +_08002E1C: + cmp r4, 0x3 + beq _08002E2A + b _08002E4C +_08002E22: + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8003F20 +_08002E2A: + ldr r1, _08002E44 @ =gUnknown_2020034 + adds r0, r1, 0 + adds r0, 0x10 + adds r0, r6, r0 + ldr r2, [r0] + cmp r2, 0 + beq _08002E4C + adds r0, r6, r1 + adds r1, r4, 0 + bl _call_via_r2 + b _08002E4C + .align 2, 0 +_08002E44: .4byte gUnknown_2020034 +_08002E48: + movs r0, 0 + strb r0, [r5, 0x17] +_08002E4C: + adds r6, 0x24 + adds r5, 0x24 + movs r0, 0x24 + add r8, r0 + subs r7, 0x1 + cmp r7, 0 + bge _08002DF8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8002DE8 + + thumb_func_start sub_8002E64 +sub_8002E64: @ 8002E64 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08002E78 @ =gUnknown_2020034 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1B] + bx lr + .align 2, 0 +_08002E78: .4byte gUnknown_2020034 + thumb_func_end sub_8002E64 + + thumb_func_start sub_8002E7C +sub_8002E7C: @ 8002E7C + push {r4,lr} + adds r4, r0, 0 +_08002E80: + ldrb r1, [r4, 0x5] + ldr r0, _08002EA4 @ =gUnknown_3003D90 + ldr r2, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + beq _08002E80 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08002EA4: .4byte gUnknown_3003D90 + thumb_func_end sub_8002E7C + + thumb_func_start sub_8002EA8 +sub_8002EA8: @ 8002EA8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + str r1, [sp] + str r0, [sp, 0x4] + str r2, [sp, 0x8] + ldr r3, _08002F4C @ =gUnknown_3000AE2 + strh r1, [r3] + ldr r1, _08002F50 @ =gUnknown_3000AE4 + strh r0, [r1] + ldr r0, _08002F54 @ =gUnknown_3000AE6 + strh r2, [r0] + movs r0, 0 + mov r12, r0 + movs r1, 0 +_08002ED8: + movs r2, 0 + lsls r0, r1, 2 + adds r1, 0x1 + mov r10, r1 + add r0, sp + mov r8, r0 +_08002EE4: + movs r1, 0 + lsls r0, r2, 2 + adds r2, 0x1 + mov r9, r2 + add r0, sp + str r0, [sp, 0xC] +_08002EF0: + lsls r0, r1, 2 + adds r6, r1, 0x1 + mov r1, sp + adds r4, r1, r0 + mov r5, sp + mov r7, r12 + lsls r0, r7, 1 + ldr r1, _08002F58 @ =gUnknown_3000A40 + adds r2, r0, r1 + movs r3, 0x2 +_08002F04: + ldm r5!, {r1} + lsls r1, 12 + ldr r0, [r4] + lsls r0, 8 + orrs r1, r0 + ldr r7, [sp, 0xC] + ldr r0, [r7] + lsls r0, 4 + orrs r1, r0 + mov r7, r8 + ldr r0, [r7] + orrs r0, r1 + strh r0, [r2] + adds r2, 0x2 + movs r0, 0x1 + add r12, r0 + subs r3, 0x1 + cmp r3, 0 + bge _08002F04 + adds r1, r6, 0 + cmp r1, 0x2 + ble _08002EF0 + mov r2, r9 + cmp r2, 0x2 + ble _08002EE4 + mov r1, r10 + cmp r1, 0x2 + ble _08002ED8 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08002F4C: .4byte gUnknown_3000AE2 +_08002F50: .4byte gUnknown_3000AE4 +_08002F54: .4byte gUnknown_3000AE6 +_08002F58: .4byte gUnknown_3000A40 + thumb_func_end sub_8002EA8 + + thumb_func_start sub_8002F5C +sub_8002F5C: @ 8002F5C + ldr r3, _08002F70 @ =gUnknown_3000AE2 + ldrh r3, [r3] + strb r3, [r1] + ldr r1, _08002F74 @ =gUnknown_3000AE4 + ldrh r1, [r1] + strb r1, [r0] + ldr r0, _08002F78 @ =gUnknown_3000AE6 + ldrh r0, [r0] + strb r0, [r2] + bx lr + .align 2, 0 +_08002F70: .4byte gUnknown_3000AE2 +_08002F74: .4byte gUnknown_3000AE4 +_08002F78: .4byte gUnknown_3000AE6 + thumb_func_end sub_8002F5C + + thumb_func_start sub_8002F7C +sub_8002F7C: @ 8002F7C + push {lr} + ldrb r0, [r0] + ldrb r1, [r1] + ldrb r2, [r2] + bl sub_8002EA8 + pop {r0} + bx r0 + thumb_func_end sub_8002F7C + + thumb_func_start sub_8002F8C +sub_8002F8C: @ 8002F8C + push {r4,r5,lr} + adds r2, r0, 0 + movs r3, 0 + ldr r5, _08002FA4 @ =gUnknown_3000A40 + ldr r4, _08002FA8 @ =gUnknown_81EA044 +_08002F96: + lsls r0, r3, 31 + cmp r0, 0 + beq _08002FAC + ldrb r0, [r2] + adds r2, 0x2 + b _08002FB0 + .align 2, 0 +_08002FA4: .4byte gUnknown_3000A40 +_08002FA8: .4byte gUnknown_81EA044 +_08002FAC: + ldrh r0, [r2] + lsrs r0, 8 +_08002FB0: + adds r0, r4 + ldrb r0, [r0] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + adds r3, 0x1 + cmp r3, 0xF + ble _08002F96 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8002F8C + + thumb_func_start sub_8002FCC +sub_8002FCC: @ 8002FCC + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x1 + beq _08003000 + cmp r0, 0x1 + bgt _08002FE2 + cmp r0, 0 + beq _08002FE8 + b _0800300C +_08002FE2: + cmp r1, 0x2 + beq _08002FF4 + b _0800300C +_08002FE8: + ldr r0, _08002FF0 @ =gUnknown_3000AE4 + ldrb r0, [r0] + b _0800300E + .align 2, 0 +_08002FF0: .4byte gUnknown_3000AE4 +_08002FF4: + ldr r0, _08002FFC @ =gUnknown_3000AE2 + ldrb r0, [r0] + b _0800300E + .align 2, 0 +_08002FFC: .4byte gUnknown_3000AE2 +_08003000: + ldr r0, _08003008 @ =gUnknown_3000AE6 + ldrb r0, [r0] + b _0800300E + .align 2, 0 +_08003008: .4byte gUnknown_3000AE6 +_0800300C: + movs r0, 0 +_0800300E: + pop {r1} + bx r1 + thumb_func_end sub_8002FCC + + thumb_func_start sub_8003014 +sub_8003014: @ 8003014 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x6C + adds r6, r0, 0 + ldr r0, _08003084 @ =gUnknown_20204B4 + mov r9, r0 + ldrb r1, [r6, 0x4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + mov r1, r9 + adds r2, r0, r1 + ldrb r0, [r2, 0x3] + lsls r0, 3 + ldrb r1, [r6, 0x8] + subs r1, r0, r1 + ldr r3, _08003088 @ =gUnknown_3003DA0 + mov r8, r3 + mov r0, r8 + adds r0, 0x80 + ldrb r7, [r0] + cmp r1, r7 + bge _0800304A + adds r7, r1, 0 +_0800304A: + ldrb r0, [r2, 0x4] + lsls r0, 3 + ldrb r4, [r6, 0x9] + subs r0, r4 + adds r1, r3, 0 + adds r1, 0x81 + ldrb r1, [r1] + mov r10, r1 + adds r5, r4, 0 + cmp r0, r10 + bge _08003062 + mov r10, r0 +_08003062: + movs r1, 0 + cmp r7, 0x8 + ble _0800306A + movs r1, 0x1 +_0800306A: + mov r0, r10 + cmp r0, 0x8 + ble _08003074 + movs r0, 0x2 + orrs r1, r0 +_08003074: + cmp r1, 0x1 + beq _08003134 + cmp r1, 0x1 + bgt _0800308C + cmp r1, 0 + beq _0800309A + b _080035FC + .align 2, 0 +_08003084: .4byte gUnknown_20204B4 +_08003088: .4byte gUnknown_3003DA0 +_0800308C: + cmp r1, 0x2 + bne _08003092 + b _08003268 +_08003092: + cmp r1, 0x3 + bne _08003098 + b _080033A0 +_08003098: + b _080035FC +_0800309A: + adds r2, r3, 0 + movs r1, 0 + adds r0, r5, 0 + cmp r1, r10 + blt _080030A6 + b _080035FC +_080030A6: + ldm r2!, {r3} + str r3, [sp] + movs r5, 0 + ldrb r4, [r6, 0x8] + str r2, [sp, 0x28] + adds r1, 0x1 + str r1, [sp, 0x20] + adds r1, r0, 0x1 + str r1, [sp, 0x24] + cmp r5, r7 + bge _08003124 + ldr r2, _08003130 @ =gUnknown_20204B4 + mov r12, r2 + asrs r3, r0, 3 + mov r9, r3 + lsls r0, 29 + lsrs r0, 27 + mov r8, r0 +_080030CA: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + mov r1, r12 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + add r3, r12 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + ldr r2, [sp] + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800311C + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_0800311C: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r7 + blt _080030CA +_08003124: + ldr r2, [sp, 0x28] + ldr r1, [sp, 0x20] + ldr r0, [sp, 0x24] + cmp r1, r10 + blt _080030A6 + b _080035FC + .align 2, 0 +_08003130: .4byte gUnknown_20204B4 +_08003134: + movs r2, 0 + adds r1, r5, 0 + cmp r2, r10 + bge _080031BE +_0800313C: + ldm r3!, {r0} + mov r9, r0 + movs r5, 0 + ldrb r4, [r6, 0x8] + lsls r0, r1, 29 + str r3, [sp, 0x38] + adds r2, 0x1 + str r2, [sp, 0x30] + adds r2, r1, 0x1 + str r2, [sp, 0x34] + asrs r1, 3 + mov r12, r1 + lsrs r0, 27 + mov r8, r0 +_08003158: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + ldr r1, _08003260 @ =gUnknown_20204B4 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + ldr r0, _08003260 @ =gUnknown_20204B4 + adds r3, r0 + ldrb r0, [r3, 0x3] + mov r2, r12 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r9 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080031AC + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080031AC: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, 0x7 + ble _08003158 + ldr r3, [sp, 0x38] + ldr r2, [sp, 0x30] + ldr r1, [sp, 0x34] + cmp r2, r10 + blt _0800313C +_080031BE: + ldr r3, _08003264 @ =gUnknown_3003DC0 + movs r2, 0 + ldrb r1, [r6, 0x9] + cmp r2, r10 + blt _080031CA + b _080035FC +_080031CA: + subs r7, 0x8 + str r7, [sp, 0x64] + str r7, [sp, 0x4] +_080031D0: + ldm r3!, {r0} + mov r12, r0 + movs r5, 0 + ldrb r0, [r6, 0x8] + adds r4, r0, 0 + adds r4, 0x8 + str r3, [sp, 0x50] + adds r2, 0x1 + str r2, [sp, 0x48] + adds r2, r1, 0x1 + str r2, [sp, 0x4C] + ldr r3, [sp, 0x4] + cmp r5, r3 + bge _08003254 + ldr r7, _08003260 @ =gUnknown_20204B4 + asrs r0, r1, 3 + mov r9, r0 + lsls r0, r1, 29 + lsrs r0, 27 + mov r8, r0 +_080031F8: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r1, r7, 0 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + adds r3, r7 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r12 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800324A + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_0800324A: + adds r5, 0x1 + adds r4, 0x1 + ldr r1, [sp, 0x64] + cmp r5, r1 + blt _080031F8 +_08003254: + ldr r3, [sp, 0x50] + ldr r2, [sp, 0x48] + ldr r1, [sp, 0x4C] + cmp r2, r10 + blt _080031D0 + b _080035FC + .align 2, 0 +_08003260: .4byte gUnknown_20204B4 +_08003264: .4byte gUnknown_3003DC0 +_08003268: + adds r1, r3, 0 + movs r2, 0 + adds r0, r5, 0 + mov r3, r10 + subs r3, 0x8 + str r3, [sp, 0x68] +_08003274: + ldm r1!, {r3} + mov r10, r3 + movs r5, 0 + ldrb r4, [r6, 0x8] + str r1, [sp, 0x60] + adds r2, 0x1 + str r2, [sp, 0x58] + adds r1, r0, 0x1 + str r1, [sp, 0x5C] + cmp r5, r7 + bge _080032F2 + ldr r2, _08003398 @ =gUnknown_20204B4 + mov r12, r2 + asrs r3, r0, 3 + mov r9, r3 + lsls r0, 29 + lsrs r0, 27 + mov r8, r0 +_08003298: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + mov r1, r12 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + add r3, r12 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r10 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080032EA + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080032EA: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r7 + blt _08003298 +_080032F2: + ldr r1, [sp, 0x60] + ldr r2, [sp, 0x58] + ldr r0, [sp, 0x5C] + cmp r2, 0x7 + ble _08003274 + ldr r2, _0800339C @ =gUnknown_3003DE0 + movs r1, 0 + ldrb r0, [r6, 0x9] + adds r0, 0x8 + ldr r3, [sp, 0x68] + cmp r1, r3 + blt _0800330C + b _080035FC +_0800330C: + ldm r2!, {r3} + mov r10, r3 + movs r5, 0 + ldrb r4, [r6, 0x8] + str r2, [sp, 0x1C] + adds r1, 0x1 + str r1, [sp, 0x14] + adds r1, r0, 0x1 + str r1, [sp, 0x18] + cmp r5, r7 + bge _0800338A + ldr r2, _08003398 @ =gUnknown_20204B4 + mov r12, r2 + asrs r3, r0, 3 + mov r9, r3 + lsls r0, 29 + lsrs r0, 27 + mov r8, r0 +_08003330: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + mov r1, r12 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + add r3, r12 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r10 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003382 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08003382: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r7 + blt _08003330 +_0800338A: + ldr r2, [sp, 0x1C] + ldr r1, [sp, 0x14] + ldr r0, [sp, 0x18] + ldr r3, [sp, 0x68] + cmp r1, r3 + blt _0800330C + b _080035FC + .align 2, 0 +_08003398: .4byte gUnknown_20204B4 +_0800339C: .4byte gUnknown_3003DE0 +_080033A0: + mov r2, r8 + movs r3, 0 + adds r1, r4, 0 + subs r7, 0x8 + str r7, [sp, 0x64] + mov r0, r10 + subs r0, 0x8 + str r0, [sp, 0x68] +_080033B0: + ldm r2!, {r0} + mov r9, r0 + movs r5, 0 + ldrb r4, [r6, 0x8] + lsls r0, r1, 29 + str r2, [sp, 0x2C] + adds r3, 0x1 + mov r10, r3 + adds r2, r1, 0x1 + mov r12, r2 + asrs r1, 3 + mov r8, r1 + lsrs r7, r0, 27 +_080033CA: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + ldr r1, _080034D0 @ =gUnknown_20204B4 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + ldr r0, _080034D0 @ =gUnknown_20204B4 + adds r3, r0 + ldrb r0, [r3, 0x3] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + adds r3, r1, r7 + lsls r0, r5, 2 + mov r2, r9 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800341C + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_0800341C: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, 0x7 + ble _080033CA + ldr r2, [sp, 0x2C] + mov r3, r10 + mov r1, r12 + cmp r3, 0x7 + ble _080033B0 + ldr r3, _080034D4 @ =gUnknown_3003DC0 + movs r2, 0 + ldrb r1, [r6, 0x9] + ldr r0, [sp, 0x64] + mov r12, r0 +_08003438: + ldm r3!, {r0} + mov r10, r0 + movs r5, 0 + ldrb r0, [r6, 0x8] + adds r4, r0, 0 + adds r4, 0x8 + str r3, [sp, 0x44] + adds r2, 0x1 + str r2, [sp, 0x3C] + adds r2, r1, 0x1 + str r2, [sp, 0x40] + cmp r5, r12 + bge _080034B8 + ldr r7, _080034D0 @ =gUnknown_20204B4 + asrs r3, r1, 3 + mov r9, r3 + lsls r0, r1, 29 + lsrs r0, 27 + mov r8, r0 +_0800345E: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r1, r7, 0 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + adds r3, r7 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r10 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080034B0 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080034B0: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r12 + blt _0800345E +_080034B8: + ldr r3, [sp, 0x44] + ldr r2, [sp, 0x3C] + ldr r1, [sp, 0x40] + cmp r2, 0x7 + ble _08003438 + ldr r3, _080034D8 @ =gUnknown_3003DE0 + movs r2, 0 + ldrb r0, [r6, 0x9] + adds r1, r0, 0 + adds r1, 0x8 + b _08003556 + .align 2, 0 +_080034D0: .4byte gUnknown_20204B4 +_080034D4: .4byte gUnknown_3003DC0 +_080034D8: .4byte gUnknown_3003DE0 +_080034DC: + ldm r3!, {r0} + mov r9, r0 + movs r5, 0 + ldrb r4, [r6, 0x8] + lsls r0, r1, 29 + str r3, [sp, 0x54] + adds r2, 0x1 + mov r10, r2 + adds r2, r1, 0x1 + mov r12, r2 + asrs r1, 3 + mov r8, r1 + lsrs r7, r0, 27 +_080034F6: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + ldr r1, _0800360C @ =gUnknown_20204B4 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + ldr r0, _0800360C @ =gUnknown_20204B4 + adds r3, r0 + ldrb r0, [r3, 0x3] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + adds r3, r1, r7 + lsls r0, r5, 2 + mov r2, r9 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003548 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08003548: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, 0x7 + ble _080034F6 + ldr r3, [sp, 0x54] + mov r2, r10 + mov r1, r12 +_08003556: + ldr r0, [sp, 0x68] + cmp r2, r0 + blt _080034DC + ldr r3, _08003610 @ =gUnknown_3003E00 + movs r2, 0 + ldrb r0, [r6, 0x9] + adds r1, r0, 0 + adds r1, 0x8 + ldr r0, [sp, 0x68] + cmp r2, r0 + bge _080035FC + ldr r0, [sp, 0x64] + mov r10, r0 +_08003570: + ldm r3!, {r0} + mov r12, r0 + movs r5, 0 + ldrb r0, [r6, 0x8] + adds r4, r0, 0 + adds r4, 0x8 + str r3, [sp, 0x10] + adds r2, 0x1 + str r2, [sp, 0x8] + adds r2, r1, 0x1 + str r2, [sp, 0xC] + cmp r5, r10 + bge _080035F0 + ldr r7, _0800360C @ =gUnknown_20204B4 + asrs r3, r1, 3 + mov r9, r3 + lsls r0, r1, 29 + lsrs r0, 27 + mov r8, r0 +_08003596: + ldrb r0, [r6, 0x4] + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r1, r7, 0 + adds r1, 0x8 + adds r1, r3, r1 + asrs r2, r4, 1 + movs r0, 0x3 + ands r2, r0 + ldr r1, [r1] + adds r1, r2 + asrs r0, r4, 3 + lsls r0, 5 + adds r1, r0 + adds r3, r7 + ldrb r0, [r3, 0x3] + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 5 + adds r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, 2 + mov r2, r12 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080035E8 + movs r0, 0x1 + ands r0, r4 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080035E8: + adds r5, 0x1 + adds r4, 0x1 + cmp r5, r10 + blt _08003596 +_080035F0: + ldr r3, [sp, 0x10] + ldr r2, [sp, 0x8] + ldr r1, [sp, 0xC] + ldr r0, [sp, 0x68] + cmp r2, r0 + blt _08003570 +_080035FC: + add sp, 0x6C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800360C: .4byte gUnknown_20204B4 +_08003610: .4byte gUnknown_3003E00 + thumb_func_end sub_8003014 + + thumb_func_start sub_8003614 +sub_8003614: @ 8003614 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + str r0, [sp] + ldr r0, [sp, 0x60] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x4] + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x8] + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + lsrs r4, r0, 16 + subs r1, r3, r1 + ldr r5, _08003688 @ =gUnknown_3003DA0 + adds r0, r5, 0 + adds r0, 0x80 + ldrb r7, [r0] + adds r2, r5, 0 + cmp r1, r7 + bge _0800364A + adds r7, r1, 0 +_0800364A: + ldr r1, [sp, 0x8] + subs r0, r4, r1 + adds r1, r2, 0 + adds r1, 0x81 + ldrb r1, [r1] + str r1, [sp, 0xC] + cmp r0, r1 + bge _0800365C + str r0, [sp, 0xC] +_0800365C: + movs r1, 0 + movs r0, 0x7 + ands r0, r3 + adds r0, r3, r0 + lsrs r0, 3 + str r0, [sp, 0x10] + cmp r7, 0x8 + ble _0800366E + movs r1, 0x1 +_0800366E: + ldr r3, [sp, 0xC] + cmp r3, 0x8 + ble _08003678 + movs r0, 0x2 + orrs r1, r0 +_08003678: + cmp r1, 0x1 + beq _08003718 + cmp r1, 0x1 + bgt _0800368C + cmp r1, 0 + beq _0800369A + b _08003B00 + .align 2, 0 +_08003688: .4byte gUnknown_3003DA0 +_0800368C: + cmp r1, 0x2 + bne _08003692 + b _0800381C +_08003692: + cmp r1, 0x3 + bne _08003698 + b _0800391C +_08003698: + b _08003B00 +_0800369A: + adds r1, r2, 0 + movs r0, 0 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _080036A8 + b _08003B00 +_080036A8: + ldm r1!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + str r1, [sp, 0x28] + adds r0, 0x1 + mov r9, r0 + adds r0, r2, 0x1 + mov r10, r0 + cmp r5, r7 + bge _0800370A + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r0, 5 + mov r12, r0 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_080036CC: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003702 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003702: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r7 + blt _080036CC +_0800370A: + ldr r1, [sp, 0x28] + mov r0, r9 + mov r2, r10 + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _080036A8 + b _08003B00 +_08003718: + adds r5, r2, 0 + movs r4, 0 + ldr r2, [sp, 0x8] + ldr r0, [sp, 0xC] + cmp r4, r0 + bge _0800378E +_08003724: + ldm r5!, {r1} + mov r8, r1 + movs r6, 0 + ldr r3, [sp, 0x4] + asrs r0, r2, 3 + lsls r1, r2, 29 + str r5, [sp, 0x2C] + adds r4, 0x1 + mov r9, r4 + adds r2, 0x1 + mov r10, r2 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r0, 5 + mov r12, r0 + lsrs r5, r1, 27 +_08003744: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r5 + lsls r0, r6, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800377A + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800377A: + adds r6, 0x1 + adds r3, 0x1 + cmp r6, 0x7 + ble _08003744 + ldr r5, [sp, 0x2C] + mov r4, r9 + mov r2, r10 + ldr r1, [sp, 0xC] + cmp r4, r1 + blt _08003724 +_0800378E: + ldr r1, _08003818 @ =gUnknown_3003DC0 + movs r0, 0 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _0800379C + b _08003B00 +_0800379C: + subs r7, 0x8 + str r7, [sp, 0x18] + str r7, [sp, 0x14] +_080037A2: + ldm r1!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + adds r3, 0x8 + mov r12, r1 + adds r0, 0x1 + mov r9, r0 + adds r0, r2, 0x1 + mov r10, r0 + ldr r1, [sp, 0x14] + cmp r5, r1 + bge _08003808 + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r7, r0, 5 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_080037C8: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080037FE + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080037FE: + adds r5, 0x1 + adds r3, 0x1 + ldr r0, [sp, 0x18] + cmp r5, r0 + blt _080037C8 +_08003808: + mov r1, r12 + mov r0, r9 + mov r2, r10 + ldr r3, [sp, 0xC] + cmp r0, r3 + blt _080037A2 + b _08003B00 + .align 2, 0 +_08003818: .4byte gUnknown_3003DC0 +_0800381C: + adds r0, r2, 0 + movs r1, 0 + ldr r2, [sp, 0x8] + adds r3, r2, 0 + adds r3, 0x8 + str r3, [sp, 0x1C] + ldr r3, [sp, 0xC] + subs r3, 0x8 + str r3, [sp, 0x20] +_0800382E: + ldm r0!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + str r0, [sp, 0x34] + adds r1, 0x1 + mov r9, r1 + adds r0, r2, 0x1 + mov r10, r0 + cmp r5, r7 + bge _08003890 + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r0, 5 + mov r12, r0 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_08003852: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003888 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003888: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r7 + blt _08003852 +_08003890: + ldr r0, [sp, 0x34] + mov r1, r9 + mov r2, r10 + cmp r1, 0x7 + ble _0800382E + ldr r2, _08003918 @ =gUnknown_3003DE0 + movs r0, 0 + ldr r1, [sp, 0x1C] + ldr r3, [sp, 0x20] + cmp r0, r3 + blt _080038A8 + b _08003B00 +_080038A8: + ldm r2!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x4] + str r2, [sp, 0x38] + adds r0, 0x1 + mov r9, r0 + adds r0, r1, 0x1 + mov r10, r0 + cmp r5, r7 + bge _0800390A + asrs r0, r1, 3 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r0, 5 + mov r12, r0 + lsls r0, r1, 29 + lsrs r6, r0, 27 +_080038CC: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + add r1, r12 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003902 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003902: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r7 + blt _080038CC +_0800390A: + ldr r2, [sp, 0x38] + mov r0, r9 + mov r1, r10 + ldr r3, [sp, 0x20] + cmp r0, r3 + blt _080038A8 + b _08003B00 + .align 2, 0 +_08003918: .4byte gUnknown_3003DE0 +_0800391C: + movs r2, 0 + ldr r4, [sp, 0x8] + ldr r0, [sp, 0x4] + adds r0, 0x8 + str r0, [sp, 0x3C] + subs r7, 0x8 + str r7, [sp, 0x18] + adds r1, r4, 0 + adds r1, 0x8 + str r1, [sp, 0x1C] + ldr r3, [sp, 0xC] + subs r3, 0x8 + str r3, [sp, 0x20] +_08003936: + ldm r5!, {r0} + mov r8, r0 + movs r6, 0 + ldr r3, [sp, 0x4] + asrs r0, r4, 3 + lsls r1, r4, 29 + mov r10, r5 + adds r2, 0x1 + mov r12, r2 + adds r4, 0x1 + mov r9, r4 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r7, r0, 5 + lsrs r5, r1, 27 +_08003954: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r5 + lsls r0, r6, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _0800398A + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800398A: + adds r6, 0x1 + adds r3, 0x1 + cmp r6, 0x7 + ble _08003954 + mov r5, r10 + mov r2, r12 + mov r4, r9 + cmp r2, 0x7 + ble _08003936 + ldr r1, _08003B10 @ =gUnknown_3003DC0 + movs r0, 0 + ldr r2, [sp, 0x8] + ldr r3, [sp, 0x18] + mov r12, r3 +_080039A6: + ldm r1!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x3C] + str r1, [sp, 0x24] + adds r0, 0x1 + mov r9, r0 + adds r0, r2, 0x1 + mov r10, r0 + cmp r5, r12 + bge _08003A06 + asrs r0, r2, 3 + ldr r1, [sp, 0x10] + muls r0, r1 + lsls r7, r0, 5 + lsls r0, r2, 29 + lsrs r6, r0, 27 +_080039C8: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _080039FE + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080039FE: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r12 + blt _080039C8 +_08003A06: + ldr r1, [sp, 0x24] + mov r0, r9 + mov r2, r10 + cmp r0, 0x7 + ble _080039A6 + ldr r6, _08003B14 @ =gUnknown_3003DE0 + movs r4, 0 + ldr r2, [sp, 0x1C] + ldr r3, [sp, 0x20] + cmp r4, r3 + bge _08003A84 +_08003A1C: + ldm r6!, {r0} + mov r8, r0 + movs r5, 0 + ldr r3, [sp, 0x4] + asrs r0, r2, 3 + lsls r1, r2, 29 + mov r12, r6 + adds r4, 0x1 + mov r9, r4 + adds r2, 0x1 + mov r10, r2 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r7, r0, 5 + lsrs r6, r1, 27 +_08003A3A: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003A70 + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003A70: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, 0x7 + ble _08003A3A + mov r6, r12 + mov r4, r9 + mov r2, r10 + ldr r1, [sp, 0x20] + cmp r4, r1 + blt _08003A1C +_08003A84: + ldr r2, _08003B18 @ =gUnknown_3003E00 + movs r0, 0 + ldr r1, [sp, 0x1C] + ldr r3, [sp, 0x20] + cmp r0, r3 + bge _08003B00 + ldr r3, [sp, 0x18] + mov r12, r3 +_08003A94: + ldm r2!, {r3} + mov r8, r3 + movs r5, 0 + ldr r3, [sp, 0x3C] + str r2, [sp, 0x30] + adds r0, 0x1 + mov r9, r0 + adds r0, r1, 0x1 + mov r10, r0 + cmp r5, r12 + bge _08003AF4 + asrs r0, r1, 3 + ldr r2, [sp, 0x10] + muls r0, r2 + lsls r7, r0, 5 + lsls r0, r1, 29 + lsrs r6, r0, 27 +_08003AB6: + asrs r1, r3, 1 + movs r0, 0x3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, 3 + lsls r0, 5 + adds r1, r0 + adds r1, r7 + adds r4, r1, r6 + lsls r0, r5, 2 + mov r2, r8 + lsrs r2, r0 + movs r0, 0xF + ands r2, r0 + cmp r2, 0 + beq _08003AEC + movs r0, 0x1 + ands r0, r3 + lsls r0, 2 + lsls r2, r0 + movs r1, 0xF0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08003AEC: + adds r5, 0x1 + adds r3, 0x1 + cmp r5, r12 + blt _08003AB6 +_08003AF4: + ldr r2, [sp, 0x30] + mov r0, r9 + mov r1, r10 + ldr r3, [sp, 0x20] + cmp r0, r3 + blt _08003A94 +_08003B00: + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08003B10: .4byte gUnknown_3003DC0 +_08003B14: .4byte gUnknown_3003DE0 +_08003B18: .4byte gUnknown_3003E00 + thumb_func_end sub_8003614 + + thumb_func_start nullsub_5 +nullsub_5: @ 8003B1C + bx lr + thumb_func_end nullsub_5 + + .align 2, 0 @ Don't pad with nop. |