pmd-red/asm/code_8097DD0.s
2022-11-18 16:54:10 -08:00

192 lines
2.7 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8097DF0
sub_8097DF0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1F8
mov r8, r0
str r1, [sp, 0x1F0]
movs r0, 0
mov r9, r0
movs r7, 0
ldr r1, _08097E3C
ldr r0, [r1]
cmp r0, 0
beq _08097E6E
_08097E0E:
movs r4, 0
lsls r5, r7, 3
lsls r1, r7, 2
mov r10, r1
adds r6, r7, 0x1
ldr r2, _08097E3C
adds r3, r5, r2
add r1, sp, 0x18C
_08097E1E:
ldr r0, [r3]
adds r0, r4
ldrb r2, [r0]
cmp r2, 0x23
bne _08097E40
ldrb r0, [r0, 0x1]
cmp r0, 0x72
bne _08097E40
strb r2, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
movs r0, 0
strb r0, [r1]
b _08097E50
.align 2, 0
_08097E3C: .4byte gStatusDescriptions
_08097E40:
ldr r0, [r3]
adds r0, r4
ldrb r0, [r0]
strb r0, [r1]
adds r1, 0x1
adds r4, 0x1
cmp r4, 0x63
ble _08097E1E
_08097E50:
add r0, sp, 0x18C
bl strlen
mov r1, sp
add r1, r10
str r0, [r1]
adds r7, r6, 0
cmp r6, 0x62
bgt _08097E6E
lsls r0, r6, 3
ldr r1, _08097EB4
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08097E0E
_08097E6E:
mov r2, r8
ldrb r0, [r2]
cmp r0, 0
beq _08097F2C
ldr r3, _08097EB4
_08097E78:
cmp r0, 0x23
bne _08097F08
movs r7, 0
adds r1, r3, 0
ldr r0, [r1]
cmp r0, 0
beq _08097F20
mov r2, r9
lsls r0, r2, 2
ldr r2, [sp, 0x1F0]
adds r0, r2
mov r10, r0
_08097E90:
lsls r4, r7, 3
adds r0, r4, r1
ldr r0, [r0]
lsls r1, r7, 2
add r1, sp
ldr r2, [r1]
mov r1, r8
str r3, [sp, 0x1F4]
bl sub_800B2D4
lsls r0, 24
adds r5, r4, 0
adds r6, r7, 0x1
ldr r3, [sp, 0x1F4]
cmp r0, 0
bne _08097EF0
movs r4, 0
b _08097EBA
.align 2, 0
_08097EB4: .4byte gStatusDescriptions
_08097EB8:
adds r4, 0x1
_08097EBA:
cmp r4, r9
bge _08097ED6
adds r0, r5, r3
lsls r1, r4, 2
ldr r2, [sp, 0x1F0]
adds r1, r2
ldr r1, [r1]
str r3, [sp, 0x1F4]
bl sub_8097DD0
lsls r0, 24
ldr r3, [sp, 0x1F4]
cmp r0, 0
beq _08097EB8
_08097ED6:
cmp r4, r9
bne _08097EF0
mov r0, r9
cmp r0, 0x3
bgt _08097EF0
adds r0, r5, r3
mov r1, r10
adds r1, 0x4
mov r10, r1
subs r1, 0x4
stm r1!, {r0}
movs r2, 0x1
add r9, r2
_08097EF0:
adds r7, r6, 0
cmp r6, 0x62
bgt _08097F20
ldr r1, _08097F04
lsls r0, r6, 3
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08097E90
b _08097F20
.align 2, 0
_08097F04: .4byte gStatusDescriptions
_08097F08:
mov r0, r8
ldrb r1, [r0]
adds r0, r1, 0
adds r0, 0x7F
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bls _08097F1C
cmp r1, 0x87
bne _08097F20
_08097F1C:
movs r1, 0x1
add r8, r1
_08097F20:
movs r2, 0x1
add r8, r2
mov r1, r8
ldrb r0, [r1]
cmp r0, 0
bne _08097E78
_08097F2C:
mov r0, r9
add sp, 0x1F8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8097DF0
.align 2,0