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/sprite.s |
first commit
Diffstat (limited to 'asm/sprite.s')
-rw-r--r-- | asm/sprite.s | 4672 |
1 files changed, 4672 insertions, 0 deletions
diff --git a/asm/sprite.s b/asm/sprite.s new file mode 100644 index 000000000..de75b0b31 --- /dev/null +++ b/asm/sprite.s @@ -0,0 +1,4672 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8006B10 +sub_8006B10: @ 8006B10 + push {r4,lr} + movs r0, 0 + movs r1, 0x80 + bl sub_80072E8 + bl sub_8007770 + bl sub_8007350 + bl sub_8008560 + bl sub_80087C4 + ldr r1, _08006B4C @ =gUnknown_2021B44 + movs r0, 0x40 + strb r0, [r1] + ldr r0, _08006B50 @ =gUnknown_2021B46 + movs r4, 0 + strh r4, [r0] + movs r0, 0 + bl sub_8007434 + ldr r0, _08006B54 @ =gUnknown_2021BC8 + strh r4, [r0] + ldr r0, _08006B58 @ =gUnknown_2021BCA + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08006B4C: .4byte gUnknown_2021B44 +_08006B50: .4byte gUnknown_2021B46 +_08006B54: .4byte gUnknown_2021BC8 +_08006B58: .4byte gUnknown_2021BCA + thumb_func_end sub_8006B10 + + thumb_func_start sub_8006B5C +sub_8006B5C: @ 8006B5C + push {r4-r7,lr} + movs r6, 0 + movs r7, 0x1 +_08006B62: + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, _08006BA4 @ =gUnknown_202063C + adds r4, r0, r1 + adds r5, r4, 0 + adds r5, 0x3E + ldrb r1, [r5] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08006B92 + ldr r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + ldrb r1, [r5] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08006B92 + adds r0, r4, 0 + bl sub_8007824 +_08006B92: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3F + bls _08006B62 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08006BA4: .4byte gUnknown_202063C + thumb_func_end sub_8006B5C + + thumb_func_start sub_8006BA8 +sub_8006BA8: @ 8006BA8 + push {r4,r5,lr} + bl sub_8006BF4 + bl sub_8006CB8 + bl sub_8006CF8 + ldr r5, _08006BE8 @ =gUnknown_30030F0 + ldr r0, _08006BEC @ =0x00000439 + adds r5, r0 + ldrb r0, [r5] + lsls r4, r0, 31 + lsrs r4, 31 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5] + bl sub_8006F04 + bl sub_8006EB8 + movs r2, 0x1 + ldrb r1, [r5] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 + orrs r4, r0 + strb r4, [r5] + ldr r0, _08006BF0 @ =gUnknown_2021840 + strb r2, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08006BE8: .4byte gUnknown_30030F0 +_08006BEC: .4byte 0x00000439 +_08006BF0: .4byte gUnknown_2021840 + thumb_func_end sub_8006BA8 + + thumb_func_start sub_8006BF4 +sub_8006BF4: @ 8006BF4 + push {r4-r7,lr} + movs r4, 0 + ldr r7, _08006C60 @ =gUnknown_202063C + ldr r0, _08006C64 @ =0x000001ff + adds r5, r0, 0 + ldr r6, _08006C68 @ =0xfffffe00 +_08006C00: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r3, r0, r7 + adds r0, r3, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0x1 + bne _08006CA6 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08006C74 + movs r2, 0x20 + ldrsh r1, [r3, r2] + movs r2, 0x24 + ldrsh r0, [r3, r2] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r0 + ldr r0, _08006C6C @ =gUnknown_2021BC8 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r1, r0 + ands r1, r5 + ldrh r2, [r3, 0x2] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + ldrh r1, [r3, 0x26] + ldrh r0, [r3, 0x22] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x29 + ldrb r0, [r0] + ldr r2, _08006C70 @ =gUnknown_2021BCA + adds r0, r1 + ldrb r2, [r2] + adds r0, r2 + b _08006CA4 + .align 2, 0 +_08006C60: .4byte gUnknown_202063C +_08006C64: .4byte 0x000001ff +_08006C68: .4byte 0xfffffe00 +_08006C6C: .4byte gUnknown_2021BC8 +_08006C70: .4byte gUnknown_2021BCA +_08006C74: + movs r2, 0x20 + ldrsh r1, [r3, r2] + movs r2, 0x24 + ldrsh r0, [r3, r2] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r0 + ands r1, r5 + ldrh r2, [r3, 0x2] + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + ldrh r1, [r3, 0x26] + ldrh r0, [r3, 0x22] + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x29 + ldrb r0, [r0] + adds r0, r1 +_08006CA4: + strb r0, [r3] +_08006CA6: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3F + bls _08006C00 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8006BF4 + + thumb_func_start sub_8006CB8 +sub_8006CB8: @ 8006CB8 + push {r4,lr} + movs r2, 0 + ldr r4, _08006CF0 @ =gUnknown_202063C + ldr r3, _08006CF4 @ =gUnknown_2021780 +_08006CC0: + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r4 + adds r1, r0, 0 + adds r1, 0x43 + ldrb r1, [r1] + ldrb r0, [r0, 0x5] + lsls r0, 28 + lsrs r0, 30 + lsls r0, 8 + orrs r1, r0 + lsls r0, r2, 1 + adds r0, r3 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0x3F + bls _08006CC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08006CF0: .4byte gUnknown_202063C +_08006CF4: .4byte gUnknown_2021780 + thumb_func_end sub_8006CB8 + + thumb_func_start sub_8006CF8 +sub_8006CF8: @ 8006CF8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r0, 0x1 + mov r12, r0 + ldr r1, _08006DC0 @ =gUnknown_2021800 + mov r10, r1 + ldr r3, _08006DC4 @ =0xffffff00 + mov r9, r3 + ldr r6, _08006DC8 @ =0xc0000300 + mov r8, r6 +_08006D14: + mov r5, r12 + mov r0, r12 + subs r0, 0x1 + add r0, r10 + ldrb r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r7, _08006DCC @ =gUnknown_202063C + adds r3, r0, r7 + mov r0, r12 + add r0, r10 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r7 + lsls r2, 1 + ldr r0, _08006DD0 @ =gUnknown_2021780 + adds r2, r0 + ldrh r2, [r2] + str r2, [sp] + lsls r1, 1 + adds r1, r0 + ldrh r6, [r1] + ldrb r1, [r3] + ldrb r2, [r4] + adds r0, r1, 0 + cmp r0, 0x9F + ble _08006D56 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006D56: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _08006D64 + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006D64: + ldr r0, [r3] + mov r7, r8 + ands r0, r7 + cmp r0, r8 + bne _08006D88 + ldrb r0, [r3, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006D7A + cmp r0, 0x2 + bne _08006D88 +_08006D7A: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006D88 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006D88: + ldr r0, [r4] + mov r3, r8 + ands r0, r3 + cmp r0, r8 + bne _08006DAC + ldrb r0, [r4, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006D9E + cmp r0, 0x2 + bne _08006DAC +_08006D9E: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006DAC + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006DAC: + movs r7, 0x1 + add r12, r7 + cmp r5, 0 + beq _08006E92 + ldr r0, [sp] + cmp r0, r6 + bhi _08006DD4 + cmp r0, r6 + bne _08006E92 + b _08006E8A + .align 2, 0 +_08006DC0: .4byte gUnknown_2021800 +_08006DC4: .4byte 0xffffff00 +_08006DC8: .4byte 0xc0000300 +_08006DCC: .4byte gUnknown_202063C +_08006DD0: .4byte gUnknown_2021780 +_08006DD4: + mov r1, r10 + adds r3, r5, r1 + ldrb r4, [r3] + subs r2, r5, 0x1 + adds r1, r2, r1 + ldrb r0, [r1] + strb r0, [r3] + strb r4, [r1] + lsls r2, 24 + lsrs r5, r2, 24 + subs r0, r5, 0x1 + add r0, r10 + ldrb r2, [r0] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + ldr r6, _08006EB0 @ =gUnknown_202063C + adds r3, r0, r6 + mov r7, r10 + adds r0, r5, r7 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r6 + lsls r2, 1 + ldr r0, _08006EB4 @ =gUnknown_2021780 + adds r2, r0 + ldrh r2, [r2] + str r2, [sp] + lsls r1, 1 + adds r1, r0 + ldrh r6, [r1] + ldrb r1, [r3] + ldrb r2, [r4] + adds r0, r1, 0 + cmp r0, 0x9F + ble _08006E26 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006E26: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x9F + ble _08006E34 + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006E34: + ldr r0, [r3] + mov r7, r8 + ands r0, r7 + cmp r0, r8 + bne _08006E58 + ldrb r0, [r3, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006E4A + cmp r0, 0x2 + bne _08006E58 +_08006E4A: + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006E58 + add r0, r9 + lsls r0, 16 + lsrs r1, r0, 16 +_08006E58: + ldr r0, [r4] + mov r3, r8 + ands r0, r3 + cmp r0, r8 + bne _08006E7C + ldrb r0, [r4, 0x1] + lsrs r0, 6 + cmp r0, 0 + beq _08006E6E + cmp r0, 0x2 + bne _08006E7C +_08006E6E: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x80 + ble _08006E7C + add r0, r9 + lsls r0, 16 + lsrs r2, r0, 16 +_08006E7C: + cmp r5, 0 + beq _08006E92 + ldr r7, [sp] + cmp r7, r6 + bhi _08006DD4 + cmp r7, r6 + bne _08006E92 +_08006E8A: + lsls r1, 16 + lsls r0, r2, 16 + cmp r1, r0 + blt _08006DD4 +_08006E92: + mov r1, r12 + lsls r0, r1, 24 + lsrs r0, 24 + mov r12, r0 + cmp r0, 0x3F + bhi _08006EA0 + b _08006D14 +_08006EA0: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08006EB0: .4byte gUnknown_202063C +_08006EB4: .4byte gUnknown_2021780 + thumb_func_end sub_8006CF8 + + thumb_func_start sub_8006EB8 +sub_8006EB8: @ 8006EB8 + push {r4-r6,lr} + movs r4, 0 + ldr r5, _08006EFC @ =gUnknown_30030F0 + ldr r6, _08006F00 @ =gUnknown_2021BCC +_08006EC0: + lsls r2, r4, 2 + lsls r1, r4, 5 + adds r1, r5 + lsls r3, r4, 3 + adds r3, r6 + ldrh r0, [r3] + strh r0, [r1, 0x3E] + adds r0, r2, 0x1 + lsls r0, 3 + adds r0, r5 + ldrh r1, [r3, 0x2] + strh r1, [r0, 0x3E] + adds r0, r2, 0x2 + lsls r0, 3 + adds r0, r5 + ldrh r1, [r3, 0x4] + strh r1, [r0, 0x3E] + adds r2, 0x3 + lsls r2, 3 + adds r2, r5 + ldrh r0, [r3, 0x6] + strh r0, [r2, 0x3E] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08006EC0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08006EFC: .4byte gUnknown_30030F0 +_08006F00: .4byte gUnknown_2021BCC + thumb_func_end sub_8006EB8 + + thumb_func_start sub_8006F04 +sub_8006F04: @ 8006F04 + push {r4-r6,lr} + sub sp, 0x4 + movs r4, 0 + mov r0, sp + strb r4, [r0] +_08006F0E: + ldr r0, _08006F78 @ =gUnknown_2021800 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08006F7C @ =gUnknown_202063C + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0x1 + bne _08006F3A + adds r0, r2, 0 + mov r1, sp + bl sub_8008A64 + lsls r0, 24 + cmp r0, 0 + bne _08006F70 +_08006F3A: + adds r4, 0x1 + cmp r4, 0x3F + ble _08006F0E + mov r0, sp + ldr r4, _08006F80 @ =gUnknown_2021B44 + ldrb r0, [r0] + ldrb r1, [r4] + cmp r0, r1 + bcs _08006F70 + mov r1, sp + ldr r5, _08006F84 @ =gUnknown_3003128 + ldr r0, _08006F88 @ =gUnknown_8231CE4 + ldr r2, [r0] + ldr r3, [r0, 0x4] +_08006F56: + ldrb r0, [r1] + lsls r0, 3 + adds r0, r5 + str r2, [r0] + str r3, [r0, 0x4] + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + ldrb r6, [r4] + cmp r0, r6 + bcc _08006F56 +_08006F70: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08006F78: .4byte gUnknown_2021800 +_08006F7C: .4byte gUnknown_202063C +_08006F80: .4byte gUnknown_2021B44 +_08006F84: .4byte gUnknown_3003128 +_08006F88: .4byte gUnknown_8231CE4 + thumb_func_end sub_8006F04 + + thumb_func_start sub_8006F8C +sub_8006F8C: @ 8006F8C + push {r4-r7,lr} + sub sp, 0x4 + adds r7, r0, 0 + lsls r3, 24 + lsrs r4, r3, 24 + movs r3, 0 + ldr r0, _08006FC8 @ =gUnknown_202063C + mov r12, r0 + lsls r5, r1, 16 + lsls r6, r2, 16 +_08006FA0: + lsls r0, r3, 4 + adds r0, r3 + lsls r0, 2 + add r0, r12 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _08006FCC + str r4, [sp] + adds r0, r3, 0 + adds r1, r7, 0 + asrs r2, r5, 16 + asrs r3, r6, 16 + bl sub_8007094 + lsls r0, 24 + lsrs r0, 24 + b _08006FD8 + .align 2, 0 +_08006FC8: .4byte gUnknown_202063C +_08006FCC: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _08006FA0 + movs r0, 0x40 +_08006FD8: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8006F8C + + thumb_func_start sub_8006FE0 +sub_8006FE0: @ 8006FE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + lsls r3, 24 + lsrs r6, r3, 24 + movs r3, 0x3F + ldr r0, _0800702C @ =gUnknown_202063C + mov r8, r0 + movs r0, 0x1 + negs r0, r0 + mov r12, r0 + lsls r4, r1, 16 + lsls r5, r2, 16 +_08006FFE: + lsls r0, r3, 16 + asrs r1, r0, 16 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _08007030 + lsls r0, r3, 24 + lsrs r0, 24 + str r6, [sp] + adds r1, r7, 0 + asrs r2, r4, 16 + asrs r3, r5, 16 + bl sub_8007094 + lsls r0, 24 + lsrs r0, 24 + b _0800703E + .align 2, 0 +_0800702C: .4byte gUnknown_202063C +_08007030: + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + asrs r0, 16 + cmp r0, r12 + bgt _08006FFE + movs r0, 0x40 +_0800703E: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8006FE0 + + thumb_func_start sub_800704C +sub_800704C: @ 800704C + push {r4-r6,lr} + adds r6, r0, 0 + ldr r0, _08007084 @ =gUnknown_8231D00 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl sub_8006F8C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0800708C + ldr r4, _08007088 @ =gUnknown_202063C + lsls r1, r5, 4 + adds r1, r5 + lsls r1, 2 + adds r2, r1, r4 + adds r2, 0x3E + ldrb r0, [r2] + movs r3, 0x4 + orrs r0, r3 + strb r0, [r2] + adds r4, 0x1C + adds r1, r4 + str r6, [r1] + adds r0, r5, 0 + b _0800708E + .align 2, 0 +_08007084: .4byte gUnknown_8231D00 +_08007088: .4byte gUnknown_202063C +_0800708C: + movs r0, 0x40 +_0800708E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_800704C + + thumb_func_start sub_8007094 +sub_8007094: @ 8007094 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r1 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + lsls r4, 24 + lsrs r4, 24 + lsls r0, 4 + add r0, r10 + lsls r0, 2 + ldr r1, _08007158 @ =gUnknown_202063C + adds r7, r0, r1 + adds r0, r7, 0 + bl sub_80073DC + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x3F + adds r0, r7 + mov r9, r0 + ldrb r0, [r0] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x40 + orrs r0, r1 + mov r1, r9 + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0x43 + strb r4, [r0] + mov r1, r8 + ldr r0, [r1, 0x4] + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r7] + str r1, [r7, 0x4] + mov r1, r8 + ldr r0, [r1, 0x8] + str r0, [r7, 0x8] + ldr r0, [r1, 0x10] + str r0, [r7, 0x10] + str r1, [r7, 0x14] + ldr r0, [r1, 0x14] + str r0, [r7, 0x1C] + strh r5, [r7, 0x20] + strh r6, [r7, 0x22] + ldrb r3, [r7, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r7, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r7, 0 + bl sub_80073F0 + mov r0, r8 + ldrh r1, [r0] + ldr r4, _0800715C @ =0xffff0000 + lsrs r0, r4, 16 + cmp r1, r0 + bne _08007190 + mov r1, r8 + ldr r0, [r1, 0xC] + str r0, [r7, 0xC] + ldrh r0, [r0, 0x4] + lsrs r0, 5 + lsls r0, 24 + lsrs r0, 24 + bl sub_8007434 + lsls r0, 16 + lsrs r2, r0, 16 + asrs r0, 16 + asrs r1, r4, 16 + cmp r0, r1 + bne _08007160 + adds r0, r7, 0 + bl sub_80073DC + movs r0, 0x40 + b _080071D8 + .align 2, 0 +_08007158: .4byte gUnknown_202063C +_0800715C: .4byte 0xffff0000 +_08007160: + ldr r1, _08007188 @ =0x000003ff + adds r0, r1, 0 + ands r2, r0 + ldrh r1, [r7, 0x4] + ldr r0, _0800718C @ =0xfffffc00 + ands r0, r1 + orrs r0, r2 + strh r0, [r7, 0x4] + mov r0, r9 + ldrb r1, [r0] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + mov r1, r9 + strb r0, [r1] + adds r1, r7, 0 + adds r1, 0x40 + movs r0, 0 + strh r0, [r1] + b _080071A4 + .align 2, 0 +_08007188: .4byte 0x000003ff +_0800718C: .4byte 0xfffffc00 +_08007190: + mov r1, r8 + ldrh r0, [r1] + bl sub_8008804 + adds r1, r7, 0 + adds r1, 0x40 + strh r0, [r1] + adds r0, r7, 0 + bl sub_8008508 +_080071A4: + ldrb r0, [r7, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080071B8 + adds r0, r7, 0 + bl sub_800860C +_080071B8: + mov r0, r8 + ldrh r1, [r0, 0x2] + ldr r0, _080071E8 @ =0x0000ffff + cmp r1, r0 + beq _080071D6 + mov r1, r8 + ldrh r0, [r1, 0x2] + bl sub_80089E8 + lsls r0, 4 + ldrb r2, [r7, 0x5] + movs r1, 0xF + ands r1, r2 + orrs r1, r0 + strb r1, [r7, 0x5] +_080071D6: + mov r0, r10 +_080071D8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080071E8: .4byte 0x0000ffff + thumb_func_end sub_8007094 + + thumb_func_start sub_80071EC +sub_80071EC: @ 80071EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + lsls r3, 24 + lsrs r3, 24 + mov r9, r3 + movs r3, 0 + ldr r5, _0800725C @ =gUnknown_202063C + lsls r1, 16 + mov r12, r1 + lsls r2, 16 + mov r8, r2 +_0800720C: + lsls r0, r3, 4 + adds r0, r3 + lsls r6, r0, 2 + adds r4, r6, r5 + adds r7, r4, 0 + adds r7, 0x3E + ldrb r0, [r7] + lsls r0, 31 + cmp r0, 0 + bne _08007264 + mov r0, r9 + str r0, [sp] + adds r0, r3, 0 + mov r1, r10 + mov r3, r12 + asrs r2, r3, 16 + mov r5, r8 + asrs r3, r5, 16 + bl sub_8007094 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + cmp r5, 0x40 + beq _0800726E + ldr r1, _08007260 @ =gUnknown_2020658 + adds r0, r6, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + ldrb r0, [r7] + lsls r0, 31 + cmp r0, 0 + beq _08007258 + adds r0, r4, 0 + bl sub_8007824 +_08007258: + adds r0, r5, 0 + b _08007270 + .align 2, 0 +_0800725C: .4byte gUnknown_202063C +_08007260: .4byte gUnknown_2020658 +_08007264: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _0800720C +_0800726E: + movs r0, 0x40 +_08007270: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80071EC + + thumb_func_start sub_8007280 +sub_8007280: @ 8007280 + push {r4-r7,lr} + adds r5, r0, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080072DC + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080072D6 + ldr r0, [r5, 0xC] + ldrh r2, [r0, 0x4] + lsrs r2, 5 + ldrh r0, [r5, 0x4] + lsls r0, 22 + lsrs r1, r0, 22 + adds r4, r1, r2 + adds r3, r1, 0 + cmp r3, r4 + bcs _080072D6 + ldr r0, _080072E4 @ =gUnknown_2021B48 + mov r12, r0 + movs r6, 0x7 + movs r7, 0x1 +_080072BA: + lsrs r2, r3, 3 + add r2, r12 + adds r0, r3, 0 + ands r0, r6 + adds r1, r7, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bcc _080072BA +_080072D6: + adds r0, r5, 0 + bl sub_80073DC +_080072DC: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080072E4: .4byte gUnknown_2021B48 + thumb_func_end sub_8007280 + + thumb_func_start sub_80072E8 +sub_80072E8: @ 80072E8 + push {r4-r6,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + lsrs r3, r0, 24 + cmp r3, r4 + bcs _08007310 + ldr r6, _08007318 @ =gUnknown_3003128 + ldr r5, _0800731C @ =gUnknown_8231CE4 +_080072FA: + lsls r0, r3, 3 + adds r0, r6 + ldr r1, [r5] + ldr r2, [r5, 0x4] + str r1, [r0] + str r2, [r0, 0x4] + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r4 + bcc _080072FA +_08007310: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007318: .4byte gUnknown_3003128 +_0800731C: .4byte gUnknown_8231CE4 + thumb_func_end sub_80072E8 + + thumb_func_start sub_8007320 +sub_8007320: @ 8007320 + push {lr} + ldr r2, _08007344 @ =gUnknown_30030F0 + ldr r1, _08007348 @ =0x00000439 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007340 + adds r0, r2, 0 + adds r0, 0x38 + movs r1, 0xE0 + lsls r1, 19 + ldr r2, _0800734C @ =0x04000100 + bl CpuSet +_08007340: + pop {r0} + bx r0 + .align 2, 0 +_08007344: .4byte gUnknown_30030F0 +_08007348: .4byte 0x00000439 +_0800734C: .4byte 0x04000100 + thumb_func_end sub_8007320 + + thumb_func_start sub_8007350 +sub_8007350: @ 8007350 + push {r4,r5,lr} + ldr r0, _08007384 @ =gUnknown_2021840 + movs r1, 0 + strb r1, [r0] + ldr r0, _08007388 @ =gUnknown_2021841 + strb r1, [r0] + movs r2, 0 + ldr r4, _0800738C @ =gUnknown_2021844 + movs r3, 0 + adds r5, r4, 0x4 +_08007364: + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r4 + str r3, [r1] + adds r0, r5 + str r3, [r0] + strh r3, [r1, 0x8] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _08007364 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007384: .4byte gUnknown_2021840 +_08007388: .4byte gUnknown_2021841 +_0800738C: .4byte gUnknown_2021844 + thumb_func_end sub_8007350 + + thumb_func_start sub_8007390 +sub_8007390: @ 8007390 + push {r4,lr} + movs r1, 0 + ldr r4, _080073B8 @ =gUnknown_2021BCC + movs r3, 0 + movs r2, 0x80 + lsls r2, 1 +_0800739C: + lsls r0, r1, 3 + adds r0, r4 + strh r2, [r0] + strh r3, [r0, 0x2] + strh r3, [r0, 0x4] + strh r2, [r0, 0x6] + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _0800739C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080073B8: .4byte gUnknown_2021BCC + thumb_func_end sub_8007390 + + thumb_func_start sub_80073BC +sub_80073BC: @ 80073BC + push {r4,r5,lr} + ldr r5, [sp, 0xC] + lsls r0, 24 + ldr r4, _080073D8 @ =gUnknown_2021BCC + lsrs r0, 21 + adds r0, r4 + strh r1, [r0] + strh r2, [r0, 0x2] + strh r3, [r0, 0x4] + strh r5, [r0, 0x6] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080073D8: .4byte gUnknown_2021BCC + thumb_func_end sub_80073BC + + thumb_func_start sub_80073DC +sub_80073DC: @ 80073DC + push {lr} + ldr r1, _080073EC @ =gUnknown_8231CA0 + movs r2, 0x44 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_080073EC: .4byte gUnknown_8231CA0 + thumb_func_end sub_80073DC + + thumb_func_start sub_80073F0 +sub_80073F0: @ 80073F0 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsls r2, 24 + lsls r3, 24 + lsrs r3, 24 + ldr r4, _08007430 @ =gUnknown_8231C85 + lsrs r2, 23 + lsrs r1, 21 + adds r2, r1 + adds r0, r2, r4 + ldrb r5, [r0] + adds r4, 0x1 + adds r2, r4 + ldrb r1, [r2] + movs r0, 0x2 + ands r3, r0 + cmp r3, 0 + beq _0800741E + lsls r0, r5, 25 + lsrs r5, r0, 24 + lsls r0, r1, 25 + lsrs r1, r0, 24 +_0800741E: + adds r0, r6, 0 + adds r0, 0x28 + strb r5, [r0] + adds r0, 0x1 + strb r1, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007430: .4byte gUnknown_8231C85 + thumb_func_end sub_80073F0 + + thumb_func_start sub_8007434 +sub_8007434: @ 8007434 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 16 + lsrs r4, r0, 16 + cmp r4, 0 + bne _0800748A + ldr r0, _08007478 @ =gUnknown_2021B46 + ldrh r3, [r0] + ldr r0, _0800747C @ =0x000003ff + cmp r3, r0 + bhi _08007472 + ldr r7, _08007480 @ =gUnknown_2021B48 + movs r6, 0x7 + adds r4, r0, 0 + movs r5, 0x1 +_08007456: + lsrs r2, r3, 3 + adds r2, r7 + adds r0, r3, 0 + ands r0, r6 + adds r1, r5, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + bls _08007456 +_08007472: + movs r0, 0 + b _0800753C + .align 2, 0 +_08007478: .4byte gUnknown_2021B46 +_0800747C: .4byte 0x000003ff +_08007480: .4byte gUnknown_2021B48 +_08007484: + movs r0, 0x1 + negs r0, r0 + b _0800753C +_0800748A: + ldr r0, _08007548 @ =gUnknown_2021B46 + ldrh r3, [r0] + ldr r0, _0800754C @ =gUnknown_2021B48 + mov r9, r0 + movs r7, 0x7 + movs r6, 0x1 +_08007496: + lsrs r0, r3, 3 + add r0, r9 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, 0 + beq _080074CA + movs r5, 0x80 + lsls r5, 3 + ldr r2, _0800754C @ =gUnknown_2021B48 +_080074AE: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r5 + beq _08007484 + lsrs r0, 19 + adds r0, r2 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, 0 + bne _080074AE +_080074CA: + mov r8, r3 + movs r2, 0x1 + cmp r2, r4 + beq _08007504 + movs r1, 0x80 + lsls r1, 3 + mov r12, r1 + ldr r5, _0800754C @ =gUnknown_2021B48 +_080074DA: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r12 + beq _08007484 + lsrs r0, 19 + adds r0, r5 + ldrb r1, [r0] + adds r0, r3, 0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, 0 + bne _08007500 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, r4 + bne _080074DA +_08007500: + cmp r2, r4 + bne _08007496 +_08007504: + mov r1, r8 + lsls r0, r1, 16 + lsrs r3, r0, 16 + asrs r1, r0, 16 + adds r1, r4, r1 + adds r6, r0, 0 + cmp r3, r1 + bge _0800753A + ldr r0, _0800754C @ =gUnknown_2021B48 + mov r8, r0 + movs r7, 0x7 + adds r4, r1, 0 + movs r5, 0x1 +_0800751E: + lsrs r2, r3, 3 + add r2, r8 + adds r1, r3, 0 + ands r1, r7 + adds r0, r5, 0 + lsls r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + blt _0800751E +_0800753A: + asrs r0, r6, 16 +_0800753C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08007548: .4byte gUnknown_2021B46 +_0800754C: .4byte gUnknown_2021B48 + thumb_func_end sub_8007434 + + thumb_func_start sub_8007550 +sub_8007550: @ 8007550 + push {r4-r6,lr} + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 24 + lsrs r1, 24 + lsrs r0, 19 + lsls r0, 24 + lsrs r3, r0, 24 + adds r6, r3, 0 + movs r0, 0x7 + ands r2, r0 + adds r4, r2, 0 + movs r5, 0 + cmp r1, 0 + bne _08007588 + movs r0, 0x1 + lsls r0, r2 + mvns r0, r0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08007584 @ =gUnknown_2021B48 + adds r0, r3, r0 + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _080075B4 + .align 2, 0 +_08007584: .4byte gUnknown_2021B48 +_08007588: + cmp r1, 0x1 + bne _080075A4 + lsls r1, r2 + lsls r0, r1, 24 + lsrs r2, r0, 24 + ldr r0, _080075A0 @ =gUnknown_2021B48 + adds r0, r3, r0 + ldrb r1, [r0] + orrs r2, r1 + strb r2, [r0] + b _080075B4 + .align 2, 0 +_080075A0: .4byte gUnknown_2021B48 +_080075A4: + movs r0, 0x80 + lsls r0, 17 + lsls r0, r4 + lsrs r5, r0, 24 + ldr r0, _080075BC @ =gUnknown_2021B48 + adds r0, r6, r0 + ldrb r0, [r0] + ands r5, r0 +_080075B4: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080075BC: .4byte gUnknown_2021B48 + thumb_func_end sub_8007550 + + thumb_func_start sub_80075C0 +sub_80075C0: @ 80075C0 + push {r4-r7,lr} + adds r3, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _08007602 + ldr r0, [r3, 0xC] + ldrh r2, [r0, 0x4] + lsrs r2, 5 + ldrh r0, [r3, 0x4] + lsls r0, 22 + lsrs r1, r0, 22 + adds r4, r2, r1 + adds r3, r1, 0 + cmp r3, r4 + bge _08007602 + ldr r7, _08007608 @ =gUnknown_2021B48 + movs r5, 0x7 + movs r6, 0x1 +_080075EA: + asrs r2, r3, 3 + adds r2, r7 + adds r0, r3, 0 + ands r0, r5 + adds r1, r6, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r3, 0x1 + cmp r3, r4 + blt _080075EA +_08007602: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007608: .4byte gUnknown_2021B48 + thumb_func_end sub_80075C0 + + thumb_func_start nullsub_8 +nullsub_8: @ 800760C + bx lr + thumb_func_end nullsub_8 + + thumb_func_start sub_8007610 +sub_8007610: @ 8007610 + push {r4-r7,lr} + ldr r0, _08007660 @ =gUnknown_2021840 + ldrb r0, [r0] + cmp r0, 0 + beq _08007658 + movs r4, 0 + ldr r1, _08007664 @ =gUnknown_2021841 + ldrb r0, [r1] + cmp r0, 0 + beq _08007652 + ldr r6, _08007668 @ =gUnknown_2021844 + adds r7, r6, 0x4 + adds r5, r1, 0 +_0800762A: + lsls r1, r4, 1 + adds r1, r4 + lsls r1, 2 + adds r2, r1, r6 + ldr r0, [r2] + adds r1, r7 + ldr r1, [r1] + ldrh r2, [r2, 0x8] + lsrs r2, 1 + bl CpuSet + ldrb r1, [r5] + subs r1, 0x1 + strb r1, [r5] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + cmp r1, 0 + bne _0800762A +_08007652: + ldr r1, _08007660 @ =gUnknown_2021840 + movs r0, 0 + strb r0, [r1] +_08007658: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007660: .4byte gUnknown_2021840 +_08007664: .4byte gUnknown_2021841 +_08007668: .4byte gUnknown_2021844 + thumb_func_end sub_8007610 + + thumb_func_start sub_800766C +sub_800766C: @ 800766C + push {r4-r6,lr} + adds r5, r2, 0 + lsls r0, 16 + lsrs r2, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r4, _080076C4 @ =gUnknown_2021841 + ldrb r0, [r4] + cmp r0, 0x3F + bhi _080076BC + ldr r3, _080076C8 @ =gUnknown_2021844 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + lsls r2, 3 + adds r2, r5 + ldr r1, [r2] + str r1, [r0] + ldrb r0, [r4] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r0, r3, 0x4 + adds r1, r0 + lsls r0, r6, 5 + ldr r5, _080076CC @ =0x06010000 + adds r0, r5 + str r0, [r1] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r2, 0x4] + strh r1, [r0, 0x8] + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] +_080076BC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080076C4: .4byte gUnknown_2021841 +_080076C8: .4byte gUnknown_2021844 +_080076CC: .4byte 0x06010000 + thumb_func_end sub_800766C + + thumb_func_start sub_80076D0 +sub_80076D0: @ 80076D0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 16 + lsrs r6, r2, 16 + ldr r3, _08007718 @ =gUnknown_2021841 + ldrb r0, [r3] + cmp r0, 0x3F + bhi _08007710 + ldr r2, _0800771C @ =gUnknown_2021844 + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + str r4, [r0] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0x4 + adds r0, r1 + str r5, [r0] + ldrb r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x8] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] +_08007710: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007718: .4byte gUnknown_2021841 +_0800771C: .4byte gUnknown_2021844 + thumb_func_end sub_80076D0 + + thumb_func_start sub_8007720 +sub_8007720: @ 8007720 + push {r4,lr} + adds r1, r0, 0 + ldr r3, _08007740 @ =gUnknown_202063C + movs r2, 0 + ldr r4, _08007744 @ =0x000010ff +_0800772A: + ldrb r0, [r3] + strb r0, [r1] + adds r1, 0x1 + adds r3, 0x1 + adds r2, 0x1 + cmp r2, r4 + bls _0800772A + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007740: .4byte gUnknown_202063C +_08007744: .4byte 0x000010ff + thumb_func_end sub_8007720 + + thumb_func_start sub_8007748 +sub_8007748: @ 8007748 + push {r4,lr} + adds r1, r0, 0 + ldr r3, _08007768 @ =gUnknown_202063C + movs r2, 0 + ldr r4, _0800776C @ =0x000010ff +_08007752: + ldrb r0, [r1] + strb r0, [r3] + adds r1, 0x1 + adds r3, 0x1 + adds r2, 0x1 + cmp r2, r4 + bls _08007752 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007768: .4byte gUnknown_202063C +_0800776C: .4byte 0x000010ff + thumb_func_end sub_8007748 + + thumb_func_start sub_8007770 +sub_8007770: @ 8007770 + push {r4,r5,lr} + movs r4, 0 +_08007774: + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + ldr r5, _080077A4 @ =gUnknown_202063C + adds r0, r5 + bl sub_80073DC + ldr r0, _080077A8 @ =gUnknown_2021800 + adds r0, r4, r0 + strb r4, [r0] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3F + bls _08007774 + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + bl sub_80073DC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080077A4: .4byte gUnknown_202063C +_080077A8: .4byte gUnknown_2021800 + thumb_func_end sub_8007770 + + thumb_func_start sub_80077AC +sub_80077AC: @ 80077AC + push {lr} + ldr r2, [r0, 0x14] + ldrh r1, [r2] + ldr r0, _080077C4 @ =0x0000ffff + cmp r1, r0 + beq _080077BE + adds r0, r1, 0 + bl sub_800874C +_080077BE: + pop {r0} + bx r0 + .align 2, 0 +_080077C4: .4byte 0x0000ffff + thumb_func_end sub_80077AC + + thumb_func_start sub_80077C8 +sub_80077C8: @ 80077C8 + push {lr} + ldr r0, [r0, 0x14] + ldrh r0, [r0, 0x2] + bl sub_8008A30 + pop {r0} + bx r0 + thumb_func_end sub_80077C8 + + thumb_func_start sub_80077D8 +sub_80077D8: @ 80077D8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080077FE + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl sub_80085CC + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] +_080077FE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80077D8 + + thumb_func_start sub_8007804 +sub_8007804: @ 8007804 + push {r4,lr} + adds r4, r0, 0 + bl sub_80077AC + adds r0, r4, 0 + bl sub_80077C8 + adds r0, r4, 0 + bl sub_80077D8 + adds r0, r4, 0 + bl sub_8007280 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8007804 + + thumb_func_start sub_8007824 +sub_8007824: @ 8007824 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r2, _08007860 @ =gUnknown_8231D18 + adds r5, r4, 0 + adds r5, 0x3F + ldrb r1, [r5] + movs r0, 0x4 + ands r0, r1 + adds r0, r2 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + ldr r0, _08007864 @ =gUnknown_2021CCC + ldrb r0, [r0] + cmp r0, 0 + bne _0800785A + ldr r0, _08007868 @ =gUnknown_8231D20 + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 31 + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl _call_via_r1 +_0800785A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007860: .4byte gUnknown_8231D18 +_08007864: .4byte gUnknown_2021CCC +_08007868: .4byte gUnknown_8231D20 + thumb_func_end sub_8007824 + + thumb_func_start sub_800786C +sub_800786C: @ 800786C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x2B + movs r2, 0 + strb r2, [r3] + adds r5, r4, 0 + adds r5, 0x3F + ldrb r1, [r5] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r5] + adds r0, r4, 0 + adds r0, 0x2D + strb r2, [r0] + adds r2, r4, 0 + adds r2, 0x2A + ldrb r1, [r2] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r0, [r0] + mov r9, r0 + lsls r0, 16 + mov r8, r0 + asrs r1, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08007950 + ldrb r1, [r5] + subs r0, 0x4 + ands r0, r1 + strb r0, [r5] + ldrb r1, [r2] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r1, r0, 10 + lsrs r3, r1, 26 + lsls r1, r0, 9 + lsrs r7, r1, 31 + lsls r0, 8 + lsrs r6, r0, 31 + cmp r3, 0 + beq _080078E8 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_080078E8: + adds r2, r4, 0 + adds r2, 0x2C + movs r0, 0x3F + ands r3, r0 + ldrb r1, [r2] + subs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007912 + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_80080D4 +_08007912: + ldrb r1, [r5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08007940 + adds r0, r4, 0 + adds r0, 0x40 + ldrh r1, [r0] + add r1, r9 + ldr r2, _08007938 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _0800793C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + b _08007950 + .align 2, 0 +_08007938: .4byte 0x000003ff +_0800793C: .4byte 0xfffffc00 +_08007940: + mov r1, r8 + lsrs r0, r1, 16 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldr r2, [r4, 0xC] + bl sub_800766C +_08007950: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800786C + + thumb_func_start sub_800795C +sub_800795C: @ 800795C + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r0, 0x3F + ands r0, r1 + cmp r0, 0 + beq _080079AC + adds r0, r4, 0 + bl sub_80081D8 + adds r0, r4, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r1, r0, 9 + lsrs r3, r1, 31 + lsls r0, 8 + lsrs r2, r0, 31 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080079F2 + adds r0, r4, 0 + adds r1, r3, 0 + bl sub_80080D4 + b _080079F2 +_080079AC: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080079F2 + adds r2, r4, 0 + adds r2, 0x2B + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + movs r2, 0x3 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + bge _080079E2 + adds r0, 0x3 + lsls r0, 16 + lsrs r2, r0, 16 +_080079E2: + ldr r0, _080079F8 @ =gUnknown_8231D28 + lsls r1, r2, 16 + asrs r1, 14 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl _call_via_r1 +_080079F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080079F8: .4byte gUnknown_8231D28 + thumb_func_end sub_800795C + + thumb_func_start sub_80079FC +sub_80079FC: @ 80079FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r7, [r0] + mov r8, r7 + ldr r0, [r0] + lsls r1, r0, 10 + lsrs r3, r1, 26 + lsls r1, r0, 9 + lsrs r6, r1, 31 + lsls r0, 8 + lsrs r5, r0, 31 + cmp r3, 0 + beq _08007A36 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_08007A36: + adds r2, r4, 0 + adds r2, 0x2C + movs r0, 0x3F + ands r3, r0 + ldrb r1, [r2] + subs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007A60 + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80080D4 +_08007A60: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08007A90 + adds r0, r4, 0 + adds r0, 0x40 + ldrh r1, [r0] + adds r1, r7 + ldr r2, _08007A88 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _08007A8C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + b _08007A9E + .align 2, 0 +_08007A88: .4byte 0x000003ff +_08007A8C: .4byte 0xfffffc00 +_08007A90: + mov r0, r8 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldr r2, [r4, 0xC] + bl sub_800766C +_08007A9E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80079FC + + thumb_func_start sub_8007AA8 +sub_8007AA8: @ 8007AA8 + adds r2, r0, 0 + adds r2, 0x2B + ldrb r1, [r2] + subs r1, 0x1 + strb r1, [r2] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x10 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8007AA8 + + thumb_func_start sub_8007AC0 +sub_8007AC0: @ 8007AC0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + adds r3, r4, 0 + adds r3, 0x2A + ldrb r1, [r3] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r2, r4, 0 + adds r2, 0x2B + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + strb r0, [r2] + ldrb r0, [r3] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldrh r7, [r1] + mov r8, r7 + ldr r0, [r1] + lsls r1, r0, 10 + lsrs r3, r1, 26 + lsls r1, r0, 9 + lsrs r6, r1, 31 + lsls r0, 8 + lsrs r5, r0, 31 + cmp r3, 0 + beq _08007B14 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 +_08007B14: + adds r2, r4, 0 + adds r2, 0x2C + movs r0, 0x3F + ands r3, r0 + ldrb r1, [r2] + subs r0, 0x7F + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08007B3E + adds r0, r4, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl sub_80080D4 +_08007B3E: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08007B70 + adds r0, r4, 0 + adds r0, 0x40 + ldrh r1, [r0] + adds r1, r7 + ldr r2, _08007B68 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r4, 0x4] + ldr r0, _08007B6C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, 0x4] + b _08007B7E + .align 2, 0 +_08007B68: .4byte 0x000003ff +_08007B6C: .4byte 0xfffffc00 +_08007B70: + mov r0, r8 + ldrh r1, [r4, 0x4] + lsls r1, 22 + lsrs r1, 22 + ldr r2, [r4, 0xC] + bl sub_800766C +_08007B7E: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8007AC0 + + thumb_func_start sub_8007B88 +sub_8007B88: @ 8007B88 + push {lr} + adds r1, r0, 0 + adds r0, 0x2D + ldrb r0, [r0] + cmp r0, 0 + beq _08007B9C + adds r0, r1, 0 + bl sub_8007BE0 + b _08007BA2 +_08007B9C: + adds r0, r1, 0 + bl sub_8007BA8 +_08007BA2: + pop {r0} + bx r0 + thumb_func_end sub_8007B88 + + thumb_func_start sub_8007BA8 +sub_8007BA8: @ 8007BA8 + push {r4,lr} + adds r4, r0, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r4, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 10 + lsrs r0, 26 + adds r1, r4, 0 + adds r1, 0x2D + strb r0, [r1] + adds r0, r4, 0 + bl sub_8007C00 + adds r0, r4, 0 + bl sub_800795C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8007BA8 + + thumb_func_start sub_8007BE0 +sub_8007BE0: @ 8007BE0 + push {r4,lr} + adds r4, r0, 0 + adds r1, r4, 0 + adds r1, 0x2D + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + adds r0, r4, 0 + bl sub_8007C00 + adds r0, r4, 0 + bl sub_800795C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8007BE0 + + thumb_func_start sub_8007C00 +sub_8007C00: @ 8007C00 + push {r4-r7,lr} + mov r12, r0 + adds r0, 0x2D + ldrb r0, [r0] + cmp r0, 0 + beq _08007C6C + mov r3, r12 + adds r3, 0x2B + ldrb r0, [r3] + subs r0, 0x1 + strb r0, [r3] + mov r5, r12 + adds r5, 0x2A + ldrb r1, [r5] + mov r2, r12 + ldr r0, [r2, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + subs r0, 0x4 + movs r7, 0 + ldrsh r0, [r0, r7] + movs r1, 0x3 + negs r1, r1 + adds r4, r3, 0 + cmp r0, r1 + beq _08007C66 + adds r6, r1, 0 + adds r2, r4, 0 +_08007C40: + ldrb r0, [r2] + cmp r0, 0 + beq _08007C66 + subs r0, 0x1 + strb r0, [r3] + ldrb r1, [r5] + mov r7, r12 + ldr r0, [r7, 0x8] + lsls r1, 2 + adds r1, r0 + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + subs r0, 0x4 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, r6 + bne _08007C40 +_08007C66: + ldrb r0, [r4] + subs r0, 0x1 + strb r0, [r4] +_08007C6C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8007C00 + + thumb_func_start sub_8007C74 +sub_8007C74: @ 8007C74 + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r0, 0 + ldrb r0, [r6, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08007CF6 + ldr r0, [r6, 0x10] + ldr r0, [r0] + movs r2, 0 + ldrsh r1, [r0, r2] + ldr r0, _08007D00 @ =0x00007fff + cmp r1, r0 + beq _08007CF6 + adds r0, r6, 0 + bl sub_8007FDC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8008148 + mov r5, sp + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + bl sub_80082E0 + adds r7, r6, 0 + adds r7, 0x3F + ldrb r1, [r7] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r7] + adds r0, r4, 0 + mov r1, sp + bl sub_800834C + ldr r1, _08007D04 @ =gUnknown_3000C68 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r5, 0x5] + strb r1, [r0, 0x2] + ldrb r1, [r7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08007CF6 + movs r0, 0x3A + ldrsh r1, [r6, r0] + movs r0, 0x3C + ldrsh r2, [r6, r0] + adds r0, r6, 0 + bl sub_8008038 +_08007CF6: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007D00: .4byte 0x00007fff +_08007D04: .4byte gUnknown_3000C68 + thumb_func_end sub_8007C74 + + thumb_func_start sub_8007D08 +sub_8007D08: @ 8007D08 + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08007DAA + adds r0, r4, 0 + bl sub_8007FDC + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + ldr r1, _08007D40 @ =gUnknown_3000C68 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x2] + cmp r0, 0 + beq _08007D44 + adds r0, r2, 0 + adds r1, r4, 0 + bl sub_8007DBC + b _08007D8E + .align 2, 0 +_08007D40: .4byte gUnknown_3000C68 +_08007D44: + adds r0, r4, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08007DAA + ldrb r0, [r3, 0x1] + adds r0, 0x1 + strb r0, [r3, 0x1] + ldrb r0, [r3] + ldr r1, [r4, 0x10] + lsls r0, 2 + adds r0, r1 + ldrb r1, [r3, 0x1] + ldr r0, [r0] + lsls r1, 3 + adds r1, r0 + movs r2, 0x3 + movs r0, 0 + ldrsh r1, [r1, r0] + ldr r0, _08007DB0 @ =0x00007ffc + cmp r1, r0 + ble _08007D7C + ldr r2, _08007DB4 @ =0xffff8003 + adds r0, r1, r2 + lsls r0, 16 + lsrs r2, r0, 16 +_08007D7C: + ldr r0, _08007DB8 @ =gUnknown_8231D38 + lsls r1, r2, 16 + asrs r1, 14 + adds r1, r0 + ldr r2, [r1] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r2 +_08007D8E: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08007DAA + movs r0, 0x3A + ldrsh r1, [r4, r0] + movs r0, 0x3C + ldrsh r2, [r4, r0] + adds r0, r4, 0 + bl sub_8008038 +_08007DAA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007DB0: .4byte 0x00007ffc +_08007DB4: .4byte 0xffff8003 +_08007DB8: .4byte gUnknown_8231D38 + thumb_func_end sub_8007D08 + + thumb_func_start sub_8007DBC +sub_8007DBC: @ 8007DBC + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8008200 + lsls r0, 24 + cmp r0, 0 + bne _08007DE6 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_80082E0 + adds r0, r4, 0 + mov r1, sp + bl sub_8008230 +_08007DE6: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8007DBC + + thumb_func_start sub_8007DF0 +sub_8007DF0: @ 8007DF0 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _08007E14 @ =gUnknown_3000C68 + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _08007E18 + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8007E60 + b _08007E20 + .align 2, 0 +_08007E14: .4byte gUnknown_3000C68 +_08007E18: + adds r0, r2, 0 + adds r1, r3, 0 + bl sub_8007E24 +_08007E20: + pop {r0} + bx r0 + thumb_func_end sub_8007DF0 + + thumb_func_start sub_8007E24 +sub_8007E24: @ 8007E24 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08007E5C @ =gUnknown_3000C68 + lsls r3, r0, 1 + adds r3, r0 + lsls r3, 2 + adds r3, r1 + ldrb r2, [r3] + ldr r1, [r4, 0x10] + lsls r2, 2 + adds r2, r1 + ldrb r1, [r3, 0x1] + ldr r2, [r2] + lsls r1, 3 + adds r1, r2 + ldrh r1, [r1, 0x2] + strb r1, [r3, 0x3] + adds r1, r4, 0 + bl sub_8007E90 + adds r0, r4, 0 + bl sub_8007D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007E5C: .4byte gUnknown_3000C68 + thumb_func_end sub_8007E24 + + thumb_func_start sub_8007E60 +sub_8007E60: @ 8007E60 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08007E8C @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x3] + subs r2, 0x1 + strb r2, [r1, 0x3] + adds r1, r4, 0 + bl sub_8007E90 + adds r0, r4, 0 + bl sub_8007D08 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007E8C: .4byte gUnknown_3000C68 + thumb_func_end sub_8007E60 + + thumb_func_start sub_8007E90 +sub_8007E90: @ 8007E90 + push {r4-r7,lr} + mov r12, r1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _08007EB4 @ =gUnknown_3000C68 + lsls r3, r5, 1 + adds r0, r3, r5 + lsls r0, 2 + adds r2, r0, r1 + ldrb r0, [r2, 0x3] + adds r6, r1, 0 + cmp r0, 0 + beq _08007EF0 + ldrb r0, [r2, 0x1] + subs r0, 0x1 + strb r0, [r2, 0x1] + adds r4, r3, 0 + b _08007EC0 + .align 2, 0 +_08007EB4: .4byte gUnknown_3000C68 +_08007EB8: + cmp r2, 0 + beq _08007EE4 + subs r0, r2, 0x1 + strb r0, [r3, 0x1] +_08007EC0: + adds r0, r4, r5 + lsls r0, 2 + adds r3, r0, r6 + ldrb r0, [r3] + mov r2, r12 + ldr r1, [r2, 0x10] + lsls r0, 2 + adds r0, r1 + ldrb r2, [r3, 0x1] + ldr r1, [r0] + lsls r0, r2, 3 + adds r0, r1 + subs r0, 0x8 + movs r7, 0 + ldrsh r1, [r0, r7] + ldr r0, _08007EF8 @ =0x00007ffd + cmp r1, r0 + bne _08007EB8 +_08007EE4: + adds r1, r4, r5 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1, 0x1] + subs r0, 0x1 + strb r0, [r1, 0x1] +_08007EF0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08007EF8: .4byte 0x00007ffd + thumb_func_end sub_8007E90 + + thumb_func_start sub_8007EFC +sub_8007EFC: @ 8007EFC + push {r4-r6,lr} + sub sp, 0x8 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _08007F44 @ =gUnknown_3000C68 + lsls r4, r5, 1 + adds r4, r5 + lsls r4, 2 + adds r4, r0 + ldrb r2, [r4] + ldr r0, [r1, 0x10] + lsls r2, 2 + adds r2, r0 + ldrb r0, [r4, 0x1] + ldr r2, [r2] + lsls r0, 3 + adds r0, r2 + ldrh r0, [r0, 0x2] + strb r0, [r4, 0x1] + mov r6, sp + adds r0, r5, 0 + mov r2, sp + bl sub_80082E0 + adds r0, r5, 0 + mov r1, sp + bl sub_800834C + ldrb r0, [r6, 0x5] + strb r0, [r4, 0x2] + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08007F44: .4byte gUnknown_3000C68 + thumb_func_end sub_8007EFC + + thumb_func_start sub_8007F48 +sub_8007F48: @ 8007F48 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + movs r2, 0 + movs r3, 0 + str r2, [sp] + str r3, [sp, 0x4] + adds r1, 0x3F + ldrb r2, [r1] + movs r3, 0x20 + orrs r2, r3 + strb r2, [r1] + ldr r2, _08007F80 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1, 0x1] + subs r2, 0x1 + strb r2, [r1, 0x1] + mov r1, sp + bl sub_8008230 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_08007F80: .4byte gUnknown_3000C68 + thumb_func_end sub_8007F48 + + thumb_func_start sub_8007F84 +sub_8007F84: @ 8007F84 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + mov r5, sp + adds r0, r4, 0 + mov r2, sp + bl sub_80082E0 + adds r0, r4, 0 + mov r1, sp + bl sub_800834C + ldr r1, _08007FB8 @ =gUnknown_3000C68 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r5, 0x5] + strb r1, [r0, 0x2] + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08007FB8: .4byte gUnknown_3000C68 + thumb_func_end sub_8007F84 + + thumb_func_start sub_8007FBC +sub_8007FBC: @ 8007FBC + lsls r0, 24 + ldr r2, _08007FD8 @ =gUnknown_2021BCC + lsrs r0, 21 + adds r0, r2 + ldrh r2, [r1] + strh r2, [r0] + ldrh r2, [r1, 0x2] + strh r2, [r0, 0x2] + ldrh r2, [r1, 0x4] + strh r2, [r0, 0x4] + ldrh r1, [r1, 0x6] + strh r1, [r0, 0x6] + bx lr + .align 2, 0 +_08007FD8: .4byte gUnknown_2021BCC + thumb_func_end sub_8007FBC + + thumb_func_start sub_8007FDC +sub_8007FDC: @ 8007FDC + push {lr} + adds r2, r0, 0 + movs r3, 0 + ldrb r0, [r2, 0x1] + lsls r0, 30 + lsrs r0, 30 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08007FF6 + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r3, r0, 27 +_08007FF6: + adds r0, r3, 0 + pop {r1} + bx r1 + thumb_func_end sub_8007FDC + + thumb_func_start sub_8007FFC +sub_8007FFC: @ 8007FFC + strh r1, [r0, 0x3A] + strh r2, [r0, 0x3C] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8007FFC + + thumb_func_start sub_800800C +sub_800800C: @ 800800C + push {r4,r5,lr} + adds r3, r0, 0 + adds r5, r2, 0 + subs r0, r1, r3 + cmp r0, 0 + bge _0800801E + negs r0, r0 + asrs r4, r0, 9 + b _08008022 +_0800801E: + asrs r0, 9 + negs r4, r0 +_08008022: + adds r0, r5, 0 + muls r0, r1 + adds r1, r3, 0 + bl __udivsi3 + adds r0, r4 + subs r0, r5, r0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800800C + + thumb_func_start sub_8008038 +sub_8008038: @ 8008038 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + adds r6, r1, 0 + mov r8, r2 + ldrb r1, [r5, 0x3] + lsls r0, r1, 26 + lsrs r7, r0, 27 + movs r0, 0x80 + lsls r0, 4 + mov r9, r0 + cmp r6, r9 + beq _08008086 + ldr r2, _080080CC @ =gUnknown_8231D48 + lsrs r1, 6 + lsls r1, 3 + ldrb r0, [r5, 0x1] + lsrs r0, 6 + lsls r0, 5 + adds r1, r0 + adds r1, r2 + ldr r0, [r1] + lsls r4, r0, 8 + lsls r0, 16 + ldr r2, _080080D0 @ =gUnknown_2021BCC + lsls r1, r7, 3 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0 + adds r0, r4, 0 + adds r2, r6, 0 + bl sub_800800C + strh r0, [r5, 0x24] +_08008086: + cmp r8, r9 + beq _080080BE + ldr r2, _080080CC @ =gUnknown_8231D48 + ldrb r1, [r5, 0x3] + lsrs r1, 6 + lsls r1, 3 + ldrb r0, [r5, 0x1] + lsrs r0, 6 + lsls r0, 5 + adds r1, r0 + adds r2, 0x4 + adds r1, r2 + ldr r0, [r1] + lsls r4, r0, 8 + lsls r0, 16 + ldr r2, _080080D0 @ =gUnknown_2021BCC + lsls r1, r7, 3 + adds r1, r2 + movs r2, 0x6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, 0 + adds r0, r4, 0 + mov r2, r8 + bl sub_800800C + strh r0, [r5, 0x26] +_080080BE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080080CC: .4byte gUnknown_8231D48 +_080080D0: .4byte gUnknown_2021BCC + thumb_func_end sub_8008038 + + thumb_func_start sub_80080D4 +sub_80080D4: @ 80080D4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldrb r6, [r0, 0x3] + lsls r3, r6, 26 + lsrs r3, 27 + movs r4, 0x7 + ands r3, r4 + lsls r3, 1 + subs r4, 0x46 + mov r8, r4 + mov r5, r8 + ands r5, r6 + orrs r5, r3 + strb r5, [r0, 0x3] + lsls r4, r5, 26 + lsrs r4, 27 + movs r6, 0x3F + adds r6, r0 + mov r12, r6 + ldrb r3, [r6] + lsls r3, 31 + lsrs r3, 31 + eors r1, r3 + movs r6, 0x1 + ands r1, r6 + lsls r1, 3 + orrs r4, r1 + lsls r4, 1 + mov r3, r8 + ands r3, r5 + orrs r3, r4 + strb r3, [r0, 0x3] + lsls r4, r3, 26 + lsrs r4, 27 + mov r5, r12 + ldrb r1, [r5] + lsls r1, 30 + lsrs r1, 31 + eors r2, r1 + ands r2, r6 + lsls r2, 4 + orrs r4, r2 + lsls r4, 1 + mov r6, r8 + ands r3, r6 + orrs r3, r4 + strb r3, [r0, 0x3] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80080D4 + + thumb_func_start sub_8008148 +sub_8008148: @ 8008148 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08008160 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0 + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + strb r0, [r1, 0x3] + bx lr + .align 2, 0 +_08008160: .4byte gUnknown_3000C68 + thumb_func_end sub_8008148 + + thumb_func_start sub_8008164 +sub_8008164: @ 8008164 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08008188 @ =gUnknown_3000C68 + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + movs r3, 0 + strb r1, [r2] + strb r3, [r2, 0x1] + strb r3, [r2, 0x2] + strb r3, [r2, 0x3] + movs r0, 0x80 + lsls r0, 1 + strh r0, [r2, 0x4] + strh r0, [r2, 0x6] + strh r3, [r2, 0x8] + bx lr + .align 2, 0 +_08008188: .4byte gUnknown_3000C68 + thumb_func_end sub_8008164 + + thumb_func_start sub_800818C +sub_800818C: @ 800818C + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080081B0 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0 + strb r0, [r1] + strb r0, [r1, 0x1] + strb r0, [r1, 0x2] + strb r0, [r1, 0x3] + movs r2, 0x80 + lsls r2, 1 + strh r2, [r1, 0x4] + strh r2, [r1, 0x6] + strh r0, [r1, 0x8] + bx lr + .align 2, 0 +_080081B0: .4byte gUnknown_3000C68 + thumb_func_end sub_800818C + + thumb_func_start sub_80081B4 +sub_80081B4: @ 80081B4 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _080081D4 @ =gUnknown_3000C68 + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r3 + ldrh r0, [r1] + strh r0, [r2, 0x4] + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x6] + ldrb r0, [r1, 0x4] + lsls r0, 8 + strh r0, [r2, 0x8] + bx lr + .align 2, 0 +_080081D4: .4byte gUnknown_3000C68 + thumb_func_end sub_80081B4 + + thumb_func_start sub_80081D8 +sub_80081D8: @ 80081D8 + push {lr} + adds r3, r0, 0 + adds r3, 0x2C + ldrb r2, [r3] + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _080081FC + lsls r0, r2, 26 + lsrs r0, 26 + subs r0, 0x1 + movs r1, 0x3F + ands r0, r1 + movs r1, 0x40 + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_080081FC: + pop {r0} + bx r0 + thumb_func_end sub_80081D8 + + thumb_func_start sub_8008200 +sub_8008200: @ 8008200 + push {lr} + lsls r1, 24 + lsrs r2, r1, 24 + adds r3, r0, 0 + adds r3, 0x2C + ldrb r1, [r3] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08008224 + ldr r0, _0800822C @ =gUnknown_3000C68 + lsls r1, r2, 1 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x2] + subs r0, 0x1 + strb r0, [r1, 0x2] +_08008224: + ldrb r0, [r3] + lsrs r0, 7 + pop {r1} + bx r1 + .align 2, 0 +_0800822C: .4byte gUnknown_3000C68 + thumb_func_end sub_8008200 + + thumb_func_start sub_8008230 +sub_8008230: @ 8008230 + push {r4-r6,lr} + sub sp, 0x10 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r0, _080082B8 @ =gUnknown_3000C68 + lsls r4, r5, 1 + adds r4, r5 + lsls r4, 2 + adds r4, r0 + ldrh r0, [r1] + ldrh r2, [r4, 0x4] + adds r0, r2 + strh r0, [r4, 0x4] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x6] + adds r0, r2 + strh r0, [r4, 0x6] + ldrb r0, [r1, 0x4] + lsls r0, 8 + ldrh r1, [r4, 0x8] + adds r0, r1 + ldr r2, _080082BC @ =0xffffff00 + adds r1, r2, 0 + ands r0, r1 + strh r0, [r4, 0x8] + movs r1, 0x4 + ldrsh r0, [r4, r1] + bl sub_80082C8 + lsls r0, 16 + lsrs r0, 16 + ldr r6, _080082C0 @ =0xffff0000 + ldr r1, [sp] + ands r1, r6 + orrs r1, r0 + str r1, [sp] + movs r2, 0x6 + ldrsh r0, [r4, r2] + bl sub_80082C8 + lsls r0, 16 + ldr r2, _080082C4 @ =0x0000ffff + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldrh r1, [r4, 0x8] + ldr r0, [sp, 0x4] + ands r0, r6 + orrs r0, r1 + str r0, [sp, 0x4] + add r4, sp, 0x8 + mov r0, sp + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8007FBC + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080082B8: .4byte gUnknown_3000C68 +_080082BC: .4byte 0xffffff00 +_080082C0: .4byte 0xffff0000 +_080082C4: .4byte 0x0000ffff + thumb_func_end sub_8008230 + + thumb_func_start sub_80082C8 +sub_80082C8: @ 80082C8 + push {lr} + adds r1, r0, 0 + movs r0, 0x80 + lsls r0, 9 + lsls r1, 16 + asrs r1, 16 + bl __divsi3 + lsls r0, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80082C8 + + thumb_func_start sub_80082E0 +sub_80082E0: @ 80082E0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08008348 @ =gUnknown_3000C68 + lsls r4, r0, 1 + adds r4, r0 + lsls r4, 2 + adds r4, r3 + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r3, [r3] + lsls r0, 3 + adds r0, r3 + ldrh r0, [r0] + strh r0, [r2] + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r3, [r3] + lsls r0, 3 + adds r0, r3 + ldrh r0, [r0, 0x2] + strh r0, [r2, 0x2] + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r3, [r3] + lsls r0, 3 + adds r0, r3 + ldrb r0, [r0, 0x4] + strb r0, [r2, 0x4] + ldrb r3, [r4] + ldr r0, [r1, 0x10] + lsls r3, 2 + adds r3, r0 + ldrb r0, [r4, 0x1] + ldr r1, [r3] + lsls r0, 3 + adds r0, r1 + ldrb r0, [r0, 0x5] + strb r0, [r2, 0x5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08008348: .4byte gUnknown_3000C68 + thumb_func_end sub_80082E0 + + thumb_func_start sub_800834C +sub_800834C: @ 800834C + push {r4,lr} + sub sp, 0x8 + adds r2, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + ldrb r0, [r2, 0x5] + cmp r0, 0 + beq _08008372 + subs r0, 0x1 + strb r0, [r2, 0x5] + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_8008230 + b _08008382 +_08008372: + adds r0, r4, 0 + adds r1, r2, 0 + bl sub_80081B4 + adds r0, r4, 0 + mov r1, sp + bl sub_8008230 +_08008382: + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_800834C + + thumb_func_start sub_800838C +sub_800838C: @ 800838C + adds r2, r0, 0 + adds r2, 0x2A + strb r1, [r2] + adds r0, 0x3F + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + movs r2, 0x11 + negs r2, r2 + ands r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_800838C + + thumb_func_start sub_80083A4 +sub_80083A4: @ 80083A4 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, r1 + beq _080083BA + adds r0, r2, 0 + bl sub_800838C +_080083BA: + pop {r0} + bx r0 + thumb_func_end sub_80083A4 + + thumb_func_start sub_80083C0 +sub_80083C0: @ 80083C0 + push {r4-r7,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r4, r3, 0 + adds r4, 0x2C + ldrb r0, [r4] + lsls r0, 25 + lsrs r6, r0, 31 + subs r1, 0x1 + adds r0, r3, 0 + adds r0, 0x2B + strb r1, [r0] + ldrb r1, [r4] + movs r7, 0x40 + negs r7, r7 + adds r0, r7, 0 + ands r0, r1 + strb r0, [r4] + adds r2, r3, 0 + adds r2, 0x3F + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4] + movs r5, 0x41 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + strb r0, [r4] + adds r0, r3, 0 + bl sub_800795C + ldrb r2, [r4] + movs r0, 0x3F + ands r0, r2 + cmp r0, 0 + beq _08008428 + lsls r0, r2, 26 + lsrs r0, 26 + adds r0, 0x1 + movs r1, 0x3F + ands r0, r1 + adds r1, r7, 0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] +_08008428: + lsls r2, r6, 6 + ldrb r1, [r4] + adds r0, r5, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80083C0 + + thumb_func_start sub_800843C +sub_800843C: @ 800843C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_8008164 + adds r5, 0x3F + ldrb r0, [r5] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800843C + + thumb_func_start sub_8008468 +sub_8008468: @ 8008468 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08008498 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + cmp r0, r4 + beq _08008490 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_800843C +_08008490: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08008498: .4byte gUnknown_3000C68 + thumb_func_end sub_8008468 + + thumb_func_start sub_800849C +sub_800849C: @ 800849C + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080084D0 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + strb r4, [r1] + adds r5, 0x3F + ldrb r0, [r5] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080084D0: .4byte gUnknown_3000C68 + thumb_func_end sub_800849C + + thumb_func_start sub_80084D4 +sub_80084D4: @ 80084D4 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_8007FDC + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08008504 @ =gUnknown_3000C68 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + cmp r0, r4 + beq _080084FC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_800849C +_080084FC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08008504: .4byte gUnknown_3000C68 + thumb_func_end sub_80084D4 + + thumb_func_start sub_8008508 +sub_8008508: @ 8008508 + push {lr} + adds r3, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08008554 + adds r0, r3, 0 + adds r0, 0x2A + ldrb r1, [r0] + ldr r0, [r3, 0x8] + lsls r1, 2 + adds r1, r0 + adds r0, r3, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 2 + adds r0, r1 + ldrh r2, [r0] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _0800853C + movs r2, 0 +_0800853C: + adds r0, r3, 0 + adds r0, 0x40 + ldrh r1, [r0] + adds r1, r2 + ldr r2, _08008558 @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x4] + ldr r0, _0800855C @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] +_08008554: + pop {r0} + bx r0 + .align 2, 0 +_08008558: .4byte 0x000003ff +_0800855C: .4byte 0xfffffc00 + thumb_func_end sub_8008508 + + thumb_func_start sub_8008560 +sub_8008560: @ 8008560 + push {r4,lr} + ldr r1, _0800858C @ =gUnknown_2021CCC + movs r0, 0 + strb r0, [r1] + ldr r1, _08008590 @ =gUnknown_3003E54 + movs r0, 0 + str r0, [r1] + bl sub_8007390 + movs r4, 0 +_08008574: + adds r0, r4, 0 + bl sub_800818C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08008574 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800858C: .4byte gUnknown_2021CCC +_08008590: .4byte gUnknown_3003E54 + thumb_func_end sub_8008560 + + thumb_func_start sub_8008594 +sub_8008594: @ 8008594 + push {r4,lr} + movs r2, 0 + movs r1, 0x1 + ldr r0, _080085B4 @ =gUnknown_3003E54 + ldr r4, [r0] + adds r3, r0, 0 +_080085A0: + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _080085B8 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r0, r2, 0 + b _080085C6 + .align 2, 0 +_080085B4: .4byte gUnknown_3003E54 +_080085B8: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r1, 1 + cmp r2, 0x1F + bls _080085A0 + movs r0, 0xFF +_080085C6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8008594 + + thumb_func_start sub_80085CC +sub_80085CC: @ 80085CC + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r2, r0, 24 + movs r0, 0 + movs r1, 0x1 + ldr r3, _08008608 @ =gUnknown_3003E54 + cmp r0, r2 + bcs _080085EA +_080085DE: + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 1 + cmp r0, r2 + bcc _080085DE +_080085EA: + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + movs r1, 0x80 + lsls r1, 1 + str r1, [sp] + adds r0, r2, 0 + movs r2, 0 + movs r3, 0 + bl sub_80073BC + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08008608: .4byte gUnknown_3003E54 + thumb_func_end sub_80085CC + + thumb_func_start sub_800860C +sub_800860C: @ 800860C + push {r4,r5,lr} + adds r4, r0, 0 + bl sub_8008594 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0xFF + beq _08008654 + ldrb r3, [r4, 0x1] + lsrs r1, r3, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + lsls r3, 30 + lsrs r3, 30 + adds r0, r4, 0 + bl sub_80073F0 + movs r0, 0x1F + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, 0 + bl sub_800818C +_08008654: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800860C + + thumb_func_start sub_800865C +sub_800865C: @ 800865C + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x10 + adds r6, r0, 0 + adds r0, r1, 0 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r0, 16 + asrs r0, 16 + bl sub_80082C8 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _080086D4 @ =0xffff0000 + mov r8, r1 + ldr r1, [sp] + mov r2, r8 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + bl sub_80082C8 + lsls r0, 16 + ldr r2, _080086D8 @ =0x0000ffff + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldr r0, [sp, 0x4] + mov r1, r8 + ands r0, r1 + orrs r0, r5 + str r0, [sp, 0x4] + add r4, sp, 0x8 + mov r0, sp + adds r1, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ObjAffineSet + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8007FBC + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080086D4: .4byte 0xffff0000 +_080086D8: .4byte 0x0000ffff + thumb_func_end sub_800865C + + thumb_func_start sub_80086DC +sub_80086DC: @ 80086DC + push {r4-r6,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x4] + lsrs r0, 5 + bl sub_8007434 + lsls r4, r0, 16 + asrs r6, r4, 16 + cmp r6, 0 + blt _08008718 + ldrh r0, [r5, 0x6] + lsrs r4, 16 + ldrh r2, [r5, 0x4] + lsrs r2, 5 + adds r1, r4, 0 + bl sub_80088A8 + ldr r0, [r5] + lsls r1, r6, 5 + ldr r2, _08008714 @ =0x06010000 + adds r1, r2 + ldrh r2, [r5, 0x4] + lsrs r2, 1 + bl CpuSet + adds r0, r4, 0 + b _0800871A + .align 2, 0 +_08008714: .4byte 0x06010000 +_08008718: + movs r0, 0 +_0800871A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80086DC + + thumb_func_start sub_8008720 +sub_8008720: @ 8008720 + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r0, [r5] + cmp r0, 0 + beq _08008744 +_0800872C: + lsls r0, r4, 3 + adds r0, r5, r0 + bl sub_80086DC + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 3 + adds r0, r5 + ldr r0, [r0] + cmp r0, 0 + bne _0800872C +_08008744: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8008720 + + thumb_func_start sub_800874C +sub_800874C: @ 800874C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r0, 16 + bl sub_8008830 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _080087AA + ldr r0, _080087B4 @ =gUnknown_3000B68 + lsls r1, r4, 2 + adds r2, r1, r0 + adds r0, 0x2 + adds r1, r0 + ldrh r0, [r1] + ldrh r3, [r2] + adds r0, r3, r0 + ldr r1, _080087B8 @ =gUnknown_3000AE8 + mov r8, r1 + lsls r5, r4, 1 + cmp r3, r0 + bge _080087A2 + ldr r1, _080087BC @ =gUnknown_2021B48 + mov r12, r1 + movs r6, 0x7 + movs r7, 0x1 + adds r4, r0, 0 +_08008786: + lsrs r2, r3, 3 + add r2, r12 + adds r0, r3, 0 + ands r0, r6 + adds r1, r7, 0 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + cmp r3, r4 + blt _08008786 +_080087A2: + mov r0, r8 + adds r1, r5, r0 + ldr r0, _080087C0 @ =0x0000ffff + strh r0, [r1] +_080087AA: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080087B4: .4byte gUnknown_3000B68 +_080087B8: .4byte gUnknown_3000AE8 +_080087BC: .4byte gUnknown_2021B48 +_080087C0: .4byte 0x0000ffff + thumb_func_end sub_800874C + + thumb_func_start sub_80087C4 +sub_80087C4: @ 80087C4 + push {r4-r7,lr} + movs r2, 0 + ldr r7, _080087F8 @ =gUnknown_3000AE8 + ldr r0, _080087FC @ =0x0000ffff + adds r6, r0, 0 + ldr r4, _08008800 @ =gUnknown_3000B68 + movs r3, 0 + adds r5, r4, 0x2 +_080087D4: + lsls r1, r2, 1 + adds r1, r7 + ldrh r0, [r1] + orrs r0, r6 + strh r0, [r1] + lsls r1, r2, 2 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r5 + strh r3, [r1] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _080087D4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080087F8: .4byte gUnknown_3000AE8 +_080087FC: .4byte 0x0000ffff +_08008800: .4byte gUnknown_3000B68 + thumb_func_end sub_80087C4 + + thumb_func_start sub_8008804 +sub_8008804: @ 8008804 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_8008830 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08008824 + ldr r0, _08008820 @ =gUnknown_3000B68 + lsls r1, 2 + adds r1, r0 + ldrh r0, [r1] + b _08008826 + .align 2, 0 +_08008820: .4byte gUnknown_3000B68 +_08008824: + ldr r0, _0800882C @ =0x0000ffff +_08008826: + pop {r1} + bx r1 + .align 2, 0 +_0800882C: .4byte 0x0000ffff + thumb_func_end sub_8008804 + + thumb_func_start sub_8008830 +sub_8008830: @ 8008830 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r1, 0 + ldr r3, _08008848 @ =gUnknown_3000AE8 +_0800883A: + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _0800884C + adds r0, r1, 0 + b _08008858 + .align 2, 0 +_08008848: .4byte gUnknown_3000AE8 +_0800884C: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x3F + bls _0800883A + movs r0, 0xFF +_08008858: + pop {r1} + bx r1 + thumb_func_end sub_8008830 + + thumb_func_start sub_800885C +sub_800885C: @ 800885C + push {r4-r6,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + ldr r6, _08008884 @ =gUnknown_3000AE8 + ldr r5, _08008888 @ =0x0000ffff + ldr r4, _0800888C @ =gUnknown_3000B68 +_0800886A: + lsls r0, r2, 1 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, r5 + beq _08008890 + lsls r0, r2, 2 + adds r0, r4 + ldrh r0, [r0] + cmp r0, r3 + bne _08008890 + ldrh r0, [r1] + b _0800889C + .align 2, 0 +_08008884: .4byte gUnknown_3000AE8 +_08008888: .4byte 0x0000ffff +_0800888C: .4byte gUnknown_3000B68 +_08008890: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3F + bls _0800886A + ldr r0, _080088A4 @ =0x0000ffff +_0800889C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080088A4: .4byte 0x0000ffff + thumb_func_end sub_800885C + + thumb_func_start sub_80088A8 +sub_80088A8: @ 80088A8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + lsls r6, 16 + lsrs r6, 16 + ldr r0, _080088E4 @ =0x0000ffff + bl sub_8008830 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _080088E8 @ =gUnknown_3000AE8 + lsls r1, r0, 1 + adds r1, r2 + strh r4, [r1] + ldr r1, _080088EC @ =gUnknown_3000B68 + lsls r0, 2 + adds r2, r0, r1 + strh r5, [r2] + adds r1, 0x2 + adds r0, r1 + strh r6, [r0] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080088E4: .4byte 0x0000ffff +_080088E8: .4byte gUnknown_3000AE8 +_080088EC: .4byte gUnknown_3000B68 + thumb_func_end sub_80088A8 + + thumb_func_start sub_80088F0 +sub_80088F0: @ 80088F0 + push {r4,lr} + ldr r1, _0800891C @ =gUnknown_3003E58 + movs r0, 0 + strb r0, [r1] + movs r2, 0 + ldr r4, _08008920 @ =gUnknown_3000DE8 + ldr r0, _08008924 @ =0x0000ffff + adds r3, r0, 0 +_08008900: + lsls r0, r2, 1 + adds r0, r4 + ldrh r1, [r0] + orrs r1, r3 + strh r1, [r0] + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _08008900 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800891C: .4byte gUnknown_3003E58 +_08008920: .4byte gUnknown_3000DE8 +_08008924: .4byte 0x0000ffff + thumb_func_end sub_80088F0 + + thumb_func_start sub_8008928 +sub_8008928: @ 8008928 + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r0, [r5, 0x4] + bl sub_80089E8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _0800893E + adds r0, r4, 0 + b _0800896E +_0800893E: + ldr r0, _08008964 @ =0x0000ffff + bl sub_80089E8 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xFF + beq _0800896C + ldr r1, _08008968 @ =gUnknown_3000DE8 + lsls r0, r4, 1 + adds r0, r1 + ldrh r1, [r5, 0x4] + strh r1, [r0] + ldr r0, [r5] + lsls r1, r4, 4 + bl sub_80089A0 + adds r0, r4, 0 + b _0800896E + .align 2, 0 +_08008964: .4byte 0x0000ffff +_08008968: .4byte gUnknown_3000DE8 +_0800896C: + movs r0, 0xFF +_0800896E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8008928 + + thumb_func_start sub_8008974 +sub_8008974: @ 8008974 + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 + b _08008982 +_0800897C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_08008982: + lsls r0, r4, 3 + adds r1, r0, r5 + ldr r0, [r1] + cmp r0, 0 + beq _0800899A + adds r0, r1, 0 + bl sub_8008928 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0800897C +_0800899A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8008974 + + thumb_func_start sub_80089A0 +sub_80089A0: @ 80089A0 + push {lr} + lsls r1, 16 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl sub_80703EC + pop {r0} + bx r0 + thumb_func_end sub_80089A0 + + thumb_func_start sub_80089B8 +sub_80089B8: @ 80089B8 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _080089D8 @ =0x0000ffff + bl sub_80089E8 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xFF + beq _080089E0 + ldr r1, _080089DC @ =gUnknown_3000DE8 + lsls r0, r2, 1 + adds r0, r1 + strh r4, [r0] + adds r0, r2, 0 + b _080089E2 + .align 2, 0 +_080089D8: .4byte 0x0000ffff +_080089DC: .4byte gUnknown_3000DE8 +_080089E0: + movs r0, 0xFF +_080089E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80089B8 + + thumb_func_start sub_80089E8 +sub_80089E8: @ 80089E8 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08008A08 @ =gUnknown_3003E58 + ldrb r1, [r0] + cmp r1, 0xF + bhi _08008A1A + ldr r3, _08008A0C @ =gUnknown_3000DE8 +_080089F8: + lsls r0, r1, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08008A10 + adds r0, r1, 0 + b _08008A1C + .align 2, 0 +_08008A08: .4byte gUnknown_3003E58 +_08008A0C: .4byte gUnknown_3000DE8 +_08008A10: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _080089F8 +_08008A1A: + movs r0, 0xFF +_08008A1C: + pop {r1} + bx r1 + thumb_func_end sub_80089E8 + + thumb_func_start sub_8008A20 +sub_8008A20: @ 8008A20 + lsls r0, 24 + ldr r1, _08008A2C @ =gUnknown_3000DE8 + lsrs r0, 23 + adds r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08008A2C: .4byte gUnknown_3000DE8 + thumb_func_end sub_8008A20 + + thumb_func_start sub_8008A30 +sub_8008A30: @ 8008A30 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_80089E8 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _08008A4C + ldr r0, _08008A50 @ =gUnknown_3000DE8 + lsls r1, 1 + adds r1, r0 + ldr r0, _08008A54 @ =0x0000ffff + strh r0, [r1] +_08008A4C: + pop {r0} + bx r0 + .align 2, 0 +_08008A50: .4byte gUnknown_3000DE8 +_08008A54: .4byte 0x0000ffff + thumb_func_end sub_8008A30 + + thumb_func_start sub_8008A58 +sub_8008A58: @ 8008A58 + str r1, [r0, 0x18] + adds r0, 0x42 + movs r1, 0x40 + strb r1, [r0] + bx lr + thumb_func_end sub_8008A58 + + thumb_func_start sub_8008A64 +sub_8008A64: @ 8008A64 + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + ldr r1, _08008A78 @ =gUnknown_2021B44 + ldrb r0, [r3] + ldrb r1, [r1] + cmp r0, r1 + bcc _08008A7C + movs r0, 0x1 + b _08008AC4 + .align 2, 0 +_08008A78: .4byte gUnknown_2021B44 +_08008A7C: + ldr r0, [r4, 0x18] + cmp r0, 0 + beq _08008A90 + adds r0, r4, 0 + adds r0, 0x42 + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0 + bne _08008AB0 +_08008A90: + ldr r0, _08008AAC @ =gUnknown_30030F0 + ldrb r2, [r3] + lsls r2, 3 + adds r0, 0x38 + adds r2, r0 + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + movs r0, 0 + b _08008AC4 + .align 2, 0 +_08008AAC: .4byte gUnknown_30030F0 +_08008AB0: + ldrb r1, [r3] + lsls r1, 3 + ldr r0, _08008ACC @ =gUnknown_3003128 + adds r1, r0 + adds r0, r4, 0 + adds r2, r3, 0 + bl sub_8008AD0 + lsls r0, 24 + lsrs r0, 24 +_08008AC4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08008ACC: .4byte gUnknown_3003128 + thumb_func_end sub_8008A64 + + thumb_func_start sub_8008AD0 +sub_8008AD0: @ 8008AD0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + adds r3, r0, 0 + str r1, [sp] + mov r8, r2 + ldr r0, _08008AF0 @ =gUnknown_2021B44 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bcc _08008AF4 +_08008AEC: + movs r0, 0x1 + b _08008CCA + .align 2, 0 +_08008AF0: .4byte gUnknown_2021B44 +_08008AF4: + adds r0, r3, 0 + adds r0, 0x42 + ldrb r1, [r0] + lsls r1, 26 + lsrs r1, 23 + ldr r2, [r3, 0x18] + adds r7, r2, r1 + mov r12, r3 + str r0, [sp, 0x18] + cmp r7, 0 + beq _08008B10 + ldr r0, [r7, 0x4] + cmp r0, 0 + bne _08008B26 +_08008B10: + mov r2, r12 + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [sp] + str r0, [r2] + str r1, [r2, 0x4] + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08008CC8 +_08008B26: + mov r2, r12 + ldrh r0, [r2, 0x4] + lsls r0, 22 + lsrs r0, 22 + str r0, [sp, 0x4] + ldrb r0, [r7] + str r0, [sp, 0xC] + ldrb r0, [r2, 0x3] + lsls r0, 26 + lsrs r0, 27 + asrs r1, r0, 3 + str r1, [sp, 0x10] + movs r1, 0x1 + ldr r2, [sp, 0x10] + ands r2, r1 + str r2, [sp, 0x10] + asrs r0, 4 + mov r10, r0 + ands r0, r1 + mov r10, r0 + mov r1, r12 + ldrh r0, [r1, 0x2] + lsls r0, 23 + lsrs r0, 23 + adds r1, 0x28 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + subs r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + mov r1, r12 + ldrb r0, [r1] + adds r1, 0x29 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + movs r0, 0 + mov r9, r0 + ldr r1, [sp, 0xC] + cmp r9, r1 + bcc _08008B84 + b _08008CC8 +_08008B84: + lsls r0, r2, 16 + asrs r0, 16 + str r0, [sp, 0x14] +_08008B8A: + mov r2, r8 + ldrb r0, [r2] + ldr r1, _08008CDC @ =gUnknown_2021B44 + ldrb r1, [r1] + cmp r0, r1 + bcs _08008AEC + ldr r0, [r7, 0x4] + mov r2, r9 + lsls r6, r2, 2 + adds r2, r6, r0 + movs r0, 0 + ldrsb r0, [r2, r0] + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x1 + ldrsb r0, [r2, r0] + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, [sp, 0x10] + cmp r0, 0 + beq _08008BE0 + ldr r0, [r2] + lsls r1, r0, 12 + lsrs r1, 30 + lsls r1, 2 + lsls r0, 14 + lsrs r0, 30 + lsls r0, 4 + adds r1, r0 + ldr r0, _08008CE0 @ =gUnknown_8231DA8 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + lsls r0, r4, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + mvns r0, r4 + adds r0, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_08008BE0: + mov r1, r10 + cmp r1, 0 + beq _08008C12 + ldr r0, [r2] + lsls r1, r0, 12 + lsrs r1, 30 + lsls r1, 2 + lsls r0, 14 + lsrs r0, 30 + lsls r0, 4 + adds r1, r0 + ldr r2, _08008CE0 @ =gUnknown_8231DA8 + adds r1, r2 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + lsls r0, r5, 16 + asrs r0, 16 + adds r0, r1 + lsls r0, 16 + lsrs r5, r0, 16 + mvns r0, r5 + adds r0, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 +_08008C12: + mov r1, r9 + lsls r0, r1, 3 + ldr r2, [sp] + adds r3, r0, r2 + mov r2, r12 + ldr r0, [r2] + ldr r1, [r2, 0x4] + str r0, [r3] + str r1, [r3, 0x4] + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, 14 + lsrs r1, 30 + lsls r1, 6 + ldrb r2, [r3, 0x1] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, 12 + lsrs r1, 30 + lsls r1, 6 + ldrb r2, [r3, 0x3] + movs r0, 0x3F + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x3] + lsls r1, r4, 16 + asrs r1, 16 + ldr r0, [sp, 0x14] + adds r1, r0, r1 + ldr r2, _08008CE4 @ =0x000001ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x2] + ldr r0, _08008CE8 @ =0xfffffe00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x2] + ldr r1, [sp, 0x8] + adds r0, r1, r5 + strb r0, [r3] + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, 2 + lsrs r1, 22 + ldr r2, [sp, 0x4] + adds r1, r2, r1 + ldr r2, _08008CEC @ =0x000003ff + adds r0, r2, 0 + ands r1, r0 + ldrh r2, [r3, 0x4] + ldr r0, _08008CF0 @ =0xfffffc00 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldr r0, [sp, 0x18] + ldrb r1, [r0] + movs r0, 0xC0 + ands r0, r1 + cmp r0, 0x80 + beq _08008CAE + ldr r0, [r7, 0x4] + adds r0, r6, r0 + ldr r1, [r0] + lsrs r1, 30 + lsls r1, 2 + ldrb r2, [r3, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x5] +_08008CAE: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r2, [sp, 0xC] + cmp r9, r2 + bcs _08008CC8 + b _08008B8A +_08008CC8: + movs r0, 0 +_08008CCA: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08008CDC: .4byte gUnknown_2021B44 +_08008CE0: .4byte gUnknown_8231DA8 +_08008CE4: .4byte 0x000001ff +_08008CE8: .4byte 0xfffffe00 +_08008CEC: .4byte 0x000003ff +_08008CF0: .4byte 0xfffffc00 + thumb_func_end sub_8008AD0 + + .align 2, 0 @ Don't pad with nop. |