summaryrefslogtreecommitdiff
path: root/asm/decompress.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/decompress.s')
-rw-r--r--asm/decompress.s1019
1 files changed, 1019 insertions, 0 deletions
diff --git a/asm/decompress.s b/asm/decompress.s
new file mode 100644
index 000000000..19f8b8626
--- /dev/null
+++ b/asm/decompress.s
@@ -0,0 +1,1019 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start LZDecompressWram
+@ void LZDecompressWram(void *src, void *dest)
+LZDecompressWram: @ 8034518
+ push {lr}
+ bl LZ77UnCompWram
+ pop {r0}
+ bx r0
+ thumb_func_end LZDecompressWram
+
+ thumb_func_start LZDecompressVram
+@ void LZDecompressVram(void *src, void *dest)
+LZDecompressVram: @ 8034524
+ push {lr}
+ bl LZ77UnCompVram
+ pop {r0}
+ bx r0
+ thumb_func_end LZDecompressVram
+
+ thumb_func_start LoadCompressedObjectPic
+@ u16 LoadCompressedObjectPic(struct obj_tiles *pic)
+LoadCompressedObjectPic: @ 8034530
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldr r0, [r4]
+ ldr r5, =0x0201c000
+ adds r1, r5, 0
+ bl LZ77UnCompWram
+ str r5, [sp]
+ ldrh r1, [r4, 0x6]
+ lsls r1, 16
+ ldrh r0, [r4, 0x4]
+ orrs r0, r1
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadObjectPic
+ lsls r0, 16
+ lsrs r0, 16
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end LoadCompressedObjectPic
+
+ thumb_func_start LoadCompressedObjectPicOverrideBuffer
+@ void LoadCompressedObjectPicOverrideBuffer(struct obj_tiles *pic, void *tempBuffer)
+LoadCompressedObjectPicOverrideBuffer: @ 8034564
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldr r0, [r4]
+ bl LZ77UnCompWram
+ str r5, [sp]
+ ldrh r1, [r4, 0x6]
+ lsls r1, 16
+ ldrh r0, [r4, 0x4]
+ orrs r0, r1
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadObjectPic
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end LoadCompressedObjectPicOverrideBuffer
+
+ thumb_func_start LoadCompressedObjectPalette
+@ void LoadCompressedObjectPalette(struct TaggedObjectPalette *palette)
+LoadCompressedObjectPalette: @ 803458C
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ ldr r0, [r5]
+ ldr r4, =0x0201c000
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+ str r4, [sp]
+ ldrh r2, [r5, 0x4]
+ ldr r1, =0xffff0000
+ ldr r0, [sp, 0x4]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadTaggedObjectPalette
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end LoadCompressedObjectPalette
+
+ thumb_func_start LoadCompressedObjectPaletteOverrideBuffer
+@ void LoadCompressedObjectPaletteOverrideBuffer(struct TaggedObjectPalette *palette, void *tempBuffer)
+LoadCompressedObjectPaletteOverrideBuffer: @ 80345C0
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r0, [r5]
+ bl LZ77UnCompWram
+ str r4, [sp]
+ ldrh r2, [r5, 0x4]
+ ldr r1, =0xffff0000
+ ldr r0, [sp, 0x4]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadTaggedObjectPalette
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end LoadCompressedObjectPaletteOverrideBuffer
+
+ thumb_func_start DecompressPicFromTable
+@ void DecompressPicFromTable(void **picTable, void *dest, u32 index)
+DecompressPicFromTable: @ 80345F0
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r5, r0
+ ble _08034610
+ ldr r0, =gMonFrontPicTable
+ ldr r0, [r0]
+ bl LZ77UnCompWram
+ b _08034618
+ .pool
+_08034610:
+ ldr r0, [r3]
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+_08034618:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DuplicateDeoxysTiles
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end DecompressPicFromTable
+
+ thumb_func_start DecompressMonPic_DetectFrontOrBack
+@ void DecompressMonPic_DetectFrontOrBack(void **picTable, void *dest, u32 speciesId, u32 personality)
+DecompressMonPic_DetectFrontOrBack: @ 8034628
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r0, r2, 3
+ ldr r1, =gMonFrontPicTable
+ adds r0, r1
+ movs r1, 0
+ cmp r4, r0
+ bne _0803463E
+ movs r1, 0x1
+_0803463E:
+ str r1, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DecompressMonPic_2
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end DecompressMonPic_DetectFrontOrBack
+
+ thumb_func_start DecompressMonPic
+@ void DecompressMonPic(void **picTable, void *dest, u32 speciesId, u32 personality, bool8 isFrontPic)
+DecompressMonPic: @ 8034654
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r7, r2, 0
+ adds r5, r3, 0
+ ldr r0, [sp, 0x18]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r7, 0xC9
+ bne _080346D0
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r5
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r5
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r5
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r5
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0
+ bne _080346A2
+ movs r1, 0xC9
+ b _080346AC
+_080346A2:
+ movs r2, 0xCE
+ lsls r2, 1
+ adds r0, r1, r2
+ lsls r0, 16
+ lsrs r1, r0, 16
+_080346AC:
+ mov r0, r8
+ cmp r0, 0
+ bne _080346C0
+ ldr r0, =gMonBackPicTable
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, [r1]
+ b _080346DC
+ .pool
+_080346C0:
+ ldr r0, =gMonFrontPicTable
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, [r1]
+ b _080346DC
+ .pool
+_080346D0:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r7, r0
+ ble _080346E8
+ ldr r0, =gMonFrontPicTable
+ ldr r0, [r0]
+_080346DC:
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+ b _080346F0
+ .pool
+_080346E8:
+ ldr r0, [r6]
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+_080346F0:
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl DuplicateDeoxysTiles
+ lsls r0, r7, 16
+ lsrs r0, 16
+ adds r1, r5, 0
+ adds r2, r4, 0
+ mov r3, r8
+ bl DrawSpindaSpots
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end DecompressMonPic
+
+ thumb_func_start Unused_LZDecompressWramIndirect
+@ void Unused_LZDecompressWramIndirect(void **src)
+Unused_LZDecompressWramIndirect: @ 8034710
+ push {lr}
+ ldr r0, [r0]
+ bl LZ77UnCompWram
+ pop {r0}
+ bx r0
+ thumb_func_end Unused_LZDecompressWramIndirect
+
+ thumb_func_start sub_803471C
+sub_803471C: @ 803471C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ mov r9, r0
+ str r1, [sp]
+ str r2, [sp, 0x4]
+ adds r5, r3, 0
+ movs r0, 0x1
+ mov r1, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _0803473C
+ b _080348D4
+_0803473C:
+ asrs r0, r1, 1
+ adds r0, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x8]
+ movs r0, 0
+ ldr r2, [sp]
+ cmp r0, r2
+ blt _08034750
+ b _08034964
+_08034750:
+ movs r4, 0x8
+ subs r1, r4, r1
+ str r1, [sp, 0x10]
+_08034756:
+ movs r7, 0
+ adds r0, 0x1
+ str r0, [sp, 0x14]
+ ldr r0, [sp, 0x10]
+ cmp r7, r0
+ bge _080347D2
+ ldr r1, [sp, 0x8]
+ lsls r1, 8
+ str r1, [sp, 0x18]
+ movs r2, 0
+ mov r10, r2
+ mov r0, r9
+ movs r4, 0x8
+ subs r0, r4, r0
+ str r0, [sp, 0xC]
+_08034774:
+ movs r3, 0
+ asrs r0, r7, 1
+ adds r1, r7, 0
+ movs r2, 0x1
+ ands r1, r2
+ str r1, [sp, 0x20]
+ lsls r0, 8
+ mov r8, r0
+ mov r12, r5
+_08034786:
+ lsls r1, r3, 5
+ ldr r4, [sp, 0x18]
+ adds r0, r5, r4
+ adds r0, r1
+ mov r1, r8
+ adds r2, r0, r1
+ mov r1, r12
+ add r1, r8
+ movs r6, 0xF
+_08034798:
+ ldr r4, [sp, 0x20]
+ cmp r4, 0
+ bne _080347A8
+ strb r4, [r1]
+ add r4, sp, 0x20
+ ldrb r4, [r4]
+ strb r4, [r2, 0x10]
+ b _080347B6
+_080347A8:
+ mov r0, r10
+ strb r0, [r1, 0x10]
+ movs r4, 0x80
+ lsls r4, 1
+ adds r4, r2, r4
+ str r4, [sp, 0x1C]
+ strb r0, [r4]
+_080347B6:
+ adds r2, 0x1
+ adds r1, 0x1
+ subs r6, 0x1
+ cmp r6, 0
+ bge _08034798
+ movs r0, 0x20
+ add r12, r0
+ adds r3, 0x1
+ cmp r3, 0x7
+ ble _08034786
+ adds r7, 0x1
+ ldr r1, [sp, 0xC]
+ cmp r7, r1
+ blt _08034774
+_080347D2:
+ movs r7, 0
+ movs r2, 0
+_080347D6:
+ movs r6, 0
+ adds r4, r7, 0x1
+ mov r8, r4
+ lsls r4, r7, 5
+_080347DE:
+ adds r0, r6, 0x1
+ mov r10, r0
+ lsls r1, r6, 8
+ adds r0, r1, 0
+ adds r0, 0xC0
+ adds r0, r5, r0
+ adds r0, r4
+ adds r1, r5, r1
+ adds r1, r4
+ movs r3, 0x1F
+_080347F2:
+ strb r2, [r1]
+ strb r2, [r0]
+ adds r0, 0x1
+ adds r1, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _080347F2
+ mov r6, r10
+ cmp r6, 0x7
+ ble _080347DE
+ mov r7, r8
+ cmp r7, 0x1
+ ble _080347D6
+ mov r1, r9
+ cmp r1, 0x5
+ bne _08034818
+ movs r2, 0x90
+ lsls r2, 1
+ adds r5, r2
+_08034818:
+ movs r7, 0
+ cmp r7, r9
+ bge _080348AE
+_0803481E:
+ movs r3, 0
+ adds r7, 0x1
+ mov r8, r7
+ cmp r3, r9
+ bge _0803488E
+_08034828:
+ adds r3, 0x1
+ mov r10, r3
+ ldr r4, [sp, 0x4]
+ adds r4, 0x20
+ adds r7, r5, 0
+ adds r7, 0x20
+ movs r0, 0x12
+ adds r0, r5
+ mov r12, r0
+ ldr r2, [sp, 0x4]
+ adds r3, r5, 0
+ movs r6, 0x3
+_08034840:
+ ldrb r0, [r2]
+ mov r1, r12
+ strb r0, [r1]
+ ldrb r0, [r2, 0x1]
+ strb r0, [r1, 0x1]
+ ldrb r0, [r2, 0x2]
+ strb r0, [r1, 0x1E]
+ ldrb r0, [r2, 0x3]
+ strb r0, [r1, 0x1F]
+ movs r0, 0x81
+ lsls r0, 1
+ adds r1, r3, r0
+ ldrb r0, [r2, 0x10]
+ strb r0, [r1]
+ ldr r0, =0x00000103
+ adds r1, r3, r0
+ ldrb r0, [r2, 0x11]
+ strb r0, [r1]
+ movs r0, 0x90
+ lsls r0, 1
+ adds r1, r3, r0
+ ldrb r0, [r2, 0x12]
+ strb r0, [r1]
+ ldr r0, =0x00000121
+ adds r1, r3, r0
+ ldrb r0, [r2, 0x13]
+ strb r0, [r1]
+ movs r1, 0x4
+ add r12, r1
+ adds r2, 0x4
+ adds r3, 0x4
+ subs r6, 0x1
+ cmp r6, 0
+ bge _08034840
+ str r4, [sp, 0x4]
+ adds r5, r7, 0
+ mov r3, r10
+ cmp r3, r9
+ blt _08034828
+_0803488E:
+ mov r2, r9
+ cmp r2, 0x7
+ bne _080348A0
+ adds r5, 0x20
+ b _080348A8
+ .pool
+_080348A0:
+ mov r4, r9
+ cmp r4, 0x5
+ bne _080348A8
+ adds r5, 0x60
+_080348A8:
+ mov r7, r8
+ cmp r7, r9
+ blt _0803481E
+_080348AE:
+ mov r0, r9
+ cmp r0, 0x7
+ bne _080348BC
+ movs r1, 0x80
+ lsls r1, 1
+ adds r5, r1
+ b _080348C8
+_080348BC:
+ mov r2, r9
+ cmp r2, 0x5
+ bne _080348C8
+ movs r4, 0xF0
+ lsls r4, 1
+ adds r5, r4
+_080348C8:
+ ldr r0, [sp, 0x14]
+ ldr r1, [sp]
+ cmp r0, r1
+ bge _080348D2
+ b _08034756
+_080348D2:
+ b _08034964
+_080348D4:
+ movs r6, 0
+ ldr r2, [sp]
+ cmp r6, r2
+ bge _08034964
+_080348DC:
+ adds r6, 0x1
+ mov r10, r6
+ mov r4, r9
+ cmp r4, 0x6
+ bne _080348F4
+ movs r0, 0
+ movs r3, 0xFF
+_080348EA:
+ strb r0, [r5]
+ adds r5, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _080348EA
+_080348F4:
+ movs r7, 0
+ cmp r7, r9
+ bge _08034948
+_080348FA:
+ adds r7, 0x1
+ mov r8, r7
+ mov r1, r9
+ lsls r0, r1, 5
+ cmp r1, 0x6
+ bne _08034914
+ movs r1, 0
+ movs r3, 0x1F
+_0803490A:
+ strb r1, [r5]
+ adds r5, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0803490A
+_08034914:
+ adds r1, r0, 0
+ cmp r1, 0
+ ble _0803492E
+ adds r3, r1, 0
+_0803491C:
+ ldr r2, [sp, 0x4]
+ ldrb r0, [r2]
+ strb r0, [r5]
+ adds r2, 0x1
+ str r2, [sp, 0x4]
+ adds r5, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bne _0803491C
+_0803492E:
+ mov r4, r9
+ cmp r4, 0x6
+ bne _08034942
+ movs r0, 0
+ movs r3, 0x1F
+_08034938:
+ strb r0, [r5]
+ adds r5, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _08034938
+_08034942:
+ mov r7, r8
+ cmp r7, r9
+ blt _080348FA
+_08034948:
+ mov r0, r9
+ cmp r0, 0x6
+ bne _0803495C
+ movs r0, 0
+ movs r3, 0xFF
+_08034952:
+ strb r0, [r5]
+ adds r5, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _08034952
+_0803495C:
+ mov r6, r10
+ ldr r1, [sp]
+ cmp r6, r1
+ blt _080348DC
+_08034964:
+ add sp, 0x24
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_803471C
+
+ thumb_func_start sub_8034974
+sub_8034974: @ 8034974
+ adds r2, r0, 0
+ ldrb r0, [r2, 0x3]
+ lsls r0, 16
+ ldrb r1, [r2, 0x2]
+ lsls r1, 8
+ orrs r0, r1
+ ldrb r1, [r2, 0x1]
+ orrs r0, r1
+ bx lr
+ thumb_func_end sub_8034974
+
+ thumb_func_start LoadCompressedObjectPicUsingHeap
+@ u32 LoadCompressedObjectPicUsingHeap(struct obj_tiles *pic)
+LoadCompressedObjectPicUsingHeap: @ 8034988
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ lsrs r0, 8
+ bl AllocZeroed
+ adds r5, r0, 0
+ ldr r0, [r4]
+ adds r1, r5, 0
+ bl LZ77UnCompWram
+ str r5, [sp]
+ ldrh r1, [r4, 0x6]
+ lsls r1, 16
+ ldrh r0, [r4, 0x4]
+ orrs r0, r1
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadObjectPic
+ adds r0, r5, 0
+ bl Free
+ movs r0, 0
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end LoadCompressedObjectPicUsingHeap
+
+ thumb_func_start LoadCompressedObjectPaletteUsingHeap
+@ u32 LoadCompressedObjectPaletteUsingHeap(struct TaggedObjectPalette *palette)
+LoadCompressedObjectPaletteUsingHeap: @ 80349C4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ lsrs r0, 8
+ bl AllocZeroed
+ adds r5, r0, 0
+ ldr r0, [r4]
+ adds r1, r5, 0
+ bl LZ77UnCompWram
+ str r5, [sp]
+ ldrh r2, [r4, 0x4]
+ ldr r1, =0xffff0000
+ ldr r0, [sp, 0x4]
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl LoadTaggedObjectPalette
+ adds r0, r5, 0
+ bl Free
+ movs r0, 0
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end LoadCompressedObjectPaletteUsingHeap
+
+ thumb_func_start DecompressPicFromTable_2
+@ void DecompressPicFromTable_2(void **picTable, void *dest, u32 index)
+DecompressPicFromTable_2: @ 8034A08
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r5, r0
+ ble _08034A28
+ ldr r0, =gMonFrontPicTable
+ ldr r0, [r0]
+ bl LZ77UnCompWram
+ b _08034A30
+ .pool
+_08034A28:
+ ldr r0, [r3]
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+_08034A30:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DuplicateDeoxysTiles
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end DecompressPicFromTable_2
+
+ thumb_func_start DecompressMonPic_2
+@ void DecompressMonPic_2(void **picTable, void *dest, u32 speciesId, u32 personality, bool8 isFrontPic)
+DecompressMonPic_2: @ 8034A40
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r7, r2, 0
+ adds r5, r3, 0
+ ldr r0, [sp, 0x18]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r7, 0xC9
+ bne _08034ABC
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r5
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r5
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r5
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r5
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0
+ bne _08034A8E
+ movs r1, 0xC9
+ b _08034A98
+_08034A8E:
+ movs r2, 0xCE
+ lsls r2, 1
+ adds r0, r1, r2
+ lsls r0, 16
+ lsrs r1, r0, 16
+_08034A98:
+ mov r0, r8
+ cmp r0, 0
+ bne _08034AAC
+ ldr r0, =gMonBackPicTable
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, [r1]
+ b _08034AC8
+ .pool
+_08034AAC:
+ ldr r0, =gMonFrontPicTable
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, [r1]
+ b _08034AC8
+ .pool
+_08034ABC:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r7, r0
+ ble _08034AD4
+ ldr r0, =gMonFrontPicTable
+ ldr r0, [r0]
+_08034AC8:
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+ b _08034ADC
+ .pool
+_08034AD4:
+ ldr r0, [r6]
+ adds r1, r4, 0
+ bl LZ77UnCompWram
+_08034ADC:
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl DuplicateDeoxysTiles
+ lsls r0, r7, 16
+ lsrs r0, 16
+ adds r1, r5, 0
+ adds r2, r4, 0
+ mov r3, r8
+ bl DrawSpindaSpots
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end DecompressMonPic_2
+
+ thumb_func_start DecompressMonPic_DetectFrontOrBack_2
+@ void DecompressMonPic_DetectFrontOrBack_2(void **picTable, void *dest, u32 speciesId, u32 personality)
+DecompressMonPic_DetectFrontOrBack_2: @ 8034AFC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r0, r2, 3
+ ldr r1, =gMonFrontPicTable
+ adds r0, r1
+ movs r1, 0
+ cmp r4, r0
+ bne _08034B12
+ movs r1, 0x1
+_08034B12:
+ str r1, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DecompressMonPic_2
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end DecompressMonPic_DetectFrontOrBack_2
+
+ thumb_func_start sub_8034B28
+sub_8034B28: @ 8034B28
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r2, r0
+ ble _08034B44
+ ldr r0, =gMonFrontPicTable
+ ldr r0, [r0]
+ bl LZ77UnCompWram
+ b _08034B4A
+ .pool
+_08034B44:
+ ldr r0, [r3]
+ bl LZ77UnCompWram
+_08034B4A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8034B28
+
+ thumb_func_start DecompressMonPicWithoutDuplicatingDeoxysTiles_DetectFrontOrBack
+@ void DecompressMonPicWithoutDuplicatingDeoxysTiles_DetectFrontOrBack(void **picTable, void *dest, u32 speciesId, u32 personality)
+DecompressMonPicWithoutDuplicatingDeoxysTiles_DetectFrontOrBack: @ 8034B50
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r0, r2, 3
+ ldr r1, =gMonFrontPicTable
+ adds r0, r1
+ movs r1, 0
+ cmp r4, r0
+ bne _08034B66
+ movs r1, 0x1
+_08034B66:
+ str r1, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl DecompressMonPicWithoutDuplicatingDeoxysTiles
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end DecompressMonPicWithoutDuplicatingDeoxysTiles_DetectFrontOrBack
+
+ thumb_func_start DecompressMonPicWithoutDuplicatingDeoxysTiles
+@ void DecompressMonPicWithoutDuplicatingDeoxysTiles(void **picTable, void *dest, u32 speciesId, u32 personality, bool8 isFrontPic)
+DecompressMonPicWithoutDuplicatingDeoxysTiles: @ 8034B7C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r7, r2, 0
+ adds r4, r3, 0
+ ldr r0, [sp, 0x18]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r7, 0xC9
+ bne _08034BF8
+ movs r0, 0xC0
+ lsls r0, 18
+ ands r0, r4
+ lsrs r0, 18
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r4
+ lsrs r1, 12
+ orrs r0, r1
+ movs r1, 0xC0
+ lsls r1, 2
+ ands r1, r4
+ lsrs r1, 6
+ orrs r0, r1
+ movs r1, 0x3
+ ands r1, r4
+ orrs r0, r1
+ movs r1, 0x1C
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0
+ bne _08034BCA
+ movs r1, 0xC9
+ b _08034BD4
+_08034BCA:
+ movs r2, 0xCE
+ lsls r2, 1
+ adds r0, r1, r2
+ lsls r0, 16
+ lsrs r1, r0, 16
+_08034BD4:
+ mov r0, r8
+ cmp r0, 0
+ bne _08034BE8
+ ldr r0, =gMonBackPicTable
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, [r1]
+ b _08034C04
+ .pool
+_08034BE8:
+ ldr r0, =gMonFrontPicTable
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, [r1]
+ b _08034C04
+ .pool
+_08034BF8:
+ movs r0, 0xCE
+ lsls r0, 1
+ cmp r7, r0
+ ble _08034C10
+ ldr r0, =gMonFrontPicTable
+ ldr r0, [r0]
+_08034C04:
+ adds r1, r5, 0
+ bl LZ77UnCompWram
+ b _08034C18
+ .pool
+_08034C10:
+ ldr r0, [r6]
+ adds r1, r5, 0
+ bl LZ77UnCompWram
+_08034C18:
+ lsls r0, r7, 16
+ lsrs r0, 16
+ adds r1, r4, 0
+ adds r2, r5, 0
+ mov r3, r8
+ bl DrawSpindaSpots
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end DecompressMonPicWithoutDuplicatingDeoxysTiles
+
+ thumb_func_start DuplicateDeoxysTiles
+@ void DuplicateDeoxysTiles(void *pointer, u32 speciesId)
+DuplicateDeoxysTiles: @ 8034C30
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0xCD
+ lsls r0, 1
+ cmp r1, r0
+ bne _08034C4A
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r3, r1
+ ldr r2, =0x04000200
+ adds r1, r3, 0
+ bl CpuSet
+_08034C4A:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end DuplicateDeoxysTiles
+
+ .align 2, 0 @ Don't pad with nop.