summaryrefslogtreecommitdiff
path: root/asm/sprite.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/sprite.s')
-rw-r--r--asm/sprite.s1104
1 files changed, 1104 insertions, 0 deletions
diff --git a/asm/sprite.s b/asm/sprite.s
new file mode 100644
index 0000000..1462afb
--- /dev/null
+++ b/asm/sprite.s
@@ -0,0 +1,1104 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8004D78
+sub_8004D78:
+ push {lr}
+ movs r0, 0x1
+ bl sub_8004D8C
+ movs r0, 0
+ bl SetSavingIconCoords
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8004D78
+
+ thumb_func_start sub_8004D8C
+sub_8004D8C:
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08004E68
+ movs r0, 0
+ str r0, [r1]
+ ldr r1, _08004E6C
+ ldr r0, _08004E70
+ str r0, [r1]
+ ldr r1, _08004E74
+ ldr r0, _08004E78
+ str r0, [r1]
+ ldr r0, _08004E7C
+ adds r1, r0, 0
+ adds r1, 0x8
+ adds r5, r0, 0
+ movs r2, 0
+ movs r3, 0xF0
+_08004DB0:
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ adds r0, 0x8
+ adds r1, 0x8
+ subs r3, 0x10
+ cmp r3, 0
+ bge _08004DB0
+ cmp r4, 0
+ beq _08004E50
+ movs r2, 0
+ ldr r1, _08004E80
+ ldr r0, _08004E84
+ movs r3, 0x7F
+_08004E42:
+ str r2, [r0]
+ str r1, [r0, 0x4]
+ adds r1, 0x8
+ adds r0, 0x8
+ subs r3, 0x1
+ cmp r3, 0
+ bge _08004E42
+_08004E50:
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r5, r1
+ movs r1, 0
+ str r1, [r0]
+ ldr r2, _08004E88
+ adds r0, r5, r2
+ str r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08004E68: .4byte gUnknown_20266A8
+_08004E6C: .4byte gUnknown_2026E30
+_08004E70: .4byte 0x06010000
+_08004E74: .4byte gUnknown_203B074
+_08004E78: .4byte gUnknown_20266B0
+_08004E7C: .4byte gUnknown_20256A0
+_08004E80: .4byte gUnknown_20262A8
+_08004E84: .4byte gUnknown_2025EA8
+_08004E88: .4byte 0x00000804
+ thumb_func_end sub_8004D8C
+
+ thumb_func_start sub_8004E8C
+sub_8004E8C:
+ ldr r1, _08004EA4
+ strh r1, [r0]
+ movs r1, 0x1
+ negs r1, r1
+ strh r1, [r0, 0x2]
+ strh r1, [r0, 0x4]
+ movs r1, 0
+ strh r1, [r0, 0x6]
+ strh r1, [r0, 0x8]
+ strh r1, [r0, 0xA]
+ bx lr
+ .align 2, 0
+_08004EA4: .4byte 0x0000ffff
+ thumb_func_end sub_8004E8C
+
+ thumb_func_start sub_8004EA8
+sub_8004EA8:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ adds r5, r0, 0
+ mov r8, r1
+ adds r0, r2, 0
+ adds r6, r3, 0
+ cmp r0, 0
+ beq _08004EC2
+ bl sub_80052BC
+_08004EC2:
+ ldr r0, _08004F40
+ ldr r7, [r0]
+ mov r12, r0
+ cmp r7, 0x7F
+ ble _08004ECE
+ b _08005082
+_08004ECE:
+ mov r2, sp
+ ldrh r0, [r5]
+ strh r0, [r2]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r2, 0x2]
+ ldrh r4, [r5, 0x4]
+ ldr r0, _08004F44
+ ands r0, r4
+ strh r0, [r2, 0x4]
+ ldrh r3, [r5, 0x6]
+ ldr r0, _08004F48
+ ands r0, r3
+ strh r0, [r2, 0x6]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r2, 0x8]
+ movs r1, 0xE0
+ lsls r1, 4
+ ands r1, r3
+ lsrs r1, 9
+ ldr r0, _08004F4C
+ ands r0, r4
+ lsls r0, 4
+ orrs r1, r0
+ strh r1, [r2, 0xA]
+ lsls r1, r7, 3
+ ldr r0, _08004F50
+ adds r3, r1, r0
+ mov r0, r8
+ movs r2, 0x16
+ ldrsh r1, [r0, r2]
+ mov r0, sp
+ ldrb r0, [r0, 0x3]
+ lsls r0, 24
+ asrs r0, 24
+ adds r7, r1, r0
+ cmp r7, 0
+ bge _08004F1A
+ movs r7, 0
+_08004F1A:
+ cmp r7, 0xFF
+ ble _08004F20
+ movs r7, 0xFF
+_08004F20:
+ cmp r6, 0
+ bne _08004F54
+ add r2, sp, 0x4
+ ldrh r0, [r2]
+ strh r0, [r3]
+ adds r2, 0x2
+ ldrh r0, [r2]
+ strh r0, [r3, 0x2]
+ adds r2, 0x2
+ adds r1, r3, 0x4
+ ldrh r0, [r2]
+ strh r0, [r1]
+ adds r2, 0x2
+ ldrh r0, [r2]
+ strh r0, [r1, 0x2]
+ b _08004F86
+ .align 2, 0
+_08004F40: .4byte gUnknown_20266A8
+_08004F44: .4byte 0x0000fcff
+_08004F48: .4byte 0x0000f1ff
+_08004F4C: .4byte 0x000003ff
+_08004F50: .4byte gUnknown_20262A8
+_08004F54:
+ add r4, sp, 0x4
+ ldrh r1, [r4]
+ ldrh r0, [r6]
+ ands r0, r1
+ ldrh r1, [r6, 0x6]
+ orrs r0, r1
+ strh r0, [r3]
+ adds r4, 0x2
+ ldrh r1, [r4]
+ ldrh r0, [r6, 0x2]
+ ands r0, r1
+ ldrh r1, [r6, 0x8]
+ orrs r0, r1
+ strh r0, [r3, 0x2]
+ adds r4, 0x2
+ adds r2, r3, 0x4
+ ldrh r1, [r4]
+ ldrh r0, [r6, 0x4]
+ ands r0, r1
+ ldrh r1, [r6, 0xA]
+ orrs r0, r1
+ strh r0, [r2]
+ adds r4, 0x2
+ ldrh r0, [r4]
+ strh r0, [r2, 0x2]
+_08004F86:
+ mov r0, sp
+ ldrb r0, [r0, 0x2]
+ cmp r0, 0
+ beq _08004FB0
+ ldr r1, _08004FA8
+ mov r0, sp
+ ldrb r0, [r0, 0x2]
+ lsls r0, 1
+ adds r1, r0, r1
+ movs r4, 0
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ beq _08004FB0
+ adds r1, r0, 0
+ ldr r0, _08004FAC
+ ands r1, r0
+ b _08004FC0
+ .align 2, 0
+_08004FA8: .4byte gUnknown_2025672
+_08004FAC: .4byte 0x000003ff
+_08004FB0:
+ ldrh r1, [r3, 0x4]
+ ldr r2, _08005090
+ ands r1, r2
+ mov r6, r8
+ movs r4, 0x14
+ ldrsh r0, [r6, r4]
+ adds r1, r0
+ ands r1, r2
+_08004FC0:
+ ldrh r2, [r3, 0x4]
+ movs r0, 0xFC
+ lsls r0, 8
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r4, [r3, 0x2]
+ ldr r5, _08005094
+ adds r2, r5, 0
+ ands r2, r4
+ ldr r6, _08005098
+ adds r1, r2, r6
+ mov r2, r8
+ movs r6, 0
+ ldrsh r0, [r2, r6]
+ adds r2, r1, r0
+ movs r0, 0x40
+ negs r0, r0
+ mov r9, r0
+ cmp r2, r9
+ blt _08005082
+ cmp r2, 0xEF
+ bgt _08005082
+ ands r2, r5
+ movs r0, 0xFE
+ lsls r0, 8
+ ands r0, r4
+ orrs r0, r2
+ strh r0, [r3, 0x2]
+ ldrh r0, [r3, 0x6]
+ lsls r4, r0, 16
+ ldr r1, _0800509C
+ adds r5, r1, 0
+ lsrs r2, r4, 20
+ ldr r6, _080050A0
+ adds r1, r2, r6
+ mov r2, r8
+ movs r6, 0x2
+ ldrsh r0, [r2, r6]
+ adds r2, r1, r0
+ cmp r2, r9
+ blt _08005082
+ cmp r2, 0x9F
+ bgt _08005082
+ movs r0, 0xFF
+ ands r2, r0
+ ldrh r1, [r3]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ orrs r0, r2
+ strh r0, [r3]
+ lsrs r0, r4, 17
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08005044
+ mov r0, r8
+ ldrb r1, [r0, 0x1E]
+ movs r0, 0xF
+ ands r1, r0
+ lsls r1, 12
+ ldrh r0, [r3, 0x4]
+ ands r0, r5
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+_08005044:
+ mov r0, sp
+ ldrb r0, [r0, 0x2]
+ cmp r0, 0
+ beq _08005068
+ ldr r1, _080050A4
+ mov r0, sp
+ ldrb r0, [r0, 0x2]
+ lsls r0, 1
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0xF
+ ands r1, r0
+ lsls r1, 12
+ ldrh r0, [r3, 0x4]
+ ands r0, r5
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+_08005068:
+ ldr r0, _080050A8
+ mov r4, r12
+ ldr r3, [r4]
+ lsls r2, r3, 3
+ adds r2, r0
+ ldr r1, _080050AC
+ lsls r0, r7, 3
+ adds r0, r1
+ ldr r1, [r0]
+ str r1, [r2]
+ str r2, [r0]
+ adds r3, 0x1
+ str r3, [r4]
+_08005082:
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08005090: .4byte 0x000003ff
+_08005094: .4byte 0x000001ff
+_08005098: .4byte 0xffffff00
+_0800509C: .4byte 0x00000fff
+_080050A0: .4byte 0xfffffe00
+_080050A4: .4byte gUnknown_2025682
+_080050A8: .4byte gUnknown_2025EA8
+_080050AC: .4byte gUnknown_20256A0
+ thumb_func_end sub_8004EA8
+
+ thumb_func_start AddSprite
+AddSprite:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ mov r8, r2
+ adds r4, r3, 0
+ ldr r0, _080050F4
+ ldr r0, [r0]
+ cmp r0, 0x7F
+ bgt _08005168
+ lsls r1, r0, 3
+ ldr r0, _080050F8
+ adds r5, r1, r0
+ cmp r7, 0
+ bge _080050D2
+ movs r7, 0
+_080050D2:
+ cmp r7, 0xFF
+ ble _080050D8
+ movs r7, 0xFF
+_080050D8:
+ cmp r4, 0
+ bne _080050FC
+ ldrh r0, [r6]
+ strh r0, [r5]
+ ldrh r0, [r6, 0x2]
+ strh r0, [r5, 0x2]
+ adds r1, r6, 0x4
+ adds r2, r5, 0x4
+ ldrh r0, [r1]
+ strh r0, [r2]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r2, 0x2]
+ b _08005128
+ .align 2, 0
+_080050F4: .4byte gUnknown_20266A8
+_080050F8: .4byte gUnknown_20262A8
+_080050FC:
+ ldrh r1, [r6]
+ ldrh r0, [r4]
+ ands r0, r1
+ ldrh r1, [r4, 0x6]
+ orrs r0, r1
+ strh r0, [r5]
+ ldrh r1, [r6, 0x2]
+ ldrh r0, [r4, 0x2]
+ ands r0, r1
+ ldrh r1, [r4, 0x8]
+ orrs r0, r1
+ strh r0, [r5, 0x2]
+ adds r2, r6, 0x4
+ adds r3, r5, 0x4
+ ldrh r1, [r2]
+ ldrh r0, [r4, 0x4]
+ ands r0, r1
+ ldrh r1, [r4, 0xA]
+ orrs r0, r1
+ strh r0, [r3]
+ ldrh r0, [r2, 0x2]
+ strh r0, [r3, 0x2]
+_08005128:
+ ldrh r4, [r5, 0x6]
+ lsrs r4, 4
+ adds r0, r4, 0
+ movs r1, 0
+ bl nullsub_3
+ movs r0, 0xFF
+ ands r4, r0
+ ldrh r1, [r5]
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r0, r1
+ orrs r0, r4
+ strh r0, [r5]
+ mov r0, r8
+ cmp r0, 0
+ beq _0800514E
+ bl sub_80052BC
+_0800514E:
+ ldr r0, _08005174
+ ldr r4, _08005178
+ ldr r3, [r4]
+ lsls r2, r3, 3
+ adds r2, r0
+ ldr r1, _0800517C
+ lsls r0, r7, 3
+ adds r0, r1
+ ldr r1, [r0]
+ str r1, [r2]
+ str r2, [r0]
+ adds r3, 0x1
+ str r3, [r4]
+_08005168:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08005174: .4byte gUnknown_2025EA8
+_08005178: .4byte gUnknown_20266A8
+_0800517C: .4byte gUnknown_20256A0
+ thumb_func_end AddSprite
+
+ thumb_func_start sub_8005180
+sub_8005180:
+ push {lr}
+ ldr r2, _080051A8
+ adds r1, r2, 0
+ cmp r2, 0
+ beq _0800519E
+_0800518A:
+ ldr r0, [r1, 0x4]
+ cmp r0, 0
+ beq _08005198
+ cmp r2, 0
+ beq _08005196
+ str r1, [r2]
+_08005196:
+ adds r2, r1, 0
+_08005198:
+ ldr r1, [r1]
+ cmp r1, 0
+ bne _0800518A
+_0800519E:
+ movs r0, 0
+ str r0, [r2]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080051A8: .4byte gUnknown_20256A0
+ thumb_func_end sub_8005180
+
+ thumb_func_start CopySpritesToOam
+CopySpritesToOam:
+ push {r4-r6,lr}
+ ldr r3, _08005204
+ ldr r2, _08005208
+ movs r4, 0
+ ldr r6, _0800520C
+ cmp r3, 0
+ beq _080051E0
+ ldr r5, _08005210
+_080051BC:
+ ldr r1, [r3, 0x4]
+ cmp r1, 0
+ beq _080051D6
+ subs r2, 0x4
+ ldrh r0, [r1, 0x4]
+ strh r0, [r2]
+ subs r2, 0x2
+ ldrh r0, [r1, 0x2]
+ strh r0, [r2]
+ subs r2, 0x2
+ ldrh r0, [r1]
+ strh r0, [r2]
+ adds r4, 0x1
+_080051D6:
+ ldr r3, [r3]
+ cmp r3, 0
+ beq _080051E0
+ cmp r2, r5
+ bhi _080051BC
+_080051E0:
+ ldr r1, _08005210
+ cmp r2, r1
+ bls _080051FA
+ movs r0, 0
+ movs r3, 0xA0
+_080051EA:
+ subs r2, 0x4
+ strh r0, [r2]
+ subs r2, 0x2
+ strh r0, [r2]
+ subs r2, 0x2
+ strh r3, [r2]
+ cmp r2, r1
+ bhi _080051EA
+_080051FA:
+ strh r4, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08005204: .4byte gUnknown_20256A0
+_08005208: .4byte 0x07000400
+_0800520C: .4byte gUnknown_2025670
+_08005210: .4byte 0x07000008
+ thumb_func_end CopySpritesToOam
+
+ thumb_func_start SetSavingIconCoords
+SetSavingIconCoords:
+ push {lr}
+ adds r3, r0, 0
+ cmp r3, 0
+ bne _0800522C
+ ldr r1, _08005228
+ strh r3, [r1]
+ movs r0, 0xA0
+ strh r0, [r1, 0x2]
+ b _0800523C
+ .align 2, 0
+_08005228: .4byte gUnknown_2025694
+_0800522C:
+ ldr r1, _08005240
+ ldrh r0, [r3]
+ movs r2, 0
+ strh r0, [r1]
+ ldrh r0, [r3, 0x2]
+ strh r0, [r1, 0x2]
+ ldr r0, _08005244
+ str r2, [r0]
+_0800523C:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08005240: .4byte gUnknown_2025694
+_08005244: .4byte gUnknown_2025698
+ thumb_func_end SetSavingIconCoords
+
+ thumb_func_start BlinkSavingIcon
+BlinkSavingIcon:
+ push {r4,lr}
+ movs r2, 0xE0
+ lsls r2, 19
+ ldr r0, _08005280
+ ldr r1, [r0]
+ adds r3, r1, 0
+ adds r1, 0x1
+ str r1, [r0]
+ movs r0, 0x10
+ ands r3, r0
+ cmp r3, 0
+ beq _08005288
+ movs r0, 0xA0
+ strh r0, [r2]
+ adds r2, 0x2
+ movs r1, 0x80
+ lsls r1, 7
+ adds r0, r1, 0
+ strh r0, [r2]
+ adds r2, 0x2
+ ldr r4, _08005284
+ adds r0, r4, 0
+ strh r0, [r2]
+ adds r2, 0x2
+ movs r0, 0
+ strh r0, [r2]
+ b _080052A8
+ .align 2, 0
+_08005280: .4byte gUnknown_2025698
+_08005284: .4byte 0x0000f3fc
+_08005288:
+ ldr r1, _080052B0
+ ldrh r0, [r1, 0x2]
+ strh r0, [r2]
+ ldr r2, _080052B4
+ movs r4, 0x80
+ lsls r4, 7
+ adds r0, r4, 0
+ ldrh r1, [r1]
+ adds r0, r1
+ strh r0, [r2]
+ adds r2, 0x2
+ ldr r1, _080052B8
+ adds r0, r1, 0
+ strh r0, [r2]
+ adds r2, 0x2
+ strh r3, [r2]
+_080052A8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080052B0: .4byte gUnknown_2025694
+_080052B4: .4byte 0x07000002
+_080052B8: .4byte 0x0000f3fc
+ thumb_func_end BlinkSavingIcon
+
+ thumb_func_start sub_80052BC
+sub_80052BC:
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ ldr r0, [r3, 0x4]
+ cmp r0, 0
+ beq _080052F2
+ ldr r5, _080052F8
+ ldr r6, _080052FC
+ ldr r4, _08005300
+_080052CC:
+ ldr r2, [r5]
+ cmp r2, r6
+ bcs _080052F2
+ ldr r0, [r3, 0x4]
+ str r0, [r2]
+ ldr r0, [r3]
+ str r0, [r2, 0x4]
+ ldr r1, [r4]
+ str r1, [r2, 0x8]
+ ldr r0, [r3, 0x4]
+ adds r1, r0
+ str r1, [r4]
+ adds r0, r2, 0
+ adds r0, 0xC
+ str r0, [r5]
+ adds r3, 0x8
+ ldr r0, [r3, 0x4]
+ cmp r0, 0
+ bne _080052CC
+_080052F2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080052F8: .4byte gUnknown_203B074
+_080052FC: .4byte gUnknown_2026E30
+_08005300: .4byte gUnknown_2026E30
+ thumb_func_end sub_80052BC
+
+ thumb_func_start sub_8005304
+sub_8005304:
+ push {r4,lr}
+ ldr r4, _0800530C
+ b _0800532A
+ .align 2, 0
+_0800530C: .4byte gUnknown_20266B0
+_08005310:
+ ldr r1, [r4, 0x4]
+ cmp r1, 0
+ beq _08005320
+ ldr r0, [r4, 0x8]
+ ldr r2, [r4]
+ bl CpuCopy
+ b _08005328
+_08005320:
+ ldr r0, [r4, 0x8]
+ ldr r1, [r4]
+ bl CpuClear
+_08005328:
+ adds r4, 0xC
+_0800532A:
+ ldr r0, _08005338
+ ldr r0, [r0]
+ cmp r4, r0
+ bcc _08005310
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08005338: .4byte gUnknown_203B074
+ thumb_func_end sub_8005304
+
+ thumb_func_start sub_800533C
+sub_800533C:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r8, r1
+ adds r5, r2, 0
+ adds r7, r3, 0
+ ldr r1, [sp, 0x18]
+ lsls r1, 24
+ lsrs r6, r1, 24
+ movs r2, 0x18
+ ldrsh r1, [r5, r2]
+ lsls r1, 2
+ adds r1, r0
+ ldr r4, [r1]
+ ldr r1, _08005368
+ movs r2, 0x14
+ ldrsh r0, [r5, r2]
+ lsls r0, 5
+ ldr r2, _0800536C
+ adds r0, r2
+ str r0, [r1]
+ b _0800538E
+ .align 2, 0
+_08005368: .4byte gUnknown_2026E30
+_0800536C: .4byte 0x06010000
+_08005370:
+ cmp r6, 0
+ beq _08005382
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ blt _08005382
+ lsls r0, 2
+ add r0, r8
+ ldr r2, [r0]
+_08005382:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r3, r7, 0
+ bl sub_8004EA8
+ adds r4, 0xA
+_0800538E:
+ movs r2, 0
+ ldrh r1, [r4]
+ ldr r0, _080053A8
+ cmp r1, r0
+ bne _08005370
+ ldrh r0, [r4, 0x2]
+ cmp r0, r1
+ bne _08005370
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080053A8: .4byte 0x0000ffff
+ thumb_func_end sub_800533C
+
+ thumb_func_start sub_80053AC
+sub_80053AC:
+ push {r4-r6,lr}
+ sub sp, 0xC
+ ldr r5, [sp, 0x1C]
+ ldr r6, [sp, 0x20]
+ ldr r4, [sp, 0x24]
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, [r1, 0x4]
+ str r5, [sp]
+ str r6, [sp, 0x4]
+ str r4, [sp, 0x8]
+ bl sub_80053D0
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80053AC
+
+ thumb_func_start sub_80053D0
+sub_80053D0:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ adds r7, r3, 0
+ ldr r0, [sp, 0x1C]
+ lsls r0, 24
+ movs r2, 0
+ movs r3, 0x80
+ lsls r3, 8
+ strh r3, [r4]
+ cmp r0, 0
+ beq _080053F6
+ movs r0, 0x80
+ lsls r0, 5
+ adds r1, r0, 0
+ adds r0, r3, 0
+ orrs r0, r1
+ strh r0, [r4]
+_080053F6:
+ strh r2, [r4, 0x2]
+ ldr r0, [sp, 0x18]
+ strh r0, [r4, 0x4]
+ strh r2, [r4, 0xC]
+ strh r2, [r4, 0xE]
+ ldr r0, [sp, 0x14]
+ strh r0, [r4, 0x1C]
+ ldr r0, _08005438
+ strh r0, [r4, 0x20]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r4, 0x22]
+ str r2, [r4, 0x14]
+ str r2, [r4, 0x18]
+ strh r2, [r4, 0x6]
+ ldr r1, [r5, 0x4]
+ lsls r0, r6, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r0, r7, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [r4, 0x28]
+ str r0, [r4, 0x2C]
+ ldr r0, [r5]
+ str r0, [r4, 0x34]
+ ldr r0, [r5, 0xC]
+ str r0, [r4, 0x38]
+ ldr r0, [r5, 0x10]
+ str r0, [r4, 0x30]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08005438: .4byte 0x0000ffff
+ thumb_func_end sub_80053D0
+
+ thumb_func_start sub_800543C
+sub_800543C:
+ push {r4,r5,lr}
+ sub sp, 0x8
+ ldr r5, [sp, 0x14]
+ ldr r4, [sp, 0x18]
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r1, [r1, 0x4]
+ str r5, [sp]
+ str r4, [sp, 0x4]
+ bl sub_800545C
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_800543C
+
+ thumb_func_start sub_800545C
+sub_800545C:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r6, r1, 0
+ adds r7, r2, 0
+ adds r5, r3, 0
+ ldr r0, [sp, 0x18]
+ lsls r0, 24
+ movs r2, 0
+ movs r3, 0x80
+ lsls r3, 8
+ strh r3, [r4]
+ cmp r0, 0
+ beq _08005482
+ movs r0, 0x80
+ lsls r0, 5
+ adds r1, r0, 0
+ adds r0, r3, 0
+ orrs r0, r1
+ strh r0, [r4]
+_08005482:
+ strh r2, [r4, 0x2]
+ ldr r0, [sp, 0x14]
+ strh r0, [r4, 0x4]
+ strh r2, [r4, 0xC]
+ strh r2, [r4, 0xE]
+ strh r5, [r4, 0x1C]
+ ldr r0, _080054B8
+ strh r0, [r4, 0x20]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r4, 0x22]
+ str r2, [r4, 0x14]
+ str r2, [r4, 0x18]
+ strh r2, [r4, 0x6]
+ ldr r1, [r6, 0x4]
+ lsls r0, r7, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r0, [r0]
+ str r0, [r4, 0x28]
+ str r0, [r4, 0x2C]
+ ldr r0, [r6]
+ str r0, [r4, 0x34]
+ str r2, [r4, 0x30]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080054B8: .4byte 0x0000ffff
+ thumb_func_end sub_800545C
+
+ thumb_func_start sub_80054BC
+sub_80054BC:
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4]
+ movs r0, 0x80
+ lsls r0, 6
+ ands r0, r1
+ cmp r0, 0
+ beq _080054D0
+ movs r0, 0
+ b _080054D2
+_080054D0:
+ lsrs r0, r1, 15
+_080054D2:
+ cmp r0, 0
+ beq _08005586
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ ldrh r3, [r4]
+ cmp r0, 0
+ blt _08005524
+ movs r0, 0x80
+ lsls r0, 7
+ ands r0, r3
+ cmp r0, 0
+ bne _08005586
+ ldrh r2, [r4, 0x6]
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ ldr r0, _0800550C
+ cmp r1, r0
+ bgt _080054FA
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x6]
+_080054FA:
+ ldrh r1, [r4, 0x4]
+ movs r2, 0x4
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _08005510
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x4]
+ b _08005586
+ .align 2, 0
+_0800550C: .4byte 0x0000752f
+_08005510:
+ ldrh r1, [r4, 0x2]
+ movs r2, 0x2
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _08005524
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _08005586
+_08005524:
+ ldr r0, [r4, 0x2C]
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08005550
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r3
+ cmp r0, 0
+ bne _08005542
+ movs r1, 0x80
+ lsls r1, 6
+ adds r0, r1, 0
+ orrs r0, r3
+ strh r0, [r4]
+ b _08005586
+_08005542:
+ ldr r0, [r4, 0x28]
+ str r0, [r4, 0x2C]
+ bl Random
+ movs r1, 0x1
+ ands r0, r1
+ strh r0, [r4, 0x4]
+_08005550:
+ ldrh r1, [r4]
+ movs r2, 0x80
+ lsls r2, 4
+ adds r0, r2, 0
+ orrs r0, r1
+ strh r0, [r4]
+ ldr r1, [r4, 0x2C]
+ ldrb r0, [r1]
+ strh r0, [r4, 0x2]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x10]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x12]
+ ldrb r0, [r1, 0x1]
+ str r0, [r4, 0x14]
+ ldrb r2, [r1, 0x1]
+ ldr r0, [r4, 0x18]
+ orrs r0, r2
+ str r0, [r4, 0x18]
+ adds r1, 0xC
+ str r1, [r4, 0x2C]
+_08005586:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80054BC
+
+ .align 2, 0 @ Don't pad with nop.