summaryrefslogtreecommitdiff
path: root/asm/ground_sprite.s
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-10-22 10:01:07 -0700
committerGitHub <noreply@github.com>2021-10-22 10:01:07 -0700
commit3e5dd1d047bada52ab0dce2fe58b04e39bcaa1cc (patch)
tree0e40067d711c783ef97667f4a8256f38ab0d4b0a /asm/ground_sprite.s
parent3f7ee3a806d965fae70fd98f2cd1af13a2e4cf0b (diff)
Death by 74 files (#65)
* death by 74 files * 20% reached * doc move stuff in pokemon * fix undef reference * doc more and plumb a few more constanst for num party members and num moves * that struct is def PokemonMove.. clean up all code with it
Diffstat (limited to 'asm/ground_sprite.s')
-rw-r--r--asm/ground_sprite.s2704
1 files changed, 2704 insertions, 0 deletions
diff --git a/asm/ground_sprite.s b/asm/ground_sprite.s
new file mode 100644
index 0000000..aa23ef4
--- /dev/null
+++ b/asm/ground_sprite.s
@@ -0,0 +1,2704 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80A62F0
+sub_80A62F0:
+ push {r4-r7,lr}
+ ldr r4, _080A6378
+ movs r0, 0x88
+ lsls r0, 1
+ movs r1, 0x6
+ bl MemoryAlloc
+ str r0, [r4]
+ ldr r0, _080A637C
+ ldr r1, _080A6380
+ bl OpenFileAndGetFileDataPtr
+ ldr r1, _080A6384
+ str r0, [r1]
+ movs r0, 0x1
+ bl sub_800DAC0
+ ldr r4, [r4]
+ ldr r1, _080A6388
+ movs r0, 0x16
+ str r0, [r1]
+ ldr r1, _080A638C
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r0, 0
+ movs r2, 0
+ movs r1, 0x80
+ lsls r1, 9
+ adds r3, r1, 0
+_080A632A:
+ str r2, [r4]
+ lsls r0, 4
+ str r0, [r4, 0x4]
+ str r2, [r4, 0x8]
+ adds r0, r1, 0
+ adds r1, r3
+ asrs r0, 16
+ adds r4, 0xC
+ cmp r0, 0x15
+ ble _080A632A
+ ldr r0, _080A6378
+ ldr r0, [r0]
+ movs r1, 0x84
+ lsls r1, 1
+ adds r4, r0, r1
+ movs r6, 0
+ movs r7, 0
+ movs r5, 0xE8
+ lsls r5, 13
+_080A6350:
+ strh r7, [r4]
+ strh r7, [r4, 0x2]
+ lsrs r0, r5, 16
+ movs r1, 0
+ bl sub_80997F4
+ movs r0, 0x80
+ lsls r0, 9
+ adds r5, r0
+ adds r6, 0x1
+ adds r4, 0x4
+ cmp r6, 0x1
+ ble _080A6350
+ movs r0, 0x1
+ negs r0, r0
+ bl GroundSprite_Reset
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6378: .4byte gUnknown_3001B7C
+_080A637C: .4byte gUnknown_81177CC
+_080A6380: .4byte gDungeonFileArchive
+_080A6384: .4byte gUnknown_203B4B4
+_080A6388: .4byte gUnknown_2039DD4
+_080A638C: .4byte gUnknown_2039DD0
+ thumb_func_end sub_80A62F0
+
+ thumb_func_start GroundSprite_Reset
+GroundSprite_Reset:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 16
+ asrs r0, 16
+ mov r9, r0
+ ldr r1, _080A641C
+ movs r0, 0
+ bl Log
+ ldr r0, _080A6420
+ movs r1, 0
+ mov r8, r1
+ strh r1, [r0]
+ ldr r0, _080A6424
+ strh r1, [r0]
+ bl sub_80A6460
+ mov r0, r9
+ bl sub_80A4D48
+ lsls r0, 24
+ movs r1, 0x2
+ cmp r0, 0
+ beq _080A63C6
+ movs r1, 0x3
+_080A63C6:
+ movs r0, 0xF8
+ lsls r0, 1
+ bl sub_808E53C
+ ldr r5, _080A6428
+ adds r0, r5, 0
+ bl sub_8004E8C
+ ldr r4, _080A642C
+ adds r0, r4, 0
+ bl sub_8004E8C
+ ldrh r1, [r4, 0x4]
+ ldr r6, _080A6430
+ adds r0, r6, 0
+ ands r0, r1
+ strh r0, [r4, 0x4]
+ ldrh r1, [r4, 0xA]
+ adds r0, r6, 0
+ ands r0, r1
+ movs r2, 0x80
+ lsls r2, 4
+ adds r7, r2, 0
+ orrs r0, r7
+ strh r0, [r4, 0xA]
+ mov r0, r9
+ bl sub_80A4D48
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A6434
+ ldrh r1, [r5, 0x4]
+ adds r0, r6, 0
+ ands r0, r1
+ strh r0, [r5, 0x4]
+ ldrh r1, [r5, 0xA]
+ adds r0, r6, 0
+ ands r0, r1
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r1, r2, 0
+ orrs r0, r1
+ b _080A6444
+ .align 2, 0
+_080A641C: .4byte gUnknown_81177D8
+_080A6420: .4byte gUnknown_2039DCC
+_080A6424: .4byte gUnknown_2039DCE
+_080A6428: .4byte gUnknown_2039DB0
+_080A642C: .4byte gUnknown_2039DC0
+_080A6430: .4byte 0x0000f3ff
+_080A6434:
+ ldrh r1, [r5, 0x4]
+ adds r0, r6, 0
+ ands r0, r1
+ strh r0, [r5, 0x4]
+ ldrh r1, [r5, 0xA]
+ adds r0, r6, 0
+ ands r0, r1
+ orrs r0, r7
+_080A6444:
+ strh r0, [r5, 0xA]
+ movs r0, 0x1
+ bl ResetSprites
+ movs r0, 0x1
+ bl nullsub_10
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end GroundSprite_Reset
+
+ thumb_func_start sub_80A6460
+sub_80A6460:
+ push {r4-r7,lr}
+ ldr r0, _080A649C
+ ldr r1, _080A64A0
+ bl OpenFileAndGetFileDataPtr
+ adds r7, r0, 0
+ movs r5, 0x80
+ lsls r5, 1
+ ldr r4, [r7, 0x4]
+ movs r6, 0xC
+_080A6474:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x10
+ bl sub_809971C
+ adds r0, r5, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r5, r0, 16
+ adds r4, 0x40
+ subs r6, 0x1
+ cmp r6, 0
+ bge _080A6474
+ adds r0, r7, 0
+ bl CloseFile
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A649C: .4byte gUnknown_81177EC
+_080A64A0: .4byte gMonsterFileArchive
+ thumb_func_end sub_80A6460
+
+ thumb_func_start sub_80A64A4
+sub_80A64A4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r0, _080A6508
+ ldr r0, [r0]
+ movs r1, 0x84
+ lsls r1, 1
+ adds r7, r0, r1
+ bl sub_80A6460
+ movs r0, 0
+ mov r8, r0
+_080A64C0:
+ movs r1, 0x2
+ ldrsh r0, [r7, r1]
+ cmp r0, 0
+ ble _080A6568
+ ldrh r5, [r7]
+ mov r0, r8
+ adds r0, 0x1D
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ mov r1, r8
+ lsls r0, r1, 20
+ movs r1, 0xE8
+ lsls r1, 17
+ adds r0, r1
+ lsrs r0, 16
+ mov r9, r0
+ movs r0, 0x80
+ lsls r0, 2
+ adds r1, r0, 0
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080A6514
+ ldr r0, _080A650C
+ ldr r1, _080A6510
+ bl OpenFileAndGetFileDataPtr
+ adds r6, r0, 0
+ movs r0, 0xFF
+ ands r0, r5
+ lsls r0, 6
+ ldr r1, [r6, 0x4]
+ adds r2, r1, r0
+ b _080A652A
+ .align 2, 0
+_080A6508: .4byte gUnknown_3001B7C
+_080A650C: .4byte gUnknown_81177EC
+_080A6510: .4byte gMonsterFileArchive
+_080A6514:
+ movs r0, 0xFF
+ ands r0, r5
+ lsls r0, 2
+ ldr r1, _080A6584
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080A6588
+ bl OpenFileAndGetFileDataPtr
+ adds r6, r0, 0
+ ldr r2, [r6, 0x4]
+_080A652A:
+ movs r1, 0x80
+ lsls r1, 5
+ adds r0, r1, 0
+ adds r1, r5, 0
+ ands r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ negs r1, r1
+ lsrs r4, r1, 31
+ movs r1, 0x80
+ lsls r1, 6
+ adds r0, r1, 0
+ ands r5, r0
+ cmp r5, 0
+ beq _080A654C
+ movs r0, 0x2
+ orrs r4, r0
+_080A654C:
+ mov r0, r9
+ adds r1, r2, 0
+ movs r2, 0x10
+ bl sub_809971C
+ mov r0, r10
+ adds r1, r4, 0
+ bl sub_80997F4
+ cmp r6, 0
+ beq _080A6568
+ adds r0, r6, 0
+ bl CloseFile
+_080A6568:
+ movs r0, 0x1
+ add r8, r0
+ adds r7, 0x4
+ mov r1, r8
+ cmp r1, 0x1
+ ble _080A64C0
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6584: .4byte gUnknown_81178F4
+_080A6588: .4byte gOrnamentFileArchive
+ thumb_func_end sub_80A64A4
+
+ thumb_func_start sub_80A658C
+sub_80A658C:
+ push {r4,lr}
+ bl sub_800DB7C
+ movs r0, 0
+ bl ResetSprites
+ movs r0, 0
+ bl nullsub_10
+ bl sub_8005180
+ bl nullsub_12
+ bl CopySpritesToOam
+ bl nullsub_13
+ bl sub_8005304
+ bl nullsub_14
+ ldr r0, _080A65D0
+ ldr r0, [r0]
+ bl CloseFile
+ ldr r4, _080A65D4
+ ldr r0, [r4]
+ bl MemoryFree
+ movs r0, 0
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A65D0: .4byte gUnknown_203B4B4
+_080A65D4: .4byte gUnknown_3001B7C
+ thumb_func_end sub_80A658C
+
+ thumb_func_start sub_80A65D8
+sub_80A65D8:
+ adds r0, 0x50
+ ldrh r0, [r0]
+ bx lr
+ thumb_func_end sub_80A65D8
+
+ thumb_func_start sub_80A65E0
+sub_80A65E0:
+ lsrs r0, 16
+ ldr r2, _080A65EC
+ adds r1, r2, 0
+ ands r0, r1
+ bx lr
+ .align 2, 0
+_080A65EC: .4byte 0x0000337f
+ thumb_func_end sub_80A65E0
+
+ thumb_func_start sub_80A65F0
+sub_80A65F0:
+ push {r4-r6,lr}
+ adds r3, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, 0x50
+ strh r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ negs r0, r0
+ asrs r2, r0, 31
+ movs r0, 0x40
+ ands r2, r0
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080A6616
+ subs r2, 0x40
+_080A6616:
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A6624
+ adds r1, r2, 0
+ adds r1, 0x48
+ b _080A6628
+_080A6624:
+ adds r1, r2, 0
+ adds r1, 0x40
+_080A6628:
+ adds r0, r3, 0
+ adds r0, 0x6A
+ strh r1, [r0]
+ adds r2, r3, 0
+ adds r2, 0x50
+ ldrh r1, [r2]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _080A6648
+ adds r1, r3, 0
+ adds r1, 0x3C
+ ldr r0, _080A6644
+ b _080A664E
+ .align 2, 0
+_080A6644: .4byte gUnknown_2039DC0
+_080A6648:
+ adds r1, r3, 0
+ adds r1, 0x3C
+ ldr r0, _080A6680
+_080A664E:
+ ldm r0!, {r4-r6}
+ stm r1!, {r4-r6}
+ ldrh r1, [r2]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080A6678
+ ldrh r2, [r3, 0x3C]
+ ldr r1, _080A6684
+ adds r0, r1, 0
+ ands r0, r2
+ strh r0, [r3, 0x3C]
+ adds r2, r3, 0
+ adds r2, 0x42
+ ldrh r0, [r2]
+ ands r1, r0
+ movs r3, 0x80
+ lsls r3, 3
+ adds r0, r3, 0
+ orrs r1, r0
+ strh r1, [r2]
+_080A6678:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6680: .4byte gUnknown_2039DB0
+_080A6684: .4byte 0x0000f3ff
+ thumb_func_end sub_80A65F0
+
+ thumb_func_start sub_80A6688
+sub_80A6688:
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ bl sub_80A65E0
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_80A65F0
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6688
+
+ thumb_func_start sub_80A66A4
+sub_80A66A4:
+ push {lr}
+ movs r1, 0
+ adds r0, 0x48
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ ble _080A66B4
+ movs r1, 0x1
+_080A66B4:
+ adds r0, r1, 0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A66A4
+
+ thumb_func_start sub_80A66BC
+sub_80A66BC:
+ push {lr}
+ adds r0, 0x52
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bge _080A66CC
+ movs r0, 0
+ b _080A66CE
+_080A66CC:
+ movs r0, 0x1
+_080A66CE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A66BC
+
+ thumb_func_start sub_80A66D4
+sub_80A66D4:
+ push {lr}
+ adds r1, r0, 0
+ adds r0, 0x52
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bge _080A66F2
+ adds r0, r1, 0
+ adds r0, 0x48
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ ble _080A66F2
+ movs r0, 0x1
+ b _080A66F4
+_080A66F2:
+ movs r0, 0
+_080A66F4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A66D4
+
+ thumb_func_start sub_80A66F8
+sub_80A66F8:
+ push {lr}
+ adds r1, r0, 0
+ adds r0, 0x52
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ blt _080A6716
+ ldrh r1, [r1]
+ movs r0, 0x80
+ lsls r0, 6
+ ands r0, r1
+ cmp r0, 0
+ bne _080A6716
+ lsrs r0, r1, 15
+ b _080A6718
+_080A6716:
+ movs r0, 0
+_080A6718:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A66F8
+
+ thumb_func_start sub_80A671C
+sub_80A671C:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r6, r4, 0
+ adds r6, 0x58
+ movs r0, 0
+ ldrsh r1, [r6, r0]
+ cmp r1, 0
+ beq _080A6752
+ movs r0, 0xE0
+ lsls r0, 1
+ cmp r1, r0
+ beq _080A674A
+ ldr r0, [r4, 0x5C]
+ movs r5, 0x1
+ negs r5, r5
+ cmp r0, r5
+ beq _080A674A
+ bl sub_800E9E4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _080A674E
+_080A674A:
+ movs r0, 0x1
+ b _080A6754
+_080A674E:
+ str r5, [r4, 0x5C]
+ strh r0, [r6]
+_080A6752:
+ movs r0, 0
+_080A6754:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A671C
+
+ thumb_func_start sub_80A675C
+sub_80A675C:
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r6, r1, 0
+ mov r0, sp
+ bl sub_809D248
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A678C
+ ldr r1, [r6]
+ cmp r1, 0
+ bge _080A6776
+ adds r1, 0xFF
+_080A6776:
+ asrs r1, 8
+ ldr r0, [sp]
+ subs r4, r1, r0
+ ldr r1, [r6, 0x4]
+ cmp r1, 0
+ bge _080A6784
+ adds r1, 0xFF
+_080A6784:
+ asrs r1, 8
+ ldr r0, [sp, 0x4]
+ subs r5, r1, r0
+ b _080A67A0
+_080A678C:
+ ldr r0, [r6]
+ cmp r0, 0
+ bge _080A6794
+ adds r0, 0xFF
+_080A6794:
+ asrs r4, r0, 8
+ ldr r1, [r6, 0x4]
+ cmp r1, 0
+ bge _080A679E
+ adds r1, 0xFF
+_080A679E:
+ asrs r5, r1, 8
+_080A67A0:
+ adds r1, r4, 0
+ adds r1, 0x40
+ ldr r0, _080A67BC
+ cmp r1, r0
+ bhi _080A67C0
+ movs r0, 0x10
+ negs r0, r0
+ cmp r5, r0
+ blt _080A67C0
+ cmp r5, 0xCF
+ bgt _080A67C0
+ movs r0, 0x1
+ b _080A67C2
+ .align 2, 0
+_080A67BC: .4byte 0x0000016f
+_080A67C0:
+ movs r0, 0
+_080A67C2:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A675C
+
+ thumb_func_start sub_80A67CC
+sub_80A67CC:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r7, 0
+ cmp r5, 0
+ beq _080A67E2
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ ble _080A67E2
+ movs r7, 0x1
+_080A67E2:
+ adds r0, r2, 0
+ bl sub_80A65E0
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_80A65F0
+ movs r1, 0
+ str r1, [r4, 0x74]
+ str r1, [r4, 0x78]
+ movs r6, 0x1
+ negs r6, r6
+ str r6, [r4, 0x7C]
+ adds r0, r4, 0
+ adds r0, 0x70
+ strb r1, [r0]
+ subs r0, 0x4
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r2, r4, 0
+ adds r2, 0x52
+ ldr r0, _080A6884
+ strh r0, [r2]
+ str r1, [r4, 0x54]
+ adds r0, r4, 0
+ adds r0, 0x64
+ strh r1, [r0]
+ adds r2, 0x14
+ adds r0, r6, 0
+ adds r3, r0, 0
+ strh r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0x68
+ strh r1, [r0]
+ subs r0, 0x10
+ strh r1, [r0]
+ adds r1, r4, 0
+ adds r1, 0x5A
+ movs r0, 0xFF
+ strb r0, [r1]
+ str r6, [r4, 0x5C]
+ str r6, [r4, 0x60]
+ cmp r7, 0
+ beq _080A6888
+ ldr r0, [r5]
+ ldr r1, [r5, 0x4]
+ str r0, [r4, 0x48]
+ str r1, [r4, 0x4C]
+ adds r5, r4, 0
+ adds r5, 0x48
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_80A68F8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080A689A
+ adds r0, r4, 0
+ adds r0, 0x50
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r1
+ cmp r0, 0
+ bne _080A689A
+ adds r0, r5, 0
+ bl sub_80A6CF4
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A689A
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_80A68F8
+ b _080A689A
+ .align 2, 0
+_080A6884: .4byte 0x0000ffff
+_080A6888:
+ adds r1, r4, 0
+ adds r1, 0x48
+ ldrh r0, [r1]
+ orrs r0, r3
+ strh r0, [r1]
+ adds r0, r4, 0
+ adds r0, 0x4A
+ strh r7, [r0]
+ str r7, [r4, 0x4C]
+_080A689A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A67CC
+
+ thumb_func_start sub_80A68A0
+sub_80A68A0:
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x50
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080A68CE
+ adds r0, r4, 0
+ adds r0, 0x58
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080A68CE
+ ldr r1, [r4, 0x5C]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _080A68CE
+ adds r0, r1, 0
+ bl sub_800DC14
+_080A68CE:
+ ldr r0, [r4, 0x54]
+ cmp r0, 0
+ beq _080A68DC
+ bl CloseFile
+ movs r0, 0
+ str r0, [r4, 0x54]
+_080A68DC:
+ adds r0, r4, 0
+ bl sub_80A69FC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A68A0
+
+ thumb_func_start sub_80A68E8
+sub_80A68E8:
+ push {lr}
+ movs r0, 0x15
+_080A68EC:
+ subs r0, 0x1
+ cmp r0, 0
+ bge _080A68EC
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A68E8
+
+ thumb_func_start sub_80A68F8
+sub_80A68F8:
+ push {r4-r7,lr}
+ mov r12, r0
+ adds r5, r2, 0
+ ldr r0, _080A6924
+ ldr r4, [r0]
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, r5
+ blt _080A6956
+ adds r5, r0, 0
+ movs r3, 0
+ ldr r0, [r4]
+ mov r6, r12
+ adds r6, 0x52
+ mov r7, r12
+ adds r7, 0x64
+ cmp r0, 0
+ bne _080A6928
+ movs r2, 0x1
+ cmp r2, r5
+ blt _080A692A
+ b _080A6986
+ .align 2, 0
+_080A6924: .4byte gUnknown_3001B7C
+_080A6928:
+ movs r2, 0
+_080A692A:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ asrs r3, r0, 16
+ adds r4, 0xC
+ cmp r3, 0x15
+ bgt _080A6986
+ ldr r0, [r4]
+ cmp r0, 0
+ bne _080A6928
+ adds r2, 0x1
+ cmp r2, r5
+ blt _080A692A
+ lsls r0, r2, 1
+ adds r0, r2
+ lsls r0, 2
+ subs r0, 0xC
+ subs r4, r0
+ adds r0, r3, 0x1
+ subs r0, r2
+ lsls r0, 16
+ asrs r3, r0, 16
+ b _080A6986
+_080A6956:
+ movs r3, 0x15
+ adds r4, 0xFC
+ ldr r0, [r4]
+ mov r6, r12
+ adds r6, 0x52
+ mov r7, r12
+ adds r7, 0x64
+ cmp r0, 0
+ bne _080A696C
+ movs r2, 0x1
+ b _080A6982
+_080A696C:
+ movs r2, 0
+_080A696E:
+ subs r0, r3, 0x1
+ lsls r0, 16
+ asrs r3, r0, 16
+ subs r4, 0xC
+ cmp r3, 0
+ blt _080A6986
+ ldr r0, [r4]
+ cmp r0, 0
+ bne _080A696C
+ adds r2, 0x1
+_080A6982:
+ cmp r2, r5
+ blt _080A696E
+_080A6986:
+ cmp r2, r5
+ blt _080A69C4
+ strh r3, [r6]
+ strh r5, [r7]
+ movs r0, 0x1
+ str r0, [r4]
+ mov r0, r12
+ str r0, [r4, 0x8]
+ ldrh r1, [r1, 0x2]
+ bl GroundSprite_ExtendPaletteAdd
+ cmp r5, 0x1
+ ble _080A69B2
+ movs r2, 0x2
+ adds r0, r4, 0
+ adds r0, 0xC
+ subs r1, r5, 0x1
+_080A69A8:
+ str r2, [r0]
+ adds r0, 0xC
+ subs r1, 0x1
+ cmp r1, 0
+ bne _080A69A8
+_080A69B2:
+ ldr r1, _080A69C0
+ ldr r0, [r1]
+ subs r0, r5
+ str r0, [r1]
+ movs r0, 0x1
+ b _080A69EC
+ .align 2, 0
+_080A69C0: .4byte gUnknown_2039DD4
+_080A69C4:
+ ldr r1, _080A69F4
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ negs r0, r0
+ mov r1, r12
+ str r0, [r1, 0x7C]
+ mov r0, r12
+ adds r0, 0x70
+ movs r1, 0
+ strb r1, [r0]
+ ldr r0, _080A69F8
+ strh r0, [r6]
+ strh r1, [r7]
+ mov r0, r12
+ adds r0, 0x6C
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ movs r0, 0
+_080A69EC:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080A69F4: .4byte gUnknown_2039DD0
+_080A69F8: .4byte 0x0000ffff
+ thumb_func_end sub_80A68F8
+
+ thumb_func_start sub_80A69FC
+sub_80A69FC:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r6, 0
+ adds r7, 0x52
+ movs r0, 0
+ ldrsh r4, [r7, r0]
+ ldr r0, _080A6A80
+ lsls r1, r4, 1
+ adds r1, r4
+ lsls r1, 2
+ ldr r0, [r0]
+ adds r5, r0, r1
+ cmp r4, 0
+ blt _080A6A7A
+ adds r0, r6, 0
+ bl GroundSprite_ExtendPaletteDelete
+ movs r0, 0
+ str r0, [r5, 0x8]
+ str r0, [r5]
+ adds r5, 0xC
+ ldr r1, _080A6A84
+ ldr r0, [r1]
+ adds r0, 0x1
+ str r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 16
+ asrs r4, r0, 16
+ adds r6, 0x64
+ mov r12, r6
+ cmp r4, 0x15
+ bgt _080A6A6A
+ ldr r0, [r5]
+ cmp r0, 0x2
+ bne _080A6A6A
+ movs r6, 0
+ adds r2, r1, 0
+ lsls r1, r4, 16
+ movs r0, 0x80
+ lsls r0, 9
+ adds r1, r0
+ adds r3, r0, 0
+_080A6A50:
+ str r6, [r5]
+ adds r5, 0xC
+ ldr r0, [r2]
+ adds r0, 0x1
+ str r0, [r2]
+ adds r0, r1, 0
+ adds r1, r3
+ asrs r4, r0, 16
+ cmp r4, 0x15
+ bgt _080A6A6A
+ ldr r0, [r5]
+ cmp r0, 0x2
+ beq _080A6A50
+_080A6A6A:
+ ldr r0, _080A6A88
+ strh r0, [r7]
+ movs r0, 0
+ mov r1, r12
+ strh r0, [r1]
+ ldr r1, _080A6A8C
+ movs r0, 0x1
+ strb r0, [r1]
+_080A6A7A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6A80: .4byte gUnknown_3001B7C
+_080A6A84: .4byte gUnknown_2039DD4
+_080A6A88: .4byte 0x0000ffff
+_080A6A8C: .4byte gUnknown_2039DD0
+ thumb_func_end sub_80A69FC
+
+ thumb_func_start GroundSprite_ExtendPaletteAdd
+GroundSprite_ExtendPaletteAdd:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ mov r10, r0
+ lsls r1, 16
+ lsrs r2, r1, 16
+ adds r5, r2, 0
+ movs r0, 0xC0
+ lsls r0, 2
+ ands r0, r2
+ cmp r0, 0
+ bne _080A6AB0
+ b _080A6C6C
+_080A6AB0:
+ movs r0, 0x80
+ lsls r0, 3
+ ands r0, r2
+ cmp r0, 0
+ beq _080A6AD8
+ ldr r0, _080A6AD4
+ ldr r1, [r0]
+ movs r3, 0x86
+ lsls r3, 1
+ adds r4, r1, r3
+ ldrh r1, [r4]
+ adds r3, r0, 0
+ cmp r1, r2
+ bne _080A6B36
+ ldrh r0, [r4, 0x2]
+ adds r0, 0x1
+ strh r0, [r4, 0x2]
+ b _080A6C78
+ .align 2, 0
+_080A6AD4: .4byte gUnknown_3001B7C
+_080A6AD8:
+ movs r0, 0
+ mov r8, r0
+ ldr r1, _080A6B1C
+ ldr r0, [r1]
+ movs r2, 0x84
+ lsls r2, 1
+ adds r4, r0, r2
+ adds r3, r1, 0
+ movs r1, 0xE8
+ lsls r1, 13
+_080A6AEC:
+ ldrh r0, [r4]
+ cmp r0, r5
+ bne _080A6B24
+ lsrs r1, 16
+ adds r3, r1, 0
+ ldrh r0, [r4, 0x2]
+ adds r0, 0x1
+ strh r0, [r4, 0x2]
+ mov r0, r10
+ cmp r0, 0
+ beq _080A6B08
+ subs r1, 0x10
+ adds r0, 0x68
+ strh r1, [r0]
+_080A6B08:
+ adds r0, r3, 0
+ subs r0, 0x10
+ str r0, [sp]
+ str r5, [sp, 0x4]
+ movs r0, 0
+ ldr r1, _080A6B20
+ mov r2, r8
+ bl Log
+ b _080A6C78
+ .align 2, 0
+_080A6B1C: .4byte gUnknown_3001B7C
+_080A6B20: .4byte gUnknown_81177F4
+_080A6B24:
+ movs r2, 0x80
+ lsls r2, 9
+ adds r1, r2
+ movs r0, 0x1
+ add r8, r0
+ adds r4, 0x4
+ mov r2, r8
+ cmp r2, 0x1
+ ble _080A6AEC
+_080A6B36:
+ movs r0, 0x80
+ lsls r0, 3
+ ands r0, r5
+ cmp r0, 0
+ beq _080A6B68
+ movs r0, 0x1
+ mov r8, r0
+ ldr r0, [r3]
+ movs r1, 0x86
+ lsls r1, 1
+ adds r4, r0, r1
+ movs r2, 0x2
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A6BA8
+ ldr r0, _080A6B60
+ ldr r1, _080A6B64
+ adds r2, r5, 0
+ bl FatalError
+ .align 2, 0
+_080A6B60: .4byte gUnknown_8117858
+_080A6B64: .4byte gUnknown_8117864
+_080A6B68:
+ movs r0, 0
+ mov r8, r0
+ ldr r0, [r3]
+ movs r1, 0x84
+ lsls r1, 1
+ adds r4, r0, r1
+ movs r2, 0x2
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080A6B90
+_080A6B7C:
+ movs r3, 0x1
+ add r8, r3
+ adds r4, 0x4
+ mov r0, r8
+ cmp r0, 0x1
+ bgt _080A6B96
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bgt _080A6B7C
+_080A6B90:
+ mov r2, r8
+ cmp r2, 0x1
+ ble _080A6BA8
+_080A6B96:
+ ldr r0, _080A6BA0
+ ldr r1, _080A6BA4
+ adds r2, r5, 0
+ bl FatalError
+ .align 2, 0
+_080A6BA0: .4byte gUnknown_8117888
+_080A6BA4: .4byte gUnknown_8117864
+_080A6BA8:
+ mov r0, r8
+ adds r0, 0x1D
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0xC]
+ mov r3, r8
+ lsls r0, r3, 20
+ movs r1, 0xE8
+ lsls r1, 17
+ adds r0, r1
+ lsrs r0, 16
+ str r0, [sp, 0x10]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r5
+ cmp r0, 0
+ beq _080A6BE8
+ ldr r0, _080A6BE0
+ ldr r1, _080A6BE4
+ bl OpenFileAndGetFileDataPtr
+ mov r9, r0
+ ldr r7, [r0, 0x4]
+ movs r0, 0xFF
+ ands r0, r5
+ lsls r0, 6
+ adds r7, r0
+ b _080A6BFE
+ .align 2, 0
+_080A6BE0: .4byte gUnknown_81177EC
+_080A6BE4: .4byte gMonsterFileArchive
+_080A6BE8:
+ movs r0, 0xFF
+ ands r0, r5
+ lsls r0, 2
+ ldr r1, _080A6C60
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080A6C64
+ bl OpenFileAndGetFileDataPtr
+ mov r9, r0
+ ldr r7, [r0, 0x4]
+_080A6BFE:
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r5
+ lsls r0, 16
+ lsrs r0, 16
+ negs r0, r0
+ lsrs r6, r0, 31
+ movs r0, 0x80
+ lsls r0, 6
+ ands r0, r5
+ cmp r0, 0
+ beq _080A6C1A
+ movs r0, 0x2
+ orrs r6, r0
+_080A6C1A:
+ ldr r0, [sp, 0xC]
+ adds r1, r6, 0
+ bl sub_80997F4
+ ldr r0, [sp, 0x10]
+ adds r1, r7, 0
+ movs r2, 0x10
+ bl sub_809971C
+ strh r5, [r4]
+ movs r0, 0x1
+ strh r0, [r4, 0x2]
+ ldr r2, [sp, 0xC]
+ subs r2, 0x10
+ mov r3, r10
+ cmp r3, 0
+ beq _080A6C42
+ mov r0, r10
+ adds r0, 0x68
+ strh r2, [r0]
+_080A6C42:
+ ldr r1, _080A6C68
+ str r2, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r0, 0
+ mov r2, r8
+ ldr r3, [sp, 0xC]
+ bl Log
+ mov r0, r9
+ cmp r0, 0
+ beq _080A6C78
+ bl CloseFile
+ b _080A6C78
+ .align 2, 0
+_080A6C60: .4byte gUnknown_81178F4
+_080A6C64: .4byte gOrnamentFileArchive
+_080A6C68: .4byte gUnknown_8117894
+_080A6C6C:
+ mov r1, r10
+ cmp r1, 0
+ beq _080A6C78
+ mov r0, r10
+ adds r0, 0x68
+ strh r5, [r0]
+_080A6C78:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end GroundSprite_ExtendPaletteAdd
+
+ thumb_func_start GroundSprite_ExtendPaletteDelete
+GroundSprite_ExtendPaletteDelete:
+ push {r4-r6,lr}
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _080A6C9E
+ adds r0, 0x68
+ ldrh r0, [r0]
+ adds r5, r0, 0
+ subs r5, 0xD
+ cmp r5, 0
+ blt _080A6CE6
+ b _080A6CA0
+_080A6C9E:
+ movs r5, 0x1
+_080A6CA0:
+ ldr r0, _080A6CEC
+ lsls r1, r5, 2
+ movs r3, 0x84
+ lsls r3, 1
+ adds r1, r3
+ ldr r0, [r0]
+ adds r4, r0, r1
+ cmp r2, 0
+ beq _080A6CBA
+ adds r1, r2, 0
+ adds r1, 0x68
+ movs r0, 0
+ strh r0, [r1]
+_080A6CBA:
+ ldrh r0, [r4, 0x2]
+ subs r0, 0x1
+ movs r6, 0
+ strh r0, [r4, 0x2]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080A6CE6
+ ldr r1, _080A6CF0
+ ldrh r3, [r4]
+ movs r0, 0
+ adds r2, r5, 0
+ bl Log
+ strh r6, [r4]
+ strh r6, [r4, 0x2]
+ adds r0, r5, 0
+ adds r0, 0x1D
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0
+ bl sub_80997F4
+_080A6CE6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6CEC: .4byte gUnknown_3001B7C
+_080A6CF0: .4byte gUnknown_81178C0
+ thumb_func_end GroundSprite_ExtendPaletteDelete
+
+ thumb_func_start sub_80A6CF4
+sub_80A6CF4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x68
+ movs r1, 0
+ mov r8, r1
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ mov r9, r2
+ movs r2, 0
+ mov r10, r2
+ movs r0, 0x1
+ negs r0, r0
+ str r0, [sp, 0x60]
+ str r0, [sp, 0x64]
+ add r4, sp, 0x58
+ adds r0, r4, 0
+ bl sub_809D248
+ movs r7, 0
+ ldr r0, _080A6D70
+ ldr r3, [r0]
+ movs r1, 0x80
+ lsls r1, 6
+ mov r12, r1
+ mov r4, sp
+_080A6D2C:
+ ldr r0, [r3]
+ cmp r0, 0x1
+ bne _080A6DB4
+ ldr r2, [r3, 0x8]
+ adds r0, r2, 0
+ adds r0, 0x50
+ ldrh r1, [r0]
+ mov r0, r12
+ ands r0, r1
+ cmp r0, 0
+ bne _080A6DB4
+ ldr r0, [r2, 0x7C]
+ cmp r0, 0
+ blt _080A6DB4
+ ldr r1, [r2, 0x74]
+ cmp r1, 0
+ bge _080A6D50
+ adds r1, 0xFF
+_080A6D50:
+ asrs r1, 8
+ ldr r0, [sp, 0x58]
+ subs r5, r1, r0
+ ldr r1, [r2, 0x78]
+ cmp r1, 0
+ bge _080A6D5E
+ adds r1, 0xFF
+_080A6D5E:
+ asrs r1, 8
+ ldr r0, [sp, 0x5C]
+ subs r1, r0
+ adds r6, r1, 0
+ cmp r1, 0
+ ble _080A6D74
+ adds r0, r6, 0
+ adds r0, 0x28
+ b _080A6D78
+ .align 2, 0
+_080A6D70: .4byte gUnknown_3001B7C
+_080A6D74:
+ movs r0, 0x28
+ subs r0, r6
+_080A6D78:
+ str r0, [r2, 0x7C]
+ cmp r5, 0
+ ble _080A6D88
+ ldr r0, [r2, 0x7C]
+ cmp r5, r0
+ ble _080A6D92
+ str r5, [r2, 0x7C]
+ b _080A6D92
+_080A6D88:
+ negs r1, r5
+ ldr r0, [r2, 0x7C]
+ cmp r1, r0
+ ble _080A6D92
+ str r1, [r2, 0x7C]
+_080A6D92:
+ adds r0, r2, 0
+ adds r0, 0x48
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ add r10, r0
+ cmp r0, r9
+ blt _080A6DAE
+ ldr r0, [r2, 0x7C]
+ ldr r1, [sp, 0x64]
+ cmp r1, r0
+ bge _080A6DAE
+ mov r1, r8
+ str r1, [sp, 0x60]
+ str r0, [sp, 0x64]
+_080A6DAE:
+ stm r4!, {r2}
+ movs r2, 0x1
+ add r8, r2
+_080A6DB4:
+ adds r0, r7, 0x1
+ lsls r0, 16
+ asrs r7, r0, 16
+ adds r3, 0xC
+ cmp r7, 0x15
+ ble _080A6D2C
+ cmp r10, r9
+ blt _080A6E54
+ ldr r0, [sp, 0x60]
+ cmp r0, 0
+ blt _080A6DD8
+ lsls r0, 2
+ add r0, sp
+ ldr r0, [r0]
+ bl sub_80A69FC
+ movs r0, 0x1
+ b _080A6E56
+_080A6DD8:
+ mov r1, r8
+ cmp r1, 0
+ ble _080A6E54
+_080A6DDE:
+ movs r5, 0x1
+ negs r5, r5
+ adds r3, r5, 0
+ movs r6, 0
+ mov r7, r8
+ subs r7, 0x1
+ mov r2, r8
+ cmp r2, 0
+ ble _080A6E08
+ mov r2, sp
+ mov r1, r8
+_080A6DF4:
+ ldr r0, [r2]
+ ldr r0, [r0, 0x7C]
+ cmp r3, r0
+ bge _080A6E00
+ mov r5, r8
+ adds r3, r0, 0
+_080A6E00:
+ adds r2, 0x4
+ subs r1, 0x1
+ cmp r1, 0
+ bne _080A6DF4
+_080A6E08:
+ lsls r0, r5, 2
+ mov r1, sp
+ adds r4, r1, r0
+ ldr r0, [r4]
+ bl sub_80A69FC
+ mov r8, r7
+ adds r1, r5, 0
+ cmp r1, r8
+ bge _080A6E28
+ adds r2, r4, 0
+_080A6E1E:
+ ldr r0, [r2, 0x4]
+ stm r2!, {r0}
+ adds r1, 0x1
+ cmp r1, r8
+ blt _080A6E1E
+_080A6E28:
+ movs r1, 0
+ ldr r0, _080A6E40
+ ldr r3, [r0]
+_080A6E2E:
+ ldr r0, [r3]
+ cmp r0, 0
+ bne _080A6E44
+ adds r6, 0x1
+ cmp r6, r9
+ blt _080A6E46
+ movs r0, 0x1
+ b _080A6E56
+ .align 2, 0
+_080A6E40: .4byte gUnknown_3001B7C
+_080A6E44:
+ movs r6, 0
+_080A6E46:
+ adds r1, 0x1
+ adds r3, 0xC
+ cmp r1, 0x15
+ ble _080A6E2E
+ mov r2, r8
+ cmp r2, 0
+ bgt _080A6DDE
+_080A6E54:
+ movs r0, 0
+_080A6E56:
+ add sp, 0x68
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A6CF4
+
+ thumb_func_start sub_80A6E68
+sub_80A6E68:
+ push {lr}
+ movs r0, 0
+ bl ResetSprites
+ movs r0, 0
+ bl nullsub_10
+ bl sub_800E970
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6E68
+
+ thumb_func_start sub_80A6E80
+sub_80A6E80:
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r4, _080A6EC4
+ adds r0, r4, 0
+ bl sub_809D248
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080A6E98
+ str r0, [r4]
+ str r0, [r4, 0x4]
+_080A6E98:
+ bl sub_80ABA7C
+ bl sub_80ACAD4
+ bl sub_80AD7AC
+ ldrh r1, [r4, 0x4]
+ lsls r1, 16
+ ldrh r0, [r4]
+ orrs r0, r1
+ str r0, [sp]
+ mov r0, sp
+ bl sub_800E90C
+ bl sub_8005180
+ bl nullsub_12
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A6EC4: .4byte gUnknown_2039DD8
+ thumb_func_end sub_80A6E80
+
+ thumb_func_start sub_80A6EC8
+sub_80A6EC8:
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x52
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r0, 0
+ ble _080A6EF6
+ adds r0, r2, 0
+ adds r0, 0x48
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r1, r0
+ bgt _080A6EE4
+ adds r1, r0, 0
+_080A6EE4:
+ adds r0, r2, 0
+ adds r0, 0x64
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r0, r1
+ beq _080A6EF6
+ adds r0, r2, 0
+ adds r0, 0x66
+ strh r1, [r0]
+_080A6EF6:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6EC8
+
+ thumb_func_start sub_80A6EFC
+sub_80A6EFC:
+ push {r4-r7,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ lsls r1, 16
+ asrs r7, r1, 16
+ lsls r2, 24
+ asrs r6, r2, 24
+ adds r0, 0x52
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bge _080A6F48
+ adds r5, r4, 0
+ adds r5, 0x66
+ movs r2, 0
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ blt _080A6F28
+ adds r1, r4, 0
+ adds r1, 0x48
+ adds r2, r0, 0
+ b _080A6F62
+_080A6F28:
+ adds r1, r4, 0
+ adds r1, 0x48
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bgt _080A6F36
+ b _080A7038
+_080A6F36:
+ movs r2, 0x1
+ negs r2, r2
+ adds r0, r4, 0
+ bl sub_80A68F8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7038
+ b _080A6F72
+_080A6F48:
+ adds r5, r4, 0
+ adds r5, 0x66
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ blt _080A6F72
+ adds r0, r4, 0
+ bl sub_80A69FC
+ adds r1, r4, 0
+ adds r1, 0x48
+ movs r0, 0
+ ldrsh r2, [r5, r0]
+_080A6F62:
+ adds r0, r4, 0
+ bl sub_80A68F8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A7038
+ ldr r0, _080A6F8C
+ strh r0, [r5]
+_080A6F72:
+ movs r0, 0x80
+ lsls r0, 3
+ ands r0, r7
+ lsls r0, 16
+ asrs r3, r0, 16
+ cmp r3, 0
+ beq _080A6F94
+ ldrh r1, [r4]
+ ldr r0, _080A6F90
+ ands r0, r1
+ strh r0, [r4]
+ b _080A7038
+ .align 2, 0
+_080A6F8C: .4byte 0x0000ffff
+_080A6F90: .4byte 0x0000efff
+_080A6F94:
+ ldr r2, _080A6FE0
+ adds r0, r4, 0
+ adds r0, 0x52
+ movs r5, 0
+ ldrsh r1, [r0, r5]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, [r2]
+ adds r1, r0
+ mov r12, r1
+ adds r1, r4, 0
+ adds r1, 0x70
+ movs r0, 0x1
+ strb r0, [r1]
+ subs r0, 0x2
+ str r0, [r4, 0x7C]
+ movs r1, 0xE0
+ lsls r1, 3
+ ands r1, r7
+ movs r0, 0x80
+ lsls r0, 1
+ cmp r1, r0
+ beq _080A6FE4
+ cmp r1, r0
+ ble _080A6FEE
+ movs r0, 0x80
+ lsls r0, 2
+ cmp r1, r0
+ beq _080A6FFA
+ movs r0, 0xC0
+ lsls r0, 2
+ cmp r1, r0
+ bne _080A6FEE
+ adds r0, r4, 0
+ adds r0, 0x6C
+ strh r3, [r0]
+ b _080A7000
+ .align 2, 0
+_080A6FE0: .4byte gUnknown_3001B7C
+_080A6FE4:
+ adds r1, r4, 0
+ adds r1, 0x6C
+ movs r0, 0x80
+ strh r0, [r1]
+ b _080A7000
+_080A6FEE:
+ adds r1, r4, 0
+ adds r1, 0x6C
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r1]
+ b _080A7000
+_080A6FFA:
+ adds r0, r4, 0
+ adds r0, 0x6C
+ strh r1, [r0]
+_080A7000:
+ adds r0, r4, 0
+ adds r0, 0x6E
+ movs r1, 0
+ strh r1, [r0]
+ ldr r5, [r4, 0x4C]
+ movs r0, 0xFF
+ ands r0, r7
+ adds r2, r6, 0
+ cmp r6, 0
+ bge _080A7016
+ adds r2, r6, 0x7
+_080A7016:
+ asrs r2, 3
+ adds r2, r0, r2
+ movs r3, 0x7
+ ands r3, r6
+ mov r6, r12
+ ldr r0, [r6, 0x4]
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ lsls r0, r7, 16
+ lsrs r0, 27
+ movs r1, 0x1
+ ands r0, r1
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80053D0
+_080A7038:
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A6EFC
+
+ thumb_func_start sub_80A7040
+sub_80A7040:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r3, 0
+ lsls r1, 16
+ asrs r3, r1, 16
+ lsls r2, 24
+ asrs r2, 24
+ adds r0, 0x50
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080A708C
+ cmp r3, 0
+ beq _080A7068
+ movs r0, 0xE0
+ lsls r0, 1
+ cmp r3, r0
+ bne _080A7080
+_080A7068:
+ adds r0, r4, 0
+ bl sub_80A671C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A708C
+ adds r1, r4, 0
+ adds r1, 0x58
+ movs r0, 0xE0
+ lsls r0, 1
+ strh r0, [r1]
+ b _080A708C
+_080A7080:
+ adds r0, r4, 0
+ adds r0, 0x58
+ strh r3, [r0]
+ adds r0, 0x2
+ strb r2, [r0]
+ str r5, [r4, 0x60]
+_080A708C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7040
+
+ thumb_func_start sub_80A7094
+sub_80A7094:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x40
+ adds r7, r0, 0
+ mov r10, r1
+ mov r8, r2
+ str r3, [sp, 0x3C]
+ ldr r0, [r2]
+ ldr r1, [r2, 0x4]
+ str r0, [r7, 0x74]
+ str r1, [r7, 0x78]
+ movs r6, 0
+ str r6, [r7, 0x7C]
+ adds r0, r7, 0
+ adds r0, 0x50
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7172
+ adds r4, r7, 0
+ adds r4, 0x58
+ movs r0, 0
+ ldrsh r1, [r4, r0]
+ cmp r1, 0
+ beq _080A7172
+ movs r0, 0xE0
+ lsls r0, 1
+ cmp r1, r0
+ bne _080A70EC
+ ldr r0, [r7, 0x5C]
+ movs r5, 0x1
+ negs r5, r5
+ cmp r0, r5
+ beq _080A70E8
+ bl sub_800DC14
+ str r5, [r7, 0x5C]
+_080A70E8:
+ strh r6, [r4]
+ b _080A7172
+_080A70EC:
+ ldr r0, [r7, 0x5C]
+ movs r1, 0x1
+ negs r1, r1
+ mov r9, r1
+ cmp r0, r9
+ bne _080A7160
+ add r1, sp, 0x8
+ ldr r0, _080A715C
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ bl sub_800EE5C
+ bl sub_800EF64
+ add r2, sp, 0x14
+ movs r3, 0
+ ldrsh r0, [r4, r3]
+ str r0, [sp, 0x14]
+ str r6, [r2, 0x4]
+ adds r0, r7, 0
+ adds r0, 0x5A
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ str r0, [r2, 0x8]
+ mov r4, r8
+ ldr r0, [r4]
+ cmp r0, 0
+ bge _080A712C
+ adds r0, 0xFF
+_080A712C:
+ asrs r0, 8
+ strh r0, [r2, 0xC]
+ mov r5, r8
+ ldr r0, [r5, 0x4]
+ cmp r0, 0
+ bge _080A713A
+ adds r0, 0xFF
+_080A713A:
+ asrs r0, 8
+ strh r0, [r2, 0xE]
+ strh r6, [r2, 0x10]
+ strh r6, [r2, 0x12]
+ mov r0, r9
+ str r0, [r2, 0x14]
+ str r6, [r2, 0x18]
+ add r1, sp, 0x30
+ add r0, sp, 0x8
+ ldm r0!, {r3-r5}
+ stm r1!, {r3-r5}
+ adds r0, r2, 0
+ bl sub_800E890
+ str r0, [r7, 0x5C]
+ b _080A7172
+ .align 2, 0
+_080A715C: .4byte gUnknown_81178E0
+_080A7160:
+ bl sub_800E9E4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080A7172
+ mov r1, r9
+ str r1, [r7, 0x5C]
+ strh r0, [r4]
+_080A7172:
+ adds r0, r7, 0
+ adds r0, 0x52
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ blt _080A7222
+ adds r0, r7, 0
+ adds r0, 0x50
+ ldrh r4, [r0]
+ movs r0, 0x40
+ ands r0, r4
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ cmp r0, 0
+ bne _080A7222
+ mov r3, r8
+ ldr r1, [r3]
+ cmp r1, 0
+ bge _080A719C
+ adds r1, 0xFF
+_080A719C:
+ asrs r1, 8
+ ldr r2, _080A7228
+ ldr r0, [r2]
+ subs r5, r1, r0
+ mov r1, r8
+ ldr r0, [r1, 0x4]
+ cmp r0, 0
+ bge _080A71AE
+ adds r0, 0xFF
+_080A71AE:
+ asrs r1, r0, 8
+ ldr r0, [r2, 0x4]
+ subs r6, r1, r0
+ ldr r3, [sp, 0x3C]
+ cmp r3, 0
+ bge _080A71BC
+ adds r3, 0xFF
+_080A71BC:
+ asrs r0, r3, 8
+ subs r0, r6, r0
+ mov r8, r0
+ adds r1, r5, 0
+ adds r1, 0x40
+ ldr r0, _080A722C
+ cmp r1, r0
+ bhi _080A7274
+ movs r0, 0x10
+ negs r0, r0
+ cmp r6, r0
+ blt _080A7274
+ cmp r6, 0xCF
+ bgt _080A7274
+ cmp r8, r0
+ blt _080A7274
+ mov r2, r8
+ cmp r2, 0xCF
+ bgt _080A7274
+ movs r0, 0x10
+ ands r0, r4
+ cmp r0, 0
+ beq _080A7234
+ ldr r0, _080A7230
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A7234
+ adds r0, r7, 0
+ movs r1, 0
+ bl sub_80A72B8
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r7, 0
+ adds r0, 0x68
+ ldrh r0, [r0]
+ str r0, [sp]
+ adds r0, r7, 0
+ adds r0, 0x3C
+ str r0, [sp, 0x4]
+ adds r0, r7, 0
+ movs r2, 0xD0
+ movs r3, 0
+ bl sub_800558C
+ adds r0, r7, 0
+ adds r0, 0x70
+ mov r3, r9
+ strb r3, [r0]
+_080A7222:
+ movs r0, 0
+ b _080A72A6
+ .align 2, 0
+_080A7228: .4byte gUnknown_2039DD8
+_080A722C: .4byte 0x0000016f
+_080A7230: .4byte gUnknown_2039DCC
+_080A7234:
+ adds r4, r7, 0
+ adds r4, 0x70
+ ldrb r1, [r4]
+ adds r0, r7, 0
+ bl sub_80A72B8
+ adds r0, r7, 0
+ adds r0, 0x6A
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+ adds r3, r6
+ subs r0, 0x2
+ ldrh r0, [r0]
+ str r0, [sp]
+ adds r0, r7, 0
+ adds r0, 0x3C
+ str r0, [sp, 0x4]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ mov r2, r8
+ bl sub_800558C
+ movs r0, 0
+ strb r0, [r4]
+ mov r2, r10
+ cmp r2, 0
+ beq _080A7270
+ mov r3, r10
+ str r5, [r3]
+ str r6, [r3, 0x4]
+_080A7270:
+ movs r0, 0x1
+ b _080A72A6
+_080A7274:
+ adds r4, r7, 0
+ adds r4, 0x70
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _080A7222
+ adds r0, r7, 0
+ movs r1, 0x1
+ bl sub_80A72B8
+ movs r1, 0x98
+ lsls r1, 1
+ adds r0, r7, 0
+ adds r0, 0x68
+ ldrh r0, [r0]
+ str r0, [sp]
+ adds r0, r7, 0
+ adds r0, 0x3C
+ str r0, [sp, 0x4]
+ adds r0, r7, 0
+ movs r2, 0xD0
+ movs r3, 0
+ bl sub_800558C
+ movs r0, 0
+ strb r0, [r4]
+_080A72A6:
+ add sp, 0x40
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A7094
+
+ thumb_func_start sub_80A72B8
+sub_80A72B8:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ cmp r1, 0
+ beq _080A72D2
+ adds r1, r6, 0
+ adds r1, 0x6E
+ movs r0, 0
+ strh r0, [r1]
+ adds r0, r6, 0
+ bl sub_80054BC
+ b _080A7304
+_080A72D2:
+ adds r5, r6, 0
+ adds r5, 0x6E
+ adds r0, r6, 0
+ adds r0, 0x6C
+ ldrh r0, [r0]
+ ldrh r1, [r5]
+ adds r0, r1
+ strh r0, [r5]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080A7304
+ ldr r0, _080A730C
+ adds r7, r0, 0
+_080A72EE:
+ adds r4, r5, 0
+ ldrh r1, [r5]
+ adds r0, r7, r1
+ strh r0, [r5]
+ adds r0, r6, 0
+ bl sub_80054BC
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xFF
+ bgt _080A72EE
+_080A7304:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A730C: .4byte 0xffffff00
+ thumb_func_end sub_80A72B8
+
+ thumb_func_start sub_80A7310
+sub_80A7310:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x8
+ mov r12, r0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, 0x50
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _080A73DC
+ mov r0, r12
+ ldr r0, [r0, 0x5C]
+ mov r8, r0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r8, r0
+ beq _080A73DC
+ ldr r0, [r4]
+ cmp r0, 0
+ bge _080A7344
+ adds r0, 0xFF
+_080A7344:
+ lsls r0, 8
+ lsrs r0, 16
+ ldr r1, _080A73D0
+ mov r9, r1
+ ldr r2, [sp, 0x4]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0x4]
+ ldr r0, [r4, 0x4]
+ cmp r0, 0
+ bge _080A735C
+ adds r0, 0xFF
+_080A735C:
+ lsls r0, 8
+ lsrs r0, 16
+ lsls r0, 16
+ ldr r6, _080A73D4
+ adds r4, r6, 0
+ ands r4, r2
+ orrs r4, r0
+ str r4, [sp, 0x4]
+ asrs r2, r4, 16
+ ldr r0, _080A73D8
+ ldr r0, [r0, 0x4]
+ subs r0, r2, r0
+ mov r1, r12
+ adds r1, 0x6A
+ movs r7, 0
+ ldrsh r1, [r1, r7]
+ adds r0, r1
+ adds r7, r0, 0x2
+ cmp r3, 0
+ bge _080A7386
+ adds r3, 0xFF
+_080A7386:
+ asrs r0, r3, 8
+ subs r0, r2, r0
+ lsls r0, 16
+ adds r2, r6, 0
+ ands r2, r4
+ orrs r2, r0
+ str r2, [sp, 0x4]
+ cmp r5, 0
+ beq _080A73B8
+ ldr r1, [r5]
+ add r0, sp, 0x4
+ ldrh r0, [r0]
+ adds r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r0, r9
+ ands r0, r2
+ orrs r0, r1
+ asrs r2, r0, 16
+ ldr r1, [r5, 0x4]
+ adds r1, r2
+ lsls r1, 16
+ ands r0, r6
+ orrs r0, r1
+ str r0, [sp, 0x4]
+_080A73B8:
+ mov r0, r12
+ adds r0, 0x3C
+ str r0, [sp]
+ mov r0, r8
+ add r1, sp, 0x4
+ movs r2, 0
+ adds r3, r7, 0
+ bl sub_800E8AC
+ movs r0, 0x1
+ b _080A73DE
+ .align 2, 0
+_080A73D0: .4byte 0xffff0000
+_080A73D4: .4byte 0x0000ffff
+_080A73D8: .4byte gUnknown_2039DD8
+_080A73DC:
+ movs r0, 0
+_080A73DE:
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80A7310
+
+ thumb_func_start sub_80A73EC
+sub_80A73EC:
+ push {lr}
+ bl CopySpritesToOam
+ bl nullsub_13
+ bl sub_8005304
+ bl nullsub_14
+ ldr r1, _080A7420
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ ldr r1, _080A7424
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xB
+ bls _080A741A
+ movs r0, 0
+ strh r0, [r1]
+_080A741A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A7420: .4byte gUnknown_2039DCC
+_080A7424: .4byte gUnknown_2039DCE
+ thumb_func_end sub_80A73EC
+
+ thumb_func_start sub_80A7428
+sub_80A7428:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ adds r6, r0, 0
+ mov r8, r3
+ lsls r1, 16
+ asrs r7, r1, 16
+ lsls r2, 16
+ asrs r2, 16
+ adds r4, r2, 0
+ ldr r1, _080A7480
+ mov r0, sp
+ bl sprintf
+ ldr r1, _080A7484
+ mov r0, sp
+ bl OpenFile
+ adds r5, r0, 0
+ movs r1, 0
+ bl GetFileDataPtr
+ adds r0, r4, 0
+ bl GetPokemonSize
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080A7488
+ ldr r2, [sp, 0xC]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0xC]
+ movs r0, 0xD3
+ lsls r0, 1
+ cmp r4, r0
+ bne _080A7490
+ ldr r0, _080A748C
+ ands r0, r2
+ movs r1, 0x91
+ lsls r1, 17
+ orrs r0, r1
+ str r0, [sp, 0xC]
+ b _080A74AC
+ .align 2, 0
+_080A7480: .4byte gUnknown_8117EDC
+_080A7484: .4byte gMonsterFileArchive
+_080A7488: .4byte 0xffff0000
+_080A748C: .4byte 0x0000ffff
+_080A7490:
+ movs r1, 0
+ cmp r7, 0x47
+ bne _080A7498
+ movs r1, 0x1
+_080A7498:
+ adds r0, r4, 0
+ bl GetPokemonOverworldPalette
+ lsls r0, 24
+ lsrs r0, 8
+ ldr r2, _080A74E0
+ ldr r1, [sp, 0xC]
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp, 0xC]
+_080A74AC:
+ ldr r0, [r5, 0x4]
+ add r1, sp, 0xC
+ str r0, [r1, 0x4]
+ adds r0, r6, 0
+ mov r2, r8
+ bl sub_80A67CC
+ str r5, [r6, 0x54]
+ adds r0, r6, 0
+ adds r0, 0x52
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ blt _080A74D4
+ movs r1, 0xC0
+ lsls r1, 2
+ adds r0, r6, 0
+ movs r2, 0
+ bl sub_80A6EFC
+_080A74D4:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080A74E0: .4byte 0x0000ffff
+ thumb_func_end sub_80A7428
+
+ thumb_func_start sub_80A74E4
+sub_80A74E4:
+ push {lr}
+ bl sub_80A68A0
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A74E4
+
+ thumb_func_start sub_80A74F0
+sub_80A74F0:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ lsls r1, 16
+ asrs r4, r1, 16
+ lsls r2, 24
+ asrs r5, r2, 24
+ cmp r3, 0
+ bge _080A7514
+ movs r0, 0xE0
+ lsls r0, 1
+ cmp r4, r0
+ beq _080A7512
+ adds r0, r4, 0
+ bl sub_800E700
+ adds r3, r0, 0
+ b _080A7514
+_080A7512:
+ movs r3, 0
+_080A7514:
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_80A7040
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A74F0
+
+ thumb_func_start sub_80A7524
+sub_80A7524:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x18
+ adds r5, r0, 0
+ adds r6, r2, 0
+ adds r7, r3, 0
+ lsls r1, 16
+ asrs r1, 16
+ mov r8, r1
+ mov r1, sp
+ bl sub_80A7094
+ lsls r0, 24
+ cmp r0, 0
+ beq _080A75C0
+ ldr r1, [r5, 0x5C]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _080A758C
+ ldr r2, [r5, 0x60]
+ cmp r2, 0x3
+ bgt _080A7580
+ cmp r2, 0
+ blt _080A7580
+ add r4, sp, 0x8
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_800569C
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ str r0, [sp, 0xC]
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ add r2, sp, 0xC
+ str r0, [r2, 0x4]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ adds r3, r7, 0
+ bl sub_80A7310
+ b _080A758C
+_080A7580:
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0
+ adds r3, r7, 0
+ bl sub_80A7310
+_080A758C:
+ adds r0, r5, 0
+ adds r0, 0x50
+ ldrh r1, [r0]
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _080A75B4
+ ldr r0, [sp]
+ lsls r0, 16
+ ldr r1, [sp, 0x4]
+ lsls r1, 16
+ lsrs r0, 16
+ orrs r0, r1
+ str r0, [sp, 0x14]
+ add r1, sp, 0x14
+ mov r0, r8
+ adds r2, r5, 0
+ bl sub_808E668
+_080A75B4:
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0
+ adds r3, r7, 0
+ bl sub_80A7310
+_080A75C0:
+ add sp, 0x18
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7524
+
+ thumb_func_start sub_80A75CC
+sub_80A75CC:
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r6, r3, 0
+ lsls r2, 16
+ asrs r2, 13
+ ldr r0, _080A7618
+ adds r2, r0
+ movs r5, 0
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r3, _080A761C
+ ldr r1, [sp]
+ ands r1, r3
+ orrs r1, r0
+ str r1, [sp]
+ ldrh r3, [r2, 0x2]
+ lsls r3, 16
+ ldr r0, _080A7620
+ ands r0, r1
+ orrs r0, r3
+ str r0, [sp]
+ ldr r0, [r2, 0x4]
+ cmp r0, 0
+ beq _080A7628
+ ldr r1, _080A7624
+ bl OpenFile
+ adds r5, r0, 0
+ movs r1, 0
+ bl GetFileDataPtr
+ ldr r0, [r5, 0x4]
+ str r0, [sp, 0x4]
+ b _080A762A
+ .align 2, 0
+_080A7618: .4byte gUnknown_8117AE4
+_080A761C: .4byte 0xffff0000
+_080A7620: .4byte 0x0000ffff
+_080A7624: .4byte gOrnamentFileArchive
+_080A7628:
+ str r5, [sp, 0x4]
+_080A762A:
+ adds r0, r4, 0
+ mov r1, sp
+ adds r2, r6, 0
+ bl sub_80A67CC
+ str r5, [r4, 0x54]
+ adds r0, r4, 0
+ adds r0, 0x52
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ blt _080A764E
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_80A6EFC
+_080A764E:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A75CC
+
+ thumb_func_start sub_80A7658
+sub_80A7658:
+ push {lr}
+ bl sub_80A68A0
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7658
+
+ thumb_func_start sub_80A7664
+sub_80A7664:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ movs r1, 0
+ adds r2, r5, 0
+ adds r3, r6, 0
+ bl sub_80A7094
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0
+ adds r3, r6, 0
+ bl sub_80A7310
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7664
+
+ thumb_func_start sub_80A7688
+sub_80A7688:
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r6, r3, 0
+ lsls r2, 16
+ asrs r2, 13
+ ldr r0, _080A76D4
+ adds r2, r0
+ movs r5, 0
+ movs r0, 0
+ ldrsb r0, [r2, r0]
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r3, _080A76D8
+ ldr r1, [sp]
+ ands r1, r3
+ orrs r1, r0
+ str r1, [sp]
+ ldrh r3, [r2, 0x2]
+ lsls r3, 16
+ ldr r0, _080A76DC
+ ands r0, r1
+ orrs r0, r3
+ str r0, [sp]
+ ldr r0, [r2, 0x4]
+ cmp r0, 0
+ beq _080A76E4
+ ldr r1, _080A76E0
+ bl OpenFile
+ adds r5, r0, 0
+ movs r1, 0
+ bl GetFileDataPtr
+ ldr r0, [r5, 0x4]
+ str r0, [sp, 0x4]
+ b _080A76E6
+ .align 2, 0
+_080A76D4: .4byte gUnknown_8117E8C
+_080A76D8: .4byte 0xffff0000
+_080A76DC: .4byte 0x0000ffff
+_080A76E0: .4byte gOrnamentFileArchive
+_080A76E4:
+ str r5, [sp, 0x4]
+_080A76E6:
+ adds r0, r4, 0
+ mov r1, sp
+ adds r2, r6, 0
+ bl sub_80A67CC
+ str r5, [r4, 0x54]
+ adds r0, r4, 0
+ adds r0, 0x52
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ blt _080A770A
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_80A6EFC
+_080A770A:
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80A7688
+
+ .align 2,0