pokeplatinum/lib/Mathlib/asm/_f_div.s
2023-01-13 13:56:35 +01:00

229 lines
4.9 KiB
ArmAsm

.include "macros/function.inc"
.text
arm_func_start _frdiv
_frdiv: ; 0x020E12F8
eor r0, r0, r1
eor r1, r0, r1
eor r0, r0, r1
arm_func_end _frdiv
arm_func_start _fdiv
_fdiv: ; 0x020E1304
stmdb sp!, {lr}
mov ip, #0xff
ands r3, ip, r0, lsr #23
cmpne r3, #0xff
beq _020E14D8
ands ip, ip, r1, lsr #23
cmpne ip, #0xff
beq _020E1514
orr r1, r1, #0x800000
orr r0, r0, #0x800000
bic r2, r0, #0xff000000
bic lr, r1, #0xff000000
_020E1334:
cmp r2, lr
movlo r2, r2, lsl #1
sublo r3, r3, #1
teq r0, r1
sub r0, pc, #0x94
ldrb r1, [r0, lr, lsr #15]
rsb lr, lr, #0
mov r0, lr, asr #1
mul r0, r1, r0
add r0, r0, #-0x80000000
mov r0, r0, lsr #6
mul r0, r1, r0
mov r0, r0, lsr #0xe
mul r1, lr, r0
sub ip, r3, ip
mov r1, r1, lsr #0xc
mul r1, r0, r1
mov r0, r0, lsl #0xe
add r0, r0, r1, lsr #15
umull r1, r0, r2, r0
mov r3, r0
orrmi r0, r0, #0x80000000
adds ip, ip, #0x7e
bmi _020E15DC
cmp ip, #0xfe
bge _020E1690
add r0, r0, ip, lsl #23
mov ip, r1, lsr #0x1c
cmp ip, #7
beq _020E14B8
add r0, r0, r1, lsr #31
ldmia sp!, {lr}
bx lr
_020E13B8:
.byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
.byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
.byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
.byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
.byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
.byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
.byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
.byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
.byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
.byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
.byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
.byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
.byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
.byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
.byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
.byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
.byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
_020E14B8:
mov r1, r3, lsl #1
add r1, r1, #1
rsb lr, lr, #0
mul r1, lr, r1
cmp r1, r2, lsl #24
addmi r0, r0, #1
ldmia sp!, {lr}
bx lr
_020E14D8:
eor lr, r0, r1
and lr, lr, #0x80000000
cmp r3, #0
beq _020E1530
movs r0, r0, lsl #9
bne _020E1678
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _020E1668
cmp ip, #0xff
blt _020E1668
cmp r1, #0
beq _020E1684
b _020E1660
_020E1514:
eor lr, r0, r1
and lr, lr, #0x80000000
cmp ip, #0
beq _020E1594
_020E1524:
movs r1, r1, lsl #9
bne _020E1660
b _020E16B0
_020E1530:
movs r2, r0, lsl #9
beq _020E1564
clz r3, r2
movs r2, r2, lsl r3
rsb r3, r3, #0
mov r2, r2, lsr #8
ands ip, ip, r1, lsr #23
beq _020E15BC
cmp ip, #0xff
beq _020E1524
orr r1, r1, #0x800000
bic lr, r1, #0xff000000
b _020E1334
_020E1564:
mov ip, r1, lsr #0x17
mov r1, r1, lsl #9
ands ip, ip, #0xff
beq _020E1588
cmp ip, #0xff
blt _020E16B0
cmp r1, #0
beq _020E16B0
b _020E1660
_020E1588:
cmp r1, #0
beq _020E1684
b _020E16B0
_020E1594:
movs ip, r1, lsl #9
beq _020E1668
mov lr, ip
clz ip, lr
movs lr, lr, lsl ip
rsb ip, ip, #0
mov lr, lr, lsr #8
orr r0, r0, #0x800000
bic r2, r0, #0xff000000
b _020E1334
_020E15BC:
movs ip, r1, lsl #9
beq _020E1668
mov lr, ip
clz ip, lr
movs lr, lr, lsl ip
rsb ip, ip, #0
mov lr, lr, lsr #8
b _020E1334
_020E15DC:
and r0, r0, #0x80000000
cmn ip, #0x18
beq _020E1650
bmi _020E16A8
add r1, ip, #0x17
mov r2, r2, lsl r1
rsb ip, ip, #0
mov r3, r3, lsr ip
orr r0, r0, r3
rsb lr, lr, #0
mul r1, lr, r3
cmp r1, r2
ldmeqia sp!, {lr}
bxeq lr
add r1, r1, lr
cmp r1, r2
beq _020E1644
addmi r0, r0, #1
subpl r1, r1, lr
add r1, lr, r1, lsl #1
cmp r1, r2, lsl #1
and r3, r0, #1
addmi r0, r0, #1
addeq r0, r0, r3
ldmia sp!, {lr}
bx lr
_020E1644:
add r0, r0, #1
ldmia sp!, {lr}
bx lr
_020E1650:
cmn r2, lr
addne r0, r0, #1
ldmia sp!, {lr}
bx lr
_020E1660:
mov r0, r1
b _020E1678
_020E1668:
mov r0, #-0x1000000
orr r0, lr, r0, lsr #1
ldmia sp!, {lr}
bx lr
_020E1678:
mvn r0, #0x80000000
ldmia sp!, {lr}
bx lr
_020E1684:
mvn r0, #0x80000000
ldmia sp!, {lr}
bx lr
_020E1690:
tst r0, #-0x80000000
mov r0, #-0x1000000
movne r0, r0, asr #1
moveq r0, r0, lsr #1
ldmia sp!, {lr}
bx lr
_020E16A8:
ldmia sp!, {lr}
bx lr
_020E16B0:
mov r0, lr
ldmia sp!, {lr}
bx lr
arm_func_end _fdiv