pmd-red/asm/code_80450F8.s
2024-11-10 19:43:27 -05:00

142 lines
2.1 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8045888
sub_8045888:
push {r4,r5,lr}
adds r4, r0, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0
beq _08045988
ldr r1, [r4, 0xC]
cmp r1, 0
bge _0804589C
adds r1, 0xFF
_0804589C:
asrs r1, 8
ldr r0, _080458F0
ldr r2, [r0]
ldr r3, _080458F4
adds r0, r2, r3
movs r5, 0
ldrsh r0, [r0, r5]
subs r3, r1, r0
ldr r0, [r4, 0x10]
cmp r0, 0
bge _080458B4
adds r0, 0xFF
_080458B4:
asrs r0, 8
ldr r5, _080458F8
adds r1, r2, r5
movs r5, 0
ldrsh r1, [r1, r5]
subs r1, r0, r1
movs r0, 0x20
negs r0, r0
cmp r3, r0
blt _08045988
cmp r1, r0
blt _08045988
movs r0, 0x88
lsls r0, 1
cmp r3, r0
bgt _08045988
cmp r1, 0xC0
bgt _08045988
ldr r0, _080458FC
adds r5, r2, r0
adds r0, r4, 0
bl GetEntityType
cmp r0, 0x5
bhi _08045984
lsls r0, 2
ldr r1, _08045900
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080458F0: .4byte gDungeon
_080458F4: .4byte 0x000181f0
_080458F8: .4byte 0x000181f2
_080458FC: .4byte 0x000181e8
_08045900: .4byte _08045904
.align 2, 0
_08045904:
.4byte _08045988
.4byte _08045934
.4byte _08045964
.4byte _0804591C
.4byte _08045984
.4byte _08045988
_0804591C:
adds r0, r5, 0
adds r0, 0x26
_08045920:
ldrb r0, [r0]
cmp r0, 0
bne _08045984
adds r0, r4, 0x4
bl sub_803F428
lsls r0, 24
_0804592E:
cmp r0, 0
bne _08045984
b _08045988
_08045934:
ldr r1, [r4, 0x70]
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08045984
ldr r0, _0804595C
ldr r0, [r0]
ldr r2, _08045960
adds r0, r2
ldrb r0, [r0]
cmp r0, 0
bne _08045954
adds r0, r1, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x1
beq _08045988
_08045954:
adds r0, r5, 0
adds r0, 0x25
b _08045920
.align 2, 0
_0804595C: .4byte gDungeon
_08045960: .4byte 0x0001820f
_08045964:
ldr r0, _0804597C
ldr r0, [r0]
ldr r3, _08045980
adds r0, r3
ldrb r0, [r0]
cmp r0, 0
bne _08045984
adds r0, r4, 0
adds r0, 0x20
ldrb r0, [r0]
b _0804592E
.align 2, 0
_0804597C: .4byte gDungeon
_08045980: .4byte 0x0001820f
_08045984:
movs r0, 0x1
b _0804598A
_08045988:
movs r0, 0
_0804598A:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8045888
.align 2, 0