summaryrefslogtreecommitdiff
path: root/asm/list_menu.s
diff options
context:
space:
mode:
authorsceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
committersceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
commit670fef77ac4d9116d5fdc28c0da40622919a062b (patch)
tree61c0e925f059404473826ac775305ba5e2706ab1 /asm/list_menu.s
first commit
Diffstat (limited to 'asm/list_menu.s')
-rw-r--r--asm/list_menu.s2019
1 files changed, 2019 insertions, 0 deletions
diff --git a/asm/list_menu.s b/asm/list_menu.s
new file mode 100644
index 000000000..d5fdd40f7
--- /dev/null
+++ b/asm/list_menu.s
@@ -0,0 +1,2019 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start nullsub_90
+nullsub_90: @ 8106ECC
+ bx lr
+ thumb_func_end nullsub_90
+
+ thumb_func_start sub_8106ED0
+sub_8106ED0: @ 8106ED0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ mov r12, r0
+ str r1, [sp]
+ ldr r0, [sp, 0x28]
+ lsls r2, 24
+ lsrs r6, r2, 24
+ mov r10, r6
+ lsls r3, 16
+ lsrs r7, r3, 16
+ str r7, [sp, 0x4]
+ lsls r0, 16
+ mov r8, r0
+ lsrs r0, 16
+ mov r9, r0
+ ldr r5, _08106F60 @ =gUnknown_203ACF4
+ ldrb r4, [r5, 0x4]
+ cmp r4, 0x1
+ beq _08106F68
+ cmp r4, 0x1
+ ble _08106F06
+ cmp r4, 0x2
+ beq _08106FCC
+_08106F06:
+ mov r0, r12
+ bl sub_8003CE4
+ strb r0, [r5, 0x5]
+ cmp r6, 0x1
+ beq _08106F24
+ cmp r6, 0x2
+ bne _08106F34
+ ldrb r0, [r5, 0x5]
+ mov r1, r9
+ lsls r2, r1, 24
+ lsrs r2, 24
+ adds r1, r7, 0
+ bl sub_815001C
+_08106F24:
+ ldrb r0, [r5, 0x5]
+ mov r3, r8
+ lsrs r2, r3, 20
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, [sp, 0x4]
+ bl sub_8150048
+_08106F34:
+ ldr r0, _08106F64 @ =gUnknown_3005E70
+ adds r2, r0, 0
+ ldr r1, [sp]
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ ldm r1!, {r3-r5}
+ stm r2!, {r3-r5}
+ ldr r4, _08106F60 @ =gUnknown_203ACF4
+ ldrb r1, [r4, 0x5]
+ strb r1, [r0, 0x10]
+ movs r1, 0
+ movs r2, 0
+ bl sub_8106FF8
+ strb r0, [r4, 0x6]
+ ldrb r0, [r4, 0x5]
+ movs r1, 0x1
+ bl sub_8003F20
+ movs r0, 0x1
+ strb r0, [r4, 0x4]
+ b _08106FE4
+ .align 2, 0
+_08106F60: .4byte gUnknown_203ACF4
+_08106F64: .4byte gUnknown_3005E70
+_08106F68:
+ ldrb r0, [r5, 0x6]
+ bl sub_8107078
+ str r0, [r5]
+ ldr r1, _08106FA4 @ =gUnknown_30030F0
+ ldrh r0, [r1, 0x2E]
+ ands r4, r0
+ cmp r4, 0
+ beq _08106F7E
+ movs r0, 0x2
+ strb r0, [r5, 0x4]
+_08106F7E:
+ ldrh r1, [r1, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08106F92
+ movs r0, 0x2
+ negs r0, r0
+ str r0, [r5]
+ movs r0, 0x2
+ strb r0, [r5, 0x4]
+_08106F92:
+ ldrb r0, [r5, 0x4]
+ cmp r0, 0x2
+ bne _08106FE4
+ cmp r6, 0
+ bne _08106FA8
+ ldrb r0, [r5, 0x5]
+ bl sub_80040B8
+ b _08106FBA
+ .align 2, 0
+_08106FA4: .4byte gUnknown_30030F0
+_08106FA8:
+ mov r4, r10
+ cmp r4, 0
+ blt _08106FBA
+ cmp r4, 0x2
+ bgt _08106FBA
+ ldrb r0, [r5, 0x5]
+ movs r1, 0
+ bl sub_80F6F9C
+_08106FBA:
+ ldr r0, _08106FC8 @ =gUnknown_203ACF4
+ ldrb r0, [r0, 0x5]
+ movs r1, 0x1
+ bl sub_8003F20
+ b _08106FE4
+ .align 2, 0
+_08106FC8: .4byte gUnknown_203ACF4
+_08106FCC:
+ ldrb r0, [r5, 0x6]
+ movs r1, 0
+ movs r2, 0
+ bl sub_810713C
+ ldrb r0, [r5, 0x5]
+ bl sub_8003E3C
+ movs r0, 0
+ strb r0, [r5, 0x4]
+ ldr r0, [r5]
+ b _08106FE8
+_08106FE4:
+ movs r0, 0x1
+ negs r0, r0
+_08106FE8:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8106ED0
+
+ thumb_func_start sub_8106FF8
+sub_8106FF8: @ 8106FF8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ bl sub_8107348
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5, 0x10]
+ bl sub_8003FA0
+ ldrb r0, [r5, 0x10]
+ movs r1, 0x2
+ bl sub_8003F20
+ adds r0, r4, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8106FF8
+
+ thumb_func_start sub_8107024
+sub_8107024: @ 8107024
+ push {r4-r7,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r1, r2, 0
+ adds r2, r3, 0
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ bl sub_8107348
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r4, 0x4]
+ cmp r0, 0xFF
+ beq _08107064
+ adds r5, r4, 0
+_08107048:
+ ldrb r0, [r6, 0x10]
+ ldrb r1, [r5]
+ ldrb r2, [r5, 0x1]
+ ldrb r3, [r5, 0x2]
+ ldrb r4, [r5, 0x3]
+ str r4, [sp]
+ ldrb r4, [r5, 0x4]
+ str r4, [sp, 0x4]
+ bl sub_8004000
+ adds r5, 0x8
+ ldrb r0, [r5, 0x4]
+ cmp r0, 0xFF
+ bne _08107048
+_08107064:
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x2
+ bl sub_8003F20
+ adds r0, r7, 0
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8107024
+
+ thumb_func_start sub_8107078
+sub_8107078: @ 8107078
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _081070A4 @ =gUnknown_3005098
+ adds r3, r1, r0
+ ldr r2, _081070A8 @ =gUnknown_30030F0
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _081070AC
+ ldrh r0, [r3, 0x18]
+ ldrh r1, [r3, 0x1A]
+ adds r0, r1
+ ldr r1, [r3]
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ b _08107136
+ .align 2, 0
+_081070A4: .4byte gUnknown_3005098
+_081070A8: .4byte gUnknown_30030F0
+_081070AC:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _081070BA
+ movs r0, 0x2
+ negs r0, r0
+ b _08107136
+_081070BA:
+ ldrh r1, [r2, 0x30]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081070CE
+ adds r0, r3, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ movs r3, 0
+ b _0810712E
+_081070CE:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081070DE
+ adds r0, r3, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ b _0810712C
+_081070DE:
+ ldrb r0, [r3, 0x16]
+ lsrs r0, 6
+ cmp r0, 0x1
+ beq _081070F4
+ cmp r0, 0x1
+ ble _081070EE
+ cmp r0, 0x2
+ beq _08107100
+_081070EE:
+ movs r2, 0
+ movs r0, 0
+ b _08107114
+_081070F4:
+ movs r0, 0x20
+ ands r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r0, 0x10
+ b _0810710E
+_08107100:
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r0, 0x80
+ lsls r0, 1
+_0810710E:
+ ands r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+_08107114:
+ cmp r2, 0
+ beq _08107122
+ ldrb r2, [r3, 0xE]
+ adds r0, r3, 0
+ movs r1, 0x1
+ movs r3, 0
+ b _0810712E
+_08107122:
+ cmp r0, 0
+ beq _08107132
+ ldrb r2, [r3, 0xE]
+ adds r0, r3, 0
+ movs r1, 0x1
+_0810712C:
+ movs r3, 0x1
+_0810712E:
+ bl sub_810799C
+_08107132:
+ movs r0, 0x1
+ negs r0, r0
+_08107136:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8107078
+
+ thumb_func_start sub_810713C
+sub_810713C: @ 810713C
+ push {r4,lr}
+ adds r3, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _0810717C @ =gUnknown_3005098
+ adds r1, r0, r1
+ cmp r3, 0
+ beq _08107158
+ ldrh r0, [r1, 0x18]
+ strh r0, [r3]
+_08107158:
+ cmp r2, 0
+ beq _08107160
+ ldrh r0, [r1, 0x1A]
+ strh r0, [r2]
+_08107160:
+ ldrb r0, [r1, 0x1E]
+ cmp r0, 0xFF
+ beq _08107170
+ ldrb r1, [r1, 0x17]
+ lsrs r1, 6
+ subs r1, 0x2
+ bl sub_8133CD4
+_08107170:
+ adds r0, r4, 0
+ bl sub_8077508
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810717C: .4byte gUnknown_3005098
+ thumb_func_end sub_810713C
+
+ thumb_func_start sub_8107180
+sub_8107180: @ 8107180
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _081071C0 @ =gUnknown_3005098
+ adds r4, r0
+ ldrb r0, [r4, 0x10]
+ ldrb r2, [r4, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ bl sub_800445C
+ ldrh r1, [r4, 0x18]
+ ldrh r3, [r4, 0xE]
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_81074DC
+ adds r0, r4, 0
+ bl sub_8107594
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ bl sub_8003F20
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081071C0: .4byte gUnknown_3005098
+ thumb_func_end sub_8107180
+
+ thumb_func_start sub_81071C4
+sub_81071C4: @ 81071C4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _08107204 @ =gUnknown_3005098
+ adds r4, r0
+ lsrs r1, 20
+ ldrb r6, [r4, 0x14]
+ movs r5, 0xF
+ adds r0, r5, 0
+ ands r0, r6
+ orrs r0, r1
+ strb r0, [r4, 0x14]
+ ands r2, r5
+ ldrb r1, [r4, 0x15]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r2
+ lsrs r3, 20
+ ands r0, r5
+ orrs r0, r3
+ strb r0, [r4, 0x15]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08107204: .4byte gUnknown_3005098
+ thumb_func_end sub_81071C4
+
+ thumb_func_start sub_8107208
+sub_8107208: @ 8107208
+ push {r4,r5,lr}
+ adds r3, r1, 0
+ adds r5, r2, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _08107240 @ =gUnknown_3005098
+ adds r4, r0
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x1
+ adds r2, r3, 0
+ bl sub_80048BC
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ adds r2, r5, 0
+ bl sub_80048BC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08107240: .4byte gUnknown_3005098
+ thumb_func_end sub_8107208
+
+ thumb_func_start sub_8107244
+sub_8107244: @ 8107244
+ push {r4-r7,lr}
+ sub sp, 0x20
+ mov r12, r2
+ ldr r5, [sp, 0x34]
+ lsls r3, 16
+ lsrs r3, 16
+ adds r4, r3, 0
+ mov r3, sp
+ ldm r0!, {r2,r6,r7}
+ stm r3!, {r2,r6,r7}
+ ldm r0!, {r2,r6,r7}
+ stm r3!, {r2,r6,r7}
+ mov r0, sp
+ movs r3, 0
+ strh r1, [r0, 0x18]
+ mov r1, r12
+ strh r1, [r0, 0x1A]
+ strb r3, [r0, 0x1C]
+ strb r3, [r0, 0x1D]
+ cmp r4, 0x40
+ bne _08107278
+ movs r1, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl sub_810799C
+_08107278:
+ cmp r4, 0x80
+ bne _08107288
+ mov r0, sp
+ movs r1, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_810799C
+_08107288:
+ cmp r5, 0
+ beq _08107292
+ mov r0, sp
+ ldrh r0, [r0, 0x18]
+ strh r0, [r5]
+_08107292:
+ ldr r2, [sp, 0x38]
+ cmp r2, 0
+ beq _0810729E
+ mov r0, sp
+ ldrh r0, [r0, 0x1A]
+ strh r0, [r2]
+_0810729E:
+ movs r0, 0x1
+ negs r0, r0
+ add sp, 0x20
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8107244
+
+ thumb_func_start sub_81072AC
+sub_81072AC: @ 81072AC
+ push {lr}
+ adds r2, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _081072D0 @ =gUnknown_3005098
+ adds r1, r0
+ cmp r2, 0
+ beq _081072CA
+ ldrh r0, [r1, 0x1A]
+ ldrh r1, [r1, 0x18]
+ adds r0, r1
+ strh r0, [r2]
+_081072CA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081072D0: .4byte gUnknown_3005098
+ thumb_func_end sub_81072AC
+
+ thumb_func_start sub_81072D4
+sub_81072D4: @ 81072D4
+ push {lr}
+ adds r3, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _081072FC @ =gUnknown_3005098
+ adds r1, r0
+ cmp r3, 0
+ beq _081072EE
+ ldrh r0, [r1, 0x18]
+ strh r0, [r3]
+_081072EE:
+ cmp r2, 0
+ beq _081072F6
+ ldrh r0, [r1, 0x1A]
+ strh r0, [r2]
+_081072F6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081072FC: .4byte gUnknown_3005098
+ thumb_func_end sub_81072D4
+
+ thumb_func_start sub_8107300
+sub_8107300: @ 8107300
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _08107344 @ =gUnknown_3005098
+ adds r4, r0
+ ldrb r0, [r4, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F79D8
+ ldrb r1, [r4, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x1A]
+ adds r2, r1, 0
+ muls r2, r0
+ adds r1, r2, 0
+ ldrb r0, [r4, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08107344: .4byte gUnknown_3005098
+ thumb_func_end sub_8107300
+
+ thumb_func_start sub_8107348
+sub_8107348: @ 8107348
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r6, 16
+ lsrs r6, 16
+ ldr r0, _08107418 @ =nullsub_90
+ movs r1, 0
+ bl sub_807741C
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ ldr r1, _0810741C @ =gUnknown_3005098
+ adds r7, r0, r1
+ adds r0, r7, 0
+ ldm r4!, {r1-r3}
+ stm r0!, {r1-r3}
+ ldm r4!, {r1-r3}
+ stm r0!, {r1-r3}
+ movs r1, 0
+ strh r5, [r7, 0x18]
+ strh r6, [r7, 0x1A]
+ strb r1, [r7, 0x1C]
+ strb r1, [r7, 0x1D]
+ movs r0, 0xFF
+ strb r0, [r7, 0x1E]
+ strb r1, [r7, 0x1F]
+ ldr r3, _08107420 @ =gUnknown_3005E60
+ ldrb r1, [r7, 0x14]
+ movs r5, 0xF
+ lsrs r1, 4
+ ldrb r4, [r3]
+ movs r2, 0x10
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r4
+ orrs r0, r1
+ strb r0, [r3]
+ ldrb r1, [r7, 0x15]
+ lsls r1, 28
+ lsrs r1, 24
+ ands r0, r5
+ orrs r0, r1
+ strb r0, [r3]
+ ldrb r0, [r7, 0x15]
+ lsrs r0, 4
+ ands r5, r0
+ ldrb r0, [r3, 0x1]
+ ands r2, r0
+ orrs r2, r5
+ strb r2, [r3, 0x1]
+ ldrb r1, [r7, 0x16]
+ lsls r1, 29
+ lsrs r1, 17
+ ldr r0, [r3]
+ ldr r2, _08107424 @ =0xfffc0fff
+ ands r0, r2
+ orrs r0, r1
+ str r0, [r3]
+ ldrb r0, [r7, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ strb r0, [r3, 0x3]
+ ldrh r0, [r7, 0xC]
+ ldrh r1, [r7, 0xE]
+ cmp r0, r1
+ bcs _081073E0
+ strh r0, [r7, 0xE]
+_081073E0:
+ ldrb r0, [r7, 0x10]
+ ldrb r2, [r7, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ bl sub_800445C
+ ldrh r1, [r7, 0x18]
+ ldrh r3, [r7, 0xE]
+ adds r0, r7, 0
+ movs r2, 0
+ bl sub_81074DC
+ adds r0, r7, 0
+ bl sub_8107594
+ adds r0, r7, 0
+ movs r1, 0x1
+ bl sub_8107A74
+ mov r0, r8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08107418: .4byte nullsub_90
+_0810741C: .4byte gUnknown_3005098
+_08107420: .4byte gUnknown_3005E60
+_08107424: .4byte 0xfffc0fff
+ thumb_func_end sub_8107348
+
+ thumb_func_start sub_8107428
+sub_8107428: @ 8107428
+ push {r4-r7,lr}
+ sub sp, 0x18
+ adds r4, r0, 0
+ adds r6, r1, 0
+ lsls r2, 24
+ lsrs r7, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ mov r12, r3
+ ldr r5, _08107490 @ =gUnknown_3005E60
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0
+ beq _08107494
+ add r1, sp, 0x14
+ ldr r2, [r5]
+ lsls r0, r2, 24
+ lsrs r0, 28
+ movs r3, 0
+ strb r0, [r1]
+ lsls r0, r2, 28
+ lsrs r0, 28
+ strb r0, [r1, 0x1]
+ lsls r0, r2, 20
+ lsrs r0, 28
+ strb r0, [r1, 0x2]
+ ldrb r0, [r4, 0x10]
+ lsls r1, r2, 1
+ lsrs r1, 25
+ lsls r2, 14
+ lsrs r2, 26
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ add r2, sp, 0x14
+ str r2, [sp, 0x8]
+ movs r2, 0x1
+ negs r2, r2
+ str r2, [sp, 0xC]
+ str r6, [sp, 0x10]
+ adds r2, r7, 0
+ mov r3, r12
+ bl sub_812E5A4
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r5, 0x3]
+ b _081074D2
+ .align 2, 0
+_08107490: .4byte gUnknown_3005E60
+_08107494:
+ add r2, sp, 0x14
+ ldrb r1, [r4, 0x15]
+ lsls r0, r1, 28
+ lsrs r0, 28
+ strb r0, [r2]
+ ldrb r0, [r4, 0x14]
+ lsrs r0, 4
+ strb r0, [r2, 0x1]
+ adds r0, r2, 0
+ lsls r1, 24
+ lsrs r1, 28
+ strb r1, [r0, 0x2]
+ ldrb r0, [r4, 0x10]
+ ldrb r1, [r4, 0x17]
+ lsls r1, 26
+ lsrs r1, 26
+ ldrb r2, [r4, 0x16]
+ lsls r2, 29
+ lsrs r2, 29
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ add r2, sp, 0x14
+ str r2, [sp, 0x8]
+ movs r2, 0x1
+ negs r2, r2
+ str r2, [sp, 0xC]
+ str r6, [sp, 0x10]
+ adds r2, r7, 0
+ mov r3, r12
+ bl sub_812E5A4
+_081074D2:
+ add sp, 0x18
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107428
+
+ thumb_func_start sub_81074DC
+sub_81074DC: @ 81074DC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r9, r1
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp]
+ lsls r3, 16
+ lsrs r3, 16
+ mov r10, r3
+ ldrb r0, [r4, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F79D8
+ ldrb r1, [r4, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ movs r0, 0
+ mov r8, r0
+ cmp r8, r10
+ bge _08107584
+_0810751E:
+ ldr r0, [r4]
+ mov r2, r9
+ lsls r1, r2, 3
+ adds r0, r1, r0
+ ldr r2, [r0, 0x4]
+ movs r0, 0x3
+ negs r0, r0
+ adds r5, r1, 0
+ cmp r2, r0
+ beq _08107536
+ ldrb r6, [r4, 0x12]
+ b _08107538
+_08107536:
+ ldrb r6, [r4, 0x11]
+_08107538:
+ ldr r0, [sp]
+ add r0, r8
+ ldr r2, [sp, 0x4]
+ adds r1, r0, 0
+ muls r1, r2
+ ldrb r0, [r4, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r0, r1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ adds r7, r2, 0
+ ldr r3, [r4, 0x8]
+ cmp r3, 0
+ beq _08107562
+ ldrb r0, [r4, 0x10]
+ ldr r1, [r4]
+ adds r1, r5, r1
+ ldr r1, [r1, 0x4]
+ bl _call_via_r3
+_08107562:
+ ldr r0, [r4]
+ adds r0, r5, r0
+ ldr r1, [r0]
+ adds r0, r4, 0
+ adds r2, r6, 0
+ adds r3, r7, 0
+ bl sub_8107428
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ movs r0, 0x1
+ add r8, r0
+ cmp r8, r10
+ blt _0810751E
+_08107584:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81074DC
+
+ thumb_func_start sub_8107594
+sub_8107594: @ 8107594
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ ldrb r0, [r6, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F79D8
+ ldrb r1, [r6, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r6, 0x13]
+ mov r8, r1
+ ldrh r1, [r6, 0x1A]
+ muls r1, r0
+ ldrb r0, [r6, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ adds r0, r1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r6, 0x17]
+ lsrs r0, 6
+ cmp r0, 0x1
+ beq _08107680
+ cmp r0, 0x1
+ bgt _081075DA
+ cmp r0, 0
+ beq _081075E4
+ b _08107680
+_081075DA:
+ cmp r0, 0x2
+ beq _081075F8
+ cmp r0, 0x3
+ beq _08107640
+ b _08107680
+_081075E4:
+ ldr r1, _081075F4 @ =gUnknown_841623B
+ adds r0, r6, 0
+ mov r2, r8
+ adds r3, r7, 0
+ bl sub_8107428
+ b _08107680
+ .align 2, 0
+_081075F4: .4byte gUnknown_841623B
+_081075F8:
+ ldrb r0, [r6, 0x1E]
+ cmp r0, 0xFF
+ bne _08107608
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_810768C
+ strb r0, [r6, 0x1E]
+_08107608:
+ ldrb r5, [r6, 0x1E]
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x1
+ bl sub_8004950
+ adds r4, r0, 0
+ lsls r4, 19
+ ldr r0, _0810763C @ =0xffff0000
+ adds r4, r0
+ lsrs r4, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x2
+ bl sub_8004950
+ adds r2, r0, 0
+ lsls r2, 3
+ adds r2, r7
+ subs r2, 0x1
+ lsls r2, 16
+ lsrs r2, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r3, 0
+ bl sub_8133CAC
+ b _08107680
+ .align 2, 0
+_0810763C: .4byte 0xffff0000
+_08107640:
+ ldrb r0, [r6, 0x1E]
+ cmp r0, 0xFF
+ bne _08107650
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_810768C
+ strb r0, [r6, 0x1E]
+_08107650:
+ ldrb r5, [r6, 0x1E]
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x1
+ bl sub_8004950
+ adds r4, r0, 0
+ lsls r4, 3
+ add r4, r8
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x2
+ bl sub_8004950
+ adds r2, r0, 0
+ lsls r2, 3
+ adds r2, r7
+ lsls r2, 16
+ lsrs r2, 16
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r3, 0x1
+ bl sub_8133CAC
+_08107680:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107594
+
+ thumb_func_start sub_810768C
+sub_810768C: @ 810768C
+ push {r4,r5,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ adds r5, r1, 0
+ mov r1, sp
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0xA0
+ strb r0, [r1, 0x1]
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x3
+ bl sub_8004950
+ mov r1, sp
+ lsls r0, 3
+ adds r0, 0x2
+ strh r0, [r1, 0x2]
+ ldrb r0, [r4, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F79D8
+ mov r1, sp
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x2
+ strh r0, [r1, 0x4]
+ movs r0, 0x80
+ lsls r0, 7
+ strh r0, [r1, 0x6]
+ ldr r0, _081076E8 @ =0x0000ffff
+ strh r0, [r1, 0x8]
+ movs r0, 0xF
+ strb r0, [r1, 0xA]
+ mov r0, sp
+ adds r1, r5, 0
+ bl sub_8133C90
+ lsls r0, 24
+ lsrs r0, 24
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081076E8: .4byte 0x0000ffff
+ thumb_func_end sub_810768C
+
+ thumb_func_start sub_81076EC
+sub_81076EC: @ 81076EC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ adds r7, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ ldrb r1, [r7, 0x17]
+ lsrs r0, r1, 6
+ cmp r0, 0
+ bne _08107768
+ lsls r0, r1, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F79D8
+ adds r4, r0, 0
+ ldrb r0, [r7, 0x16]
+ lsls r0, 26
+ lsrs r0, 29
+ adds r4, r0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r7, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0
+ bl sub_80F7AC0
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldrb r0, [r7, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F7AC0
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r6, [r7, 0x10]
+ ldrb r2, [r7, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ ldrb r2, [r7, 0x13]
+ mov r3, r8
+ muls r3, r4
+ adds r4, r3, 0
+ ldrb r3, [r7, 0x14]
+ lsls r3, 28
+ lsrs r3, 28
+ adds r3, r4
+ lsls r3, 16
+ lsrs r3, 16
+ str r5, [sp]
+ str r0, [sp, 0x4]
+ adds r0, r6, 0
+ bl sub_8004378
+_08107768:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81076EC
+
+ thumb_func_start sub_8107774
+sub_8107774: @ 8107774
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ ldrh r3, [r4, 0x1A]
+ ldrh r5, [r4, 0x18]
+ cmp r1, 0
+ bne _081077E8
+ ldrh r0, [r4, 0xE]
+ cmp r0, 0x1
+ bne _0810778C
+ movs r2, 0
+ b _0810779E
+_0810778C:
+ ldrh r0, [r4, 0xE]
+ lsrs r2, r0, 1
+ movs r1, 0x1
+ ands r1, r0
+ adds r2, r1
+ subs r0, r2
+ subs r0, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+_0810779E:
+ cmp r5, 0
+ bne _081077C4
+ cmp r3, 0
+ beq _0810782A
+ ldr r1, [r4]
+ movs r2, 0x3
+ negs r2, r2
+_081077AC:
+ subs r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ cmp r0, r2
+ bne _0810782E
+ cmp r3, 0
+ bne _081077AC
+ b _0810782A
+_081077C4:
+ cmp r3, r2
+ bls _081077E4
+ ldr r1, [r4]
+ movs r6, 0x3
+ negs r6, r6
+_081077CE:
+ subs r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ cmp r0, r6
+ bne _0810782E
+ cmp r3, r2
+ bhi _081077CE
+_081077E4:
+ subs r0, r5, 0x1
+ b _08107856
+_081077E8:
+ ldrh r0, [r4, 0xE]
+ cmp r0, 0x1
+ bne _081077F2
+ movs r2, 0
+ b _081077FC
+_081077F2:
+ ldrh r0, [r4, 0xE]
+ lsrs r2, r0, 1
+ movs r1, 0x1
+ ands r1, r0
+ adds r2, r1
+_081077FC:
+ adds r1, r0, 0
+ ldrh r0, [r4, 0xC]
+ subs r0, r1
+ cmp r5, r0
+ bne _08107834
+ subs r0, r1, 0x1
+ cmp r3, r0
+ bge _0810782A
+ ldr r2, [r4]
+ movs r6, 0x3
+ negs r6, r6
+ adds r1, r0, 0
+_08107814:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r2
+ ldr r0, [r0, 0x4]
+ cmp r0, r6
+ bne _0810782E
+ cmp r3, r1
+ blt _08107814
+_0810782A:
+ movs r0, 0
+ b _0810785C
+_0810782E:
+ strh r3, [r4, 0x1A]
+ movs r0, 0x1
+ b _0810785C
+_08107834:
+ cmp r3, r2
+ bcs _08107854
+ ldr r1, [r4]
+ movs r6, 0x3
+ negs r6, r6
+_0810783E:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ adds r0, r5, r3
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ cmp r0, r6
+ bne _0810782E
+ cmp r3, r2
+ bcc _0810783E
+_08107854:
+ adds r0, r5, 0x1
+_08107856:
+ strh r2, [r4, 0x1A]
+ strh r0, [r4, 0x18]
+ movs r0, 0x2
+_0810785C:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8107774
+
+ thumb_func_start sub_8107864
+sub_8107864: @ 8107864
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ adds r7, r5, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ ldrh r0, [r6, 0xE]
+ cmp r5, r0
+ bcc _0810789E
+ ldrb r0, [r6, 0x10]
+ ldrb r2, [r6, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ bl sub_800445C
+ ldrh r1, [r6, 0x18]
+ ldrh r3, [r6, 0xE]
+ adds r0, r6, 0
+ movs r2, 0
+ bl sub_81074DC
+ b _0810798E
+_0810789E:
+ ldrb r0, [r6, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ movs r1, 0x1
+ bl sub_80F79D8
+ ldrb r1, [r6, 0x16]
+ lsls r1, 26
+ lsrs r1, 29
+ adds r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r1, r8
+ cmp r1, 0
+ bne _08107930
+ ldrb r0, [r6, 0x10]
+ adds r2, r5, 0
+ muls r2, r4
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r1, [r6, 0x15]
+ lsls r1, 28
+ lsrs r3, r1, 4
+ orrs r3, r1
+ lsrs r3, 24
+ movs r1, 0x1
+ bl sub_80044A8
+ ldrh r1, [r6, 0x18]
+ adds r0, r6, 0
+ movs r2, 0
+ adds r3, r5, 0
+ bl sub_81074DC
+ ldrh r0, [r6, 0xE]
+ adds r1, r0, 0
+ muls r1, r4
+ adds r0, r1, 0
+ ldrb r4, [r6, 0x14]
+ lsls r4, 28
+ lsrs r4, 28
+ adds r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x3
+ bl sub_8004950
+ adds r5, r0, 0
+ lsls r5, 19
+ lsrs r5, 16
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x4
+ bl sub_8004950
+ lsls r0, 3
+ subs r0, r4
+ lsls r0, 16
+ lsrs r0, 16
+ ldrb r3, [r6, 0x10]
+ ldrb r2, [r6, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ str r5, [sp]
+ str r0, [sp, 0x4]
+ adds r0, r3, 0
+ movs r2, 0
+ adds r3, r4, 0
+ bl sub_8004378
+ b _0810798E
+_08107930:
+ ldrb r0, [r6, 0x10]
+ adds r2, r7, 0
+ muls r2, r4
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r1, [r6, 0x15]
+ lsls r1, 28
+ lsrs r3, r1, 4
+ orrs r3, r1
+ lsrs r3, 24
+ movs r1, 0
+ bl sub_80044A8
+ ldrh r2, [r6, 0xE]
+ subs r2, r7
+ ldrh r1, [r6, 0x18]
+ adds r1, r2
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ adds r0, r6, 0
+ adds r3, r7, 0
+ bl sub_81074DC
+ ldrb r0, [r6, 0x10]
+ movs r1, 0x3
+ bl sub_8004950
+ lsls r0, 19
+ lsrs r0, 16
+ ldrb r3, [r6, 0x10]
+ ldrb r2, [r6, 0x15]
+ lsls r2, 28
+ lsrs r1, r2, 4
+ orrs r1, r2
+ lsrs r1, 24
+ str r0, [sp]
+ ldrb r0, [r6, 0x14]
+ lsls r0, 28
+ lsrs r0, 28
+ str r0, [sp, 0x4]
+ adds r0, r3, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_8004378
+_0810798E:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107864
+
+ thumb_func_start sub_810799C
+sub_810799C: @ 810799C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ ldrh r0, [r4, 0x1A]
+ mov r10, r0
+ movs r7, 0
+ movs r5, 0
+ movs r0, 0
+ cmp r7, r8
+ bcs _08107A04
+_081079CA:
+ adds r6, r0, 0x1
+ b _081079EA
+_081079CE:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrh r0, [r4, 0x18]
+ ldrh r1, [r4, 0x1A]
+ adds r0, r1
+ ldr r1, [r4]
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, [r0, 0x4]
+ movs r0, 0x3
+ negs r0, r0
+ cmp r1, r0
+ bne _081079FC
+_081079EA:
+ adds r0, r4, 0
+ mov r1, r9
+ bl sub_8107774
+ lsls r0, 24
+ lsrs r0, 24
+ orrs r5, r0
+ cmp r0, 0x2
+ beq _081079CE
+_081079FC:
+ lsls r0, r6, 24
+ lsrs r0, 24
+ cmp r0, r8
+ bcc _081079CA
+_08107A04:
+ ldr r0, [sp]
+ cmp r0, 0
+ beq _08107A62
+ cmp r5, 0x1
+ beq _08107A1A
+ cmp r5, 0x1
+ ble _08107A16
+ cmp r5, 0x3
+ ble _08107A3A
+_08107A16:
+ movs r0, 0x1
+ b _08107A64
+_08107A1A:
+ adds r0, r4, 0
+ mov r1, r10
+ bl sub_81076EC
+ adds r0, r4, 0
+ bl sub_8107594
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8107A74
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ bl sub_8003F20
+ b _08107A62
+_08107A3A:
+ adds r0, r4, 0
+ mov r1, r10
+ bl sub_81076EC
+ adds r0, r4, 0
+ adds r1, r7, 0
+ mov r2, r9
+ bl sub_8107864
+ adds r0, r4, 0
+ bl sub_8107594
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8107A74
+ ldrb r0, [r4, 0x10]
+ movs r1, 0x2
+ bl sub_8003F20
+_08107A62:
+ movs r0, 0
+_08107A64:
+ 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_810799C
+
+ thumb_func_start sub_8107A74
+sub_8107A74: @ 8107A74
+ push {r4,lr}
+ adds r2, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r3, [r2, 0x4]
+ cmp r3, 0
+ beq _08107A96
+ ldrh r0, [r2, 0x18]
+ ldrh r1, [r2, 0x1A]
+ adds r0, r1
+ ldr r1, [r2]
+ lsls r0, 3
+ adds r0, r1
+ ldr r0, [r0, 0x4]
+ adds r1, r4, 0
+ bl _call_via_r3
+_08107A96:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107A74
+
+ thumb_func_start sub_8107A9C
+sub_8107A9C: @ 8107A9C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r6, _08107AE8 @ =gUnknown_3005E60
+ movs r5, 0xF
+ ands r0, r5
+ ldrb r3, [r6]
+ mov r8, r3
+ movs r4, 0x10
+ negs r4, r4
+ adds r3, r4, 0
+ mov r7, r8
+ ands r3, r7
+ orrs r3, r0
+ lsrs r1, 20
+ ands r3, r5
+ orrs r3, r1
+ strb r3, [r6]
+ ands r2, r5
+ ldrb r0, [r6, 0x1]
+ ands r4, r0
+ orrs r4, r2
+ strb r4, [r6, 0x1]
+ ldrb r0, [r6, 0x3]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r6, 0x3]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08107AE8: .4byte gUnknown_3005E60
+ thumb_func_end sub_8107A9C
+
+ thumb_func_start sub_8107AEC
+sub_8107AEC: @ 8107AEC
+ push {lr}
+ lsls r1, 24
+ cmp r1, 0
+ bne _08107AFA
+ movs r0, 0x5
+ bl sub_80722CC
+_08107AFA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107AEC
+
+ thumb_func_start sub_8107B00
+sub_8107B00: @ 8107B00
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08107B24 @ =gUnknown_3005098
+ adds r2, r1, r0
+ cmp r3, 0x10
+ bhi _08107BC8
+ lsls r0, r3, 2
+ ldr r1, _08107B28 @ =_08107B2C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08107B24: .4byte gUnknown_3005098
+_08107B28: .4byte _08107B2C
+ .align 2, 0
+_08107B2C:
+ .4byte _08107B70
+ .4byte _08107B70
+ .4byte _08107B74
+ .4byte _08107B78
+ .4byte _08107B7C
+ .4byte _08107B80
+ .4byte _08107B84
+ .4byte _08107B88
+ .4byte _08107B8C
+ .4byte _08107B90
+ .4byte _08107B96
+ .4byte _08107B9E
+ .4byte _08107BA4
+ .4byte _08107BAC
+ .4byte _08107BB4
+ .4byte _08107BBA
+ .4byte _08107BC2
+_08107B70:
+ ldr r0, [r2, 0x4]
+ b _08107BCC
+_08107B74:
+ ldrh r0, [r2, 0xC]
+ b _08107BCC
+_08107B78:
+ ldrh r0, [r2, 0xE]
+ b _08107BCC
+_08107B7C:
+ ldrb r0, [r2, 0x10]
+ b _08107BCC
+_08107B80:
+ ldrb r0, [r2, 0x11]
+ b _08107BCC
+_08107B84:
+ ldrb r0, [r2, 0x12]
+ b _08107BCC
+_08107B88:
+ ldrb r0, [r2, 0x13]
+ b _08107BCC
+_08107B8C:
+ ldrb r0, [r2, 0x14]
+ b _08107B98
+_08107B90:
+ ldrb r0, [r2, 0x14]
+ lsrs r0, 4
+ b _08107BCC
+_08107B96:
+ ldrb r0, [r2, 0x15]
+_08107B98:
+ lsls r0, 28
+ lsrs r0, 28
+ b _08107BCC
+_08107B9E:
+ ldrb r0, [r2, 0x15]
+ lsrs r0, 4
+ b _08107BCC
+_08107BA4:
+ ldrb r0, [r2, 0x16]
+ lsls r0, 29
+ lsrs r0, 29
+ b _08107BCC
+_08107BAC:
+ ldrb r0, [r2, 0x16]
+ lsls r0, 26
+ lsrs r0, 29
+ b _08107BCC
+_08107BB4:
+ ldrb r0, [r2, 0x16]
+ lsrs r0, 6
+ b _08107BCC
+_08107BBA:
+ ldrb r0, [r2, 0x17]
+ lsls r0, 26
+ lsrs r0, 26
+ b _08107BCC
+_08107BC2:
+ ldrb r0, [r2, 0x17]
+ lsrs r0, 6
+ b _08107BCC
+_08107BC8:
+ movs r0, 0x1
+ negs r0, r0
+_08107BCC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8107B00
+
+ thumb_func_start sub_8107BD0
+sub_8107BD0: @ 8107BD0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08107BF4 @ =gUnknown_3005098
+ adds r3, r1, r0
+ cmp r4, 0x10
+ bhi _08107CD0
+ lsls r0, r4, 2
+ ldr r1, _08107BF8 @ =_08107BFC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08107BF4: .4byte gUnknown_3005098
+_08107BF8: .4byte _08107BFC
+ .align 2, 0
+_08107BFC:
+ .4byte _08107C40
+ .4byte _08107C40
+ .4byte _08107C44
+ .4byte _08107C48
+ .4byte _08107C4C
+ .4byte _08107C50
+ .4byte _08107C54
+ .4byte _08107C58
+ .4byte _08107C5C
+ .4byte _08107C68
+ .4byte _08107C76
+ .4byte _08107C82
+ .4byte _08107C90
+ .4byte _08107C9C
+ .4byte _08107CAA
+ .4byte _08107CB8
+ .4byte _08107CC4
+_08107C40:
+ str r2, [r3, 0x4]
+ b _08107CD0
+_08107C44:
+ strh r2, [r3, 0xC]
+ b _08107CD0
+_08107C48:
+ strh r2, [r3, 0xE]
+ b _08107CD0
+_08107C4C:
+ strb r2, [r3, 0x10]
+ b _08107CD0
+_08107C50:
+ strb r2, [r3, 0x11]
+ b _08107CD0
+_08107C54:
+ strb r2, [r3, 0x12]
+ b _08107CD0
+_08107C58:
+ strb r2, [r3, 0x13]
+ b _08107CD0
+_08107C5C:
+ movs r0, 0xF
+ ands r2, r0
+ ldrb r1, [r3, 0x14]
+ movs r0, 0x10
+ negs r0, r0
+ b _08107C6E
+_08107C68:
+ lsls r2, 4
+ ldrb r1, [r3, 0x14]
+ movs r0, 0xF
+_08107C6E:
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0x14]
+ b _08107CD0
+_08107C76:
+ movs r0, 0xF
+ ands r2, r0
+ ldrb r1, [r3, 0x15]
+ movs r0, 0x10
+ negs r0, r0
+ b _08107C88
+_08107C82:
+ lsls r2, 4
+ ldrb r1, [r3, 0x15]
+ movs r0, 0xF
+_08107C88:
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0x15]
+ b _08107CD0
+_08107C90:
+ movs r0, 0x7
+ ands r2, r0
+ ldrb r1, [r3, 0x16]
+ movs r0, 0x8
+ negs r0, r0
+ b _08107CB0
+_08107C9C:
+ movs r0, 0x7
+ ands r2, r0
+ lsls r2, 3
+ ldrb r1, [r3, 0x16]
+ movs r0, 0x39
+ negs r0, r0
+ b _08107CB0
+_08107CAA:
+ lsls r2, 6
+ ldrb r1, [r3, 0x16]
+ movs r0, 0x3F
+_08107CB0:
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0x16]
+ b _08107CD0
+_08107CB8:
+ movs r0, 0x3F
+ ands r2, r0
+ ldrb r1, [r3, 0x17]
+ movs r0, 0x40
+ negs r0, r0
+ b _08107CCA
+_08107CC4:
+ lsls r2, 6
+ ldrb r1, [r3, 0x17]
+ movs r0, 0x3F
+_08107CCA:
+ ands r0, r1
+ orrs r0, r2
+ strb r0, [r3, 0x17]
+_08107CD0:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107BD0
+
+ thumb_func_start sub_8107CD8
+sub_8107CD8: @ 8107CD8
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_80971CC
+ adds r1, r4, 0
+ movs r2, 0x20
+ bl sub_80703EC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107CD8
+
+ thumb_func_start sub_8107CF8
+sub_8107CF8: @ 8107CF8
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ adds r0, r1, 0
+ adds r1, r2, 0
+ adds r4, r3, 0
+ ldr r5, [sp, 0x18]
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ movs r2, 0x1
+ bl sub_8097054
+ adds r1, r0, 0
+ movs r0, 0x20
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ adds r0, r6, 0
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl sub_80041B8
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8107CF8
+
+ thumb_func_start sub_8107D38
+sub_8107D38: @ 8107D38
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0
+ beq _08107D4A
+ cmp r1, 0x1
+ beq _08107D54
+_08107D4A:
+ ldr r0, _08107D50 @ =gUnknown_8E95D9C
+ b _08107D56
+ .align 2, 0
+_08107D50: .4byte gUnknown_8E95D9C
+_08107D54:
+ ldr r0, _08107D64 @ =gUnknown_8E95DBC
+_08107D56:
+ adds r1, r2, 0
+ movs r2, 0x20
+ bl sub_80703EC
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08107D64: .4byte gUnknown_8E95DBC
+ thumb_func_end sub_8107D38
+
+ thumb_func_start sub_8107D68
+sub_8107D68: @ 8107D68
+ push {r4,r5,lr}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 16
+ lsrs r3, 16
+ ldr r4, _08107DAC @ =gUnknown_8452C94
+ lsrs r1, 22
+ adds r1, r4
+ ldrh r5, [r1, 0x2]
+ lsls r5, 5
+ ldr r4, _08107DB0 @ =gUnknown_8E95DDC
+ adds r5, r4
+ movs r4, 0x80
+ str r4, [sp]
+ str r4, [sp, 0x4]
+ str r2, [sp, 0x8]
+ str r3, [sp, 0xC]
+ ldrb r2, [r1]
+ str r2, [sp, 0x10]
+ ldrb r1, [r1, 0x1]
+ str r1, [sp, 0x14]
+ adds r1, r5, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_80041F0
+ add sp, 0x18
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08107DAC: .4byte gUnknown_8452C94
+_08107DB0: .4byte gUnknown_8E95DDC
+ thumb_func_end sub_8107D68
+
+ .align 2, 0 @ Don't pad with nop.