summaryrefslogtreecommitdiff
path: root/asm/calculate_base_damage.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/calculate_base_damage.s
first commit
Diffstat (limited to 'asm/calculate_base_damage.s')
-rw-r--r--asm/calculate_base_damage.s1123
1 files changed, 1123 insertions, 0 deletions
diff --git a/asm/calculate_base_damage.s b/asm/calculate_base_damage.s
new file mode 100644
index 000000000..bfbf9df3f
--- /dev/null
+++ b/asm/calculate_base_damage.s
@@ -0,0 +1,1123 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_803ECEC
+sub_803ECEC: @ 803ECEC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ adds r6, r0, 0
+ str r1, [sp, 0x4]
+ str r2, [sp, 0x8]
+ ldr r0, [sp, 0x4C]
+ ldr r1, [sp, 0x50]
+ ldr r2, [sp, 0x54]
+ ldr r4, [sp, 0x58]
+ lsls r3, 16
+ lsrs r3, 16
+ str r3, [sp, 0xC]
+ lsls r0, 16
+ lsrs r3, r0, 16
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x10]
+ lsls r4, 24
+ lsrs r4, 24
+ movs r5, 0
+ cmp r3, 0
+ bne _0803ED40
+ ldr r2, _0803ED38 @ =gUnknown_2024020
+ ldr r1, _0803ED3C @ =gUnknown_8250C04
+ ldr r3, [sp, 0x8]
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x1]
+ strh r0, [r2]
+ b _0803ED44
+ .align 2, 0
+_0803ED38: .4byte gUnknown_2024020
+_0803ED3C: .4byte gUnknown_8250C04
+_0803ED40:
+ ldr r0, _0803ED5C @ =gUnknown_2024020
+ strh r3, [r0]
+_0803ED44:
+ cmp r7, 0
+ bne _0803ED64
+ ldr r1, _0803ED60 @ =gUnknown_8250C04
+ ldr r7, [sp, 0x8]
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ mov r9, r0
+ b _0803ED6E
+ .align 2, 0
+_0803ED5C: .4byte gUnknown_2024020
+_0803ED60: .4byte gUnknown_8250C04
+_0803ED64:
+ movs r0, 0x3F
+ mov r9, r0
+ mov r1, r9
+ ands r1, r7
+ mov r9, r1
+_0803ED6E:
+ ldrh r7, [r6, 0x2]
+ ldr r2, [sp, 0x4]
+ ldrh r2, [r2, 0x4]
+ str r2, [sp, 0x14]
+ ldrh r3, [r6, 0x8]
+ mov r8, r3
+ ldr r0, [sp, 0x4]
+ ldrh r0, [r0, 0xA]
+ str r0, [sp, 0x18]
+ ldrh r0, [r6, 0x2E]
+ cmp r0, 0xAF
+ bne _0803EDA0
+ ldr r1, _0803ED9C @ =gUnknown_2023F54
+ ldr r2, [sp, 0x10]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrb r3, [r0, 0x7]
+ mov r10, r3
+ ldrb r0, [r0, 0x1A]
+ b _0803EDB6
+ .align 2, 0
+_0803ED9C: .4byte gUnknown_2023F54
+_0803EDA0:
+ ldrh r0, [r6, 0x2E]
+ bl sub_809A924
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldrh r0, [r6, 0x2E]
+ bl sub_809A948
+ lsls r0, 24
+ lsrs r0, 24
+_0803EDB6:
+ str r0, [sp, 0x20]
+ ldr r1, [sp, 0x4]
+ ldrh r0, [r1, 0x2E]
+ cmp r0, 0xAF
+ bne _0803EDE6
+ ldr r1, _0803EDD0 @ =gUnknown_2023F54
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x7]
+ str r0, [sp, 0x1C]
+ b _0803EDFC
+ .align 2, 0
+_0803EDD0: .4byte gUnknown_2023F54
+_0803EDD4:
+ ldr r0, [sp, 0x20]
+ adds r0, 0x64
+ muls r0, r7
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+ b _0803EF44
+_0803EDE6:
+ ldr r2, [sp, 0x4]
+ ldrh r0, [r2, 0x2E]
+ bl sub_809A924
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x1C]
+ ldr r3, [sp, 0x4]
+ ldrh r0, [r3, 0x2E]
+ bl sub_809A948
+_0803EDFC:
+ adds r0, r6, 0
+ adds r0, 0x20
+ ldrb r1, [r0]
+ str r0, [sp, 0x24]
+ cmp r1, 0x25
+ beq _0803EE0C
+ cmp r1, 0x4A
+ bne _0803EE10
+_0803EE0C:
+ lsls r0, r7, 17
+ lsrs r7, r0, 16
+_0803EE10:
+ ldr r0, _0803EF28 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ ldr r1, _0803EF2C @ =0x00000802
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EEE8
+ movs r0, 0x82
+ lsls r0, 4
+ bl sub_806E6D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803EE44
+ ldr r0, [sp, 0x10]
+ bl sub_80751C4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EE44
+ movs r0, 0x6E
+ muls r0, r7
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+_0803EE44:
+ ldr r0, _0803EF28 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ ldr r1, _0803EF2C @ =0x00000802
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EEE8
+ ldr r0, _0803EF30 @ =0x00000824
+ bl sub_806E6D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803EE7A
+ adds r0, r4, 0
+ bl sub_80751C4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EE7A
+ movs r0, 0x6E
+ ldr r1, [sp, 0x14]
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x14]
+_0803EE7A:
+ ldr r0, _0803EF28 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ ldr r1, _0803EF2C @ =0x00000802
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EEE8
+ ldr r0, _0803EF34 @ =0x00000826
+ bl sub_806E6D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803EEB2
+ ldr r0, [sp, 0x10]
+ bl sub_80751C4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EEB2
+ movs r0, 0x6E
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+_0803EEB2:
+ ldr r0, _0803EF28 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ ldr r1, _0803EF2C @ =0x00000802
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EEE8
+ ldr r0, _0803EF34 @ =0x00000826
+ bl sub_806E6D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803EEE8
+ adds r0, r4, 0
+ bl sub_80751C4
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803EEE8
+ movs r0, 0x6E
+ ldr r3, [sp, 0x18]
+ muls r0, r3
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x18]
+_0803EEE8:
+ movs r2, 0
+ ldr r4, _0803EF38 @ =gUnknown_825DECC
+ ldr r0, [sp, 0x4]
+ adds r0, 0x20
+ str r0, [sp, 0x28]
+ adds r3, r4, 0
+_0803EEF4:
+ lsls r1, r2, 1
+ ldrb r0, [r3]
+ cmp r10, r0
+ bne _0803EF3C
+ adds r0, r4, 0x1
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ cmp r9, r0
+ bne _0803EF3C
+ mov r1, r9
+ cmp r1, 0x8
+ bhi _0803EF0E
+ b _0803EDD4
+_0803EF0E:
+ ldr r0, [sp, 0x20]
+ adds r0, 0x64
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ b _0803EF44
+ .align 2, 0
+_0803EF28: .4byte gUnknown_2022B4C
+_0803EF2C: .4byte 0x00000802
+_0803EF30: .4byte 0x00000824
+_0803EF34: .4byte 0x00000826
+_0803EF38: .4byte gUnknown_825DECC
+_0803EF3C:
+ adds r3, 0x2
+ adds r2, 0x1
+ cmp r2, 0x10
+ bls _0803EEF4
+_0803EF44:
+ mov r3, r10
+ cmp r3, 0x1D
+ bne _0803EF58
+ movs r0, 0x96
+ muls r0, r7
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+_0803EF58:
+ mov r0, r10
+ cmp r0, 0x22
+ bne _0803EF90
+ ldr r0, _0803F244 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 1
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EF90
+ ldr r1, _0803F248 @ =0xfffffe69
+ adds r0, r1, 0
+ ldrh r2, [r6]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0803EF90
+ movs r0, 0x96
+ mov r3, r8
+ muls r3, r0
+ adds r0, r3, 0
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+_0803EF90:
+ ldr r0, [sp, 0x1C]
+ cmp r0, 0x22
+ bne _0803EFC8
+ ldr r0, _0803F244 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 1
+ ands r0, r1
+ cmp r0, 0
+ bne _0803EFC8
+ ldr r1, _0803F248 @ =0xfffffe69
+ adds r0, r1, 0
+ ldr r2, [sp, 0x4]
+ ldrh r2, [r2]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0803EFC8
+ movs r0, 0x96
+ ldr r3, [sp, 0x18]
+ muls r0, r3
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x18]
+_0803EFC8:
+ mov r0, r10
+ cmp r0, 0x23
+ bne _0803EFDE
+ ldrh r1, [r6]
+ ldr r0, _0803F24C @ =0x00000175
+ cmp r1, r0
+ bne _0803EFDE
+ mov r1, r8
+ lsls r0, r1, 17
+ lsrs r0, 16
+ mov r8, r0
+_0803EFDE:
+ ldr r2, [sp, 0x1C]
+ cmp r2, 0x24
+ bne _0803EFF6
+ ldr r3, [sp, 0x4]
+ ldrh r1, [r3]
+ ldr r0, _0803F24C @ =0x00000175
+ cmp r1, r0
+ bne _0803EFF6
+ ldr r1, [sp, 0x18]
+ lsls r0, r1, 17
+ lsrs r0, 16
+ str r0, [sp, 0x18]
+_0803EFF6:
+ mov r2, r10
+ cmp r2, 0x2D
+ bne _0803F00A
+ ldrh r0, [r6]
+ cmp r0, 0x19
+ bne _0803F00A
+ mov r3, r8
+ lsls r0, r3, 17
+ lsrs r0, 16
+ mov r8, r0
+_0803F00A:
+ ldr r0, [sp, 0x1C]
+ cmp r0, 0x40
+ bne _0803F020
+ ldr r1, [sp, 0x4]
+ ldrh r0, [r1]
+ cmp r0, 0x84
+ bne _0803F020
+ ldr r2, [sp, 0x14]
+ lsls r0, r2, 17
+ lsrs r0, 16
+ str r0, [sp, 0x14]
+_0803F020:
+ mov r3, r10
+ cmp r3, 0x41
+ bne _0803F036
+ ldrh r0, [r6]
+ subs r0, 0x68
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0803F036
+ lsls r0, r7, 17
+ lsrs r7, r0, 16
+_0803F036:
+ ldr r1, [sp, 0x28]
+ ldrb r0, [r1]
+ cmp r0, 0x2F
+ bne _0803F04E
+ mov r2, r9
+ cmp r2, 0xA
+ beq _0803F048
+ cmp r2, 0xF
+ bne _0803F04E
+_0803F048:
+ mov r3, r8
+ lsrs r3, 1
+ mov r8, r3
+_0803F04E:
+ ldr r0, [sp, 0x24]
+ ldrb r4, [r0]
+ cmp r4, 0x37
+ bne _0803F064
+ movs r0, 0x96
+ muls r0, r7
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+_0803F064:
+ cmp r4, 0x39
+ bne _0803F092
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0x3A
+ movs r3, 0
+ bl sub_8019F18
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803F092
+ movs r0, 0x96
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+_0803F092:
+ ldr r2, [sp, 0x24]
+ ldrb r0, [r2]
+ cmp r0, 0x3A
+ bne _0803F0C4
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0x39
+ movs r3, 0
+ bl sub_8019F18
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803F0C4
+ movs r0, 0x96
+ mov r3, r8
+ muls r3, r0
+ adds r0, r3, 0
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+_0803F0C4:
+ ldr r1, [sp, 0x24]
+ ldrb r0, [r1]
+ cmp r0, 0x3E
+ bne _0803F0E0
+ ldr r0, [r6, 0x4C]
+ cmp r0, 0
+ beq _0803F0E0
+ movs r0, 0x96
+ muls r0, r7
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+_0803F0E0:
+ ldr r2, [sp, 0x28]
+ ldrb r0, [r2]
+ cmp r0, 0x3F
+ bne _0803F102
+ ldr r3, [sp, 0x4]
+ ldr r0, [r3, 0x4C]
+ cmp r0, 0
+ beq _0803F102
+ movs r0, 0x96
+ ldr r1, [sp, 0x14]
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x14]
+_0803F102:
+ mov r2, r9
+ cmp r2, 0xD
+ bne _0803F126
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0xFD
+ bl sub_8019F18
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803F126
+ ldr r1, _0803F250 @ =gUnknown_2024020
+ ldrh r0, [r1]
+ lsrs r0, 1
+ strh r0, [r1]
+_0803F126:
+ mov r3, r9
+ cmp r3, 0xA
+ bne _0803F14A
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0xFE
+ bl sub_8019F18
+ lsls r0, 24
+ cmp r0, 0
+ beq _0803F14A
+ ldr r1, _0803F250 @ =gUnknown_2024020
+ ldrh r0, [r1]
+ lsrs r0, 1
+ strh r0, [r1]
+_0803F14A:
+ mov r0, r9
+ cmp r0, 0xC
+ bne _0803F17A
+ ldr r1, [sp, 0x24]
+ ldrb r0, [r1]
+ cmp r0, 0x41
+ bne _0803F17A
+ ldrh r0, [r6, 0x2C]
+ movs r1, 0x3
+ bl __udivsi3
+ ldrh r1, [r6, 0x28]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r1, r0
+ bhi _0803F17A
+ ldr r4, _0803F250 @ =gUnknown_2024020
+ ldrh r1, [r4]
+ movs r0, 0x96
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ strh r0, [r4]
+_0803F17A:
+ mov r2, r9
+ cmp r2, 0xA
+ bne _0803F1AA
+ ldr r3, [sp, 0x24]
+ ldrb r0, [r3]
+ cmp r0, 0x42
+ bne _0803F1AA
+ ldrh r0, [r6, 0x2C]
+ movs r1, 0x3
+ bl __udivsi3
+ ldrh r1, [r6, 0x28]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r1, r0
+ bhi _0803F1AA
+ ldr r4, _0803F250 @ =gUnknown_2024020
+ ldrh r1, [r4]
+ movs r0, 0x96
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ strh r0, [r4]
+_0803F1AA:
+ mov r0, r9
+ cmp r0, 0xB
+ bne _0803F1DA
+ ldr r1, [sp, 0x24]
+ ldrb r0, [r1]
+ cmp r0, 0x43
+ bne _0803F1DA
+ ldrh r0, [r6, 0x2C]
+ movs r1, 0x3
+ bl __udivsi3
+ ldrh r1, [r6, 0x28]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r1, r0
+ bhi _0803F1DA
+ ldr r4, _0803F250 @ =gUnknown_2024020
+ ldrh r1, [r4]
+ movs r0, 0x96
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ strh r0, [r4]
+_0803F1DA:
+ mov r2, r9
+ cmp r2, 0x6
+ bne _0803F20A
+ ldr r3, [sp, 0x24]
+ ldrb r0, [r3]
+ cmp r0, 0x44
+ bne _0803F20A
+ ldrh r0, [r6, 0x2C]
+ movs r1, 0x3
+ bl __udivsi3
+ ldrh r1, [r6, 0x28]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r1, r0
+ bhi _0803F20A
+ ldr r4, _0803F250 @ =gUnknown_2024020
+ ldrh r1, [r4]
+ movs r0, 0x96
+ muls r0, r1
+ movs r1, 0x64
+ bl __divsi3
+ strh r0, [r4]
+_0803F20A:
+ ldr r2, _0803F254 @ =gUnknown_8250C04
+ ldr r0, _0803F258 @ =gUnknown_2023D4A
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0x7
+ bne _0803F224
+ ldr r0, [sp, 0x14]
+ lsrs r0, 1
+ str r0, [sp, 0x14]
+_0803F224:
+ mov r1, r9
+ cmp r1, 0x8
+ bls _0803F22C
+ b _0803F38A
+_0803F22C:
+ ldr r0, _0803F25C @ =gUnknown_2023D71
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0x2
+ bne _0803F268
+ movs r0, 0x19
+ ldrsb r0, [r6, r0]
+ cmp r0, 0x6
+ ble _0803F264
+ ldr r2, _0803F260 @ =gUnknown_825DEAD
+ b _0803F26E
+ .align 2, 0
+_0803F244: .4byte gUnknown_2022B4C
+_0803F248: .4byte 0xfffffe69
+_0803F24C: .4byte 0x00000175
+_0803F250: .4byte gUnknown_2024020
+_0803F254: .4byte gUnknown_8250C04
+_0803F258: .4byte gUnknown_2023D4A
+_0803F25C: .4byte gUnknown_2023D71
+_0803F260: .4byte gUnknown_825DEAD
+_0803F264:
+ adds r5, r7, 0
+ b _0803F286
+_0803F268:
+ ldr r2, _0803F2B8 @ =gUnknown_825DEAD
+ movs r0, 0x19
+ ldrsb r0, [r6, r0]
+_0803F26E:
+ lsls r0, 1
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ adds r5, r7, 0
+ muls r5, r1
+ adds r2, 0x1
+ adds r0, r2
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl __divsi3
+ adds r5, r0, 0
+_0803F286:
+ ldr r0, _0803F2BC @ =gUnknown_2024020
+ ldrh r0, [r0]
+ muls r5, r0
+ adds r0, r6, 0
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x5
+ bl __divsi3
+ adds r0, 0x2
+ muls r5, r0
+ ldrb r0, [r4]
+ cmp r0, 0x2
+ bne _0803F2C4
+ ldr r2, [sp, 0x4]
+ movs r0, 0x1A
+ ldrsb r0, [r2, r0]
+ cmp r0, 0x5
+ bgt _0803F2C0
+ ldr r2, _0803F2B8 @ =gUnknown_825DEAD
+ ldr r3, [sp, 0x4]
+ movs r0, 0x1A
+ ldrsb r0, [r3, r0]
+ b _0803F2CC
+ .align 2, 0
+_0803F2B8: .4byte gUnknown_825DEAD
+_0803F2BC: .4byte gUnknown_2024020
+_0803F2C0:
+ ldr r3, [sp, 0x14]
+ b _0803F2E6
+_0803F2C4:
+ ldr r2, _0803F344 @ =gUnknown_825DEAD
+ ldr r1, [sp, 0x4]
+ movs r0, 0x1A
+ ldrsb r0, [r1, r0]
+_0803F2CC:
+ lsls r0, 1
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ ldr r7, [sp, 0x14]
+ adds r3, r7, 0
+ muls r3, r1
+ adds r2, 0x1
+ adds r0, r2
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ bl __divsi3
+ adds r3, r0, 0
+_0803F2E6:
+ adds r0, r5, 0
+ adds r1, r3, 0
+ bl __divsi3
+ adds r5, r0, 0
+ movs r1, 0x32
+ bl __divsi3
+ adds r5, r0, 0
+ ldr r0, [r6, 0x4C]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F310
+ ldr r1, [sp, 0x24]
+ ldrb r0, [r1]
+ cmp r0, 0x3E
+ beq _0803F310
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F310:
+ movs r0, 0x1
+ ldr r2, [sp, 0xC]
+ ands r0, r2
+ cmp r0, 0
+ beq _0803F352
+ ldrb r1, [r4]
+ cmp r1, 0x1
+ bne _0803F352
+ ldr r0, _0803F348 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F34C
+ movs r0, 0x2
+ bl sub_803F5B4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0803F34C
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl __divsi3
+ lsls r5, r0, 1
+ b _0803F352
+ .align 2, 0
+_0803F344: .4byte gUnknown_825DEAD
+_0803F348: .4byte gUnknown_2022B4C
+_0803F34C:
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F352:
+ ldr r0, _0803F3B0 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F384
+ ldr r0, _0803F3B4 @ =gUnknown_8250C04
+ ldr r3, [sp, 0x8]
+ lsls r1, r3, 1
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x6]
+ cmp r0, 0x8
+ bne _0803F384
+ movs r0, 0x2
+ bl sub_803F5B4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0803F384
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F384:
+ cmp r5, 0
+ bne _0803F38A
+ movs r5, 0x1
+_0803F38A:
+ mov r7, r9
+ cmp r7, 0x9
+ bne _0803F392
+ movs r5, 0
+_0803F392:
+ mov r0, r9
+ cmp r0, 0x9
+ bhi _0803F39A
+ b _0803F59C
+_0803F39A:
+ ldr r0, _0803F3B8 @ =gUnknown_2023D71
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0x2
+ bne _0803F3C4
+ movs r0, 0x1C
+ ldrsb r0, [r6, r0]
+ cmp r0, 0x6
+ ble _0803F3C0
+ ldr r2, _0803F3BC @ =gUnknown_825DEAD
+ b _0803F3CA
+ .align 2, 0
+_0803F3B0: .4byte gUnknown_2022B4C
+_0803F3B4: .4byte gUnknown_8250C04
+_0803F3B8: .4byte gUnknown_2023D71
+_0803F3BC: .4byte gUnknown_825DEAD
+_0803F3C0:
+ mov r5, r8
+ b _0803F3E2
+_0803F3C4:
+ ldr r2, _0803F410 @ =gUnknown_825DEAD
+ movs r0, 0x1C
+ ldrsb r0, [r6, r0]
+_0803F3CA:
+ lsls r0, 1
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ mov r5, r8
+ muls r5, r1
+ adds r2, 0x1
+ adds r0, r2
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl __divsi3
+ adds r5, r0, 0
+_0803F3E2:
+ ldr r0, _0803F414 @ =gUnknown_2024020
+ ldrh r0, [r0]
+ muls r5, r0
+ adds r0, r6, 0
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x5
+ bl __divsi3
+ adds r0, 0x2
+ muls r5, r0
+ ldrb r0, [r4]
+ cmp r0, 0x2
+ bne _0803F41C
+ ldr r1, [sp, 0x4]
+ movs r0, 0x1D
+ ldrsb r0, [r1, r0]
+ cmp r0, 0x5
+ bgt _0803F418
+ ldr r2, _0803F410 @ =gUnknown_825DEAD
+ b _0803F424
+ .align 2, 0
+_0803F410: .4byte gUnknown_825DEAD
+_0803F414: .4byte gUnknown_2024020
+_0803F418:
+ ldr r3, [sp, 0x18]
+ b _0803F43E
+_0803F41C:
+ ldr r2, _0803F484 @ =gUnknown_825DEAD
+ ldr r7, [sp, 0x4]
+ movs r0, 0x1D
+ ldrsb r0, [r7, r0]
+_0803F424:
+ lsls r0, 1
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ ldr r6, [sp, 0x18]
+ adds r3, r6, 0
+ muls r3, r1
+ adds r2, 0x1
+ adds r0, r2
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ bl __divsi3
+ adds r3, r0, 0
+_0803F43E:
+ adds r0, r5, 0
+ adds r1, r3, 0
+ bl __divsi3
+ adds r5, r0, 0
+ movs r1, 0x32
+ bl __divsi3
+ adds r5, r0, 0
+ movs r0, 0x2
+ ldr r7, [sp, 0xC]
+ ands r0, r7
+ cmp r0, 0
+ beq _0803F492
+ ldrb r1, [r4]
+ cmp r1, 0x1
+ bne _0803F492
+ ldr r0, _0803F488 @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F48C
+ movs r0, 0x2
+ bl sub_803F5B4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0803F48C
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl __divsi3
+ lsls r5, r0, 1
+ b _0803F492
+ .align 2, 0
+_0803F484: .4byte gUnknown_825DEAD
+_0803F488: .4byte gUnknown_2022B4C
+_0803F48C:
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F492:
+ ldr r0, _0803F50C @ =gUnknown_2022B4C
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F4C4
+ ldr r0, _0803F510 @ =gUnknown_8250C04
+ ldr r2, [sp, 0x8]
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x6]
+ cmp r0, 0x8
+ bne _0803F4C4
+ movs r0, 0x2
+ bl sub_803F5B4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0803F4C4
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F4C4:
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0xD
+ movs r3, 0
+ bl sub_8019F18
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _0803F574
+ str r0, [sp]
+ movs r0, 0xE
+ movs r1, 0
+ movs r2, 0x4D
+ movs r3, 0
+ bl sub_8019F18
+ lsls r0, 24
+ cmp r0, 0
+ bne _0803F574
+ ldr r2, _0803F514 @ =gUnknown_2023F1C
+ ldrh r1, [r2]
+ movs r0, 0x1
+ ands r0, r1
+ adds r4, r2, 0
+ cmp r0, 0
+ beq _0803F52C
+ mov r3, r9
+ cmp r3, 0xA
+ beq _0803F518
+ cmp r3, 0xB
+ beq _0803F520
+ b _0803F52C
+ .align 2, 0
+_0803F50C: .4byte gUnknown_2022B4C
+_0803F510: .4byte gUnknown_8250C04
+_0803F514: .4byte gUnknown_2023F1C
+_0803F518:
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+ b _0803F52C
+_0803F520:
+ lsls r0, r5, 4
+ subs r0, r5
+ movs r1, 0xA
+ bl __divsi3
+ adds r5, r0, 0
+_0803F52C:
+ ldrh r1, [r4]
+ movs r0, 0x9F
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F544
+ ldr r0, _0803F55C @ =gUnknown_2023D4A
+ ldrh r0, [r0]
+ cmp r0, 0x4C
+ bne _0803F544
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F544:
+ ldrh r1, [r4]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F574
+ mov r6, r9
+ cmp r6, 0xA
+ beq _0803F560
+ cmp r6, 0xB
+ beq _0803F56E
+ b _0803F574
+ .align 2, 0
+_0803F55C: .4byte gUnknown_2023D4A
+_0803F560:
+ lsls r0, r5, 4
+ subs r0, r5
+ movs r1, 0xA
+ bl __divsi3
+ adds r5, r0, 0
+ b _0803F574
+_0803F56E:
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0803F574:
+ ldr r0, _0803F5B0 @ =gUnknown_2023FF4
+ ldr r0, [r0]
+ ldr r0, [r0, 0x4]
+ ldr r7, [sp, 0x10]
+ lsls r1, r7, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0803F59C
+ mov r0, r9
+ cmp r0, 0xA
+ bne _0803F59C
+ lsls r0, r5, 4
+ subs r0, r5
+ movs r1, 0xA
+ bl __divsi3
+ adds r5, r0, 0
+_0803F59C:
+ adds r0, r5, 0x2
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0803F5B0: .4byte gUnknown_2023FF4
+ thumb_func_end sub_803ECEC
+
+ .align 2, 0 @ Don't pad with nop.