summaryrefslogtreecommitdiff
path: root/arm9/modules/45/asm/module_45.s
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-05-12 23:12:35 +0100
committerred031000 <rubenru09@aol.com>2020-05-12 23:12:35 +0100
commit59171916421e659bcb35b1b47eaf748fac2fea6d (patch)
treefd5886b4a76002766c94a5d33a1a42fd14335e0e /arm9/modules/45/asm/module_45.s
parent26b7a78d02b261256e420f149bb7bae66e392ee7 (diff)
parentf4ea052ed0b4e3b0d6a3c12bce46ee53228a9bc0 (diff)
Merge branch 'master' of https://github.com/martmists/pokediamond into overlay69
Diffstat (limited to 'arm9/modules/45/asm/module_45.s')
-rw-r--r--arm9/modules/45/asm/module_45.s1061
1 files changed, 1061 insertions, 0 deletions
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s
new file mode 100644
index 00000000..96762d44
--- /dev/null
+++ b/arm9/modules/45/asm/module_45.s
@@ -0,0 +1,1061 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD45_02254840
+MOD45_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD45_02254854
+ ldr r1, _02254850 ; =MOD45_02254A30
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD45_02254854
+_02254850: .word MOD45_02254A30
+ thumb_func_end MOD45_02254840
+
+ thumb_func_start MOD45_02254854
+MOD45_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD45_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD45_022549EC
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD45_022549EC
+ thumb_func_end MOD45_02254854
+
+ thumb_func_start MOD45_0225489C
+MOD45_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #4
+ add r6, r2, #0
+ bl FUN_020126B4
+ add r0, r4, #0
+ bl MOD20_02252C3C
+ add r1, r5, #0
+ add r1, #0x98
+ str r0, [r1]
+ add r0, r5, #4
+ add r1, r5, #0
+ add r2, sp, #4
+ bl MOD45_0225492C
+ add r0, r5, #0
+ ldrb r1, [r5, #0x12]
+ add r0, #0xa8
+ add r2, r6, #0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r1, [r0]
+ ldr r0, [r5, #8]
+ sub r0, r0, #1
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0xac
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ add r1, r5, #4
+ bl MOD45_02254B90
+ cmp r0, #0
+ beq _0225491C
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254924 ; =0x02255018
+ ldr r2, _02254928 ; =MOD45_022549E0
+ mov r1, #0x25
+ add r3, r5, #0
+ bl MOD20_02254130
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r5, #0x94
+ add sp, #0x14
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0225491C:
+ mov r0, #0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254924: .word 0x02255018
+_02254928: .word MOD45_022549E0
+ thumb_func_end MOD45_0225489C
+
+ thumb_func_start MOD45_0225492C
+MOD45_0225492C: ; 0x0225492C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ str r1, [sp]
+ str r0, [r6]
+ ldr r0, [r4, #8]
+ str r0, [r6, #8]
+ ldr r1, [r6]
+ ldr r0, _022549BC ; =0x022550AB
+ ldrb r0, [r0, r1]
+ str r0, [r6, #4]
+ ldr r0, [r6]
+ cmp r0, #2
+ bne _02254970
+ ldr r5, [r4]
+ mov r1, #0x19
+ add r0, r5, #0
+ lsl r1, r1, #4
+ bl _u32_div_f
+ cmp r1, #0
+ beq _0225496C
+ add r0, r5, #0
+ mov r1, #0x64
+ bl _u32_div_f
+ cmp r1, #0
+ beq _02254970
+ mov r0, #3
+ tst r0, r5
+ bne _02254970
+_0225496C:
+ mov r0, #0x1d
+ str r0, [r6, #4]
+_02254970:
+ ldr r0, [r4, #8]
+ mov r1, #7
+ sub r0, r0, #1
+ bl _u32_div_f
+ mov r2, #7
+ ldr r3, [r4, #0xc]
+ sub r0, r2, r1
+ add r7, r3, r0
+ cmp r7, #7
+ blo _02254990
+ add r0, r7, #0
+ add r1, r2, #0
+ bl _u32_div_f
+ add r7, r1, #0
+_02254990:
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _022549BA
+ add r5, r6, #0
+_0225499A:
+ ldr r0, [sp]
+ add r2, r4, #1
+ strh r2, [r5, #0xc]
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r6]
+ bl FUN_0204C064
+ strb r0, [r5, #0xf]
+ add r0, r7, r4
+ strb r0, [r5, #0xe]
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _0225499A
+_022549BA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022549BC: .word 0x022550AB
+ thumb_func_end MOD45_0225492C
+
+ thumb_func_start MOD45_022549C0
+MOD45_022549C0: ; 0x022549C0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD20_02254198
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD45_02254BCC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_022549C0
+
+ thumb_func_start MOD45_022549E0
+MOD45_022549E0: ; 0x022549E0
+ add r2, r3, #0
+ add r2, #0xa4
+ str r0, [r2]
+ add r3, #0xa0
+ str r1, [r3]
+ bx lr
+ thumb_func_end MOD45_022549E0
+
+ thumb_func_start MOD45_022549EC
+MOD45_022549EC: ; 0x022549EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254A2A
+ add r0, r4, #0
+ add r0, #0x94
+ add r1, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254A2C ; =0x0225500C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254A2A
+ add r0, r4, #0
+ bl MOD45_022549C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r4, #0x94
+ ldr r0, [r4]
+ bl MOD20_022529A0
+_02254A2A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254A2C: .word 0x0225500C
+ thumb_func_end MOD45_022549EC
+
+ thumb_func_start MOD45_02254A30
+MOD45_02254A30: ; 0x02254A30
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD45_02254A30
+
+ thumb_func_start MOD45_02254A38
+MOD45_02254A38: ; 0x02254A38
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A40
+ b _02254A42
+_02254A40:
+ mov r1, #2
+_02254A42:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD45_02254A38
+
+ thumb_func_start MOD45_02254A4C
+MOD45_02254A4C: ; 0x02254A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A5C
+ cmp r0, #1
+ beq _02254A70
+ b _02254A92
+_02254A5C:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD45_02254C7C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A92
+_02254A70:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD45_02254CA0
+ cmp r0, #0
+ beq _02254A92
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD45_02254A38
+_02254A92:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254A4C
+
+ thumb_func_start MOD45_02254A98
+MOD45_02254A98: ; 0x02254A98
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r1, [r5, #2]
+ cmp r1, #0
+ beq _02254AAC
+ mov r1, #2
+ bl MOD45_02254A38
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254AAC:
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ beq _02254AB8
+ cmp r0, #1
+ beq _02254B3E
+ b _02254B52
+_02254AB8:
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _02254B52
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r1, [r0]
+ cmp r1, r2
+ blo _02254B52
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r1, r0
+ bhi _02254B52
+ add r0, r5, #0
+ add r0, #0x98
+ sub r4, r1, r2
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204C064
+ cmp r0, #0
+ beq _02254B08
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204C02C
+ b _02254B16
+_02254B08:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204BFF0
+_02254B16:
+ add r3, r5, #0
+ add r3, #0x13
+ lsl r2, r4, #2
+ ldrb r1, [r3, r2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r3, r2]
+ add r0, r5, #0
+ add r0, #0x8c
+ str r4, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD45_02254C7C
+ ldrb r0, [r5, #1]
+ add r0, r0, #1
+ strb r0, [r5, #1]
+ b _02254B52
+_02254B3E:
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD45_02254CA0
+ cmp r0, #0
+ beq _02254B52
+ mov r0, #0
+ strb r0, [r5, #1]
+_02254B52:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254A98
+
+ thumb_func_start MOD45_02254B58
+MOD45_02254B58: ; 0x02254B58
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B68
+ cmp r0, #1
+ beq _02254B7C
+ b _02254B8C
+_02254B68:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD45_02254C7C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B8C
+_02254B7C:
+ add r4, #0x90
+ ldr r0, [r4]
+ bl MOD45_02254CAC
+ cmp r0, #0
+ beq _02254B8C
+ mov r0, #1
+ pop {r4, pc}
+_02254B8C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD45_02254B58
+
+ thumb_func_start MOD45_02254B90
+MOD45_02254B90: ; 0x02254B90
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254BC6
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD45_02254BE0
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254BC6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254B90
+
+ thumb_func_start MOD45_02254BCC
+MOD45_02254BCC: ; 0x02254BCC
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254BDC
+ bl MOD45_02254C64
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254BDC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254BCC
+
+ thumb_func_start MOD45_02254BE0
+MOD45_02254BE0: ; 0x02254BE0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x72
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x70
+ mov r3, #0x71
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254C2C ; =0x022550B8
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r1, [r4, #8]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ ldrb r1, [r1, #0xa]
+ bl MOD45_02254C30
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254C2C: .word 0x022550B8
+ thumb_func_end MOD45_02254BE0
+
+ thumb_func_start MOD45_02254C30
+MOD45_02254C30: ; 0x02254C30
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r2, r0, #0
+ lsl r1, r4, #1
+ lsl r3, r2, #1
+ add r1, r4, r1
+ add r2, r2, r3
+ add r1, r1, #5
+ add r2, r2, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xf
+ lsl r2, r2, #0xf
+ bl MOD20_02253F64
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254C30
+
+ thumb_func_start MOD45_02254C64
+MOD45_02254C64: ; 0x02254C64
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ bl MOD20_02253F14
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254C64
+
+ thumb_func_start MOD45_02254C7C
+MOD45_02254C7C: ; 0x02254C7C
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C9C ; =0x02255140
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C9C: .word 0x02255140
+ thumb_func_end MOD45_02254C7C
+
+ thumb_func_start MOD45_02254CA0
+MOD45_02254CA0: ; 0x02254CA0
+ ldr r3, _02254CA8 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254CA8: .word MOD20_02253794
+ thumb_func_end MOD45_02254CA0
+
+ thumb_func_start MOD45_02254CAC
+MOD45_02254CAC: ; 0x02254CAC
+ ldr r3, _02254CB4 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254CB4: .word MOD20_022537B8
+ thumb_func_end MOD45_02254CAC
+
+ thumb_func_start MOD45_02254CB8
+MOD45_02254CB8: ; 0x02254CB8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254CB8
+
+ thumb_func_start MOD45_02254CCC
+MOD45_02254CCC: ; 0x02254CCC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254D60 ; =0x022550FC
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r5, #4]
+ ldr r2, _02254D64 ; =0x022550E0
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD45_02254DDC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD45_02254E74
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x6f
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02254D68 ; =0x04001000
+ ldr r0, _02254D6C ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0xc
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD45_02254CB8
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254D60: .word 0x022550FC
+_02254D64: .word 0x022550E0
+_02254D68: .word 0x04001000
+_02254D6C: .word 0xFFFFE0FF
+ thumb_func_end MOD45_02254CCC
+
+ thumb_func_start MOD45_02254D70
+MOD45_02254D70: ; 0x02254D70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD45_02254CB8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD45_02254D70
+
+ thumb_func_start MOD45_02254D94
+MOD45_02254D94: ; 0x02254D94
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ add r2, r0, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ lsl r3, r0, #2
+ add r0, r2, r3
+ ldrb r0, [r0, #0xf]
+ cmp r0, #0
+ beq _02254DBA
+ mov r1, #0x8f
+ b _02254DBC
+_02254DBA:
+ mov r1, #0x83
+_02254DBC:
+ add r2, r2, r3
+ ldrb r2, [r2, #0xe]
+ lsl r1, r1, #0x10
+ ldr r0, [r5, #4]
+ lsr r1, r1, #0x10
+ bl MOD45_02254E28
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ add r0, r4, #0
+ bl MOD45_02254CB8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254D94
+
+ thumb_func_start MOD45_02254DDC
+MOD45_02254DDC: ; 0x02254DDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r6, r1, #0
+ ldr r2, [r7, #4]
+ mov r0, #0xc
+ mov r1, #0x6e
+ mov r3, #7
+ bl FUN_020068C8
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _02254E22
+ add r5, r6, #0
+_02254E08:
+ ldrb r0, [r5, #0xf]
+ cmp r0, #0
+ beq _02254E18
+ ldrb r2, [r5, #0xe]
+ ldr r0, [r7, #4]
+ mov r1, #0x8f
+ bl MOD45_02254E28
+_02254E18:
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02254E08
+_02254E22:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254DDC
+
+ thumb_func_start MOD45_02254E28
+MOD45_02254E28: ; 0x02254E28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r7, #0
+ mov r1, #7
+ bl _u32_div_f
+ lsl r1, r0, #1
+ add r0, r0, r1
+ add r0, r0, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r3, r4, #1
+ str r0, [sp]
+ mov r0, #2
+ add r3, r4, r3
+ str r0, [sp, #4]
+ add r3, r3, #4
+ str r0, [sp, #8]
+ mov r0, #0
+ lsl r3, r3, #0x18
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #7
+ add r2, r6, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254E28
+
+ thumb_func_start MOD45_02254E74
+MOD45_02254E74: ; 0x02254E74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ add r7, r0, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r6, r1, #0
+ ldr r0, [r7, #4]
+ mov r1, #6
+ mov r2, #0x82
+ bl FUN_02018540
+ ldr r0, [r7, #4]
+ ldr r1, [r6]
+ bl MOD45_02254EBC
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _02254EB8
+ add r5, r6, #0
+_02254EA4:
+ ldrb r2, [r5, #0xe]
+ ldr r0, [r7, #4]
+ add r1, r4, #1
+ bl MOD45_02254F14
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02254EA4
+_02254EB8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD45_02254E74
+
+ thumb_func_start MOD45_02254EBC
+MOD45_02254EBC: ; 0x02254EBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ ldr r0, _02254F10 ; =0x022550C6
+ lsl r1, r1, #1
+ ldrh r4, [r0, r1]
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254ECC:
+ ldr r0, [sp, #0x10]
+ mov r5, #0
+ add r0, r0, #2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02254ED6:
+ add r3, r5, #0
+ add r2, r4, r5
+ add r3, #0xc
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ str r6, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02254ED6
+ ldr r0, [sp, #0x10]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #2
+ blt _02254ECC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254F10: .word 0x022550C6
+ thumb_func_end MOD45_02254EBC
+
+ thumb_func_start MOD45_02254F14
+MOD45_02254F14: ; 0x02254F14
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r2, #0
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r6, r1, #0
+ lsl r0, r6, #1
+ add r0, r6, r0
+ add r4, r0, #4
+ add r0, r5, #0
+ mov r1, #7
+ bl _u32_div_f
+ lsl r1, r0, #1
+ add r0, r0, r1
+ add r5, r0, #5
+ cmp r6, #0
+ bne _02254F44
+ mov r6, #1
+ b _02254F46
+_02254F44:
+ mov r6, #0
+_02254F46:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xa
+ bl _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #0xa
+ bl _u32_div_f
+ str r1, [sp, #0x18]
+ cmp r7, #0
+ beq _02254FAE
+ mov r0, #0x14
+ add r2, r6, #0
+ mul r2, r0
+ ldr r0, _02255008 ; =0x02255118
+ lsl r1, r7, #1
+ add r0, r0, r2
+ ldrh r7, [r1, r0]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r3, r4, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ add r2, r7, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r7, #0xc
+ str r0, [sp, #0xc]
+ lsl r2, r7, #0x10
+ lsl r3, r4, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+_02254FAE:
+ mov r0, #0x14
+ add r3, r6, #0
+ mul r3, r0
+ ldr r0, [sp, #0x18]
+ ldr r2, _02255008 ; =0x02255118
+ lsl r1, r0, #1
+ add r0, r2, r3
+ ldrh r6, [r1, r0]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r3, r4, #1
+ str r0, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ add r2, r6, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r6, #0xc
+ add r3, r4, #1
+ str r0, [sp, #0xc]
+ lsl r2, r6, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255008: .word 0x02255118
+ thumb_func_end MOD45_02254F14
+
+ .section .rodata
+ ; 0x0225500C
+ .incbin "baserom.nds", 0x2961CC, 0x164
+
+ .section .sinit
+ .word MOD45_02254840