pokediamond/arm9/asm/RUNTIME_ll_div.s
2023-05-24 09:15:59 +01:00

168 lines
2.7 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start _ll_mod
_ll_mod: ; 0x020EBA28
stmdb sp!, {r4-r7,r11-r12,lr}
mov r4, r1
orr r4, r4, #0x1
b _020EBA48
arm_func_start _ll_sdiv
_ll_sdiv: ; 0x020EBA38
stmdb sp!, {r4-r7,r11-r12,lr}
eor r4, r1, r3
mov r4, r4, asr #0x1
mov r4, r4, lsl #0x1
_020EBA48:
orrs r5, r3, r2
bne _020EBA58
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBA58:
mov r5, r0, lsr #0x1f
add r5, r5, r1
mov r6, r2, lsr #0x1f
add r6, r6, r3
orrs r6, r5, r6
bne _020EBA8C
mov r1, r2
bl _s32_div_f
ands r4, r4, #0x1
movne r0, r1
mov r1, r0, asr #0x1f
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBA8C:
cmp r1, #0x0
bge _020EBA9C
rsbs r0, r0, #0x0
rsc r1, r1, #0x0
_020EBA9C:
cmp r3, #0x0
bge _020EBAAC
rsbs r2, r2, #0x0
rsc r3, r3, #0x0
_020EBAAC:
orrs r5, r1, r0
beq _020EBBD0
mov r5, #0x0
mov r6, #0x1
cmp r3, #0x0
bmi _020EBAD8
_020EBAC4:
add r5, r5, #0x1
adds r2, r2, r2
adcs r3, r3, r3
bpl _020EBAC4
add r6, r6, r5
_020EBAD8:
cmp r1, #0x0
blt _020EBAF8
_020EBAE0:
cmp r6, #0x1
beq _020EBAF8
sub r6, r6, #0x1
adds r0, r0, r0
adcs r1, r1, r1
bpl _020EBAE0
_020EBAF8:
mov r7, #0x0
mov r12, #0x0
mov r11, #0x0
b _020EBB20
_020EBB08:
orr r12, r12, #0x1
subs r6, r6, #0x1
beq _020EBB78
adds r0, r0, r0
adcs r1, r1, r1
adcs r7, r7, r7
_020EBB20:
subs r0, r0, r2
sbcs r1, r1, r3
sbcs r7, r7, #0x0
adds r12, r12, r12
adc r11, r11, r11
cmp r7, #0x0
bge _020EBB08
_020EBB3C:
subs r6, r6, #0x1
beq _020EBB70
adds r0, r0, r0
adcs r1, r1, r1
adc r7, r7, r7
adds r0, r0, r2
adcs r1, r1, r3
adc r7, r7, #0x0
adds r12, r12, r12
adc r11, r11, r11
cmp r7, #0x0
bge _020EBB08
b _020EBB3C
_020EBB70:
adds r0, r0, r2
adc r1, r1, r3
_020EBB78:
ands r7, r4, #0x1
moveq r0, r12
moveq r1, r11
beq _020EBBB0
subs r7, r5, #0x20
movge r0, r1, lsr r7
bge _020EBBD4
rsb r7, r5, #0x20
mov r0, r0, lsr r5
orr r0, r0, r1, lsl r7
mov r1, r1, lsr r5
b _020EBBB0
_020EBBA8: ; 0x020EBBA8
mov r0, r1, lsr r7
mov r1, #0x0
_020EBBB0:
cmp r4, #0x0
blt _020EBBC0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBBC0:
rsbs r0, r0, #0x0
rsc r1, r1, #0x0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBBD0:
mov r0, #0x0
_020EBBD4:
mov r1, #0x0
cmp r4, #0x0
blt _020EBBC0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
arm_func_start _ll_udiv
_ll_udiv: ; 0x020EBBE8
stmdb sp!, {r4-r7,r11-r12,lr}
mov r4, #0x0
b _020EBBFC
arm_func_start _ull_mod
_ull_mod: ; 0x020EBBF4
stmdb sp!, {r4-r7,r11-r12,lr}
mov r4, #0x1
_020EBBFC:
orrs r5, r3, r2
bne _020EBC0C
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr
_020EBC0C:
orrs r5, r1, r3
bne _020EBAAC
mov r1, r2
bl _u32_div_not_0_f
cmp r4, #0x0
movne r0, r1
mov r1, #0x0
ldmia sp!, {r4-r7,r11-r12,lr}
bx lr