summaryrefslogtreecommitdiff
path: root/asm/script_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/script_menu.s
first commit
Diffstat (limited to 'asm/script_menu.s')
-rw-r--r--asm/script_menu.s2058
1 files changed, 2058 insertions, 0 deletions
diff --git a/asm/script_menu.s b/asm/script_menu.s
new file mode 100644
index 000000000..75a043478
--- /dev/null
+++ b/asm/script_menu.s
@@ -0,0 +1,2058 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_809C954
+sub_809C954: @ 809C954
+ push {lr}
+ adds r1, r0, 0
+ movs r0, 0x1
+ movs r2, 0
+ bl sub_8005ED4
+ adds r1, r0, 0
+ adds r0, r1, 0x7
+ cmp r0, 0
+ bge _0809C96A
+ adds r0, 0x7
+_0809C96A:
+ lsls r0, 13
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C954
+
+ thumb_func_start sub_809C974
+sub_809C974: @ 809C974
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ ldr r0, [r7]
+ bl sub_809C954
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0x1
+ cmp r5, r4
+ bcs _0809C9AA
+_0809C98C:
+ lsls r0, r5, 3
+ adds r0, r7
+ ldr r0, [r0]
+ bl sub_809C954
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ bcs _0809C9A0
+ adds r6, r0, 0
+_0809C9A0:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, r4
+ bcc _0809C98C
+_0809C9AA:
+ adds r0, r6, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C974
+
+ thumb_func_start sub_809C9B4
+sub_809C9B4: @ 809C9B4
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r2, 24
+ lsrs r5, r2, 24
+ lsls r3, 24
+ lsrs r4, r3, 24
+ ldr r0, _0809C9F0 @ =sub_809CC98
+ bl sub_8077650
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809C9F8
+ ldr r0, _0809C9F4 @ =gUnknown_20370D0
+ movs r1, 0xFF
+ strh r1, [r0]
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r7, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl sub_809CA64
+ movs r0, 0x1
+ b _0809C9FA
+ .align 2, 0
+_0809C9F0: .4byte sub_809CC98
+_0809C9F4: .4byte gUnknown_20370D0
+_0809C9F8:
+ movs r0, 0
+_0809C9FA:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809C9B4
+
+ thumb_func_start sub_809CA04
+sub_809CA04: @ 809CA04
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ ldr r4, [sp, 0x1C]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ lsls r3, 24
+ lsrs r5, r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _0809CA4C @ =sub_809CC98
+ bl sub_8077650
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CA54
+ ldr r1, _0809CA50 @ =gUnknown_20370D0
+ movs r0, 0xFF
+ strh r0, [r1]
+ str r4, [sp]
+ mov r0, r8
+ adds r1, r7, 0
+ adds r2, r6, 0
+ adds r3, r5, 0
+ bl sub_809CA64
+ movs r0, 0x1
+ b _0809CA56
+ .align 2, 0
+_0809CA4C: .4byte sub_809CC98
+_0809CA50: .4byte gUnknown_20370D0
+_0809CA54:
+ movs r0, 0
+_0809CA56:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809CA04
+
+ thumb_func_start sub_809CA64
+sub_809CA64: @ 809CA64
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ ldr r4, [sp, 0x40]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0x14]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ lsls r3, 24
+ lsrs r3, 24
+ str r3, [sp, 0x18]
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp, 0x1C]
+ movs r0, 0x2
+ ands r0, r3
+ cmp r0, 0
+ bne _0809CAA6
+ ldr r0, _0809CB54 @ =sub_809D6D4
+ bl sub_81119D4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CBA2
+_0809CAA6:
+ movs r0, 0x1
+ ldr r1, [sp, 0x18]
+ ands r1, r0
+ str r1, [sp, 0x18]
+ ldr r1, _0809CB58 @ =gUnknown_83E04B0
+ mov r2, r10
+ lsls r0, r2, 3
+ adds r0, r1
+ ldrb r7, [r0, 0x4]
+ ldr r0, [r0]
+ mov r8, r0
+ movs r6, 0
+ cmp r6, r7
+ bge _0809CADE
+ mov r5, r8
+ adds r4, r7, 0
+_0809CAC6:
+ ldr r1, [r5]
+ movs r0, 0x2
+ movs r2, 0
+ bl sub_8005ED4
+ cmp r0, r6
+ ble _0809CAD6
+ adds r6, r0, 0
+_0809CAD6:
+ adds r5, 0x8
+ subs r4, 0x1
+ cmp r4, 0
+ bne _0809CAC6
+_0809CADE:
+ adds r0, r6, 0
+ adds r0, 0x9
+ cmp r0, 0
+ bge _0809CAE8
+ adds r0, 0x7
+_0809CAE8:
+ asrs r0, 3
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r1, r9
+ adds r0, r1, r5
+ cmp r0, 0x1C
+ ble _0809CB02
+ movs r0, 0x1C
+ subs r0, r5
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0809CB02:
+ adds r0, r7, 0
+ bl sub_809CBB4
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ mov r0, r9
+ ldr r1, [sp, 0x14]
+ adds r2, r5, 0
+ bl sub_809D654
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80F7750
+ mov r2, r10
+ cmp r2, 0x1E
+ beq _0809CB32
+ cmp r2, 0xD
+ beq _0809CB32
+ cmp r2, 0x29
+ bne _0809CB5C
+_0809CB32:
+ movs r0, 0xE
+ str r0, [sp]
+ str r7, [sp, 0x4]
+ mov r0, r8
+ str r0, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ movs r0, 0x2
+ str r0, [sp, 0x10]
+ adds r0, r5, 0
+ movs r1, 0x2
+ movs r2, 0x8
+ movs r3, 0x2
+ bl sub_810FBE8
+ b _0809CB7A
+ .align 2, 0
+_0809CB54: .4byte sub_809D6D4
+_0809CB58: .4byte gUnknown_83E04B0
+_0809CB5C:
+ movs r0, 0xE
+ str r0, [sp]
+ str r7, [sp, 0x4]
+ mov r1, r8
+ str r1, [sp, 0x8]
+ movs r0, 0
+ str r0, [sp, 0xC]
+ movs r0, 0x2
+ str r0, [sp, 0x10]
+ adds r0, r5, 0
+ movs r1, 0x2
+ movs r2, 0x8
+ movs r3, 0x2
+ bl sub_810FBE8
+_0809CB7A:
+ movs r0, 0xE
+ str r0, [sp]
+ str r7, [sp, 0x4]
+ ldr r2, [sp, 0x1C]
+ str r2, [sp, 0x8]
+ adds r0, r5, 0
+ movs r1, 0x2
+ movs r2, 0
+ movs r3, 0x2
+ bl sub_810F7D8
+ ldr r0, [sp, 0x18]
+ adds r1, r7, 0
+ adds r2, r5, 0
+ mov r3, r10
+ bl sub_809CC18
+ movs r0, 0
+ bl sub_80F67A4
+_0809CBA2:
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809CA64
+
+ thumb_func_start sub_809CBB4
+sub_809CBB4: @ 809CBB4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x8
+ bhi _0809CC10
+ lsls r0, 2
+ ldr r1, _0809CBC8 @ =_0809CBCC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0809CBC8: .4byte _0809CBCC
+ .align 2, 0
+_0809CBCC:
+ .4byte _0809CC10
+ .4byte _0809CBF0
+ .4byte _0809CBF4
+ .4byte _0809CBF8
+ .4byte _0809CBFC
+ .4byte _0809CC00
+ .4byte _0809CC04
+ .4byte _0809CC08
+ .4byte _0809CC0C
+_0809CBF0:
+ movs r0, 0x2
+ b _0809CC12
+_0809CBF4:
+ movs r0, 0x4
+ b _0809CC12
+_0809CBF8:
+ movs r0, 0x6
+ b _0809CC12
+_0809CBFC:
+ movs r0, 0x7
+ b _0809CC12
+_0809CC00:
+ movs r0, 0x9
+ b _0809CC12
+_0809CC04:
+ movs r0, 0xB
+ b _0809CC12
+_0809CC08:
+ movs r0, 0xD
+ b _0809CC12
+_0809CC0C:
+ movs r0, 0xE
+ b _0809CC12
+_0809CC10:
+ movs r0, 0x1
+_0809CC12:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809CBB4
+
+ thumb_func_start sub_809CC18
+sub_809CC18: @ 809CC18
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 24
+ lsrs r7, r2, 24
+ lsls r3, 24
+ lsrs r4, r3, 24
+ cmp r4, 0x27
+ beq _0809CC36
+ cmp r4, 0x2F
+ beq _0809CC36
+ cmp r4, 0x32
+ bne _0809CC40
+_0809CC36:
+ ldr r1, _0809CC3C @ =gUnknown_2039988
+ movs r0, 0xC
+ b _0809CC44
+ .align 2, 0
+_0809CC3C: .4byte gUnknown_2039988
+_0809CC40:
+ ldr r1, _0809CC68 @ =gUnknown_2039988
+ movs r0, 0
+_0809CC44:
+ strb r0, [r1]
+ ldr r0, _0809CC6C @ =sub_809CC98
+ movs r1, 0x50
+ bl sub_807741C
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _0809CC70 @ =gUnknown_3005090
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0, r1
+ strh r6, [r1, 0x10]
+ cmp r5, 0x3
+ bls _0809CC74
+ movs r0, 0x1
+ b _0809CC76
+ .align 2, 0
+_0809CC68: .4byte gUnknown_2039988
+_0809CC6C: .4byte sub_809CC98
+_0809CC70: .4byte gUnknown_3005090
+_0809CC74:
+ movs r0, 0
+_0809CC76:
+ strh r0, [r1, 0x12]
+ ldr r1, _0809CC94 @ =gUnknown_3005090
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ strh r7, [r0, 0x14]
+ strh r4, [r0, 0x16]
+ adds r0, r4, 0
+ bl sub_809CD48
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809CC94: .4byte gUnknown_3005090
+ thumb_func_end sub_809CC18
+
+ thumb_func_start sub_809CC98
+sub_809CC98: @ 809CC98
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _0809CCC4 @ =gUnknown_3005098
+ adds r5, r0, r1
+ ldr r0, _0809CCC8 @ =gUnknown_2037AB8
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0809CD3C
+ ldr r1, _0809CCCC @ =gUnknown_2039988
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0809CCD0
+ subs r0, 0x1
+ strb r0, [r1]
+ b _0809CD3C
+ .align 2, 0
+_0809CCC4: .4byte gUnknown_3005098
+_0809CCC8: .4byte gUnknown_2037AB8
+_0809CCCC: .4byte gUnknown_2039988
+_0809CCD0:
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0809CCDE
+ bl sub_810FA04
+ b _0809CCE2
+_0809CCDE:
+ bl sub_810F998
+_0809CCE2:
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0809CD20 @ =gUnknown_30030F0
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xC0
+ ands r0, r1
+ cmp r0, 0
+ beq _0809CCF8
+ ldrb r0, [r5, 0xE]
+ bl sub_809CD48
+_0809CCF8:
+ lsls r0, r4, 24
+ asrs r1, r0, 24
+ movs r0, 0x2
+ negs r0, r0
+ cmp r1, r0
+ beq _0809CD3C
+ adds r0, 0x1
+ cmp r1, r0
+ bne _0809CD28
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0809CD3C
+ movs r0, 0x5
+ bl sub_80722CC
+ ldr r1, _0809CD24 @ =gUnknown_20370D0
+ movs r0, 0x7F
+ strh r0, [r1]
+ b _0809CD2C
+ .align 2, 0
+_0809CD20: .4byte gUnknown_30030F0
+_0809CD24: .4byte gUnknown_20370D0
+_0809CD28:
+ ldr r0, _0809CD44 @ =gUnknown_20370D0
+ strh r1, [r0]
+_0809CD2C:
+ ldrb r0, [r5, 0xC]
+ bl sub_809D6B0
+ adds r0, r6, 0
+ bl sub_8077508
+ bl sub_8069B34
+_0809CD3C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809CD44: .4byte gUnknown_20370D0
+ thumb_func_end sub_809CC98
+
+ thumb_func_start sub_809CD48
+sub_809CD48: @ 809CD48
+ push {r4,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r0, 0
+ cmp r0, 0x2F
+ beq _0809CD78
+ cmp r0, 0x2F
+ bgt _0809CD60
+ cmp r0, 0x27
+ beq _0809CD66
+ b _0809CDE0
+_0809CD60:
+ cmp r1, 0x32
+ beq _0809CDB0
+ b _0809CDE0
+_0809CD66:
+ movs r0, 0
+ movs r1, 0x11
+ bl sub_800445C
+ ldr r4, _0809CD74 @ =gUnknown_83E072C
+ b _0809CD82
+ .align 2, 0
+_0809CD74: .4byte gUnknown_83E072C
+_0809CD78:
+ movs r0, 0
+ movs r1, 0x11
+ bl sub_800445C
+ ldr r4, _0809CDAC @ =gUnknown_83E0738
+_0809CD82:
+ bl sub_810F98C
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ ldr r2, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x2
+ movs r3, 0
+ bl sub_80F6CD0
+ b _0809CDE0
+ .align 2, 0
+_0809CDAC: .4byte gUnknown_83E0738
+_0809CDB0:
+ movs r0, 0
+ movs r1, 0x11
+ bl sub_800445C
+ ldr r4, _0809CDE8 @ =gUnknown_83E0748
+ bl sub_810F98C
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ ldr r2, [r0]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x2
+ movs r3, 0
+ bl sub_80F6CD0
+_0809CDE0:
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809CDE8: .4byte gUnknown_83E0748
+ thumb_func_end sub_809CD48
+
+ thumb_func_start sub_809CDEC
+sub_809CDEC: @ 809CDEC
+ push {r4,lr}
+ ldr r4, _0809CE04 @ =sub_809CE54
+ adds r0, r4, 0
+ bl sub_8077650
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CE08
+ movs r0, 0
+ b _0809CE28
+ .align 2, 0
+_0809CE04: .4byte sub_809CE54
+_0809CE08:
+ ldr r1, _0809CE30 @ =gUnknown_20370D0
+ movs r0, 0xFF
+ strh r0, [r1]
+ ldr r0, _0809CE34 @ =sub_809D6D4
+ bl sub_81119D4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0809CE26
+ bl sub_80F7858
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl sub_807741C
+_0809CE26:
+ movs r0, 0x1
+_0809CE28:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0809CE30: .4byte gUnknown_20370D0
+_0809CE34: .4byte sub_809D6D4
+ thumb_func_end sub_809CDEC
+
+ thumb_func_start sub_809CE38
+sub_809CE38: @ 809CE38
+ push {lr}
+ ldr r0, _0809CE48 @ =gUnknown_20370D0
+ ldrh r0, [r0]
+ cmp r0, 0xFF
+ beq _0809CE4C
+ movs r0, 0x1
+ b _0809CE4E
+ .align 2, 0
+_0809CE48: .4byte gUnknown_20370D0
+_0809CE4C:
+ movs r0, 0
+_0809CE4E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809CE38
+
+ thumb_func_start sub_809CE54
+sub_809CE54: @ 809CE54
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0809CE74 @ =gUnknown_3005090
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r1
+ ldrh r2, [r1, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x4
+ bgt _0809CE78
+ adds r0, r2, 0x1
+ strh r0, [r1, 0xC]
+ b _0809CEBC
+ .align 2, 0
+_0809CE74: .4byte gUnknown_3005090
+_0809CE78:
+ bl sub_81100C8
+ lsls r0, 24
+ asrs r1, r0, 24
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _0809CE9C
+ cmp r1, r0
+ bgt _0809CE94
+ subs r0, 0x1
+ cmp r1, r0
+ beq _0809CEBC
+ b _0809CEB2
+_0809CE94:
+ cmp r1, 0
+ beq _0809CEAC
+ cmp r1, 0x1
+ bne _0809CEB2
+_0809CE9C:
+ movs r0, 0x5
+ bl sub_80722CC
+ ldr r1, _0809CEA8 @ =gUnknown_20370D0
+ movs r0, 0
+ b _0809CEB0
+ .align 2, 0
+_0809CEA8: .4byte gUnknown_20370D0
+_0809CEAC:
+ ldr r1, _0809CEC4 @ =gUnknown_20370D0
+ movs r0, 0x1
+_0809CEB0:
+ strh r0, [r1]
+_0809CEB2:
+ adds r0, r4, 0
+ bl sub_8077508
+ bl sub_8069B34
+_0809CEBC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809CEC4: .4byte gUnknown_20370D0
+ thumb_func_end sub_809CE54
+
+ thumb_func_start sub_809CEC8
+sub_809CEC8: @ 809CEC8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ ldr r4, [sp, 0x38]
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x10]
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0x14]
+ lsls r2, 24
+ lsrs r5, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ mov r10, r3
+ lsls r4, 24
+ lsrs r7, r4, 24
+ ldr r0, _0809CF04 @ =sub_809CFDC
+ mov r9, r0
+ bl sub_8077650
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809CF08
+ movs r0, 0
+ b _0809CFBA
+ .align 2, 0
+_0809CF04: .4byte sub_809CFDC
+_0809CF08:
+ ldr r1, _0809CFCC @ =gUnknown_20370D0
+ movs r0, 0xFF
+ strh r0, [r1]
+ ldr r0, _0809CFD0 @ =sub_809D6D4
+ bl sub_81119D4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809CFB8
+ ldr r1, _0809CFD4 @ =gUnknown_83E04B0
+ lsls r0, r5, 3
+ adds r0, r1
+ ldr r1, [r0]
+ mov r8, r1
+ ldrb r4, [r0, 0x4]
+ mov r0, r8
+ adds r1, r4, 0
+ bl sub_809C974
+ adds r5, r0, 0
+ adds r5, 0x1
+ lsls r5, 24
+ lsrs r5, 24
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl __udivsi3
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ mov r0, r9
+ movs r1, 0x50
+ bl sub_807741C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0809CFD8 @ =gUnknown_3005090
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ movs r0, 0
+ mov r9, r0
+ mov r1, r10
+ strh r1, [r4, 0x10]
+ adds r2, r5, 0
+ muls r2, r7
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, r6, 25
+ lsrs r3, 24
+ ldr r0, [sp, 0x10]
+ ldr r1, [sp, 0x14]
+ bl sub_809D654
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x14]
+ movs r1, 0
+ bl sub_80F7750
+ ldrb r0, [r4, 0x14]
+ lsls r5, 27
+ lsrs r5, 24
+ str r7, [sp]
+ str r6, [sp, 0x4]
+ mov r1, r8
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r5, 0
+ movs r3, 0x10
+ bl sub_8110104
+ ldrb r0, [r4, 0x14]
+ str r5, [sp]
+ str r7, [sp, 0x4]
+ str r6, [sp, 0x8]
+ mov r1, r9
+ str r1, [sp, 0xC]
+ movs r1, 0x1
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_811030C
+ movs r0, 0
+ bl sub_80F67A4
+_0809CFB8:
+ movs r0, 0x1
+_0809CFBA:
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0809CFCC: .4byte gUnknown_20370D0
+_0809CFD0: .4byte sub_809D6D4
+_0809CFD4: .4byte gUnknown_83E04B0
+_0809CFD8: .4byte gUnknown_3005090
+ thumb_func_end sub_809CEC8
+
+ thumb_func_start sub_809CFDC
+sub_809CFDC: @ 809CFDC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _0809D018 @ =gUnknown_3005098
+ adds r5, r0, r1
+ bl sub_8110650
+ lsls r0, 24
+ asrs r1, r0, 24
+ movs r0, 0x2
+ negs r0, r0
+ cmp r1, r0
+ beq _0809D034
+ adds r0, 0x1
+ cmp r1, r0
+ bne _0809D020
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0809D034
+ movs r0, 0x5
+ bl sub_80722CC
+ ldr r1, _0809D01C @ =gUnknown_20370D0
+ movs r0, 0x7F
+ strh r0, [r1]
+ b _0809D024
+ .align 2, 0
+_0809D018: .4byte gUnknown_3005098
+_0809D01C: .4byte gUnknown_20370D0
+_0809D020:
+ ldr r0, _0809D03C @ =gUnknown_20370D0
+ strh r1, [r0]
+_0809D024:
+ ldrb r0, [r5, 0xC]
+ bl sub_809D6B0
+ adds r0, r4, 0
+ bl sub_8077508
+ bl sub_8069B34
+_0809D034:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809D03C: .4byte gUnknown_20370D0
+ thumb_func_end sub_809CFDC
+
+ thumb_func_start sub_809D040
+sub_809D040: @ 809D040
+ push {lr}
+ ldr r0, _0809D060 @ =sub_809CC98
+ bl sub_8077650
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809D068
+ ldr r1, _0809D064 @ =gUnknown_20370D0
+ movs r0, 0xFF
+ strh r0, [r1]
+ bl sub_809D070
+ movs r0, 0x1
+ b _0809D06A
+ .align 2, 0
+_0809D060: .4byte sub_809CC98
+_0809D064: .4byte gUnknown_20370D0
+_0809D068:
+ movs r0, 0
+_0809D06A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D040
+
+ thumb_func_start sub_809D070
+sub_809D070: @ 809D070
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ movs r0, 0x2
+ movs r1, 0
+ bl sub_80F7AC0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0x2
+ movs r1, 0x1
+ bl sub_80F79D8
+ ldr r0, _0809D11C @ =gUnknown_8417BB6
+ bl sub_809C954
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xA
+ bgt _0809D0A0
+ cmp r0, 0x9
+ bge _0809D0AE
+_0809D0A0:
+ ldr r0, _0809D120 @ =0x00000829
+ bl sub_806E6D0
+ lsls r0, 24
+ movs r4, 0xD
+ cmp r0, 0
+ beq _0809D0B0
+_0809D0AE:
+ movs r4, 0xE
+_0809D0B0:
+ ldr r0, _0809D124 @ =0x0000082c
+ bl sub_806E6D0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _0809D134
+ movs r0, 0x5
+ mov r9, r0
+ movs r0, 0
+ movs r1, 0
+ adds r2, r4, 0
+ movs r3, 0xA
+ bl sub_809D654
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_80F7750
+ ldr r2, _0809D128 @ =gUnknown_8417BD3
+ movs r0, 0x22
+ str r0, [sp]
+ movs r5, 0xFF
+ str r5, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+ ldr r2, _0809D12C @ =gUnknown_8417BBE
+ movs r0, 0x32
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+ ldr r2, _0809D130 @ =gUnknown_8417BCB
+ movs r0, 0x42
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+ b _0809D1A8
+ .align 2, 0
+_0809D11C: .4byte gUnknown_8417BB6
+_0809D120: .4byte 0x00000829
+_0809D124: .4byte 0x0000082c
+_0809D128: .4byte gUnknown_8417BD3
+_0809D12C: .4byte gUnknown_8417BBE
+_0809D130: .4byte gUnknown_8417BCB
+_0809D134:
+ ldr r1, _0809D1D0 @ =0x00000829
+ mov r8, r1
+ mov r0, r8
+ bl sub_806E6D0
+ lsls r0, 24
+ movs r1, 0x3
+ mov r9, r1
+ cmp r0, 0
+ beq _0809D14C
+ movs r0, 0x4
+ mov r9, r0
+_0809D14C:
+ mov r1, r9
+ lsls r3, r1, 1
+ movs r0, 0
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_809D654
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_80F7750
+ mov r0, r8
+ bl sub_806E6D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809D188
+ ldr r2, _0809D1D4 @ =gUnknown_8417BD3
+ movs r0, 0x22
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ str r5, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+_0809D188:
+ ldr r2, _0809D1D8 @ =gUnknown_8417BCB
+ mov r0, r9
+ subs r0, 0x1
+ lsls r0, 4
+ adds r0, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ str r5, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+_0809D1A8:
+ ldr r0, _0809D1DC @ =0x00000834
+ bl sub_806E6D0
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _0809D1E4
+ ldr r2, _0809D1E0 @ =gUnknown_8417BAC
+ movs r0, 0x2
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+ b _0809D1FA
+ .align 2, 0
+_0809D1D0: .4byte 0x00000829
+_0809D1D4: .4byte gUnknown_8417BD3
+_0809D1D8: .4byte gUnknown_8417BCB
+_0809D1DC: .4byte 0x00000834
+_0809D1E0: .4byte gUnknown_8417BAC
+_0809D1E4:
+ ldr r2, _0809D248 @ =gUnknown_8417B9F
+ movs r0, 0x2
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ str r1, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ adds r3, r7, 0
+ bl sub_8002C48
+_0809D1FA:
+ ldr r4, _0809D24C @ =gUnknown_2021D18
+ ldr r1, _0809D250 @ =gUnknown_8417BB6
+ adds r0, r4, 0
+ bl sub_8008FCC
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r7, 0
+ movs r3, 0x12
+ bl sub_812E6DC
+ movs r0, 0x10
+ str r0, [sp]
+ mov r0, r9
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r6, 0
+ movs r1, 0x2
+ movs r2, 0
+ movs r3, 0x2
+ bl sub_810F7D8
+ movs r0, 0
+ mov r1, r9
+ adds r2, r6, 0
+ movs r3, 0xFF
+ bl sub_809CC18
+ movs r0, 0
+ bl sub_80F67A4
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809D248: .4byte gUnknown_8417B9F
+_0809D24C: .4byte gUnknown_2021D18
+_0809D250: .4byte gUnknown_8417BB6
+ thumb_func_end sub_809D070
+
+ thumb_func_start sub_809D254
+sub_809D254: @ 809D254
+ push {lr}
+ sub sp, 0x10
+ movs r0, 0
+ movs r1, 0x1
+ bl sub_80F7768
+ ldr r2, _0809D284 @ =gUnknown_81A508A
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x2
+ movs r3, 0
+ bl sub_80F6CD0
+ add sp, 0x10
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809D284: .4byte gUnknown_81A508A
+ thumb_func_end sub_809D254
+
+ thumb_func_start sub_809D288
+sub_809D288: @ 809D288
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0809D2AC @ =gUnknown_3005090
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _0809D2E8
+ cmp r0, 0x1
+ bgt _0809D2B0
+ cmp r0, 0
+ beq _0809D2CE
+ b _0809D2E8
+ .align 2, 0
+_0809D2AC: .4byte gUnknown_3005090
+_0809D2B0:
+ cmp r0, 0x2
+ beq _0809D2BA
+ cmp r0, 0x3
+ beq _0809D2DC
+ b _0809D2E8
+_0809D2BA:
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0809D2D8 @ =gUnknown_202063C
+ adds r0, r1
+ ldrb r1, [r4, 0xC]
+ bl sub_8083A5C
+_0809D2CE:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0809D2E8
+ .align 2, 0
+_0809D2D8: .4byte gUnknown_202063C
+_0809D2DC:
+ ldrb r0, [r4, 0x12]
+ bl sub_809D6B0
+ adds r0, r5, 0
+ bl sub_8077508
+_0809D2E8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809D288
+
+ thumb_func_start sub_809D2F0
+sub_809D2F0: @ 809D2F0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ ldr r0, _0809D318 @ =sub_809D6D4
+ bl sub_81119D4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809D31C
+ movs r0, 0x1
+ b _0809D3C2
+ .align 2, 0
+_0809D318: .4byte sub_809D6D4
+_0809D31C:
+ ldr r4, _0809D3B0 @ =sub_809D288
+ adds r0, r4, 0
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _0809D3C0
+ lsls r1, r7, 19
+ movs r0, 0xA0
+ lsls r0, 14
+ adds r1, r0
+ asrs r1, 16
+ lsls r2, r6, 19
+ adds r2, r0
+ asrs r2, 16
+ mov r0, r8
+ movs r3, 0
+ bl sub_8083970
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ adds r0, r4, 0
+ movs r1, 0x50
+ bl sub_807741C
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r7, 0
+ adds r1, r6, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_809D654
+ ldr r1, _0809D3B4 @ =gUnknown_3005090
+ lsls r3, r4, 2
+ adds r3, r4
+ lsls r3, 3
+ adds r3, r1
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ strh r0, [r3, 0x12]
+ strh r1, [r3, 0x8]
+ mov r0, r8
+ strh r0, [r3, 0xA]
+ strh r5, [r3, 0xC]
+ ldr r4, _0809D3B8 @ =gUnknown_202063C
+ lsls r1, r5, 4
+ adds r1, r5
+ lsls r1, 2
+ adds r0, r4, 0
+ adds r0, 0x1C
+ adds r0, r1, r0
+ ldr r2, _0809D3BC @ =nullsub_8
+ str r2, [r0]
+ adds r1, r4
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ ldrb r0, [r3, 0x12]
+ movs r1, 0x1
+ bl sub_80F7750
+ movs r0, 0
+ bl sub_80F67A4
+ movs r0, 0x1
+ b _0809D3C2
+ .align 2, 0
+_0809D3B0: .4byte sub_809D288
+_0809D3B4: .4byte gUnknown_3005090
+_0809D3B8: .4byte gUnknown_202063C
+_0809D3BC: .4byte nullsub_8
+_0809D3C0:
+ movs r0, 0
+_0809D3C2:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D2F0
+
+ thumb_func_start sub_809D3CC
+sub_809D3CC: @ 809D3CC
+ push {lr}
+ ldr r0, _0809D3F0 @ =sub_809D288
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ beq _0809D3FC
+ ldr r0, _0809D3F4 @ =gUnknown_3005090
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ ldr r0, _0809D3F8 @ =sub_809D404
+ b _0809D3FE
+ .align 2, 0
+_0809D3F0: .4byte sub_809D288
+_0809D3F4: .4byte gUnknown_3005090
+_0809D3F8: .4byte sub_809D404
+_0809D3FC:
+ movs r0, 0
+_0809D3FE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D3CC
+
+ thumb_func_start sub_809D404
+sub_809D404: @ 809D404
+ push {lr}
+ ldr r0, _0809D418 @ =sub_809D288
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ beq _0809D41C
+ movs r0, 0
+ b _0809D41E
+ .align 2, 0
+_0809D418: .4byte sub_809D288
+_0809D41C:
+ movs r0, 0x1
+_0809D41E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D404
+
+ thumb_func_start sub_809D424
+sub_809D424: @ 809D424
+ push {r4,r5,lr}
+ ldr r0, _0809D450 @ =sub_809D288
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0xFF
+ beq _0809D48C
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0809D454 @ =gUnknown_3005090
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ blt _0809D48C
+ cmp r0, 0x2
+ ble _0809D458
+ cmp r0, 0x3
+ beq _0809D480
+ b _0809D48C
+ .align 2, 0
+_0809D450: .4byte sub_809D288
+_0809D454: .4byte gUnknown_3005090
+_0809D458:
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0809D47C @ =gUnknown_202063C
+ adds r0, r1
+ ldrb r1, [r4, 0xC]
+ bl sub_8083A5C
+ ldrb r0, [r4, 0x12]
+ bl sub_809D6B0
+ adds r0, r5, 0
+ bl sub_8077508
+ b _0809D48C
+ .align 2, 0
+_0809D47C: .4byte gUnknown_202063C
+_0809D480:
+ ldrb r0, [r4, 0x12]
+ bl sub_809D6B0
+ adds r0, r5, 0
+ bl sub_8077508
+_0809D48C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809D424
+
+ thumb_func_start sub_809D494
+sub_809D494: @ 809D494
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0809D4B8 @ =gUnknown_3005090
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _0809D4FC
+ cmp r0, 0x1
+ bgt _0809D4BC
+ cmp r0, 0
+ beq _0809D4DE
+ b _0809D4FC
+ .align 2, 0
+_0809D4B8: .4byte gUnknown_3005090
+_0809D4BC:
+ cmp r0, 0x2
+ beq _0809D4C6
+ cmp r0, 0x3
+ beq _0809D4F0
+ b _0809D4FC
+_0809D4C6:
+ movs r0, 0xC
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0809D4E8 @ =gUnknown_202063C
+ adds r0, r1
+ bl sub_8007280
+ ldr r0, _0809D4EC @ =0x00001b58
+ bl sub_800874C
+_0809D4DE:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0809D4FC
+ .align 2, 0
+_0809D4E8: .4byte gUnknown_202063C
+_0809D4EC: .4byte 0x00001b58
+_0809D4F0:
+ ldrb r0, [r4, 0x12]
+ bl sub_809D6B0
+ adds r0, r5, 0
+ bl sub_8077508
+_0809D4FC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809D494
+
+ thumb_func_start sub_809D504
+sub_809D504: @ 809D504
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ ldr r0, _0809D544 @ =sub_809D6D4
+ bl sub_81119D4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0809D5F2
+ ldr r0, _0809D548 @ =sub_809D494
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _0809D55C
+ ldr r0, _0809D54C @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ cmp r0, 0x8D
+ bne _0809D558
+ ldr r0, _0809D550 @ =gUnknown_83E17C0
+ bl sub_8008720
+ ldr r0, _0809D554 @ =gUnknown_83E17A0
+ movs r1, 0xE8
+ lsls r1, 1
+ movs r2, 0x20
+ bl sub_80703EC
+ b _0809D572
+ .align 2, 0
+_0809D544: .4byte sub_809D6D4
+_0809D548: .4byte sub_809D494
+_0809D54C: .4byte gUnknown_20370C0
+_0809D550: .4byte gUnknown_83E17C0
+_0809D554: .4byte gUnknown_83E17A0
+_0809D558:
+ cmp r0, 0x8E
+ beq _0809D560
+_0809D55C:
+ movs r0, 0
+ b _0809D5F4
+_0809D560:
+ ldr r0, _0809D600 @ =gUnknown_83E17D0
+ bl sub_8008720
+ ldr r0, _0809D604 @ =gUnknown_83E0F80
+ movs r1, 0xE8
+ lsls r1, 1
+ movs r2, 0x20
+ bl sub_80703EC
+_0809D572:
+ ldr r0, _0809D608 @ =gUnknown_83E0768
+ ldr r1, _0809D60C @ =gUnknown_20370C2
+ mov r8, r1
+ ldrh r1, [r1]
+ lsls r1, 19
+ movs r2, 0xA0
+ lsls r2, 14
+ adds r1, r2
+ asrs r1, 16
+ ldr r6, _0809D610 @ =gUnknown_20370C4
+ ldrh r2, [r6]
+ lsls r2, 19
+ movs r3, 0xA0
+ lsls r3, 14
+ adds r2, r3
+ asrs r2, 16
+ movs r3, 0
+ bl sub_8006F8C
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r1, _0809D614 @ =gUnknown_202063C
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r2, [r0, 0x5]
+ movs r1, 0xF
+ ands r1, r2
+ movs r2, 0xD0
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ ldr r0, _0809D618 @ =sub_809D494
+ movs r1, 0x50
+ bl sub_807741C
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r1, r8
+ ldrb r0, [r1]
+ ldrb r1, [r6]
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_809D654
+ ldr r2, _0809D61C @ =gUnknown_3005090
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r2
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0
+ strh r0, [r1, 0x12]
+ strh r2, [r1, 0x8]
+ strh r5, [r1, 0xC]
+ movs r1, 0x1
+ bl sub_80F7750
+ movs r0, 0
+ bl sub_80F67A4
+_0809D5F2:
+ movs r0, 0x1
+_0809D5F4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0809D600: .4byte gUnknown_83E17D0
+_0809D604: .4byte gUnknown_83E0F80
+_0809D608: .4byte gUnknown_83E0768
+_0809D60C: .4byte gUnknown_20370C2
+_0809D610: .4byte gUnknown_20370C4
+_0809D614: .4byte gUnknown_202063C
+_0809D618: .4byte sub_809D494
+_0809D61C: .4byte gUnknown_3005090
+ thumb_func_end sub_809D504
+
+ thumb_func_start sub_809D620
+sub_809D620: @ 809D620
+ push {lr}
+ ldr r0, _0809D644 @ =sub_809D494
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ beq _0809D64C
+ ldr r0, _0809D648 @ =gUnknown_3005090
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ movs r0, 0x1
+ b _0809D64E
+ .align 2, 0
+_0809D644: .4byte sub_809D494
+_0809D648: .4byte gUnknown_3005090
+_0809D64C:
+ movs r0, 0
+_0809D64E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D620
+
+ thumb_func_start sub_809D654
+sub_809D654: @ 809D654
+ push {r4,r5,lr}
+ sub sp, 0x20
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 24
+ lsls r5, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x80
+ lsls r0, 17
+ adds r4, r0
+ lsrs r4, 24
+ adds r5, r0
+ lsrs r5, 24
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ movs r0, 0xF
+ str r0, [sp, 0x8]
+ movs r0, 0x38
+ str r0, [sp, 0xC]
+ add r0, sp, 0x10
+ movs r1, 0
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl sub_810FE50
+ ldr r0, [sp, 0x10]
+ ldr r1, [sp, 0x14]
+ str r0, [sp, 0x18]
+ str r1, [sp, 0x1C]
+ add r0, sp, 0x18
+ bl sub_8003CE4
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_8003FA0
+ adds r0, r4, 0
+ add sp, 0x20
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D654
+
+ thumb_func_start sub_809D6B0
+sub_809D6B0: @ 809D6B0
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl sub_80040B8
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_810F4D8
+ adds r0, r4, 0
+ bl sub_8003E3C
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_809D6B0
+
+ thumb_func_start sub_809D6D4
+sub_809D6D4: @ 809D6D4
+ push {lr}
+ ldr r0, _0809D74C @ =gUnknown_81A7AE0
+ bl sub_8069AE4
+ ldr r0, _0809D750 @ =sub_809D288
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xFF
+ beq _0809D710
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _0809D754 @ =gUnknown_3005098
+ adds r2, r0, r1
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ bgt _0809D710
+ movs r0, 0x4
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0809D758 @ =gUnknown_202063C
+ adds r0, r1
+ ldrb r1, [r2, 0x4]
+ bl sub_8083A5C
+_0809D710:
+ ldr r0, _0809D75C @ =sub_809D494
+ bl sub_8077688
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xFF
+ beq _0809D748
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _0809D754 @ =gUnknown_3005098
+ adds r2, r0, r1
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ bgt _0809D748
+ movs r0, 0x4
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0809D758 @ =gUnknown_202063C
+ adds r0, r1
+ bl sub_8007280
+ ldr r0, _0809D760 @ =0x00001b58
+ bl sub_800874C
+_0809D748:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809D74C: .4byte gUnknown_81A7AE0
+_0809D750: .4byte sub_809D288
+_0809D754: .4byte gUnknown_3005098
+_0809D758: .4byte gUnknown_202063C
+_0809D75C: .4byte sub_809D494
+_0809D760: .4byte 0x00001b58
+ thumb_func_end sub_809D6D4
+
+ thumb_func_start sub_809D764
+sub_809D764: @ 809D764
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ ldr r1, _0809D7A0 @ =gUnknown_20370D0
+ movs r0, 0xFF
+ strh r0, [r1]
+ ldr r0, _0809D7A4 @ =sub_809D6D4
+ bl sub_81119D4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0809D784
+ b _0809D8A8
+_0809D784:
+ ldr r0, _0809D7A8 @ =gUnknown_20370C2
+ ldrh r0, [r0]
+ cmp r0, 0x1
+ bne _0809D7B0
+ ldr r0, _0809D7AC @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ movs r4, 0x4
+ cmp r0, 0x4
+ bhi _0809D798
+ movs r4, 0x5
+_0809D798:
+ movs r0, 0x5
+ mov r9, r0
+ movs r5, 0x2
+ b _0809D7B8
+ .align 2, 0
+_0809D7A0: .4byte gUnknown_20370D0
+_0809D7A4: .4byte sub_809D6D4
+_0809D7A8: .4byte gUnknown_20370C2
+_0809D7AC: .4byte gUnknown_20370C0
+_0809D7B0:
+ movs r4, 0
+ movs r0, 0x6
+ mov r9, r0
+ movs r5, 0
+_0809D7B8:
+ movs r0, 0x2
+ movs r1, 0
+ bl sub_80F7AC0
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r0, 0x2
+ movs r1, 0x1
+ bl sub_80F79D8
+ mov r0, r9
+ lsls r3, r0, 1
+ movs r0, 0x11
+ adds r1, r5, 0
+ movs r2, 0xB
+ bl sub_809D654
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r7, 0
+ movs r1, 0
+ bl sub_80F7750
+ movs r6, 0
+ mov r5, r9
+ subs r5, 0x2
+ cmp r6, r5
+ bge _0809D844
+_0809D7F2:
+ ldr r0, _0809D820 @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq _0809D828
+ ldr r1, _0809D824 @ =gUnknown_83E17E0
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r0, r6, 4
+ adds r0, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ mov r3, r8
+ bl sub_8002C48
+ b _0809D82E
+ .align 2, 0
+_0809D820: .4byte gUnknown_20370C0
+_0809D824: .4byte gUnknown_83E17E0
+_0809D828:
+ subs r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_0809D82E:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x8
+ bne _0809D83A
+ movs r4, 0
+_0809D83A:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, r5
+ blt _0809D7F2
+_0809D844:
+ ldr r2, _0809D8B8 @ =gUnknown_8417DED
+ lsls r0, r6, 4
+ adds r0, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ movs r5, 0xFF
+ str r5, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ mov r3, r8
+ bl sub_8002C48
+ adds r0, r6, 0x1
+ lsls r0, 24
+ ldr r2, _0809D8BC @ =gUnknown_84161C8
+ lsrs r0, 20
+ adds r0, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ str r4, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ mov r3, r8
+ bl sub_8002C48
+ movs r0, 0x10
+ str r0, [sp]
+ mov r0, r9
+ str r0, [sp, 0x4]
+ str r4, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0x2
+ movs r2, 0
+ movs r3, 0x2
+ bl sub_810F7D8
+ movs r0, 0
+ mov r1, r9
+ adds r2, r7, 0
+ movs r3, 0xFF
+ bl sub_809CC18
+ movs r0, 0
+ bl sub_80F67A4
+_0809D8A8:
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809D8B8: .4byte gUnknown_8417DED
+_0809D8BC: .4byte gUnknown_84161C8
+ thumb_func_end sub_809D764
+
+ thumb_func_start sub_809D8C0
+sub_809D8C0: @ 809D8C0
+ push {lr}
+ ldr r3, _0809D8EC @ =gUnknown_20370D0
+ ldrh r2, [r3]
+ adds r1, r2, 0
+ cmp r1, 0x7F
+ beq _0809D930
+ ldr r0, _0809D8F0 @ =gUnknown_20370C2
+ ldrh r0, [r0]
+ cmp r0, 0x1
+ bne _0809D924
+ cmp r1, 0x3
+ beq _0809D928
+ cmp r1, 0x4
+ beq _0809D930
+ cmp r1, 0
+ bne _0809D8F8
+ ldr r0, _0809D8F4 @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ cmp r0, 0x4
+ bls _0809D904
+ movs r0, 0x4
+ b _0809D94E
+ .align 2, 0
+_0809D8EC: .4byte gUnknown_20370D0
+_0809D8F0: .4byte gUnknown_20370C2
+_0809D8F4: .4byte gUnknown_20370C0
+_0809D8F8:
+ cmp r1, 0x1
+ bne _0809D90C
+ ldr r0, _0809D908 @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ cmp r0, 0x5
+ bls _0809D918
+_0809D904:
+ movs r0, 0x5
+ b _0809D94E
+ .align 2, 0
+_0809D908: .4byte gUnknown_20370C0
+_0809D90C:
+ cmp r1, 0x2
+ bne _0809D94C
+ ldr r0, _0809D91C @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ cmp r0, 0x6
+ bls _0809D920
+_0809D918:
+ movs r0, 0x6
+ b _0809D94E
+ .align 2, 0
+_0809D91C: .4byte gUnknown_20370C0
+_0809D920:
+ movs r0, 0x7
+ b _0809D94E
+_0809D924:
+ cmp r1, 0x4
+ bne _0809D92C
+_0809D928:
+ movs r0, 0xFE
+ b _0809D94E
+_0809D92C:
+ cmp r1, 0x5
+ bne _0809D934
+_0809D930:
+ movs r0, 0x7F
+ b _0809D94E
+_0809D934:
+ ldr r0, _0809D944 @ =gUnknown_20370C0
+ ldrh r0, [r0]
+ cmp r1, r0
+ bcc _0809D948
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ b _0809D94E
+ .align 2, 0
+_0809D944: .4byte gUnknown_20370C0
+_0809D948:
+ ldrh r0, [r3]
+ b _0809D94E
+_0809D94C:
+ movs r0, 0
+_0809D94E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_809D8C0
+
+ .align 2, 0 @ Don't pad with nop.