.include "asm/macros.inc" .include "global.inc" .extern UNK_021D74A8 .section .bss .global __global_destructor_chain __global_destructor_chain: ; 0x021D74C8 .space 0x18 .section .text .balign 4, 0 arm_func_start _dadd _dadd: stmdb sp!, {r4,lr} eors r12, r1, r3 eormi r3, r3, #0x80000000 bmi _020EA5DC _020E9B54: subs r12, r0, r2 sbcs lr, r1, r3 bhs _020E9B70 adds r2, r2, r12 adc r3, r3, lr subs r0, r0, r12 sbc r1, r1, lr _020E9B70: mov lr, #0x80000000 mov r12, r1, lsr #0x14 orr r1, lr, r1, lsl #0xb orr r1, r1, r0, lsr #0x15 mov r0, r0, lsl #0xb movs r4, r12, lsl #0x15 cmnne r4, #0x200000 beq _020E9C6C mov r4, r3, lsr #0x14 orr r3, lr, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs lr, r4, lsl #0x15 beq _020E9CB4 _020E9BA8: subs r4, r12, r4 beq _020E9C00 cmp r4, #0x20 ble _020E9BE4 cmp r4, #0x38 movge r4, #0x3f sub r4, r4, #0x20 rsb lr, r4, #0x20 orrs lr, r2, r3, lsl lr mov r2, r3, lsr r4 orrne r2, r2, #0x1 adds r0, r0, r2 adcs r1, r1, #0x0 blo _020E9C28 b _020E9C0C _020E9BE4: rsb lr, r4, #0x20 movs lr, r2, lsl lr rsb lr, r4, #0x20 mov r2, r2, lsr r4 orr r2, r2, r3, lsl lr mov r3, r3, lsr r4 orrne r2, r2, #0x1 _020E9C00: adds r0, r0, r2 adcs r1, r1, r3 blo _020E9C28 _020E9C0C: add r12, r12, #0x1 and r4, r0, #0x1 movs r1, r1, rrx orr r0, r4, r0, rrx mov lr, r12, lsl #0x15 cmn lr, #0x200000 beq _020E9E38 _020E9C28: movs r2, r0, lsl #0x15 mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 mov r1, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 tst r2, #0x80000000 ldmeqia sp!, {r4,lr} bxeq lr movs r2, r2, lsl #0x1 andeqs r2, r0, #0x1 ldmeqia sp!, {r4,lr} bxeq lr adds r0, r0, #0x1 adc r1, r1, #0x0 ldmia sp!, {r4,lr} bx lr _020E9C6C: cmp r12, #0x800 movge lr, #0x80000000 movlt lr, #0x0 bics r12, r12, #0x800 beq _020E9CD8 orrs r4, r0, r1, lsl #0x1 bne _020E9E14 mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r4, r4, lsl #0x15 beq _020E9E00 cmn r4, #0x200000 bne _020E9E00 orrs r4, r2, r3, lsl #0x1 beq _020E9E00 b _020E9E14 _020E9CB4: cmp r4, #0x800 movge lr, #0x80000000 movlt lr, #0x0 bic r12, r12, #0x800 bics r4, r4, #0x800 beq _020E9D44 orrs r4, r2, r3, lsl #0x1 bne _020E9E14 b _020E9E00 _020E9CD8: orrs r4, r0, r1, lsl #0x1 beq _020E9D18 mov r12, #0x1 bic r1, r1, #0x80000000 mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r4, r4, lsl #0x15 cmnne r4, #0x200000 mov r4, r4, lsr #0x15 orr r4, r4, lr, lsr #0x14 beq _020E9CB4 orr r3, r3, #0x80000000 orr r12, r12, lr, lsr #0x14 b _020E9BA8 _020E9D18: mov r12, r3, lsr #0x14 mov r1, r3, lsl #0xb orr r1, r1, r2, lsr #0x15 mov r0, r2, lsl #0xb movs r4, r12, lsl #0x15 beq _020E9DCC cmn r4, #0x200000 bne _020E9DCC orrs r4, r0, r1, lsl #0x1 beq _020E9E00 b _020E9E18 _020E9D44: orrs r4, r2, r3, lsl #0x1 beq _020E9DDC mov r4, #0x1 bic r3, r3, #0x80000000 cmp r1, #0x0 bpl _020E9D68 orr r12, r12, lr, lsr #0x14 orr r4, r4, lr, lsr #0x14 b _020E9BA8 _020E9D68: adds r0, r0, r2 adcs r1, r1, r3 blo _020E9D88 add r12, r12, #0x1 and r4, r0, #0x1 movs r1, r1, rrx mov r0, r0, rrx orr r0, r0, r4 _020E9D88: cmp r1, #0x0 subges r12, r12, #0x1 movs r2, r0, lsl #0x15 mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 orr r1, lr, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 ldmeqia sp!, {r4,lr} bxeq lr tst r2, #0x80000000 ldmeqia sp!, {r4,lr} bxeq lr movs r2, r2, lsl #0x1 andeqs r2, r0, #0x1 ldmeqia sp!, {r4,lr} bxeq lr _020E9DCC: mov r1, r3 mov r0, r2 ldmia sp!, {r4,lr} bx lr _020E9DDC: cmp r1, #0x0 subges r12, r12, #0x1 mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 orr r1, lr, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 ldmia sp!, {r4,lr} bx lr _020E9E00: ldr r1, _020E9E58 ; =0x7FF00000 orr r1, lr, r1 mov r0, #0x0 ldmia sp!, {r4,lr} bx lr _020E9E14: mov r1, r3 _020E9E18: mvn r0, #0x0 bic r1, r0, #0x80000000 ldmia sp!, {r4,lr} bx lr _020E9E28: ; 0x020E9E28 mvn r0, #0x0 bic r1, r0, #0x80000000 ldmia sp!, {r4,lr} bx lr _020E9E38: cmp r12, #0x800 movge lr, #0x80000000 movlt lr, #0x0 ldr r1, _020E9E58 ; =0x7FF00000 orr r1, lr, r1 mov r0, #0x0 ldmia sp!, {r4,lr} bx lr .balign 4 _020E9E58: .word 0x7FF00000 arm_func_start _d2f _d2f: and r2, r1, #0x80000000 mov r12, r1, lsr #0x14 bics r12, r12, #0x800 beq _020E9ED4 mov r3, r12, lsl #0x15 cmn r3, #0x200000 bhs _020E9EB8 subs r12, r12, #0x380 bls _020E9EE4 cmp r12, #0xff bge _020E9F54 mov r1, r1, lsl #0xc orr r3, r2, r1, lsr #0x9 orr r3, r3, r0, lsr #0x1d movs r1, r0, lsl #0x3 orr r0, r3, r12, lsl #0x17 bxeq lr tst r1, #0x80000000 bxeq lr movs r1, r1, lsl #0x1 andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020E9EB8: orrs r3, r0, r1, lsl #0xc bne _020E9ECC mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr _020E9ECC: mvn r0, #0x80000000 bx lr _020E9ED4: orrs r3, r0, r1, lsl #0xc bne _020E9F4C mov r0, r2 bx lr _020E9EE4: cmn r12, #0x17 beq _020E9F38 bmi _020E9F4C mov r1, r1, lsl #0xb orr r1, r1, #0x80000000 mov r3, r1, lsr #0x8 orr r3, r3, r0, lsr #0x1d rsb r12, r12, #0x1 movs r1, r0, lsl #0x3 orr r0, r2, r3, lsr r12 rsb r12, r12, #0x20 mov r3, r3, lsl r12 orrne r3, r3, #0x1 movs r1, r3 bxeq lr tst r1, #0x80000000 bxeq lr movs r1, r1, lsl #0x1 andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020E9F38: orr r0, r0, r1, lsl #0xc movs r1, r0 mov r0, r2 addne r0, r0, #0x1 bx lr _020E9F4C: mov r0, r2 bx lr _020E9F54: mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr arm_func_start _dfix _dfix: ; 0x020E9F60 bic r3, r1, #0x80000000 ldr r2, _020E9FA8 ; =0x0000041E subs r2, r2, r3, lsr #0x14 ble _020E9F9C cmp r2, #0x20 bge _020E9F94 mov r3, r1, lsl #0xb orr r3, r3, #0x80000000 orr r3, r3, r0, lsr #0x15 cmp r1, #0x0 mov r0, r3, lsr r2 rsbmi r0, r0, #0x0 bx lr _020E9F94: mov r0, #0x0 bx lr _020E9F9C: mvn r0, r1, asr #0x1f add r0, r0, #0x80000000 bx lr .balign 4 _020E9FA8: .word 0x0000041E arm_func_start _ll_ufrom_d _ll_ufrom_d: ; 0x020E9FAC tst r1, #0x80000000 bne _020EA010 ldr r2, _020EA034 ; =0x0000043E subs r2, r2, r1, lsr #0x14 blt _020EA028 cmp r2, #0x40 bge _020EA004 mov r12, r1, lsl #0xb orr r12, r12, #0x80000000 orr r12, r12, r0, lsr #0x15 cmp r2, #0x20 ble _020E9FEC sub r2, r2, #0x20 mov r1, #0x0 mov r0, r12, lsr r2 bx lr _020E9FEC: mov r3, r0, lsl #0xb mov r1, r12, lsr r2 mov r0, r3, lsr r2 rsb r2, r2, #0x20 orr r0, r0, r12, lsl r2 bx lr _020EA004: mov r1, #0x0 mov r0, #0x0 bx lr _020EA010: cmn r1, #0x100000 cmpeq r0, #0x0 bhi _020EA028 mov r1, #0x0 mov r0, #0x0 bx lr _020EA028: mvn r1, #0x0 mvn r0, #0x0 bx lr .balign 4 _020EA034: .word 0x0000043E arm_func_start _dflt _dflt: ; 0x020EA038 ands r2, r0, #0x80000000 rsbmi r0, r0, #0x0 cmp r0, #0x0 mov r1, #0x0 bxeq lr mov r3, #0x400 add r3, r3, #0x1e clz r12, r0 movs r0, r0, lsl r12 sub r3, r3, r12 movs r1, r0 mov r0, r1, lsl #0x15 add r1, r1, r1 orr r1, r2, r1, lsr #0xc orr r1, r1, r3, lsl #0x14 bx lr arm_func_start _dfltu _dfltu: ; 0x020EA078 cmp r0, #0x0 mov r1, #0x0 bxeq lr mov r3, #0x400 add r3, r3, #0x1e bmi _020EA09C clz r12, r0 movs r0, r0, lsl r12 sub r3, r3, r12 _020EA09C: mov r1, r0 mov r0, r1, lsl #0x15 add r1, r1, r1 mov r1, r1, lsr #0xc orr r1, r1, r3, lsl #0x14 bx lr arm_func_start _dmul _dmul: ; 0x020EA0B4 stmdb sp!, {r4-r7,lr} eor lr, r1, r3 and lr, lr, #0x80000000 mov r12, r1, lsr #0x14 mov r1, r1, lsl #0xb orr r1, r1, r0, lsr #0x15 mov r0, r0, lsl #0xb movs r6, r12, lsl #0x15 cmnne r6, #0x200000 beq _020EA1BC orr r1, r1, #0x80000000 bic r12, r12, #0x800 mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r5, r4, lsl #0x15 cmnne r5, #0x200000 beq _020EA204 orr r3, r3, #0x80000000 bic r4, r4, #0x800 _020EA108: add r12, r4, r12 umull r5, r4, r0, r2 umull r7, r6, r0, r3 adds r4, r7, r4 adc r6, r6, #0x0 umull r7, r0, r1, r2 adds r4, r7, r4 adcs r0, r0, r6 umull r7, r2, r1, r3 adc r1, r2, #0x0 adds r0, r0, r7 adc r1, r1, #0x0 orrs r4, r4, r5 orrne r0, r0, #0x1 cmp r1, #0x0 blt _020EA154 sub r12, r12, #0x1 adds r0, r0, r0 adc r1, r1, r1 _020EA154: add r12, r12, #0x2 subs r12, r12, #0x400 bmi _020EA2F0 beq _020EA2F0 mov r6, r12, lsl #0x14 cmn r6, #0x100000 bmi _020EA3F0 movs r2, r0, lsl #0x15 mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 orr r1, lr, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 ldmeqia sp!, {r4-r7,lr} bxeq lr tst r2, #0x80000000 ldmeqia sp!, {r4-r7,lr} bxeq lr movs r2, r2, lsl #0x1 andeqs r2, r0, #0x1 ldmeqia sp!, {r4-r7,lr} bxeq lr adds r0, r0, #0x1 adc r1, r1, #0x0 ldmia sp!, {r4-r7,lr} bx lr _020EA1BC: bics r12, r12, #0x800 beq _020EA218 orrs r6, r0, r1, lsl #0x1 bne _020EA3A4 mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r5, r4, lsl #0x15 beq _020EA1F8 cmn r5, #0x200000 bne _020EA390 orrs r5, r2, r3, lsl #0x1 beq _020EA390 b _020EA3A4 _020EA1F8: orrs r5, r3, r2 beq _020EA3B8 b _020EA390 _020EA204: bics r4, r4, #0x800 beq _020EA2AC orrs r6, r2, r3, lsl #0x1 bne _020EA3A4 b _020EA390 _020EA218: orrs r6, r0, r1, lsl #0x1 beq _020EA280 mov r12, #0x1 cmp r1, #0x0 bne _020EA23C sub r12, r12, #0x20 movs r1, r0 mov r0, #0x0 bmi _020EA258 _020EA23C: clz r6, r1 movs r1, r1, lsl r6 rsb r6, r6, #0x20 orr r1, r1, r0, lsr r6 rsb r6, r6, #0x20 mov r0, r0, lsl r6 sub r12, r12, r6 _020EA258: mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r5, r4, lsl #0x15 cmnne r5, #0x200000 beq _020EA204 orr r3, r3, #0x80000000 bic r4, r4, #0x800 b _020EA108 _020EA280: mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r5, r4, lsl #0x15 beq _020EA404 cmn r5, #0x200000 bne _020EA404 orrs r6, r2, r3, lsl #0x1 beq _020EA3B8 b _020EA3A4 _020EA2AC: orrs r5, r2, r3, lsl #0x1 beq _020EA404 mov r4, #0x1 cmp r3, #0x0 bne _020EA2D0 sub r4, r4, #0x20 movs r3, r2 mov r2, #0x0 bmi _020EA108 _020EA2D0: clz r6, r3 movs r3, r3, lsl r6 rsb r6, r6, #0x20 orr r3, r3, r2, lsr r6 rsb r6, r6, #0x20 mov r2, r2, lsl r6 sub r4, r4, r6 b _020EA108 _020EA2F0: cmn r12, #0x34 beq _020EA388 bmi _020EA3E0 mov r2, r1 mov r3, r0 add r4, r12, #0x34 cmp r4, #0x20 movge r2, r3 movge r3, #0x0 subge r4, r4, #0x20 rsb r5, r4, #0x20 mov r2, r2, lsl r4 orr r2, r2, r3, lsr r5 movs r3, r3, lsl r4 orrne r2, r2, #0x1 rsb r12, r12, #0xc cmp r12, #0x20 movge r0, r1 movge r1, #0x0 subge r12, r12, #0x20 rsb r4, r12, #0x20 mov r0, r0, lsr r12 orr r0, r0, r1, lsl r4 orr r1, lr, r1, lsr r12 cmp r2, #0x0 ldmeqia sp!, {r4-r7,lr} bxeq lr tst r2, #0x80000000 ldmeqia sp!, {r4-r7,lr} bxeq lr movs r2, r2, lsl #0x1 andeqs r2, r0, #0x1 ldmeqia sp!, {r4-r7,lr} bxeq lr adds r0, r0, #0x1 adc r1, r1, #0x0 ldmia sp!, {r4-r7,lr} bx lr _020EA388: orr r0, r0, r1, lsl #0x1 b _020EA3C8 _020EA390: ldr r1, _020EA414 ; =0x7FF00000 orr r1, lr, r1 mov r0, #0x0 ldmia sp!, {r4-r7,lr} bx lr _020EA3A4: mov r1, r3 mvn r0, #0x0 bic r1, r0, #0x80000000 ldmia sp!, {r4-r7,lr} bx lr _020EA3B8: mvn r0, #0x0 bic r1, r0, #0x80000000 ldmia sp!, {r4-r7,lr} bx lr _020EA3C8: movs r2, r0 mov r1, lr mov r0, #0x0 addne r0, r0, #0x1 ldmia sp!, {r4-r7,lr} bx lr _020EA3E0: mov r1, lr mov r0, #0x0 ldmia sp!, {r4-r7,lr} bx lr _020EA3F0: ldr r1, _020EA414 ; =0x7FF00000 orr r1, lr, r1 mov r0, #0x0 ldmia sp!, {r4-r7,lr} bx lr _020EA404: mov r1, lr mov r0, #0x0 ldmia sp!, {r4-r7,lr} bx lr .balign 4 _020EA414: .word 0x7FF00000 arm_func_start _dsqrt _dsqrt: ; 0x020EA418 stmdb sp!, {r4-r6,lr} ldr r2, _020EA5A8 ; =0x7FF00000 cmp r1, r2 bhs _020EA564 movs r12, r1, lsr #0x14 beq _020EA510 bic r1, r1, r2 orr r1, r1, #0x100000 _020EA438: movs r12, r12, asr #0x1 bhs _020EA44C sub r12, r12, #0x1 movs r0, r0, lsl #0x1 adc r1, r1, r1 _020EA44C: movs r3, r0, lsl #0x1 adc r1, r1, r1 mov r2, #0x0 mov r4, #0x0 mov lr, #0x200000 _020EA460: add r6, r4, lr cmp r6, r1 addle r4, r6, lr suble r1, r1, r6 addle r2, r2, lr movs r3, r3, lsl #0x1 adc r1, r1, r1 movs lr, lr, lsr #0x1 bne _020EA460 mov r0, #0x0 mov r5, #0x0 cmp r1, r4 cmpeq r3, #0x80000000 blo _020EA4A8 subs r3, r3, #0x80000000 sbc r1, r1, r4 add r4, r4, #0x1 mov r0, #0x80000000 _020EA4A8: movs r3, r3, lsl #0x1 adc r1, r1, r1 mov lr, #0x40000000 _020EA4B4: add r6, r5, lr cmp r4, r1 cmpeq r6, r3 bhi _020EA4D4 add r5, r6, lr subs r3, r3, r6 sbc r1, r1, r4 add r0, r0, lr _020EA4D4: movs r3, r3, lsl #0x1 adc r1, r1, r1 movs lr, lr, lsr #0x1 bne _020EA4B4 orrs r1, r1, r3 biceq r0, r0, #0x1 movs r1, r2, lsr #0x1 movs r0, r0, rrx adcs r0, r0, #0x0 adc r1, r1, #0x0 add r1, r1, #0x20000000 sub r1, r1, #0x100000 add r1, r1, r12, lsl #0x14 ldmia sp!, {r4-r6,lr} bx lr _020EA510: cmp r1, #0x0 bne _020EA540 cmp r0, #0x0 ldmeqia sp!, {r4-r6,lr} bxeq lr mvn r12, #0x13 clz r5, r0 movs r0, r0, lsl r5 sub r12, r12, r5 mov r1, r0, lsr #0xb mov r0, r0, lsl #0x15 b _020EA438 _020EA540: clz r2, r1 movs r1, r1, lsl r2 rsb r2, r2, #0x2b mov r1, r1, lsr #0xb orr r1, r1, r0, lsr r2 rsb r2, r2, #0x20 mov r0, r0, lsl r2 rsb r12, r2, #0x1 b _020EA438 _020EA564: tst r1, #0x80000000 beq _020EA580 bics r3, r1, #0x80000000 cmpeq r0, #0x0 ldmeqia sp!, {r4-r6,lr} bxeq lr b _020EA58C _020EA580: orrs r2, r0, r1, lsl #0xc ldmeqia sp!, {r4-r6,lr} bxeq lr _020EA58C: ldr r2, _020EA5AC ; =0x7FF80000 orr r1, r1, r2 ldr r3, _020EA5B0 ; =UNK_021D74A8 mov r4, #0x21 str r4, [r3, #0x0] ldmia sp!, {r4-r6,lr} bx lr .balign 4 _020EA5A8: .word 0x7FF00000 _020EA5AC: .word 0x7FF80000 _020EA5B0: .word UNK_021D74A8 arm_func_start _drsb _drsb: ; 0x020EA5B4 eor r1, r1, r3 eor r3, r1, r3 eor r1, r1, r3 eor r0, r0, r2 eor r2, r0, r2 eor r0, r0, r2 arm_func_start _dsub _dsub: stmdb sp!, {r4,lr} eors r12, r1, r3 eormi r3, r3, #0x80000000 bmi _020E9B54 _020EA5DC: subs r12, r0, r2 sbcs lr, r1, r3 bhs _020EA5FC eor lr, lr, #0x80000000 adds r2, r2, r12 adc r3, r3, lr subs r0, r0, r12 sbc r1, r1, lr _020EA5FC: mov lr, #0x80000000 mov r12, r1, lsr #0x14 orr r1, lr, r1, lsl #0xb orr r1, r1, r0, lsr #0x15 mov r0, r0, lsl #0xb movs r4, r12, lsl #0x15 cmnne r4, #0x200000 beq _020EA800 mov r4, r3, lsr #0x14 orr r3, lr, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs lr, r4, lsl #0x15 beq _020EA848 _020EA634: subs r4, r12, r4 beq _020EA6DC cmp r4, #0x20 ble _020EA670 cmp r4, #0x38 movge r4, #0x3f sub r4, r4, #0x20 rsb lr, r4, #0x20 orrs lr, r2, r3, lsl lr mov r2, r3, lsr r4 orrne r2, r2, #0x1 subs r0, r0, r2 sbcs r1, r1, #0x0 bmi _020EA698 b _020EA788 _020EA670: rsb lr, r4, #0x20 movs lr, r2, lsl lr rsb lr, r4, #0x20 mov r2, r2, lsr r4 orr r2, r2, r3, lsl lr mov r3, r3, lsr r4 orrne r2, r2, #0x1 subs r0, r0, r2 sbcs r1, r1, r3 bpl _020EA788 _020EA698: movs r2, r0, lsl #0x15 mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 mov r1, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 tst r2, #0x80000000 ldmeqia sp!, {r4,lr} bxeq lr movs r2, r2, lsl #0x1 andeqs r2, r0, #0x1 ldmeqia sp!, {r4,lr} bxeq lr adds r0, r0, #0x1 adc r1, r1, #0x0 ldmia sp!, {r4,lr} bx lr _020EA6DC: subs r0, r0, r2 sbc r1, r1, r3 orrs lr, r1, r0 beq _020EA96C mov lr, r12, lsl #0x14 and lr, lr, #0x80000000 bic r12, r12, #0x800 cmp r1, #0x0 bmi _020EA764 bne _020EA714 sub r12, r12, #0x20 movs r1, r0 mov r0, #0x0 bmi _020EA730 _020EA714: clz r4, r1 movs r1, r1, lsl r4 rsb r4, r4, #0x20 orr r1, r1, r0, lsr r4 rsb r4, r4, #0x20 mov r0, r0, lsl r4 sub r12, r12, r4 _020EA730: cmp r12, #0x0 bgt _020EA76C rsb r12, r12, #0xc cmp r12, #0x20 movge r0, r1 movge r1, #0x0 subge r12, r12, #0x20 rsb r4, r12, #0x20 mov r0, r0, lsr r12 orr r0, r0, r1, lsl r4 orr r1, lr, r1, lsr r12 ldmia sp!, {r4,lr} bx lr _020EA764: cmp r1, #0x0 subges r12, r12, #0x1 _020EA76C: mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 orr r1, lr, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 ldmia sp!, {r4,lr} bx lr _020EA788: mov lr, r12, lsl #0x14 and lr, lr, #0x80000000 bic r12, r12, #0x800 cmp r1, #0x0 bne _020EA7AC sub r12, r12, #0x20 movs r1, r0 mov r0, #0x0 bmi _020EA7C8 _020EA7AC: clz r4, r1 movs r1, r1, lsl r4 rsb r4, r4, #0x20 orr r1, r1, r0, lsr r4 rsb r4, r4, #0x20 mov r0, r0, lsl r4 sub r12, r12, r4 _020EA7C8: cmp r12, #0x0 orrgt r12, r12, lr, lsr #0x14 bgt _020EA698 rsb r12, r12, #0xc cmp r12, #0x20 movge r0, r1 movge r1, #0x0 subge r12, r12, #0x20 rsb r4, r12, #0x20 mov r0, r0, lsr r12 orr r0, r0, r1, lsl r4 orr r1, lr, r1, lsr r12 ldmia sp!, {r4,lr} bx lr _020EA800: cmp r12, #0x800 movge lr, #0x80000000 movlt lr, #0x0 bics r12, r12, #0x800 beq _020EA86C orrs r4, r0, r1, lsl #0x1 bne _020EA948 mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r4, r4, lsl #0x15 beq _020EA934 cmn r4, #0x200000 bne _020EA934 orrs r4, r2, r3, lsl #0x1 beq _020EA95C b _020EA948 _020EA848: cmp r4, #0x800 movge lr, #0x80000000 movlt lr, #0x0 bic r12, r12, #0x800 bics r4, r4, #0x800 beq _020EA8E4 orrs r4, r2, r3, lsl #0x1 bne _020EA948 b _020EA934 _020EA86C: orrs r4, r0, r1, lsl #0x1 beq _020EA8AC mov r12, #0x1 bic r1, r1, #0x80000000 mov r4, r3, lsr #0x14 mov r3, r3, lsl #0xb orr r3, r3, r2, lsr #0x15 mov r2, r2, lsl #0xb movs r4, r4, lsl #0x15 cmnne r4, #0x200000 mov r4, r4, lsr #0x15 orr r4, r4, lr, lsr #0x14 beq _020EA848 orr r3, r3, #0x80000000 orr r12, r12, lr, lsr #0x14 b _020EA634 _020EA8AC: mov r12, r3, lsr #0x14 mov r1, r3, lsl #0xb orr r1, r1, r2, lsr #0x15 mov r0, r2, lsl #0xb movs r4, r12, lsl #0x15 beq _020EA8D8 cmn r4, #0x200000 bne _020EA900 orrs r4, r0, r1, lsl #0x1 bne _020EA94C b _020EA934 _020EA8D8: orrs r4, r0, r1, lsl #0x1 beq _020EA96C b _020EA900 _020EA8E4: orrs r4, r2, r3, lsl #0x1 beq _020EA910 mov r4, #0x1 bic r3, r3, #0x80000000 orr r12, r12, lr, lsr #0x14 orr r4, r4, lr, lsr #0x14 b _020EA634 _020EA900: mov r1, r3 mov r0, r2 ldmia sp!, {r4,lr} bx lr _020EA910: cmp r1, #0x0 subges r12, r12, #0x1 mov r0, r0, lsr #0xb orr r0, r0, r1, lsl #0x15 add r1, r1, r1 orr r1, lr, r1, lsr #0xc orr r1, r1, r12, lsl #0x14 ldmia sp!, {r4,lr} bx lr _020EA934: ldr r1, _020EA97C ; =0x7FF00000 orr r1, lr, r1 mov r0, #0x0 ldmia sp!, {r4,lr} bx lr _020EA948: mov r1, r3 _020EA94C: mvn r0, #0x0 bic r1, r0, #0x80000000 ldmia sp!, {r4,lr} bx lr _020EA95C: mvn r0, #0x0 bic r1, r0, #0x80000000 ldmia sp!, {r4,lr} bx lr _020EA96C: mov r1, #0x0 mov r0, #0x0 ldmia sp!, {r4,lr} bx lr .balign 4 _020EA97C: .word 0x7FF00000 arm_func_start _fadd _fadd: ; 0x020EA980 eors r2, r0, r1 eormi r1, r1, #0x80000000 bmi _020EB7BC _020EA98C: subs r12, r0, r1 subcc r0, r0, r12 addcc r1, r1, r12 mov r2, #0x80000000 mov r3, r0, lsr #0x17 orr r0, r2, r0, lsl #0x8 ands r12, r3, #0xff cmpne r12, #0xff beq _020EAA20 mov r12, r1, lsr #0x17 orr r1, r2, r1, lsl #0x8 ands r2, r12, #0xff beq _020EAA60 _020EA9C0: subs r12, r3, r12 beq _020EA9D8 rsb r2, r12, #0x20 movs r2, r1, lsl r2 mov r1, r1, lsr r12 orrne r1, r1, #0x1 _020EA9D8: adds r0, r0, r1 blo _020EA9F8 and r1, r0, #0x1 orr r0, r1, r0, rrx add r3, r3, #0x1 and r2, r3, #0xff cmp r2, #0xff beq _020EAB68 _020EA9F8: ands r1, r0, #0xff add r0, r0, r0 mov r0, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 tst r1, #0x80 bxeq lr ands r1, r1, #0x7f andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020EAA20: cmp r3, #0x100 movge r2, #0x80000000 movlt r2, #0x0 ands r3, r3, #0xff beq _020EAA84 movs r0, r0, lsl #0x1 bne _020EAB94 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x9 ands r12, r12, #0xff beq _020EAB88 cmp r12, #0xff blt _020EAB88 cmp r1, #0x0 beq _020EAB88 b _020EAB94 _020EAA60: cmp r3, #0x100 movge r2, #0x80000000 movlt r2, #0x0 and r3, r3, #0xff ands r12, r12, #0xff beq _020EAAE0 _020EAA78: movs r1, r1, lsl #0x1 bne _020EAB94 b _020EAB88 _020EAA84: movs r0, r0, lsl #0x1 beq _020EAABC mov r3, #0x1 mov r0, r0, lsr #0x1 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x8 ands r12, r12, #0xff beq _020EAAE0 cmp r12, #0xff beq _020EAA78 orr r1, r1, #0x80000000 orr r3, r3, r2, lsr #0x17 orr r12, r12, r2, lsr #0x17 b _020EA9C0 _020EAABC: mov r3, r1, lsr #0x17 mov r0, r1, lsl #0x9 ands r3, r3, #0xff beq _020EAB48 cmp r3, #0xff blt _020EAB48 cmp r0, #0x0 beq _020EAB88 b _020EAB80 _020EAAE0: movs r1, r1, lsl #0x1 beq _020EAB50 mov r1, r1, lsr #0x1 mov r12, #0x1 orr r3, r3, r2, lsr #0x17 orr r12, r12, r2, lsr #0x17 cmp r0, #0x0 bmi _020EA9C0 adds r0, r0, r1 blo _020EAB14 and r1, r0, #0x1 orr r0, r1, r0, rrx add r12, r12, #0x1 _020EAB14: cmp r0, #0x0 subge r12, r12, #0x1 ands r1, r0, #0xff add r0, r0, r0 mov r0, r0, lsr #0x9 orr r0, r0, r12, lsl #0x17 bxeq lr tst r1, #0x80 bxeq lr ands r1, r1, #0x7f andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020EAB48: mov r0, r1 bx lr _020EAB50: cmp r0, #0x0 subges r3, r3, #0x1 add r0, r0, r0 orr r0, r2, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bx lr _020EAB68: cmp r3, #0x100 movge r2, #0x80000000 movlt r2, #0x0 mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr _020EAB80: mvn r0, #0x80000000 bx lr _020EAB88: mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr _020EAB94: mvn r0, #0x80000000 bx lr _020EAB9C: ; 0x020EAB9C mvn r0, #0x80000000 bx lr arm_func_start _dgr _dgr: ; 0x020EABA4 mov r12, #0x200000 cmn r12, r1, lsl #0x1 bhs _020EAC18 cmn r12, r3, lsl #0x1 bhs _020EAC2C _020EABB8: orrs r12, r3, r1 bmi _020EABE8 cmp r1, r3 cmpeq r0, r2 movhi r0, #0x1 movls r0, #0x0 bx lr _020EABD4: mov r0, #0x0 mrs r12, cpsr bic r12, r12, #0x20000000 msr cpsr_f, r12 bx lr _020EABE8: orr r12, r0, r12, lsl #0x1 orrs r12, r12, r2 moveq r0, #0x0 mrs r12, cpsr bic r12, r12, #0x20000000 msr cpsr_f, r12 bxeq lr cmp r3, r1 cmpeq r2, r0 movhi r0, #0x1 movls r0, #0x0 bx lr _020EAC18: bne _020EABD4 cmp r0, #0x0 bhi _020EABD4 cmn r12, r3, lsl #0x1 blo _020EABB8 _020EAC2C: bne _020EABD4 cmp r2, #0x0 bhi _020EABD4 b _020EABB8 arm_func_start _dleq _dleq: ; 0x020EAC3C mov r12, #0x200000 cmn r12, r1, lsl #0x1 bhs _020EACBC cmn r12, r3, lsl #0x1 bhs _020EACD0 _020EAC50: orrs r12, r3, r1 bmi _020EAC84 cmp r1, r3 cmpeq r0, r2 movls r0, #0x1 movhi r0, #0x0 bx lr _020EAC6C: mov r0, #0x0 mrs r12, cpsr bic r12, r12, #0x40000000 orr r12, r12, #0x20000000 msr cpsr_f, r12 bx lr _020EAC84: orr r12, r0, r12, lsl #0x1 orrs r12, r12, r2 moveq r0, #0x1 bne _020EACA8 mrs r12, cpsr bic r12, r12, #0x20000000 orr r12, r12, #0x40000000 msr cpsr_f, r12 bxeq lr _020EACA8: cmp r3, r1 cmpeq r2, r0 movls r0, #0x1 movhi r0, #0x0 bx lr _020EACBC: bne _020EAC6C cmp r0, #0x0 bhi _020EAC6C cmn r12, r3, lsl #0x1 blo _020EAC50 _020EACD0: bne _020EAC6C cmp r2, #0x0 bhi _020EAC6C b _020EAC50 arm_func_start _dls _dls: ; 0x020EACE0 mov r12, #0x200000 cmn r12, r1, lsl #0x1 bhs _020EAD58 cmn r12, r3, lsl #0x1 bhs _020EAD6C _020EACF4: orrs r12, r3, r1 bmi _020EAD24 cmp r1, r3 cmpeq r0, r2 movcc r0, #0x1 movcs r0, #0x0 bx lr _020EAD10: mov r0, #0x0 mrs r12, cpsr orr r12, r12, #0x20000000 msr cpsr_f, r12 bx lr _020EAD24: orr r12, r0, r12, lsl #0x1 orrs r12, r12, r2 moveq r0, #0x0 bne _020EAD44 mrs r12, cpsr orr r12, r12, #0x20000000 msr cpsr_f, r12 bxeq lr _020EAD44: cmp r3, r1 cmpeq r2, r0 movcc r0, #0x1 movcs r0, #0x0 bx lr _020EAD58: bne _020EAD10 cmp r0, #0x0 bhi _020EAD10 cmn r12, r3, lsl #0x1 blo _020EACF4 _020EAD6C: bne _020EAD10 cmp r2, #0x0 bhi _020EAD10 b _020EACF4 arm_func_start _deq _deq: ; 0x020EAD7C mov r12, #0x200000 cmn r12, r1, lsl #0x1 bhs _020EADE4 cmn r12, r3, lsl #0x1 bhs _020EADF8 _020EAD90: orrs r12, r3, r1 bmi _020EADC0 cmp r1, r3 cmpeq r0, r2 moveq r0, #0x1 movne r0, #0x0 bx lr _020EADAC: mov r0, #0x0 mrs r12, cpsr bic r12, r12, #0x40000000 msr cpsr_f, r12 bx lr _020EADC0: orr r12, r0, r12, lsl #0x1 orrs r12, r12, r2 moveq r0, #0x1 bxeq lr cmp r3, r1 cmpeq r2, r0 moveq r0, #0x1 movne r0, #0x0 bx lr _020EADE4: bne _020EADAC cmp r0, #0x0 bhi _020EADAC cmn r12, r3, lsl #0x1 blo _020EAD90 _020EADF8: bne _020EADAC cmp r2, #0x0 bhi _020EADAC b _020EAD90 arm_func_start _dneq _dneq: ; 0x020EAE08 mov r12, #0x200000 cmn r12, r1, lsl #0x1 bhs _020EAE70 cmn r12, r3, lsl #0x1 bhs _020EAE84 _020EAE1C: orrs r12, r3, r1 bmi _020EAE4C cmp r1, r3 cmpeq r0, r2 movne r0, #0x1 moveq r0, #0x0 bx lr _020EAE38: mov r0, #0x1 mrs r12, cpsr bic r12, r12, #0x40000000 msr cpsr_f, r12 bx lr _020EAE4C: orr r12, r0, r12, lsl #0x1 orrs r12, r12, r2 moveq r0, #0x0 bxeq lr cmp r3, r1 cmpeq r2, r0 movne r0, #0x1 moveq r0, #0x0 bx lr _020EAE70: bne _020EAE38 cmp r0, #0x0 bhi _020EAE38 cmn r12, r3, lsl #0x1 blo _020EAE1C _020EAE84: bne _020EAE38 cmp r2, #0x0 bhi _020EAE38 b _020EAE1C arm_func_start _fgeq _fgeq: ; 0x020EAE94 mov r3, #0xff000000 cmp r3, r0, lsl #0x1 cmpcs r3, r1, lsl #0x1 blo _020EAEDC cmp r0, #0x0 bicmi r0, r0, #0x80000000 rsbmi r0, r0, #0x0 cmp r1, #0x0 bicmi r1, r1, #0x80000000 rsbmi r1, r1, #0x0 cmp r0, r1 movge r0, #0x1 movlt r0, #0x0 mrs r12, cpsr biclt r12, r12, #0x20000000 orrge r12, r12, #0x20000000 msr cpsr_f, r12 bx lr _020EAEDC: mov r0, #0x0 mrs r12, cpsr bic r12, r12, #0x20000000 msr cpsr_f, r12 bx lr arm_func_start _fgr _fgr: ; 0x020EAEF0 mov r3, #0xff000000 cmp r3, r0, lsl #0x1 cmpcs r3, r1, lsl #0x1 blo _020EAF38 cmp r0, #0x0 bicmi r0, r0, #0x80000000 rsbmi r0, r0, #0x0 cmp r1, #0x0 bicmi r1, r1, #0x80000000 rsbmi r1, r1, #0x0 cmp r0, r1 movgt r0, #0x1 movle r0, #0x0 mrs r12, cpsr bicle r12, r12, #0x20000000 orrgt r12, r12, #0x20000000 msr cpsr_f, r12 bx lr _020EAF38: mov r0, #0x0 mrs r12, cpsr bic r12, r12, #0x20000000 msr cpsr_f, r12 bx lr arm_func_start _fleq _fleq: ; 0x020EAF4C mov r3, #0xff000000 cmp r3, r0, lsl #0x1 cmpcs r3, r1, lsl #0x1 blo _020EAF9C cmp r0, #0x0 bicmi r0, r0, #0x80000000 rsbmi r0, r0, #0x0 cmp r1, #0x0 bicmi r1, r1, #0x80000000 rsbmi r1, r1, #0x0 cmp r0, r1 movle r0, #0x1 movgt r0, #0x0 mrs r12, cpsr orrgt r12, r12, #0x20000000 bicgt r12, r12, #0x40000000 bicle r12, r12, #0x20000000 orrle r12, r12, #0x40000000 msr cpsr_f, r12 bx lr _020EAF9C: mov r0, #0x0 mrs r12, cpsr bic r12, r12, #0x40000000 orr r12, r12, #0x20000000 msr cpsr_f, r12 bx lr arm_func_start _fls _fls: ; 0x020EAFB4 mov r3, #0xff000000 cmp r3, r0, lsl #0x1 cmpcs r3, r1, lsl #0x1 blo _020EAFFC cmp r0, #0x0 bicmi r0, r0, #0x80000000 rsbmi r0, r0, #0x0 cmp r1, #0x0 bicmi r1, r1, #0x80000000 rsbmi r1, r1, #0x0 cmp r0, r1 movlt r0, #0x1 movge r0, #0x0 mrs r12, cpsr orrge r12, r12, #0x20000000 biclt r12, r12, #0x20000000 msr cpsr_f, r12 bx lr _020EAFFC: mov r0, #0x0 mrs r12, cpsr orr r12, r12, #0x20000000 msr cpsr_f, r12 bx lr arm_func_start _feq _feq: ; 0x020EB010 mov r3, #0xff000000 cmp r3, r0, lsl #0x1 blo _020EB064 cmp r3, r1, lsl #0x1 blo _020EB064 orr r3, r0, r1 movs r3, r3, lsl #0x1 moveq r0, #0x0 bne _020EB044 mrs r12, cpsr orr r12, r12, #0x40000000 msr cpsr_f, r12 bx lr _020EB044: cmp r0, r1 movne r0, #0x1 moveq r0, #0x0 mrs r12, cpsr bicne r12, r12, #0x40000000 orreq r12, r12, #0x40000000 msr cpsr_f, r12 bx lr _020EB064: mov r0, #0x1 mrs r12, cpsr bic r12, r12, #0x40000000 msr cpsr_f, r12 bx lr arm_func_start _frdiv _frdiv: ; 0x020EB078 eor r0, r0, r1 eor r1, r0, r1 eor r0, r0, r1 arm_func_start _fdiv _fdiv: ; 0x020EB084 stmdb sp!, {lr} mov r12, #0xff ands r3, r12, r0, lsr #0x17 cmpne r3, #0xff beq _020EB258 ands r12, r12, r1, lsr #0x17 cmpne r12, #0xff beq _020EB294 orr r1, r1, #0x800000 orr r0, r0, #0x800000 bic r2, r0, #0xff000000 bic lr, r1, #0xff000000 _020EB0B4: cmp r2, lr movcc r2, r2, lsl #0x1 subcc r3, r3, #0x1 teq r0, r1 sub r0, pc, #0x94 ldrb r1, [r0, lr, lsr #0xf] rsb lr, lr, #0x0 mov r0, lr, asr #0x1 mul r0, r1, r0 add r0, r0, #0x80000000 mov r0, r0, lsr #0x6 mul r0, r1, r0 mov r0, r0, lsr #0xe mul r1, lr, r0 sub r12, r3, r12 mov r1, r1, lsr #0xc mul r1, r0, r1 mov r0, r0, lsl #0xe add r0, r0, r1, lsr #0xf umull r1, r0, r2, r0 mov r3, r0 orrmi r0, r0, #0x80000000 adds r12, r12, #0x7e bmi _020EB35C cmp r12, #0xfe bge _020EB410 add r0, r0, r12, lsl #0x17 mov r12, r1, lsr #0x1c cmp r12, #0x7 beq _020EB238 add r0, r0, r1, lsr #0x1f ldmia sp!, {lr} bx lr _020EB138: ; not code .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 _020EB238: mov r1, r3, lsl #0x1 add r1, r1, #0x1 rsb lr, lr, #0x0 mul r1, lr, r1 cmp r1, r2, lsl #0x18 addmi r0, r0, #0x1 ldmia sp!, {lr} bx lr _020EB258: eor lr, r0, r1 and lr, lr, #0x80000000 cmp r3, #0x0 beq _020EB2B0 movs r0, r0, lsl #0x9 bne _020EB3F8 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x9 ands r12, r12, #0xff beq _020EB3E8 cmp r12, #0xff blt _020EB3E8 cmp r1, #0x0 beq _020EB404 b _020EB3E0 _020EB294: eor lr, r0, r1 and lr, lr, #0x80000000 cmp r12, #0x0 beq _020EB314 _020EB2A4: movs r1, r1, lsl #0x9 bne _020EB3E0 b _020EB430 _020EB2B0: movs r2, r0, lsl #0x9 beq _020EB2E4 clz r3, r2 movs r2, r2, lsl r3 rsb r3, r3, #0x0 mov r2, r2, lsr #0x8 ands r12, r12, r1, lsr #0x17 beq _020EB33C cmp r12, #0xff beq _020EB2A4 orr r1, r1, #0x800000 bic lr, r1, #0xff000000 b _020EB0B4 _020EB2E4: mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x9 ands r12, r12, #0xff beq _020EB308 cmp r12, #0xff blt _020EB430 cmp r1, #0x0 beq _020EB430 b _020EB3E0 _020EB308: cmp r1, #0x0 beq _020EB404 b _020EB430 _020EB314: movs r12, r1, lsl #0x9 beq _020EB3E8 mov lr, r12 clz r12, lr movs lr, lr, lsl r12 rsb r12, r12, #0x0 mov lr, lr, lsr #0x8 orr r0, r0, #0x800000 bic r2, r0, #0xff000000 b _020EB0B4 _020EB33C: movs r12, r1, lsl #0x9 beq _020EB3E8 mov lr, r12 clz r12, lr movs lr, lr, lsl r12 rsb r12, r12, #0x0 mov lr, lr, lsr #0x8 b _020EB0B4 _020EB35C: and r0, r0, #0x80000000 cmn r12, #0x18 beq _020EB3D0 bmi _020EB428 add r1, r12, #0x17 mov r2, r2, lsl r1 rsb r12, r12, #0x0 mov r3, r3, lsr r12 orr r0, r0, r3 rsb lr, lr, #0x0 mul r1, lr, r3 cmp r1, r2 ldmeqia sp!, {lr} bxeq lr add r1, r1, lr cmp r1, r2 beq _020EB3C4 addmi r0, r0, #0x1 subpl r1, r1, lr add r1, lr, r1, lsl #0x1 cmp r1, r2, lsl #0x1 and r3, r0, #0x1 addmi r0, r0, #0x1 addeq r0, r0, r3 ldmia sp!, {lr} bx lr _020EB3C4: add r0, r0, #0x1 ldmia sp!, {lr} bx lr _020EB3D0: cmn r2, lr addne r0, r0, #0x1 ldmia sp!, {lr} bx lr _020EB3E0: mov r0, r1 b _020EB3F8 _020EB3E8: mov r0, #0xff000000 orr r0, lr, r0, lsr #0x1 ldmia sp!, {lr} bx lr _020EB3F8: mvn r0, #0x80000000 ldmia sp!, {lr} bx lr _020EB404: mvn r0, #0x80000000 ldmia sp!, {lr} bx lr _020EB410: tst r0, #0x80000000 mov r0, #0xff000000 movne r0, r0, asr #0x1 moveq r0, r0, lsr #0x1 ldmia sp!, {lr} bx lr _020EB428: ldmia sp!, {lr} bx lr _020EB430: mov r0, lr ldmia sp!, {lr} bx lr arm_func_start _f2d _f2d: and r2, r0, #0x80000000 mov r12, r0, lsr #0x17 mov r3, r0, lsl #0x9 ands r12, r12, #0xff beq _020EB46C cmp r12, #0xff beq _020EB498 _020EB458: add r12, r12, #0x380 mov r0, r3, lsl #0x14 orr r1, r2, r3, lsr #0xc orr r1, r1, r12, lsl #0x14 bx lr _020EB46C: cmp r3, #0x0 bne _020EB480 mov r1, r2 mov r0, #0x0 bx lr _020EB480: mov r3, r3, lsr #0x1 clz r12, r3 movs r3, r3, lsl r12 rsb r12, r12, #0x1 add r3, r3, r3 b _020EB458 _020EB498: cmp r3, #0x0 bhi _020EB4B0 ldr r1, _020EB4BC ; =0x7FF00000 orr r1, r1, r2 mov r0, #0x0 bx lr _020EB4B0: mvn r0, #0x0 bic r1, r0, #0x80000000 bx lr .balign 4 _020EB4BC: .word 0x7FF00000 arm_func_start _ffix _ffix: ; 0x020EB4C0 bic r1, r0, #0x80000000 mov r2, #0x9e subs r2, r2, r1, lsr #0x17 ble _020EB4E8 mov r1, r1, lsl #0x8 orr r1, r1, #0x80000000 cmp r0, #0x0 mov r0, r1, lsr r2 rsbmi r0, r0, #0x0 bx lr _020EB4E8: mvn r0, r0, asr #0x1f add r0, r0, #0x80000000 bx lr arm_func_start _ffixu _ffixu: ; 0x020EB4F4 tst r0, #0x80000000 bne _020EB518 mov r1, #0x9e subs r1, r1, r0, lsr #0x17 blt _020EB52C mov r2, r0, lsl #0x8 orr r0, r2, #0x80000000 mov r0, r0, lsr r1 bx lr _020EB518: mov r2, #0xff000000 cmp r2, r0, lsl #0x1 movcs r0, #0x0 mvncc r0, #0x0 bx lr _020EB52C: mvn r0, #0x0 bx lr arm_func_start _fflt _fflt: ; 0x020EB534 ands r2, r0, #0x80000000 rsbmi r0, r0, #0x0 cmp r0, #0x0 bxeq lr clz r3, r0 movs r0, r0, lsl r3 rsb r3, r3, #0x9e ands r1, r0, #0xff add r0, r0, r0 orr r0, r2, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bxeq lr tst r1, #0x80 bxeq lr ands r3, r1, #0x7f andeqs r3, r0, #0x1 addne r0, r0, #0x1 bx lr arm_func_start _ffltu _ffltu: ; 0x020EB57C cmp r0, #0x0 bxeq lr mov r3, #0x9e bmi _020EB598 clz r12, r0 movs r0, r0, lsl r12 sub r3, r3, r12 _020EB598: ands r2, r0, #0xff add r0, r0, r0 mov r0, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bxeq lr tst r2, #0x80 bxeq lr ands r1, r2, #0x7f andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr arm_func_start _fmul _fmul: ; 0x020EB5C4 eor r2, r0, r1 and r2, r2, #0x80000000 mov r12, #0xff ands r3, r12, r0, lsr #0x17 mov r0, r0, lsl #0x8 cmpne r3, #0xff beq _020EB640 orr r0, r0, #0x80000000 ands r12, r12, r1, lsr #0x17 mov r1, r1, lsl #0x8 cmpne r12, #0xff beq _020EB680 orr r1, r1, #0x80000000 _020EB5F8: add r12, r3, r12 umull r1, r3, r0, r1 movs r0, r3 addpl r0, r0, r0 subpl r12, r12, #0x1 subs r12, r12, #0x7f bmi _020EB70C cmp r12, #0xfe bge _020EB778 ands r3, r0, #0xff orr r0, r2, r0, lsr #0x8 add r0, r0, r12, lsl #0x17 tst r3, #0x80 bxeq lr orrs r1, r1, r3, lsl #0x19 andeqs r3, r0, #0x1 addne r0, r0, #0x1 bx lr _020EB640: cmp r3, #0x0 beq _020EB694 movs r0, r0, lsl #0x1 bne _020EB768 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x9 ands r12, r12, #0xff beq _020EB674 cmp r12, #0xff blt _020EB75C cmp r1, #0x0 beq _020EB75C b _020EB768 _020EB674: cmp r1, #0x0 beq _020EB770 b _020EB75C _020EB680: cmp r12, #0x0 beq _020EB6F0 _020EB688: movs r1, r1, lsl #0x1 bne _020EB768 b _020EB75C _020EB694: movs r0, r0, lsl #0x1 beq _020EB6CC mov r0, r0, lsr #0x1 clz r3, r0 movs r0, r0, lsl r3 rsb r3, r3, #0x1 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x8 ands r12, r12, #0xff beq _020EB6F0 cmp r12, #0xff beq _020EB688 orr r1, r1, #0x80000000 b _020EB5F8 _020EB6CC: mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x9 ands r12, r12, #0xff beq _020EB79C cmp r12, #0xff blt _020EB79C cmp r1, #0x0 beq _020EB770 b _020EB768 _020EB6F0: movs r1, r1, lsl #0x1 beq _020EB79C mov r1, r1, lsr #0x1 clz r12, r1 movs r1, r1, lsl r12 rsb r12, r12, #0x1 b _020EB5F8 _020EB70C: cmn r12, #0x18 beq _020EB754 bmi _020EB794 cmp r1, #0x0 orrne r0, r0, #0x1 mov r3, r0 mov r0, r0, lsr #0x8 rsb r12, r12, #0x0 orr r0, r2, r0, lsr r12 rsb r12, r12, #0x18 movs r1, r3, lsl r12 bxeq lr tst r1, #0x80000000 bxeq lr movs r1, r1, lsl #0x1 andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020EB754: mov r0, r0, lsl #0x1 b _020EB784 _020EB75C: mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr _020EB768: mvn r0, #0x80000000 bx lr _020EB770: mvn r0, #0x80000000 bx lr _020EB778: mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr _020EB784: movs r1, r0 mov r0, r2 addne r0, r0, #0x1 bx lr _020EB794: mov r0, r2 bx lr _020EB79C: mov r0, r2 bx lr arm_func_start _frsb _frsb: ; 0x020EB7A4 eor r0, r0, r1 eor r1, r0, r1 eor r0, r0, r1 arm_func_start _fsub _fsub: ; 0x020EB7B0 eors r2, r0, r1 eormi r1, r1, #0x80000000 bmi _020EA98C _020EB7BC: subs r12, r0, r1 eorcc r12, r12, #0x80000000 subcc r0, r0, r12 addcc r1, r1, r12 mov r2, #0x80000000 mov r3, r0, lsr #0x17 orr r0, r2, r0, lsl #0x8 ands r12, r3, #0xff cmpne r12, #0xff beq _020EB8D8 mov r12, r1, lsr #0x17 orr r1, r2, r1, lsl #0x8 ands r2, r12, #0xff beq _020EB918 _020EB7F4: subs r12, r3, r12 beq _020EB83C rsb r2, r12, #0x20 movs r2, r1, lsl r2 mov r1, r1, lsr r12 orrne r1, r1, #0x1 subs r0, r0, r1 bpl _020EB880 ands r1, r0, #0xff add r0, r0, r0 mov r0, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 tst r1, #0x80 bxeq lr ands r1, r1, #0x7f andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020EB83C: subs r0, r0, r1 beq _020EB9E4 mov r2, r3, lsl #0x17 and r2, r2, #0x80000000 bic r3, r3, #0x100 clz r12, r0 movs r0, r0, lsl r12 sub r3, r3, r12 cmp r3, #0x0 bgt _020EB870 rsb r3, r3, #0x9 orr r0, r2, r0, lsr r3 bx lr _020EB870: add r0, r0, r0 orr r0, r2, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bx lr _020EB880: mov r2, r3, lsl #0x17 and r2, r2, #0x80000000 bic r3, r3, #0x100 clz r12, r0 movs r0, r0, lsl r12 sub r3, r3, r12 cmp r3, #0x0 bgt _020EB8AC rsb r3, r3, #0x9 orr r0, r2, r0, lsr r3 bx lr _020EB8AC: ands r1, r0, #0xff add r0, r0, r0 orr r0, r2, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bxeq lr tst r1, #0x80 bxeq lr ands r1, r1, #0x7f andeqs r1, r0, #0x1 addne r0, r0, #0x1 bx lr _020EB8D8: cmp r3, #0x100 movge r2, #0x80000000 movlt r2, #0x0 ands r3, r3, #0xff beq _020EB940 movs r0, r0, lsl #0x1 bne _020EBA18 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x9 ands r12, r12, #0xff beq _020EBA0C cmp r12, #0xff blt _020EBA0C cmp r1, #0x0 beq _020EBA20 b _020EBA18 _020EB918: cmp r12, #0x100 movge r2, #0x80000000 movlt r2, #0x0 and r3, r3, #0xff ands r12, r12, #0xff beq _020EB9A8 _020EB930: eor r2, r2, #0x80000000 movs r1, r1, lsl #0x1 bne _020EBA18 b _020EBA0C _020EB940: movs r0, r0, lsl #0x1 beq _020EB978 mov r0, r0, lsr #0x1 mov r3, #0x1 mov r12, r1, lsr #0x17 mov r1, r1, lsl #0x8 ands r12, r12, #0xff beq _020EB9A8 cmp r12, #0xff beq _020EB930 orr r1, r1, #0x80000000 orr r3, r3, r2, lsr #0x17 orr r12, r12, r2, lsr #0x17 b _020EB7F4 _020EB978: mov r3, r1, lsr #0x17 mov r0, r1, lsl #0x9 ands r2, r3, #0xff beq _020EB99C cmp r2, #0xff blt _020EB9C4 cmp r0, #0x0 bne _020EBA04 b _020EBA0C _020EB99C: cmp r0, #0x0 beq _020EB9E4 b _020EB9C4 _020EB9A8: movs r1, r1, lsl #0x1 beq _020EB9CC mov r1, r1, lsr #0x1 mov r12, #0x1 orr r12, r12, r2, lsr #0x17 orr r3, r3, r2, lsr #0x17 b _020EB7F4 _020EB9C4: mov r0, r1 bx lr _020EB9CC: cmp r0, #0x0 subges r3, r3, #0x1 add r0, r0, r0 orr r0, r2, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bx lr _020EB9E4: mov r0, #0x0 bx lr _020EB9EC: ; 0x020EB9EC cmp r0, #0x0 subges r3, r3, #0x1 add r0, r0, r0 mov r0, r0, lsr #0x9 orr r0, r0, r3, lsl #0x17 bx lr _020EBA04: mvn r0, #0x80000000 bx lr _020EBA0C: mov r0, #0xff000000 orr r0, r2, r0, lsr #0x1 bx lr _020EBA18: mvn r0, #0x80000000 bx lr _020EBA20: mvn r0, #0x80000000 bx lr 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 arm_func_start _ll_mul _ll_mul: ; 0x020EBC30 stmdb sp!, {r4-r5,lr} umull r5, r4, r0, r2 mla r4, r0, r3, r4 mla r4, r2, r1, r4 mov r1, r4 mov r0, r5 ldmia sp!, {r4-r5,lr} bx lr arm_func_start _ll_shl _ll_shl: ; 0x020EBC50 ands r2, r2, #0x3f bxeq lr subs r3, r2, #0x20 bge _020EBC74 rsb r3, r2, #0x20 mov r1, r1, lsl r2 orr r1, r1, r0, lsr r3 mov r0, r0, lsl r2 bx lr _020EBC74: mov r1, r0, lsl r3 mov r0, #0x0 bx lr arm_func_start _s32_div_f _s32_div_f: ; 0x020EBC80 eor r12, r0, r1 and r12, r12, #0x80000000 cmp r0, #0x0 rsblt r0, r0, #0x0 addlt r12, r12, #0x1 cmp r1, #0x0 rsblt r1, r1, #0x0 beq _020EBE78 cmp r0, r1 movcc r1, r0 movcc r0, #0x0 blo _020EBE78 mov r2, #0x1c mov r3, r0, lsr #0x4 cmp r1, r3, lsr #0xc suble r2, r2, #0x10 movle r3, r3, lsr #0x10 cmp r1, r3, lsr #0x4 suble r2, r2, #0x8 movle r3, r3, lsr #0x8 cmp r1, r3 suble r2, r2, #0x4 movle r3, r3, lsr #0x4 mov r0, r0, lsl r2 rsb r1, r1, #0x0 adds r0, r0, r0 add r2, r2, r2, lsl #0x1 add pc, pc, r2, lsl #0x2 mov r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 mov r1, r3 _020EBE78: ands r3, r12, #0x80000000 rsbne r0, r0, #0x0 ands r3, r12, #0x1 rsbne r1, r1, #0x0 bx lr arm_func_start _u32_div_f _u32_div_f: ; 0x020EBE8C cmp r1, #0x0 bxeq lr arm_func_start _u32_div_not_0_f _u32_div_not_0_f: cmp r0, r1 movcc r1, r0 movcc r0, #0x0 bxcc lr mov r2, #0x1c mov r3, r0, lsr #0x4 cmp r1, r3, lsr #0xc suble r2, r2, #0x10 movle r3, r3, lsr #0x10 cmp r1, r3, lsr #0x4 suble r2, r2, #0x8 movle r3, r3, lsr #0x8 cmp r1, r3 suble r2, r2, #0x4 movle r3, r3, lsr #0x4 mov r0, r0, lsl r2 rsb r1, r1, #0x0 adds r0, r0, r0 add r2, r2, r2, lsl #0x1 add pc, pc, r2, lsl #0x2 mov r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 adcs r3, r1, r3, lsl #0x1 subcc r3, r3, r1 adcs r0, r0, r0 mov r1, r3 bx lr arm_func_start _drdiv _drdiv: ; 0x020EC070 eor r1, r1, r3 eor r3, r1, r3 eor r1, r1, r3 eor r0, r0, r2 eor r2, r0, r2 eor r0, r0, r2 arm_func_start _ddiv _ddiv: ; 0x020EC088 stmdb sp!, {r4-r6,lr} ldr lr, _020EC5C8 ; =0x00000FFE eor r4, r1, r3 ands r12, lr, r1, lsr #0x13 cmpne r12, lr beq _020EC434 bic r1, r1, lr, lsl #0x14 orr r1, r1, #0x100000 add r12, r12, r4, lsr #0x1f _020EC0AC: ands r4, lr, r3, lsr #0x13 cmpne r4, lr beq _020EC4CC bic r3, r3, lr, lsl #0x14 orr r3, r3, #0x100000 _020EC0C0: sub r12, r12, r4 cmp r1, r3 cmpeq r0, r2 bhs _020EC0DC adds r0, r0, r0 adc r1, r1, r1 sub r12, r12, #0x2 _020EC0DC: sub r4, pc, #0x24 ldrb lr, [r4, r3, lsr #0xc] rsbs r2, r2, #0x0 rsc r3, r3, #0x0 mov r4, #0x20000000 mla r5, lr, r3, r4 mov r6, r3, lsl #0xa mov r5, r5, lsr #0x7 mul lr, r5, lr orr r6, r6, r2, lsr #0x16 mov lr, lr, lsr #0xd mul r5, lr, r6 mov r6, r1, lsl #0xa orr r6, r6, r0, lsr #0x16 mov r5, r5, lsr #0x10 mul r5, lr, r5 mov lr, lr, lsl #0xe add lr, lr, r5, lsr #0x10 umull r5, r6, lr, r6 umull r4, r5, r6, r2 mla r5, r3, r6, r5 mov r4, r4, lsr #0x1a orr r4, r4, r5, lsl #0x6 add r4, r4, r0, lsl #0x2 umull lr, r5, r4, lr mov r4, #0x0 adds r5, r5, r6, lsl #0x18 adc r4, r4, r6, lsr #0x8 cmp r12, #0x800 bge _020EC2C0 add r12, r12, #0x7f0 adds r12, r12, #0xc bmi _020EC2D8 orr r1, r4, r12, lsl #0x1f bic r12, r12, #0x1 add r1, r1, r12, lsl #0x13 tst lr, #0x80000000 bne _020EC1B0 rsbs r2, r2, #0x0 mov r4, r4, lsl #0x1 add r4, r4, r5, lsr #0x1f mul lr, r2, r4 mov r6, #0x0 mov r4, r5, lsl #0x1 orr r4, r4, #0x1 umlal r6, lr, r4, r2 rsc r3, r3, #0x0 mla lr, r4, r3, lr cmp lr, r0, lsl #0x15 bmi _020EC1B0 mov r0, r5 ldmia sp!, {r4-r6,lr} bx lr _020EC1B0: adds r0, r5, #0x1 adc r1, r1, #0x0 ldmia sp!, {r4-r6,lr} bx lr _020EC1C0: ; not code .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1 .byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4 .byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8 .byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD .byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3 .byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA .byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2 .byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB .byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4 .byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E .byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98 .byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92 .byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D .byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89 .byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84 .byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80 _020EC2C0: movs r1, r12, lsl #0x1f orr r1, r1, #0x7f000000 orr r1, r1, #0xf00000 mov r0, #0x0 ldmia sp!, {r4-r6,lr} bx lr _020EC2D8: mvn r6, r12, asr #0x1 cmp r6, #0x34 bgt _020EC424 beq _020EC400 cmp r6, #0x14 bge _020EC320 rsb r6, r6, #0x13 mov lr, r0, lsl r6 rsb r6, r6, #0x14 mov r0, r5, lsr r6 rsb r6, r6, #0x20 orr r0, r0, r4, lsl r6 rsb r6, r6, #0x20 mov r4, r4, lsr r6 orr r1, r4, r12, lsl #0x1f mov r12, lr mov lr, #0x0 b _020EC350 _020EC320: rsb r6, r6, #0x33 mov lr, r1, lsl r6 mov r1, r12, lsl #0x1f rsb r6, r6, #0x20 orr r12, lr, r0, lsr r6 rsb r6, r6, #0x20 mov lr, r0, lsl r6 mov r5, r5, lsr #0x15 orr r5, r5, r4, lsl #0xb rsb r6, r6, #0x1f mov r0, r5, lsr r6 mov r4, #0x0 _020EC350: rsbs r2, r2, #0x0 mul r4, r2, r4 mov r5, #0x0 umlal r5, r4, r2, r0 rsc r3, r3, #0x0 mla r4, r0, r3, r4 cmp r4, r12 cmpeq r5, lr ldmeqia sp!, {r4-r6,lr} bxeq lr adds r5, r5, r2 adc r4, r4, r3 cmp r4, r12 bmi _020EC3F4 bne _020EC398 cmp r5, lr beq _020EC3E4 blo _020EC3F4 _020EC398: subs r5, r5, r2 sbc r4, r4, r3 _020EC3A0: adds r5, r5, r5 adc r4, r4, r4 adds r5, r5, r2 adc r4, r4, r3 adds lr, lr, lr adc r12, r12, r12 cmp r4, r12 bmi _020EC3E4 ldmneia sp!, {r4-r6,lr} bxne lr cmp r5, lr blo _020EC3E4 ldmneia sp!, {r4-r6,lr} bxne lr tst r0, #0x1 ldmeqia sp!, {r4-r6,lr} bxeq lr _020EC3E4: adds r0, r0, #0x1 adc r1, r1, #0x0 ldmia sp!, {r4-r6,lr} bx lr _020EC3F4: adds r0, r0, #0x1 adc r1, r1, #0x0 b _020EC3A0 _020EC400: rsbs r2, r2, #0x0 rsc r3, r3, #0x0 cmp r1, r3 cmpeq r0, r2 mov r1, r12, lsl #0x1f mov r0, #0x0 movne r0, #0x1 ldmia sp!, {r4-r6,lr} bx lr _020EC424: mov r1, r12, lsl #0x1f mov r0, #0x0 ldmia sp!, {r4-r6,lr} bx lr _020EC434: orrs r5, r0, r1, lsl #0x1 beq _020EC558 cmp r12, lr beq _020EC49C movs r1, r1, lsl #0xc beq _020EC478 clz r5, r1 movs r1, r1, lsl r5 sub r12, r12, r5 add r5, r12, #0x1f mov r1, r1, lsr #0xb orr r1, r1, r0, lsr r5 rsb r5, r5, #0x20 mov r0, r0, lsl r5 mov r12, r12, lsl #0x1 orr r12, r12, r4, lsr #0x1f b _020EC0AC _020EC478: mvn r12, #0x13 clz r5, r0 movs r0, r0, lsl r5 sub r12, r12, r5 mov r1, r0, lsr #0xb mov r0, r0, lsl #0x15 mov r12, r12, lsl #0x1 orr r12, r12, r4, lsr #0x1f b _020EC0AC _020EC49C: orrs r5, r0, r1, lsl #0xc bne _020EC580 bic r5, r3, #0x80000000 cmp r5, lr, lsl #0x13 bhs _020EC4C0 and r5, r3, #0x80000000 eor r1, r5, r1 ldmia sp!, {r4-r6,lr} bx lr _020EC4C0: orrs r5, r2, r3, lsl #0xc bne _020EC5A0 b _020EC5B8 _020EC4CC: orrs r5, r2, r3, lsl #0x1 beq _020EC544 cmp r4, lr beq _020EC52C movs r3, r3, lsl #0xc beq _020EC50C clz r5, r3 movs r3, r3, lsl r5 sub r4, r4, r5 add r5, r4, #0x1f mov r3, r3, lsr #0xb orr r3, r3, r2, lsr r5 rsb r5, r5, #0x20 mov r2, r2, lsl r5 mov r4, r4, lsl #0x1 b _020EC0C0 _020EC50C: mvn r4, #0x13 clz r5, r2 movs r2, r2, lsl r5 sub r4, r4, r5 mov r3, r2, lsr #0xb mov r2, r2, lsl #0x15 mov r4, r4, lsl #0x1 b _020EC0C0 _020EC52C: orrs r5, r2, r3, lsl #0xc bne _020EC5A0 mov r1, r12, lsl #0x1f mov r0, #0x0 ldmia sp!, {r4-r6,lr} bx lr _020EC544: mov r1, r12, lsl #0x1f orr r1, r1, lr, lsl #0x13 mov r0, #0x0 ldmia sp!, {r4-r6,lr} bx lr _020EC558: orrs r5, r2, r3, lsl #0x1 beq _020EC5B8 bic r5, r3, #0x80000000 cmp r5, lr, lsl #0x13 cmpeq r2, #0x0 bhi _020EC5A0 eor r1, r1, r3 and r1, r1, #0x80000000 ldmia sp!, {r4-r6,lr} bx lr _020EC580: tst r1, #0x80000 beq _020EC5B8 bic r5, r3, #0x80000000 cmp r5, lr, lsl #0x13 cmpeq r2, #0x0 bhi _020EC5A0 ldmia sp!, {r4-r6,lr} bx lr _020EC5A0: tst r3, #0x80000 beq _020EC5B8 mov r1, r3 mov r0, r2 ldmia sp!, {r4-r6,lr} bx lr _020EC5B8: orr r1, r1, #0x7f000000 orr r1, r1, #0xf80000 ldmia sp!, {r4-r6,lr} bx lr .balign 4 _020EC5C8: .word 0x00000FFE arm_func_start _fp_init _fp_init: ; 0x020EC5CC bx lr arm_func_start sys_writec sys_writec: ; 0x020EC5D0 str lr, [sp, #-0x4]! mov r1, r0 mov r0, #0x3 swi 0x123456 ldr pc, [sp], #0x4 arm_func_start sys_readc sys_readc: ; 0x020EC5E4 str lr, [sp, #-0x4]! mov r1, #0x0 mov r0, #0x7 swi 0x123456 ldr pc, [sp], #0x4 arm_func_start sys_exit sys_exit: ; 0x020EC5F8 mov r1, #0x0 mov r0, #0x18 swi 0x123456 mov pc, lr arm_func_start __read_console __read_console: ; 0x020EC608 stmdb sp!, {r3-r7,lr} mov r6, r2 ldr r5, [r6, #0x0] mov r7, r1 cmp r5, #0x0 mov r4, #0x0 bls _020EC650 _020EC624: bl sys_readc and r1, r0, #0xff cmp r1, #0xd strb r0, [r7, r4] cmpne r1, #0xa addeq r0, r4, #0x1 streq r0, [r6, #0x0] beq _020EC650 add r4, r4, #0x1 cmp r4, r5 blo _020EC624 _020EC650: mov r0, #0x0 ldmia sp!, {r3-r7,pc} arm_func_start __write_console __write_console: ; 0x020EC658 stmdb sp!, {r4-r6,lr} ldr r5, [r2, #0x0] mov r6, r1 cmp r5, #0x0 mov r4, #0x0 bls _020EC684 _020EC670: add r0, r6, r4 bl sys_writec add r4, r4, #0x1 cmp r4, r5 blo _020EC670 _020EC684: mov r0, #0x0 ldmia sp!, {r4-r6,pc} arm_func_start __close_console __close_console: ; 0x020EC68C mov r0, #0x0 bx lr .extern __sinit__ arm_func_start __call_static_initializers __call_static_initializers: ; 0x020EC694 stmdb sp!, {r4,lr} ldr r4, _020EC6BC ; =__sinit__ b _020EC6A8 _020EC6A0: blx r0 add r4, r4, #0x4 _020EC6A8: cmp r4, #0x0 ldrne r0, [r4, #0x0] cmpne r0, #0x0 bne _020EC6A0 ldmia sp!, {r4,pc} .balign 4 _020EC6BC: .word __sinit__ arm_func_start __destroy_global_chain __destroy_global_chain: ; 0x020EC6C0 stmdb sp!, {r3-r5,lr} ldr r4, _020EC700 ; =__global_destructor_chain ldr r2, [r4, #0x0] cmp r2, #0x0 ldmeqia sp!, {r3-r5,pc} _020EC6D4: ; 0x020EC6D4 mvn r5, #0x0 _020EC6D8: ldr r0, [r2, #0x0] mov r1, r5 str r0, [r4, #0x0] ldr r0, [r2, #0x8] ldr r2, [r2, #0x4] blx r2 ldr r2, [r4, #0x0] cmp r2, #0x0 bne _020EC6D8 ldmia sp!, {r3-r5,pc} .balign 4 _020EC700: .word __global_destructor_chain arm_func_start _ExitProcess _ExitProcess: ; 0x020EC704 ldr ip, _020EC70C ; =sys_exit bx r12 .balign 4 _020EC70C: .word sys_exit .section .exception .word 0x00200100 .word __read_console .short 81 .word 0x00300F00 .word __write_console .short 53 .word 0x00200700 .word __call_static_initializers .short 45 .word 0x00100100 .word __destroy_global_chain .short 69 .word 0x00200300 .word _ExitProcess .short 13 .word 0x00000000