mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 00:11:26 -05:00
168 lines
2.7 KiB
ArmAsm
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
|