diff options
Diffstat (limited to 'asm/libgcc.s')
-rw-r--r-- | asm/libgcc.s | 4634 |
1 files changed, 4634 insertions, 0 deletions
diff --git a/asm/libgcc.s b/asm/libgcc.s new file mode 100644 index 000000000..6c5c79304 --- /dev/null +++ b/asm/libgcc.s @@ -0,0 +1,4634 @@ + thumb_func_start _call_via_r0 +_call_via_r0: ; 81E082C + bx r0 + mov r8, r8 + thumb_func_end _call_via_r0 + + thumb_func_start _call_via_r1 +_call_via_r1: ; 81E0830 + bx r1 + mov r8, r8 + thumb_func_end _call_via_r1 + + thumb_func_start _call_via_r2 +_call_via_r2: ; 81E0834 + bx r2 + mov r8, r8 + thumb_func_end _call_via_r2 + + thumb_func_start _call_via_r3 +_call_via_r3: ; 81E0838 + bx r3 + mov r8, r8 + thumb_func_end _call_via_r3 + + thumb_func_start _call_via_r4 +_call_via_r4: ; 81E083C + bx r4 + mov r8, r8 + thumb_func_end _call_via_r4 + + thumb_func_start _call_via_r5 +_call_via_r5: ; 81E0840 + bx r5 + mov r8, r8 + thumb_func_end _call_via_r5 + + thumb_func_start _call_via_r6 +_call_via_r6: ; 81E0844 + bx r6 + mov r8, r8 + thumb_func_end _call_via_r6 + + thumb_func_start _call_via_r7 +_call_via_r7: ; 81E0848 + bx r7 + mov r8, r8 + thumb_func_end _call_via_r7 + + thumb_func_start _call_via_r8 +_call_via_r8: ; 81E084C + bx r8 + mov r8, r8 + thumb_func_end _call_via_r8 + + thumb_func_start _call_via_r9 +_call_via_r9: ; 81E0850 + bx r9 + mov r8, r8 + thumb_func_end _call_via_r9 + + thumb_func_start _call_via_sl +_call_via_sl: ; 81E0854 + bx r10 + mov r8, r8 + thumb_func_end _call_via_sl + + thumb_func_start _call_via_fp +_call_via_fp: ; 81E0858 + bx r11 + mov r8, r8 + thumb_func_end _call_via_fp + + thumb_func_start _call_via_ip +_call_via_ip: ; 81E085C + bx r12 + mov r8, r8 + thumb_func_end _call_via_ip + + thumb_func_start _call_via_sp +_call_via_sp: ; 81E0860 + bx sp + mov r8, r8 + thumb_func_end _call_via_sp + + thumb_func_start _call_via_lr +_call_via_lr: ; 81E0864 + bx lr + mov r8, r8 + thumb_func_end _call_via_lr + + thumb_func_start __divsi3 +; int __divsi3(int dividend, int divisor) +__divsi3: ; 81E0868 + cmp r1, 0 + beq _081E08F0 + push {r4} + adds r4, r0, 0 + eors r4, r1 + mov r12, r4 + movs r3, 0x1 + movs r2, 0 + cmp r1, 0 + bpl _081E087E + negs r1, r1 +_081E087E: + cmp r0, 0 + bpl _081E0884 + negs r0, r0 +_081E0884: + cmp r0, r1 + bcc _081E08E2 + movs r4, 0x1 + lsls r4, 28 +_081E088C: + cmp r1, r4 + bcs _081E089A + cmp r1, r0 + bcs _081E089A + lsls r1, 4 + lsls r3, 4 + b _081E088C +_081E089A: + lsls r4, 3 +_081E089C: + cmp r1, r4 + bcs _081E08AA + cmp r1, r0 + bcs _081E08AA + lsls r1, 1 + lsls r3, 1 + b _081E089C +_081E08AA: + cmp r0, r1 + bcc _081E08B2 + subs r0, r1 + orrs r2, r3 +_081E08B2: + lsrs r4, r1, 1 + cmp r0, r4 + bcc _081E08BE + subs r0, r4 + lsrs r4, r3, 1 + orrs r2, r4 +_081E08BE: + lsrs r4, r1, 2 + cmp r0, r4 + bcc _081E08CA + subs r0, r4 + lsrs r4, r3, 2 + orrs r2, r4 +_081E08CA: + lsrs r4, r1, 3 + cmp r0, r4 + bcc _081E08D6 + subs r0, r4 + lsrs r4, r3, 3 + orrs r2, r4 +_081E08D6: + cmp r0, 0 + beq _081E08E2 + lsrs r3, 4 + beq _081E08E2 + lsrs r1, 4 + b _081E08AA +_081E08E2: + adds r0, r2, 0 + mov r4, r12 + cmp r4, 0 + bpl _081E08EC + negs r0, r0 +_081E08EC: + pop {r4} + mov pc, lr +_081E08F0: + push {lr} + bl nullsub_1 + movs r0, 0 + pop {pc} + thumb_func_end __divsi3 + + thumb_func_start nullsub_1 +nullsub_1: ; 81E08FC + mov pc, lr + thumb_func_end nullsub_1 + + thumb_func_start __fixunsdfsi +__fixunsdfsi: ; 81E0900 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r0, 0 + ldr r3, _081E0920 + ldr r2, _081E091C + bl __gedf2 + cmp r0, 0 + bge _081E0924 + adds r1, r5, 0 + adds r0, r4, 0 + bl __fixdfsi + b _081E093A + .align 2, 0 +_081E091C: .4byte 0x41e00000 +_081E0920: .4byte 0x00000000 +_081E0924: + ldr r3, _081E0940 + ldr r2, _081E093C + adds r1, r5, 0 + adds r0, r4, 0 + bl __adddf3 + bl __fixdfsi + movs r1, 0x80 + lsls r1, 24 + adds r0, r1 +_081E093A: + pop {r4,r5,pc} + .align 2, 0 +_081E093C: .4byte 0xc1e00000 +_081E0940: .4byte 0x00000000 + thumb_func_end __fixunsdfsi + + thumb_func_start __fixunssfsi +__fixunssfsi: ; 81E0944 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _081E095C + bl __gesf2 + cmp r0, 0 + bge _081E0960 + adds r0, r4, 0 + bl __fixsfsi + b _081E0972 + .align 2, 0 +_081E095C: .4byte 0x4f000000 +_081E0960: + ldr r1, _081E0974 + adds r0, r4, 0 + bl __addsf3 + bl __fixsfsi + movs r1, 0x80 + lsls r1, 24 + adds r0, r1 +_081E0972: + pop {r4,pc} + .align 2, 0 +_081E0974: .4byte 0xcf000000 + thumb_func_end __fixunssfsi + + thumb_func_start __modsi3 +__modsi3: ; 81E0978 + movs r3, 0x1 + cmp r1, 0 + beq _081E0A3C + bpl _081E0982 + negs r1, r1 +_081E0982: + push {r4} + push {r0} + cmp r0, 0 + bpl _081E098C + negs r0, r0 +_081E098C: + cmp r0, r1 + bcc _081E0A30 + movs r4, 0x1 + lsls r4, 28 +_081E0994: + cmp r1, r4 + bcs _081E09A2 + cmp r1, r0 + bcs _081E09A2 + lsls r1, 4 + lsls r3, 4 + b _081E0994 +_081E09A2: + lsls r4, 3 +_081E09A4: + cmp r1, r4 + bcs _081E09B2 + cmp r1, r0 + bcs _081E09B2 + lsls r1, 1 + lsls r3, 1 + b _081E09A4 +_081E09B2: + movs r2, 0 + cmp r0, r1 + bcc _081E09BA + subs r0, r1 +_081E09BA: + lsrs r4, r1, 1 + cmp r0, r4 + bcc _081E09CC + subs r0, r4 + mov r12, r3 + movs r4, 0x1 + rors r3, r4 + orrs r2, r3 + mov r3, r12 +_081E09CC: + lsrs r4, r1, 2 + cmp r0, r4 + bcc _081E09DE + subs r0, r4 + mov r12, r3 + movs r4, 0x2 + rors r3, r4 + orrs r2, r3 + mov r3, r12 +_081E09DE: + lsrs r4, r1, 3 + cmp r0, r4 + bcc _081E09F0 + subs r0, r4 + mov r12, r3 + movs r4, 0x3 + rors r3, r4 + orrs r2, r3 + mov r3, r12 +_081E09F0: + mov r12, r3 + cmp r0, 0 + beq _081E09FE + lsrs r3, 4 + beq _081E09FE + lsrs r1, 4 + b _081E09B2 +_081E09FE: + movs r4, 0xE + lsls r4, 28 + ands r2, r4 + beq _081E0A30 + mov r3, r12 + movs r4, 0x3 + rors r3, r4 + tst r2, r3 + beq _081E0A14 + lsrs r4, r1, 3 + adds r0, r4 +_081E0A14: + mov r3, r12 + movs r4, 0x2 + rors r3, r4 + tst r2, r3 + beq _081E0A22 + lsrs r4, r1, 2 + adds r0, r4 +_081E0A22: + mov r3, r12 + movs r4, 0x1 + rors r3, r4 + tst r2, r3 + beq _081E0A30 + lsrs r4, r1, 1 + adds r0, r4 +_081E0A30: + pop {r4} + cmp r4, 0 + bpl _081E0A38 + negs r0, r0 +_081E0A38: + pop {r4} + mov pc, lr +_081E0A3C: + push {lr} + bl nullsub_1 + movs r0, 0 + pop {pc} + thumb_func_end __modsi3 + + thumb_func_start __muldi3 +__muldi3: ; 81E0A48 + push {r4-r7,lr} + sub sp, 0x10 + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + ldr r3, [sp] + ldr r0, _081E0AB4 + mov r12, r0 + adds r2, r3, 0 + ands r2, r0 + lsrs r3, 16 + ldr r1, [sp, 0x8] + adds r0, r1, 0 + mov r4, r12 + ands r0, r4 + lsrs r1, 16 + adds r5, r2, 0 + muls r5, r0 + adds r4, r2, 0 + muls r4, r1 + adds r2, r3, 0 + muls r2, r0 + muls r3, r1 + lsrs r0, r5, 16 + adds r4, r0 + adds r4, r2 + cmp r4, r2 + bcs _081E0A88 + movs r0, 0x80 + lsls r0, 9 + adds r3, r0 +_081E0A88: + lsrs r0, r4, 16 + adds r7, r3, r0 + mov r1, r12 + ands r4, r1 + lsls r0, r4, 16 + ands r5, r1 + adds r6, r0, 0 + orrs r6, r5 + adds r1, r7, 0 + adds r0, r6, 0 + ldr r3, [sp] + ldr r4, [sp, 0xC] + adds r2, r3, 0 + muls r2, r4 + ldr r5, [sp, 0x4] + ldr r4, [sp, 0x8] + adds r3, r5, 0 + muls r3, r4 + adds r2, r3 + adds r1, r7, r2 + add sp, 0x10 + pop {r4-r7,pc} + .align 2, 0 +_081E0AB4: .4byte 0x0000ffff + thumb_func_end __muldi3 + + thumb_func_start __udivdi3 +__udivdi3: ; 81E0AB8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r7, r2, 0 + adds r6, r3, 0 + mov r10, r0 + mov r8, r1 + cmp r6, 0 + beq _081E0AD2 + b _081E0D20 +_081E0AD2: + cmp r7, r8 + bls _081E0BAC + ldr r0, _081E0AE8 + cmp r7, r0 + bhi _081E0AEC + movs r1, 0 + cmp r7, 0xFF + bls _081E0AF6 + movs r1, 0x8 + b _081E0AF6 + .align 2, 0 +_081E0AE8: .4byte 0x0000ffff +_081E0AEC: + ldr r0, _081E0BA0 + movs r1, 0x18 + cmp r7, r0 + bhi _081E0AF6 + movs r1, 0x10 +_081E0AF6: + ldr r0, _081E0BA4 + lsrs r2, r1 + adds r0, r2, r0 + ldrb r0, [r0] + adds r0, r1 + movs r1, 0x20 + subs r2, r1, r0 + cmp r2, 0 + beq _081E0B22 + lsls r7, r2 + mov r0, r8 + lsls r0, r2 + mov r8, r0 + subs r1, r2 + mov r0, r10 + lsrs r0, r1 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + mov r3, r10 + lsls r3, r2 + mov r10, r3 +_081E0B22: + lsrs r4, r7, 16 + mov r9, r4 + ldr r0, _081E0BA8 + ands r0, r7 + str r0, [sp] + mov r0, r8 + mov r1, r9 + bl __umodsi3 + adds r4, r0, 0 + mov r0, r8 + mov r1, r9 + bl __udivsi3 + adds r6, r0, 0 + ldr r1, [sp] + adds r2, r6, 0 + muls r2, r1 + lsls r4, 16 + mov r3, r10 + lsrs r0, r3, 16 + orrs r4, r0 + cmp r4, r2 + bcs _081E0B62 + subs r6, 0x1 + adds r4, r7 + cmp r4, r7 + bcc _081E0B62 + cmp r4, r2 + bcs _081E0B62 + subs r6, 0x1 + adds r4, r7 +_081E0B62: + subs r4, r2 + adds r0, r4, 0 + mov r1, r9 + bl __umodsi3 + adds r5, r0, 0 + adds r0, r4, 0 + mov r1, r9 + bl __udivsi3 + adds r1, r0, 0 + ldr r4, [sp] + adds r2, r1, 0 + muls r2, r4 + lsls r5, 16 + ldr r0, _081E0BA8 + mov r3, r10 + ands r3, r0 + orrs r5, r3 + cmp r5, r2 + bcs _081E0B9A + subs r1, 0x1 + adds r5, r7 + cmp r5, r7 + bcc _081E0B9A + cmp r5, r2 + bcs _081E0B9A + subs r1, 0x1 +_081E0B9A: + lsls r6, 16 + orrs r6, r1 + b _081E0D26 + .align 2, 0 +_081E0BA0: .4byte 0x00ffffff +_081E0BA4: .4byte gUnknown_086B08F8 +_081E0BA8: .4byte 0x0000ffff +_081E0BAC: + cmp r2, 0 + bne _081E0BBA + movs r0, 0x1 + movs r1, 0 + bl __udivsi3 + adds r7, r0, 0 +_081E0BBA: + adds r1, r7, 0 + ldr r0, _081E0BCC + cmp r7, r0 + bhi _081E0BD0 + movs r2, 0 + cmp r7, 0xFF + bls _081E0BDA + movs r2, 0x8 + b _081E0BDA + .align 2, 0 +_081E0BCC: .4byte 0x0000ffff +_081E0BD0: + ldr r0, _081E0BF8 + movs r2, 0x18 + cmp r7, r0 + bhi _081E0BDA + movs r2, 0x10 +_081E0BDA: + ldr r0, _081E0BFC + lsrs r1, r2 + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, r2 + movs r1, 0x20 + subs r2, r1, r0 + cmp r2, 0 + bne _081E0C00 + mov r0, r8 + subs r0, r7 + mov r8, r0 + movs r1, 0x1 + str r1, [sp, 0x4] + b _081E0C9E + .align 2, 0 +_081E0BF8: .4byte 0x00ffffff +_081E0BFC: .4byte gUnknown_086B08F8 +_081E0C00: + subs r1, r2 + lsls r7, r2 + mov r5, r8 + lsrs r5, r1 + mov r3, r8 + lsls r3, r2 + mov r0, r10 + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, r10 + lsls r4, r2 + mov r10, r4 + lsrs r0, r7, 16 + mov r9, r0 + ldr r1, _081E0D1C + ands r1, r7 + str r1, [sp, 0x8] + adds r0, r5, 0 + mov r1, r9 + bl __umodsi3 + adds r4, r0, 0 + adds r0, r5, 0 + mov r1, r9 + bl __udivsi3 + adds r6, r0, 0 + ldr r2, [sp, 0x8] + adds r1, r6, 0 + muls r1, r2 + lsls r4, 16 + mov r3, r8 + lsrs r0, r3, 16 + orrs r4, r0 + cmp r4, r1 + bcs _081E0C5A + subs r6, 0x1 + adds r4, r7 + cmp r4, r7 + bcc _081E0C5A + cmp r4, r1 + bcs _081E0C5A + subs r6, 0x1 + adds r4, r7 +_081E0C5A: + subs r4, r1 + adds r0, r4, 0 + mov r1, r9 + bl __umodsi3 + adds r5, r0, 0 + adds r0, r4, 0 + mov r1, r9 + bl __udivsi3 + adds r2, r0, 0 + ldr r4, [sp, 0x8] + adds r1, r2, 0 + muls r1, r4 + lsls r5, 16 + ldr r0, _081E0D1C + mov r3, r8 + ands r3, r0 + orrs r5, r3 + cmp r5, r1 + bcs _081E0C94 + subs r2, 0x1 + adds r5, r7 + cmp r5, r7 + bcc _081E0C94 + cmp r5, r1 + bcs _081E0C94 + subs r2, 0x1 + adds r5, r7 +_081E0C94: + lsls r6, 16 + orrs r6, r2 + str r6, [sp, 0x4] + subs r1, r5, r1 + mov r8, r1 +_081E0C9E: + lsrs r4, r7, 16 + mov r9, r4 + ldr r0, _081E0D1C + ands r0, r7 + str r0, [sp, 0xC] + mov r0, r8 + mov r1, r9 + bl __umodsi3 + adds r4, r0, 0 + mov r0, r8 + mov r1, r9 + bl __udivsi3 + adds r6, r0, 0 + ldr r1, [sp, 0xC] + adds r2, r6, 0 + muls r2, r1 + lsls r4, 16 + mov r3, r10 + lsrs r0, r3, 16 + orrs r4, r0 + cmp r4, r2 + bcs _081E0CDE + subs r6, 0x1 + adds r4, r7 + cmp r4, r7 + bcc _081E0CDE + cmp r4, r2 + bcs _081E0CDE + subs r6, 0x1 + adds r4, r7 +_081E0CDE: + subs r4, r2 + adds r0, r4, 0 + mov r1, r9 + bl __umodsi3 + adds r5, r0, 0 + adds r0, r4, 0 + mov r1, r9 + bl __udivsi3 + adds r1, r0, 0 + ldr r4, [sp, 0xC] + adds r2, r1, 0 + muls r2, r4 + lsls r5, 16 + ldr r0, _081E0D1C + mov r3, r10 + ands r3, r0 + orrs r5, r3 + cmp r5, r2 + bcs _081E0D16 + subs r1, 0x1 + adds r5, r7 + cmp r5, r7 + bcc _081E0D16 + cmp r5, r2 + bcs _081E0D16 + subs r1, 0x1 +_081E0D16: + lsls r6, 16 + orrs r6, r1 + b _081E0E76 + .align 2, 0 +_081E0D1C: .4byte 0x0000ffff +_081E0D20: + cmp r6, r8 + bls _081E0D2C + movs r6, 0 +_081E0D26: + movs r4, 0 + str r4, [sp, 0x4] + b _081E0E76 +_081E0D2C: + adds r1, r6, 0 + ldr r0, _081E0D40 + cmp r6, r0 + bhi _081E0D44 + movs r2, 0 + cmp r6, 0xFF + bls _081E0D4E + movs r2, 0x8 + b _081E0D4E + .align 2, 0 +_081E0D40: .4byte 0x0000ffff +_081E0D44: + ldr r0, _081E0D70 + movs r2, 0x18 + cmp r6, r0 + bhi _081E0D4E + movs r2, 0x10 +_081E0D4E: + ldr r0, _081E0D74 + lsrs r1, r2 + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, r2 + movs r1, 0x20 + subs r2, r1, r0 + cmp r2, 0 + bne _081E0D7C + cmp r8, r6 + bhi _081E0D68 + cmp r10, r7 + bcc _081E0D78 +_081E0D68: + movs r6, 0x1 + mov r1, r10 + b _081E0E70 + .align 2, 0 +_081E0D70: .4byte 0x00ffffff +_081E0D74: .4byte gUnknown_086B08F8 +_081E0D78: + movs r6, 0 + b _081E0E72 +_081E0D7C: + subs r1, r2 + lsls r6, r2 + adds r0, r7, 0 + lsrs r0, r1 + orrs r6, r0 + lsls r7, r2 + mov r5, r8 + lsrs r5, r1 + mov r3, r8 + lsls r3, r2 + mov r0, r10 + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, r10 + lsls r4, r2 + mov r10, r4 + lsrs r0, r6, 16 + mov r9, r0 + ldr r1, _081E0E8C + ands r1, r6 + str r1, [sp, 0x10] + adds r0, r5, 0 + mov r1, r9 + bl __umodsi3 + adds r4, r0, 0 + adds r0, r5, 0 + mov r1, r9 + bl __udivsi3 + adds r3, r0, 0 + ldr r2, [sp, 0x10] + adds r1, r3, 0 + muls r1, r2 + lsls r4, 16 + mov r2, r8 + lsrs r0, r2, 16 + orrs r4, r0 + cmp r4, r1 + bcs _081E0DDE + subs r3, 0x1 + adds r4, r6 + cmp r4, r6 + bcc _081E0DDE + cmp r4, r1 + bcs _081E0DDE + subs r3, 0x1 + adds r4, r6 +_081E0DDE: + subs r4, r1 + adds r0, r4, 0 + mov r1, r9 + str r3, [sp, 0x1C] + bl __umodsi3 + adds r5, r0, 0 + adds r0, r4, 0 + mov r1, r9 + bl __udivsi3 + adds r2, r0, 0 + ldr r4, [sp, 0x10] + adds r1, r2, 0 + muls r1, r4 + lsls r5, 16 + ldr r0, _081E0E8C + mov r4, r8 + ands r4, r0 + orrs r5, r4 + ldr r3, [sp, 0x1C] + cmp r5, r1 + bcs _081E0E1C + subs r2, 0x1 + adds r5, r6 + cmp r5, r6 + bcc _081E0E1C + cmp r5, r1 + bcs _081E0E1C + subs r2, 0x1 + adds r5, r6 +_081E0E1C: + lsls r6, r3, 16 + orrs r6, r2 + subs r1, r5, r1 + mov r8, r1 + ldr r0, _081E0E8C + mov r9, r0 + adds r1, r6, 0 + ands r1, r0 + lsrs r3, r6, 16 + adds r0, r7, 0 + mov r2, r9 + ands r0, r2 + lsrs r2, r7, 16 + adds r5, r1, 0 + muls r5, r0 + adds r4, r1, 0 + muls r4, r2 + adds r1, r3, 0 + muls r1, r0 + muls r3, r2 + lsrs r0, r5, 16 + adds r4, r0 + adds r4, r1 + cmp r4, r1 + bcs _081E0E54 + movs r0, 0x80 + lsls r0, 9 + adds r3, r0 +_081E0E54: + lsrs r0, r4, 16 + adds r3, r0 + mov r1, r9 + ands r4, r1 + lsls r0, r4, 16 + ands r5, r1 + adds r1, r0, r5 + cmp r3, r8 + bhi _081E0E6E + cmp r3, r8 + bne _081E0E72 + cmp r1, r10 + bls _081E0E72 +_081E0E6E: + subs r6, 0x1 +_081E0E70: + subs r0, r1, r7 +_081E0E72: + movs r2, 0 + str r2, [sp, 0x4] +_081E0E76: + str r6, [sp, 0x14] + ldr r3, [sp, 0x4] + str r3, [sp, 0x18] + ldr r0, [sp, 0x14] + ldr r1, [sp, 0x18] + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7,pc} + .align 2, 0 +_081E0E8C: .4byte 0x0000ffff + thumb_func_end __udivdi3 + + thumb_func_start __udivsi3 +; unsigned int __udivsi3(unsigned int dividend, unsigned int divisor) +__udivsi3: ; 81E0E90 + cmp r1, 0 + beq _081E0EFE + movs r3, 0x1 + movs r2, 0 + push {r4} + cmp r0, r1 + bcc _081E0EF8 + movs r4, 0x1 + lsls r4, 28 +_081E0EA2: + cmp r1, r4 + bcs _081E0EB0 + cmp r1, r0 + bcs _081E0EB0 + lsls r1, 4 + lsls r3, 4 + b _081E0EA2 +_081E0EB0: + lsls r4, 3 +_081E0EB2: + cmp r1, r4 + bcs _081E0EC0 + cmp r1, r0 + bcs _081E0EC0 + lsls r1, 1 + lsls r3, 1 + b _081E0EB2 +_081E0EC0: + cmp r0, r1 + bcc _081E0EC8 + subs r0, r1 + orrs r2, r3 +_081E0EC8: + lsrs r4, r1, 1 + cmp r0, r4 + bcc _081E0ED4 + subs r0, r4 + lsrs r4, r3, 1 + orrs r2, r4 +_081E0ED4: + lsrs r4, r1, 2 + cmp r0, r4 + bcc _081E0EE0 + subs r0, r4 + lsrs r4, r3, 2 + orrs r2, r4 +_081E0EE0: + lsrs r4, r1, 3 + cmp r0, r4 + bcc _081E0EEC + subs r0, r4 + lsrs r4, r3, 3 + orrs r2, r4 +_081E0EEC: + cmp r0, 0 + beq _081E0EF8 + lsrs r3, 4 + beq _081E0EF8 + lsrs r1, 4 + b _081E0EC0 +_081E0EF8: + adds r0, r2, 0 + pop {r4} + mov pc, lr +_081E0EFE: + push {lr} + bl nullsub_1 + movs r0, 0 + pop {pc} + thumb_func_end __udivsi3 + + thumb_func_start __umodsi3 +; unsigned int __umodsi3(unsigned int dividend, unsigned int divisor) +__umodsi3: ; 81E0F08 + cmp r1, 0 + beq _081E0FBE + movs r3, 0x1 + cmp r0, r1 + bcs _081E0F14 + mov pc, lr +_081E0F14: + push {r4} + movs r4, 0x1 + lsls r4, 28 +_081E0F1A: + cmp r1, r4 + bcs _081E0F28 + cmp r1, r0 + bcs _081E0F28 + lsls r1, 4 + lsls r3, 4 + b _081E0F1A +_081E0F28: + lsls r4, 3 +_081E0F2A: + cmp r1, r4 + bcs _081E0F38 + cmp r1, r0 + bcs _081E0F38 + lsls r1, 1 + lsls r3, 1 + b _081E0F2A +_081E0F38: + movs r2, 0 + cmp r0, r1 + bcc _081E0F40 + subs r0, r1 +_081E0F40: + lsrs r4, r1, 1 + cmp r0, r4 + bcc _081E0F52 + subs r0, r4 + mov r12, r3 + movs r4, 0x1 + rors r3, r4 + orrs r2, r3 + mov r3, r12 +_081E0F52: + lsrs r4, r1, 2 + cmp r0, r4 + bcc _081E0F64 + subs r0, r4 + mov r12, r3 + movs r4, 0x2 + rors r3, r4 + orrs r2, r3 + mov r3, r12 +_081E0F64: + lsrs r4, r1, 3 + cmp r0, r4 + bcc _081E0F76 + subs r0, r4 + mov r12, r3 + movs r4, 0x3 + rors r3, r4 + orrs r2, r3 + mov r3, r12 +_081E0F76: + mov r12, r3 + cmp r0, 0 + beq _081E0F84 + lsrs r3, 4 + beq _081E0F84 + lsrs r1, 4 + b _081E0F38 +_081E0F84: + movs r4, 0xE + lsls r4, 28 + ands r2, r4 + bne _081E0F90 + pop {r4} + mov pc, lr +_081E0F90: + mov r3, r12 + movs r4, 0x3 + rors r3, r4 + tst r2, r3 + beq _081E0F9E + lsrs r4, r1, 3 + adds r0, r4 +_081E0F9E: + mov r3, r12 + movs r4, 0x2 + rors r3, r4 + tst r2, r3 + beq _081E0FAC + lsrs r4, r1, 2 + adds r0, r4 +_081E0FAC: + mov r3, r12 + movs r4, 0x1 + rors r3, r4 + tst r2, r3 + beq _081E0FBA + lsrs r4, r1, 1 + adds r0, r4 +_081E0FBA: + pop {r4} + mov pc, lr +_081E0FBE: + push {lr} + bl nullsub_1 + movs r0, 0 + pop {pc} + thumb_func_end __umodsi3 + + thumb_func_start __pack_d +__pack_d: ; 81E0FC8 + push {r4-r7,lr} + sub sp, 0x8 + adds r1, r0, 0 + ldr r4, [r1, 0xC] + ldr r5, [r1, 0x10] + ldr r7, [r1, 0x4] + movs r6, 0 + movs r2, 0 + ldr r0, [r1] + cmp r0, 0x1 + bhi _081E0FE0 + movs r2, 0x1 +_081E0FE0: + cmp r2, 0 + beq _081E1000 + ldr r6, _081E0FF4 + ldr r2, _081E0FF8 + ldr r3, _081E0FFC + adds r0, r4, 0 + adds r1, r5, 0 + orrs r1, r3 + b _081E10B8 + .align 2, 0 +_081E0FF4: .4byte 0x000007ff +_081E0FF8: .4byte 0x00000000 +_081E0FFC: .4byte 0x00080000 +_081E1000: + movs r2, 0 + cmp r0, 0x4 + bne _081E1008 + movs r2, 0x1 +_081E1008: + cmp r2, 0 + bne _081E1054 + movs r2, 0 + cmp r0, 0x2 + bne _081E1014 + movs r2, 0x1 +_081E1014: + cmp r2, 0 + beq _081E101E + movs r4, 0 + movs r5, 0 + b _081E10BC +_081E101E: + adds r0, r5, 0 + orrs r0, r4 + cmp r0, 0 + beq _081E10BC + ldr r2, [r1, 0x8] + ldr r0, _081E103C + cmp r2, r0 + bge _081E104E + subs r2, r0, r2 + cmp r2, 0x38 + ble _081E1040 + movs r4, 0 + movs r5, 0 + b _081E10AE + .align 2, 0 +_081E103C: .4byte 0xfffffc02 +_081E1040: + adds r1, r5, 0 + adds r0, r4, 0 + bl __lshrdi3 + adds r5, r1, 0 + adds r4, r0, 0 + b _081E10AE +_081E104E: + ldr r0, _081E105C + cmp r2, r0 + ble _081E1064 +_081E1054: + ldr r6, _081E1060 + movs r4, 0 + movs r5, 0 + b _081E10BC + .align 2, 0 +_081E105C: .4byte 0x000003ff +_081E1060: .4byte 0x000007ff +_081E1064: + ldr r0, _081E108C + adds r6, r2, r0 + movs r0, 0xFF + adds r1, r4, 0 + ands r1, r0 + movs r2, 0 + cmp r1, 0x80 + bne _081E1090 + cmp r2, 0 + bne _081E1090 + adds r0, 0x1 + adds r1, r4, 0 + ands r1, r0 + adds r0, r2, 0 + orrs r0, r1 + cmp r0, 0 + beq _081E1098 + movs r0, 0x80 + movs r1, 0 + b _081E1094 + .align 2, 0 +_081E108C: .4byte 0x000003ff +_081E1090: + movs r0, 0x7F + movs r1, 0 +_081E1094: + adds r4, r0 + adcs r5, r1 +_081E1098: + ldr r0, _081E10FC + cmp r5, r0 + bls _081E10AE + lsls r3, r5, 31 + lsrs r2, r4, 1 + adds r0, r3, 0 + orrs r0, r2 + lsrs r1, r5, 1 + adds r5, r1, 0 + adds r4, r0, 0 + adds r6, 0x1 +_081E10AE: + lsls r3, r5, 24 + lsrs r2, r4, 8 + adds r0, r3, 0 + orrs r0, r2 + lsrs r1, r5, 8 +_081E10B8: + adds r5, r1, 0 + adds r4, r0, 0 +_081E10BC: + str r4, [sp] + ldr r2, _081E1100 + ands r2, r5 + ldr r0, [sp, 0x4] + ldr r1, _081E1104 + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + mov r2, sp + ldr r1, _081E1108 + adds r0, r1, 0 + ands r6, r0 + lsls r1, r6, 4 + ldr r0, _081E110C + ldrh r3, [r2, 0x6] + ands r0, r3 + orrs r0, r1 + strh r0, [r2, 0x6] + lsls r1, r7, 7 + movs r0, 0x7F + ldrb r3, [r2, 0x7] + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0x7] + ldr r1, [sp] + ldr r0, [sp, 0x4] + str r0, [sp] + str r1, [sp, 0x4] + ldr r0, [sp] + ldr r1, [sp, 0x4] + add sp, 0x8 + pop {r4-r7,pc} + .align 2, 0 +_081E10FC: .4byte 0x1fffffff +_081E1100: .4byte 0x000fffff +_081E1104: .4byte 0xfff00000 +_081E1108: .4byte 0x000007ff +_081E110C: .4byte 0xffff800f + thumb_func_end __pack_d + + thumb_func_start __unpack_d +__unpack_d: ; 81E1110 + push {r4-r7,lr} + sub sp, 0x8 + adds r2, r0, 0 + adds r6, r1, 0 + ldr r1, [r2, 0x4] + str r1, [sp] + ldr r0, [r2] + str r0, [sp, 0x4] + mov r2, sp + adds r4, r1, 0 + lsls r0, 12 + lsrs r5, r0, 12 + ldrh r3, [r2, 0x6] + lsls r0, r3, 17 + lsrs r3, r0, 21 + ldrb r2, [r2, 0x7] + lsrs r0, r2, 7 + str r0, [r6, 0x4] + cmp r3, 0 + bne _081E1184 + orrs r1, r5 + cmp r1, 0 + bne _081E1144 + movs r0, 0x2 + str r0, [r6] + b _081E11D8 +_081E1144: + ldr r0, _081E117C + str r0, [r6, 0x8] + lsrs r3, r4, 24 + lsls r2, r5, 8 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 8 + adds r5, r1, 0 + adds r4, r0, 0 + movs r0, 0x3 + str r0, [r6] + ldr r0, _081E1180 + cmp r5, r0 + bhi _081E11B4 + adds r7, r0, 0 +_081E1162: + lsrs r3, r4, 31 + lsls r2, r5, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 1 + adds r5, r1, 0 + adds r4, r0, 0 + ldr r0, [r6, 0x8] + subs r0, 0x1 + str r0, [r6, 0x8] + cmp r5, r7 + bls _081E1162 + b _081E11B4 + .align 2, 0 +_081E117C: .4byte 0xfffffc02 +_081E1180: .4byte 0x0fffffff +_081E1184: + ldr r0, _081E1198 + cmp r3, r0 + bne _081E11BA + orrs r1, r5 + cmp r1, 0 + bne _081E119C + movs r0, 0x4 + str r0, [r6] + b _081E11D8 + .align 2, 0 +_081E1198: .4byte 0x000007ff +_081E119C: + movs r2, 0x80 + lsls r2, 12 + movs r0, 0 + adds r1, r5, 0 + ands r1, r2 + orrs r1, r0 + cmp r1, 0 + beq _081E11B2 + movs r0, 0x1 + str r0, [r6] + b _081E11B4 +_081E11B2: + str r1, [r6] +_081E11B4: + str r4, [r6, 0xC] + str r5, [r6, 0x10] + b _081E11D8 +_081E11BA: + ldr r1, _081E11DC + adds r0, r3, r1 + str r0, [r6, 0x8] + movs r0, 0x3 + str r0, [r6] + lsrs r3, r4, 24 + lsls r2, r5, 8 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 8 + ldr r2, _081E11E0 + ldr r3, _081E11E4 + orrs r1, r3 + str r0, [r6, 0xC] + str r1, [r6, 0x10] +_081E11D8: + add sp, 0x8 + pop {r4-r7,pc} + .align 2, 0 +_081E11DC: .4byte 0xfffffc01 +_081E11E0: .4byte 0x00000000 +_081E11E4: .4byte 0x10000000 + thumb_func_end __unpack_d + + thumb_func_start __fpadd_parts_d +__fpadd_parts_d: ; 81E11E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r3, r0, 0 + adds r4, r1, 0 + mov r10, r2 + movs r0, 0 + ldr r2, [r3] + cmp r2, 0x1 + bhi _081E1204 + movs r0, 0x1 +_081E1204: + cmp r0, 0 + beq _081E120C +_081E1208: + adds r0, r3, 0 + b _081E1444 +_081E120C: + movs r1, 0 + ldr r0, [r4] + cmp r0, 0x1 + bhi _081E1216 + movs r1, 0x1 +_081E1216: + cmp r1, 0 + bne _081E128E + movs r1, 0 + cmp r2, 0x4 + bne _081E1222 + movs r1, 0x1 +_081E1222: + cmp r1, 0 + beq _081E1244 + movs r1, 0 + cmp r0, 0x4 + bne _081E122E + movs r1, 0x1 +_081E122E: + cmp r1, 0 + beq _081E1208 + ldr r1, [r3, 0x4] + ldr r0, [r4, 0x4] + cmp r1, r0 + beq _081E1208 + ldr r0, _081E1240 + b _081E1444 + .align 2, 0 +_081E1240: .4byte 0x03000f38 +_081E1244: + movs r1, 0 + cmp r0, 0x4 + bne _081E124C + movs r1, 0x1 +_081E124C: + cmp r1, 0 + bne _081E128E + movs r1, 0 + cmp r0, 0x2 + bne _081E1258 + movs r1, 0x1 +_081E1258: + cmp r1, 0 + beq _081E1280 + movs r0, 0 + cmp r2, 0x2 + bne _081E1264 + movs r0, 0x1 +_081E1264: + cmp r0, 0 + beq _081E1208 + mov r1, r10 + adds r0, r3, 0 + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldm r0!, {r2,r5} + stm r1!, {r2,r5} + ldr r0, [r3, 0x4] + ldr r1, [r4, 0x4] + ands r0, r1 + mov r6, r10 + str r0, [r6, 0x4] + b _081E1442 +_081E1280: + movs r1, 0 + ldr r0, [r3] + cmp r0, 0x2 + bne _081E128A + movs r1, 0x1 +_081E128A: + cmp r1, 0 + beq _081E1292 +_081E128E: + adds r0, r4, 0 + b _081E1444 +_081E1292: + ldr r0, [r3, 0x8] + mov r9, r0 + ldr r1, [r4, 0x8] + mov r8, r1 + ldr r6, [r3, 0xC] + ldr r7, [r3, 0x10] + ldr r0, [r4, 0xC] + ldr r1, [r4, 0x10] + str r0, [sp] + str r1, [sp, 0x4] + mov r1, r9 + mov r2, r8 + subs r0, r1, r2 + cmp r0, 0 + bge _081E12B2 + negs r0, r0 +_081E12B2: + cmp r0, 0x3F + bgt _081E1330 + ldr r3, [r3, 0x4] + mov r12, r3 + ldr r4, [r4, 0x4] + str r4, [sp, 0x8] + cmp r9, r8 + ble _081E12FC + mov r3, r9 + mov r4, r8 + subs r3, r4 + mov r8, r3 +_081E12CA: + movs r5, 0x1 + negs r5, r5 + add r8, r5 + ldr r2, [sp] + movs r0, 0x1 + ands r2, r0 + movs r3, 0 + ldr r1, [sp, 0x4] + lsls r5, r1, 31 + ldr r0, [sp] + lsrs r4, r0, 1 + adds r0, r5, 0 + orrs r0, r4 + adds r4, r1, 0 + lsrs r1, r4, 1 + adds r5, r2, 0 + orrs r5, r0 + str r5, [sp] + adds r4, r3, 0 + orrs r4, r1 + str r4, [sp, 0x4] + mov r5, r8 + cmp r5, 0 + bne _081E12CA + mov r8, r9 +_081E12FC: + cmp r8, r9 + ble _081E134C + mov r0, r8 + mov r1, r9 + subs r0, r1 + mov r9, r0 +_081E1308: + movs r2, 0x1 + negs r2, r2 + add r9, r2 + movs r2, 0x1 + ands r2, r6 + movs r3, 0 + lsls r5, r7, 31 + lsrs r4, r6, 1 + adds r0, r5, 0 + orrs r0, r4 + lsrs r1, r7, 1 + adds r6, r2, 0 + orrs r6, r0 + adds r7, r3, 0 + orrs r7, r1 + mov r3, r9 + cmp r3, 0 + bne _081E1308 + mov r9, r8 + b _081E134C +_081E1330: + cmp r9, r8 + ble _081E133E + movs r0, 0 + movs r1, 0 + str r0, [sp] + str r1, [sp, 0x4] + b _081E1344 +_081E133E: + mov r9, r8 + movs r6, 0 + movs r7, 0 +_081E1344: + ldr r3, [r3, 0x4] + mov r12, r3 + ldr r4, [r4, 0x4] + str r4, [sp, 0x8] +_081E134C: + ldr r1, [sp, 0x8] + cmp r12, r1 + beq _081E13F4 + mov r2, r12 + cmp r2, 0 + beq _081E136E + adds r1, r7, 0 + adds r0, r6, 0 + bl __negdi2 + adds r3, r1, 0 + adds r2, r0, 0 + ldr r4, [sp] + ldr r5, [sp, 0x4] + adds r2, r4 + adcs r3, r5 + b _081E137A +_081E136E: + adds r3, r7, 0 + adds r2, r6, 0 + ldr r0, [sp] + ldr r1, [sp, 0x4] + subs r2, r0 + sbcs r3, r1 +_081E137A: + cmp r3, 0 + blt _081E1390 + movs r0, 0 + mov r1, r10 + str r0, [r1, 0x4] + mov r4, r9 + str r4, [r1, 0x8] + mov r5, r10 + str r2, [r5, 0xC] + str r3, [r5, 0x10] + b _081E13A8 +_081E1390: + movs r0, 0x1 + mov r6, r10 + str r0, [r6, 0x4] + mov r0, r9 + str r0, [r6, 0x8] + adds r1, r3, 0 + adds r0, r2, 0 + bl __negdi2 + mov r2, r10 + str r0, [r2, 0xC] + str r1, [r2, 0x10] +_081E13A8: + mov r4, r10 + ldr r2, [r4, 0xC] + ldr r3, [r4, 0x10] + movs r0, 0x1 + negs r0, r0 + asrs r1, r0, 31 +_081E13B4: + adds r2, r0 + adcs r3, r1 + ldr r0, _081E13F0 + cmp r3, r0 + bhi _081E140C + cmp r3, r0 + bne _081E13CA + movs r0, 0x2 + negs r0, r0 + cmp r2, r0 + bhi _081E140C +_081E13CA: + mov r5, r10 + ldr r0, [r5, 0xC] + ldr r1, [r5, 0x10] + lsrs r3, r0, 31 + lsls r2, r1, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, 1 + mov r6, r10 + str r0, [r6, 0xC] + str r1, [r6, 0x10] + ldr r2, [r6, 0x8] + subs r2, 0x1 + str r2, [r6, 0x8] + movs r2, 0x1 + negs r2, r2 + asrs r3, r2, 31 + b _081E13B4 + .align 2, 0 +_081E13F0: .4byte 0x0fffffff +_081E13F4: + mov r0, r12 + mov r1, r10 + str r0, [r1, 0x4] + mov r2, r9 + str r2, [r1, 0x8] + ldr r3, [sp] + ldr r4, [sp, 0x4] + adds r6, r3 + adcs r7, r4 + mov r4, r10 + str r6, [r4, 0xC] + str r7, [r4, 0x10] +_081E140C: + movs r0, 0x3 + mov r5, r10 + str r0, [r5] + ldr r1, [r5, 0x10] + ldr r0, _081E1450 + cmp r1, r0 + bls _081E1442 + ldr r4, [r5, 0xC] + ldr r5, [r5, 0x10] + movs r2, 0x1 + adds r0, r4, 0 + ands r0, r2 + movs r1, 0 + lsls r6, r5, 31 + mov r8, r6 + lsrs r6, r4, 1 + mov r2, r8 + orrs r2, r6 + lsrs r3, r5, 1 + orrs r0, r2 + orrs r1, r3 + mov r2, r10 + str r0, [r2, 0xC] + str r1, [r2, 0x10] + ldr r0, [r2, 0x8] + adds r0, 0x1 + str r0, [r2, 0x8] +_081E1442: + mov r0, r10 +_081E1444: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7,pc} + .align 2, 0 +_081E1450: .4byte 0x1fffffff + thumb_func_end __fpadd_parts_d + + thumb_func_start __adddf3 +; double __adddf3(double arg_a, double arg_b) +__adddf3: ; 81E1454 + push {r4,lr} + sub sp, 0x4C + str r0, [sp, 0x3C] + str r1, [sp, 0x40] + str r2, [sp, 0x44] + str r3, [sp, 0x48] + add r0, sp, 0x3C + mov r1, sp + bl __unpack_d + add r0, sp, 0x44 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + add r2, sp, 0x28 + mov r0, sp + adds r1, r4, 0 + bl __fpadd_parts_d + bl __pack_d + add sp, 0x4C + pop {r4,pc} + thumb_func_end __adddf3 + + thumb_func_start __subdf3 +__subdf3: ; 81E1484 + push {r4,lr} + sub sp, 0x4C + str r0, [sp, 0x3C] + str r1, [sp, 0x40] + str r2, [sp, 0x44] + str r3, [sp, 0x48] + add r0, sp, 0x3C + mov r1, sp + bl __unpack_d + add r0, sp, 0x44 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + ldr r0, [r4, 0x4] + movs r1, 0x1 + eors r0, r1 + str r0, [r4, 0x4] + add r2, sp, 0x28 + mov r0, sp + adds r1, r4, 0 + bl __fpadd_parts_d + bl __pack_d + add sp, 0x4C + pop {r4,pc} + thumb_func_end __subdf3 + + thumb_func_start __muldf3 +__muldf3: ; 81E14BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x74 + str r0, [sp, 0x3C] + str r1, [sp, 0x40] + str r2, [sp, 0x44] + str r3, [sp, 0x48] + add r0, sp, 0x3C + mov r1, sp + bl __unpack_d + add r0, sp, 0x44 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + mov r8, sp + add r0, sp, 0x28 + mov r10, r0 + movs r0, 0 + ldr r1, [sp] + cmp r1, 0x1 + bhi _081E14F2 + movs r0, 0x1 +_081E14F2: + cmp r0, 0 + bne _081E1556 + movs r2, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1500 + movs r2, 0x1 +_081E1500: + cmp r2, 0 + beq _081E1508 + ldr r0, [sp, 0x4] + b _081E1578 +_081E1508: + movs r2, 0 + cmp r1, 0x4 + bne _081E1510 + movs r2, 0x1 +_081E1510: + cmp r2, 0 + beq _081E1522 + movs r1, 0 + cmp r0, 0x2 + bne _081E151C + movs r1, 0x1 +_081E151C: + cmp r1, 0 + bne _081E153A + b _081E1556 +_081E1522: + movs r2, 0 + cmp r0, 0x4 + bne _081E152A + movs r2, 0x1 +_081E152A: + cmp r2, 0 + beq _081E154A + movs r0, 0 + cmp r1, 0x2 + bne _081E1536 + movs r0, 0x1 +_081E1536: + cmp r0, 0 + beq _081E1544 +_081E153A: + ldr r0, _081E1540 + b _081E1742 + .align 2, 0 +_081E1540: .4byte 0x03000f38 +_081E1544: + mov r1, r8 + ldr r0, [r1, 0x4] + b _081E1578 +_081E154A: + movs r2, 0 + cmp r1, 0x2 + bne _081E1552 + movs r2, 0x1 +_081E1552: + cmp r2, 0 + beq _081E1568 +_081E1556: + ldr r0, [sp, 0x4] + ldr r1, [sp, 0x18] + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0x4] + mov r0, sp + b _081E1742 +_081E1568: + movs r1, 0 + cmp r0, 0x2 + bne _081E1570 + movs r1, 0x1 +_081E1570: + cmp r1, 0 + beq _081E1588 + mov r2, r8 + ldr r0, [r2, 0x4] +_081E1578: + ldr r1, [sp, 0x18] + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0x18] + adds r0, r4, 0 + b _081E1742 +_081E1588: + mov r4, r8 + ldr r0, [r4, 0xC] + ldr r1, [r4, 0x10] + adds r6, r0, 0 + movs r7, 0 + str r1, [sp, 0x4C] + movs r5, 0 + str r5, [sp, 0x50] + ldr r0, [sp, 0x20] + ldr r1, [sp, 0x24] + adds r4, r0, 0 + str r1, [sp, 0x54] + movs r0, 0 + str r0, [sp, 0x58] + adds r1, r5, 0 + adds r0, r4, 0 + adds r3, r7, 0 + adds r2, r6, 0 + bl __muldi3 + str r0, [sp, 0x5C] + str r1, [sp, 0x60] + ldr r0, [sp, 0x54] + ldr r1, [sp, 0x58] + adds r3, r7, 0 + adds r2, r6, 0 + bl __muldi3 + adds r7, r1, 0 + adds r6, r0, 0 + adds r1, r5, 0 + adds r0, r4, 0 + ldr r2, [sp, 0x4C] + ldr r3, [sp, 0x50] + bl __muldi3 + adds r5, r1, 0 + adds r4, r0, 0 + ldr r0, [sp, 0x54] + ldr r1, [sp, 0x58] + ldr r2, [sp, 0x4C] + ldr r3, [sp, 0x50] + bl __muldi3 + str r0, [sp, 0x64] + str r1, [sp, 0x68] + movs r1, 0 + movs r2, 0 + str r1, [sp, 0x6C] + str r2, [sp, 0x70] + adds r3, r7, 0 + adds r2, r6, 0 + adds r2, r4 + adcs r3, r5 + cmp r7, r3 + bhi _081E1600 + cmp r7, r3 + bne _081E1608 + cmp r6, r2 + bls _081E1608 +_081E1600: + ldr r5, _081E1758 + ldr r4, _081E1754 + str r4, [sp, 0x6C] + str r5, [sp, 0x70] +_081E1608: + adds r1, r2, 0 + movs r6, 0 + adds r7, r1, 0 + ldr r0, [sp, 0x5C] + ldr r1, [sp, 0x60] + adds r6, r0 + adcs r7, r1 + cmp r1, r7 + bhi _081E1624 + ldr r1, [sp, 0x60] + cmp r1, r7 + bne _081E1634 + cmp r0, r6 + bls _081E1634 +_081E1624: + movs r0, 0x1 + movs r1, 0 + ldr r4, [sp, 0x6C] + ldr r5, [sp, 0x70] + adds r4, r0 + adcs r5, r1 + str r4, [sp, 0x6C] + str r5, [sp, 0x70] +_081E1634: + adds r0, r3, 0 + adds r2, r0, 0 + movs r3, 0 + adds r5, r3, 0 + adds r4, r2, 0 + ldr r0, [sp, 0x64] + ldr r1, [sp, 0x68] + adds r4, r0 + adcs r5, r1 + ldr r1, [sp, 0x6C] + ldr r2, [sp, 0x70] + adds r4, r1 + adcs r5, r2 + mov r0, r8 + ldr r2, [r0, 0x8] + ldr r0, [sp, 0x1C] + adds r2, r0 + str r2, [sp, 0x30] + mov r0, r8 + ldr r1, [r0, 0x4] + ldr r0, [sp, 0x18] + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + str r0, [sp, 0x2C] + adds r2, 0x4 + str r2, [sp, 0x30] + ldr r0, _081E175C + cmp r5, r0 + bls _081E16B6 + movs r1, 0x1 + mov r9, r1 + mov r8, r0 + mov r12, r2 +_081E167A: + movs r2, 0x1 + add r12, r2 + mov r0, r9 + ands r0, r4 + cmp r0, 0 + beq _081E16A0 + lsls r3, r7, 31 + lsrs r2, r6, 1 + adds r0, r3, 0 + orrs r0, r2 + lsrs r1, r7, 1 + adds r7, r1, 0 + adds r6, r0, 0 + adds r0, r6, 0 + movs r1, 0x80 + lsls r1, 24 + orrs r1, r7 + adds r7, r1, 0 + adds r6, r0, 0 +_081E16A0: + lsls r3, r5, 31 + lsrs r2, r4, 1 + adds r0, r3, 0 + orrs r0, r2 + lsrs r1, r5, 1 + adds r5, r1, 0 + adds r4, r0, 0 + cmp r5, r8 + bhi _081E167A + mov r0, r12 + str r0, [sp, 0x30] +_081E16B6: + ldr r0, _081E1760 + cmp r5, r0 + bhi _081E1708 + movs r1, 0x80 + lsls r1, 24 + mov r9, r1 + mov r8, r0 + ldr r2, [sp, 0x30] + mov r12, r2 +_081E16C8: + movs r0, 0x1 + negs r0, r0 + add r12, r0 + lsrs r3, r4, 31 + lsls r2, r5, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 1 + adds r5, r1, 0 + adds r4, r0, 0 + movs r0, 0 + mov r1, r9 + ands r1, r7 + orrs r0, r1 + cmp r0, 0 + beq _081E16F2 + movs r0, 0x1 + orrs r0, r4 + adds r1, r5, 0 + adds r5, r1, 0 + adds r4, r0, 0 +_081E16F2: + lsrs r3, r6, 31 + lsls r2, r7, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r6, 1 + adds r7, r1, 0 + adds r6, r0, 0 + cmp r5, r8 + bls _081E16C8 + mov r1, r12 + str r1, [sp, 0x30] +_081E1708: + movs r0, 0xFF + adds r1, r4, 0 + ands r1, r0 + movs r2, 0 + cmp r1, 0x80 + bne _081E1736 + cmp r2, 0 + bne _081E1736 + adds r0, 0x1 + adds r1, r4, 0 + ands r1, r0 + adds r0, r2, 0 + orrs r0, r1 + cmp r0, 0 + bne _081E172E + adds r0, r7, 0 + orrs r0, r6 + cmp r0, 0 + beq _081E1736 +_081E172E: + movs r0, 0x80 + movs r1, 0 + adds r4, r0 + adcs r5, r1 +_081E1736: + str r4, [sp, 0x34] + str r5, [sp, 0x38] + movs r0, 0x3 + mov r2, r10 + str r0, [r2] + add r0, sp, 0x28 +_081E1742: + bl __pack_d + add sp, 0x74 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7,pc} + .align 2, 0 +_081E1754: .4byte 0x00000000 +_081E1758: .4byte 0x00000001 +_081E175C: .4byte 0x1fffffff +_081E1760: .4byte 0x0fffffff + thumb_func_end __muldf3 + + thumb_func_start __divdf3 +__divdf3: ; 81E1764 + push {r4-r7,lr} + sub sp, 0x48 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + mov r12, sp + movs r0, 0 + ldr r3, [sp] + cmp r3, 0x1 + bhi _081E178E + movs r0, 0x1 +_081E178E: + cmp r0, 0 + beq _081E1796 + mov r1, sp + b _081E18D8 +_081E1796: + movs r0, 0 + ldr r2, [sp, 0x14] + adds r5, r2, 0 + cmp r2, 0x1 + bhi _081E17A2 + movs r0, 0x1 +_081E17A2: + cmp r0, 0 + beq _081E17AA + adds r1, r4, 0 + b _081E18D8 +_081E17AA: + ldr r0, [sp, 0x4] + ldr r1, [sp, 0x18] + eors r0, r1 + str r0, [sp, 0x4] + movs r0, 0 + cmp r3, 0x4 + bne _081E17BA + movs r0, 0x1 +_081E17BA: + cmp r0, 0 + bne _081E17CA + movs r4, 0 + cmp r3, 0x2 + bne _081E17C6 + movs r4, 0x1 +_081E17C6: + cmp r4, 0 + beq _081E17DC +_081E17CA: + mov r1, r12 + ldr r0, [r1] + cmp r0, r5 + beq _081E17D4 + b _081E18D8 +_081E17D4: + ldr r1, _081E17D8 + b _081E18D8 + .align 2, 0 +_081E17D8: .4byte 0x03000f38 +_081E17DC: + movs r0, 0 + cmp r2, 0x4 + bne _081E17E4 + movs r0, 0x1 +_081E17E4: + cmp r0, 0 + beq _081E17F6 + movs r0, 0 + movs r1, 0 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + str r4, [sp, 0x8] + mov r1, sp + b _081E18D8 +_081E17F6: + movs r0, 0 + cmp r2, 0x2 + bne _081E17FE + movs r0, 0x1 +_081E17FE: + cmp r0, 0 + beq _081E180A + movs r0, 0x4 + mov r2, r12 + str r0, [r2] + b _081E18D6 +_081E180A: + mov r3, r12 + ldr r1, [r3, 0x8] + ldr r0, [sp, 0x1C] + subs r6, r1, r0 + str r6, [r3, 0x8] + ldr r4, [r3, 0xC] + ldr r5, [r3, 0x10] + ldr r0, [sp, 0x20] + ldr r1, [sp, 0x24] + str r0, [sp, 0x38] + str r1, [sp, 0x3C] + cmp r1, r5 + bhi _081E182E + ldr r1, [sp, 0x3C] + cmp r1, r5 + bne _081E1842 + cmp r0, r4 + bls _081E1842 +_081E182E: + lsrs r3, r4, 31 + lsls r2, r5, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 1 + adds r5, r1, 0 + adds r4, r0, 0 + subs r0, r6, 0x1 + mov r2, r12 + str r0, [r2, 0x8] +_081E1842: + ldr r7, _081E18E8 + ldr r6, _081E18E4 + movs r0, 0 + movs r1, 0 + str r0, [sp, 0x40] + str r1, [sp, 0x44] +_081E184E: + ldr r1, [sp, 0x3C] + cmp r1, r5 + bhi _081E1872 + cmp r1, r5 + bne _081E185E + ldr r2, [sp, 0x38] + cmp r2, r4 + bhi _081E1872 +_081E185E: + ldr r0, [sp, 0x40] + orrs r0, r6 + ldr r1, [sp, 0x44] + orrs r1, r7 + str r0, [sp, 0x40] + str r1, [sp, 0x44] + ldr r0, [sp, 0x38] + ldr r1, [sp, 0x3C] + subs r4, r0 + sbcs r5, r1 +_081E1872: + lsls r3, r7, 31 + lsrs r2, r6, 1 + adds r0, r3, 0 + orrs r0, r2 + lsrs r1, r7, 1 + adds r7, r1, 0 + adds r6, r0, 0 + lsrs r3, r4, 31 + lsls r2, r5, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, r4, 1 + adds r5, r1, 0 + adds r4, r0, 0 + adds r0, r7, 0 + orrs r0, r6 + cmp r0, 0 + bne _081E184E + movs r0, 0xFF + ldr r1, [sp, 0x40] + ands r1, r0 + movs r2, 0 + cmp r1, 0x80 + bne _081E18CC + cmp r2, 0 + bne _081E18CC + adds r0, 0x1 + ldr r1, [sp, 0x40] + ands r1, r0 + adds r0, r2, 0 + orrs r0, r1 + cmp r0, 0 + bne _081E18BC + adds r0, r5, 0 + orrs r0, r4 + cmp r0, 0 + beq _081E18CC +_081E18BC: + movs r0, 0x80 + movs r1, 0 + ldr r2, [sp, 0x40] + ldr r3, [sp, 0x44] + adds r2, r0 + adcs r3, r1 + str r2, [sp, 0x40] + str r3, [sp, 0x44] +_081E18CC: + ldr r0, [sp, 0x40] + ldr r1, [sp, 0x44] + mov r2, r12 + str r0, [r2, 0xC] + str r1, [r2, 0x10] +_081E18D6: + mov r1, r12 +_081E18D8: + adds r0, r1, 0 + bl __pack_d + add sp, 0x48 + pop {r4-r7,pc} + .align 2, 0 +_081E18E4: .4byte 0x00000000 +_081E18E8: .4byte 0x10000000 + thumb_func_end __divdf3 + + thumb_func_start __fpcmp_parts_d +__fpcmp_parts_d: ; 81E18EC + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0 + ldr r1, [r5] + cmp r1, 0x1 + bhi _081E18FC + movs r0, 0x1 +_081E18FC: + cmp r0, 0 + bne _081E190E + movs r0, 0 + ldr r2, [r6] + cmp r2, 0x1 + bhi _081E190A + movs r0, 0x1 +_081E190A: + cmp r0, 0 + beq _081E1912 +_081E190E: + movs r0, 0x1 + b _081E19E8 +_081E1912: + movs r0, 0 + cmp r1, 0x4 + bne _081E191A + movs r0, 0x1 +_081E191A: + cmp r0, 0 + beq _081E1932 + movs r0, 0 + cmp r2, 0x4 + bne _081E1926 + movs r0, 0x1 +_081E1926: + cmp r0, 0 + beq _081E1932 + ldr r0, [r6, 0x4] + ldr r1, [r5, 0x4] + subs r0, r1 + b _081E19E8 +_081E1932: + movs r1, 0 + ldr r0, [r5] + cmp r0, 0x4 + bne _081E193C + movs r1, 0x1 +_081E193C: + cmp r1, 0 + bne _081E198A + movs r1, 0 + cmp r2, 0x4 + bne _081E1948 + movs r1, 0x1 +_081E1948: + cmp r1, 0 + beq _081E195A +_081E194C: + ldr r0, [r6, 0x4] + movs r1, 0x1 + negs r1, r1 + cmp r0, 0 + beq _081E1994 + movs r1, 0x1 + b _081E1994 +_081E195A: + movs r1, 0 + cmp r0, 0x2 + bne _081E1962 + movs r1, 0x1 +_081E1962: + cmp r1, 0 + beq _081E1972 + movs r1, 0 + cmp r2, 0x2 + bne _081E196E + movs r1, 0x1 +_081E196E: + cmp r1, 0 + bne _081E19E6 +_081E1972: + movs r1, 0 + cmp r0, 0x2 + bne _081E197A + movs r1, 0x1 +_081E197A: + cmp r1, 0 + bne _081E194C + movs r0, 0 + cmp r2, 0x2 + bne _081E1986 + movs r0, 0x1 +_081E1986: + cmp r0, 0 + beq _081E1998 +_081E198A: + ldr r0, [r5, 0x4] + movs r1, 0x1 + cmp r0, 0 + beq _081E1994 + subs r1, 0x2 +_081E1994: + adds r0, r1, 0 + b _081E19E8 +_081E1998: + ldr r0, [r6, 0x4] + ldr r4, [r5, 0x4] + cmp r4, r0 + beq _081E19AA +_081E19A0: + movs r0, 0x1 + cmp r4, 0 + beq _081E19E8 + subs r0, 0x2 + b _081E19E8 +_081E19AA: + ldr r1, [r5, 0x8] + ldr r0, [r6, 0x8] + cmp r1, r0 + bgt _081E19A0 + cmp r1, r0 + bge _081E19C2 +_081E19B6: + movs r0, 0x1 + negs r0, r0 + cmp r4, 0 + beq _081E19E8 + movs r0, 0x1 + b _081E19E8 +_081E19C2: + ldr r3, [r5, 0x10] + ldr r2, [r6, 0x10] + cmp r3, r2 + bhi _081E19A0 + cmp r3, r2 + bne _081E19D6 + ldr r1, [r5, 0xC] + ldr r0, [r6, 0xC] + cmp r1, r0 + bhi _081E19A0 +_081E19D6: + cmp r2, r3 + bhi _081E19B6 + cmp r2, r3 + bne _081E19E6 + ldr r1, [r6, 0xC] + ldr r0, [r5, 0xC] + cmp r1, r0 + bhi _081E19B6 +_081E19E6: + movs r0, 0 +_081E19E8: + pop {r4-r6,pc} + thumb_func_end __fpcmp_parts_d + + thumb_func_start __cmpdf2 +__cmpdf2: ; 81E19EC + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d + add sp, 0x38 + pop {r4,pc} + thumb_func_end __cmpdf2 + + thumb_func_start __eqdf2 +__eqdf2: ; 81E1A18 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E1A40 + movs r1, 0x1 +_081E1A40: + cmp r1, 0 + bne _081E1A52 + movs r1, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1A4E + movs r1, 0x1 +_081E1A4E: + cmp r1, 0 + beq _081E1A56 +_081E1A52: + movs r0, 0x1 + b _081E1A5E +_081E1A56: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d +_081E1A5E: + add sp, 0x38 + pop {r4,pc} + thumb_func_end __eqdf2 + + thumb_func_start __nedf2 +__nedf2: ; 81E1A64 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E1A8C + movs r1, 0x1 +_081E1A8C: + cmp r1, 0 + bne _081E1A9E + movs r1, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1A9A + movs r1, 0x1 +_081E1A9A: + cmp r1, 0 + beq _081E1AA2 +_081E1A9E: + movs r0, 0x1 + b _081E1AAA +_081E1AA2: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d +_081E1AAA: + add sp, 0x38 + pop {r4,pc} + thumb_func_end __nedf2 + + thumb_func_start __gtdf2 +__gtdf2: ; 81E1AB0 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E1AD8 + movs r1, 0x1 +_081E1AD8: + cmp r1, 0 + bne _081E1AEA + movs r1, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1AE6 + movs r1, 0x1 +_081E1AE6: + cmp r1, 0 + beq _081E1AF0 +_081E1AEA: + movs r0, 0x1 + negs r0, r0 + b _081E1AF8 +_081E1AF0: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d +_081E1AF8: + add sp, 0x38 + pop {r4,pc} + thumb_func_end __gtdf2 + + thumb_func_start __gedf2 +; int __gedf2(double arg_a, double arg_b) +__gedf2: ; 81E1AFC + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E1B24 + movs r1, 0x1 +_081E1B24: + cmp r1, 0 + bne _081E1B36 + movs r1, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1B32 + movs r1, 0x1 +_081E1B32: + cmp r1, 0 + beq _081E1B3C +_081E1B36: + movs r0, 0x1 + negs r0, r0 + b _081E1B44 +_081E1B3C: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d +_081E1B44: + add sp, 0x38 + pop {r4,pc} + thumb_func_end __gedf2 + + thumb_func_start __ltdf2 +__ltdf2: ; 81E1B48 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E1B70 + movs r1, 0x1 +_081E1B70: + cmp r1, 0 + bne _081E1B82 + movs r1, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1B7E + movs r1, 0x1 +_081E1B7E: + cmp r1, 0 + beq _081E1B86 +_081E1B82: + movs r0, 0x1 + b _081E1B8E +_081E1B86: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d +_081E1B8E: + add sp, 0x38 + pop {r4,pc} + thumb_func_end __ltdf2 + + thumb_func_start __ledf2 +__ledf2: ; 81E1B94 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x28] + str r1, [sp, 0x2C] + str r2, [sp, 0x30] + str r3, [sp, 0x34] + add r0, sp, 0x28 + mov r1, sp + bl __unpack_d + add r0, sp, 0x30 + add r4, sp, 0x14 + adds r1, r4, 0 + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E1BBC + movs r1, 0x1 +_081E1BBC: + cmp r1, 0 + bne _081E1BCE + movs r1, 0 + ldr r0, [sp, 0x14] + cmp r0, 0x1 + bhi _081E1BCA + movs r1, 0x1 +_081E1BCA: + cmp r1, 0 + beq _081E1BD2 +_081E1BCE: + movs r0, 0x1 + b _081E1BDA +_081E1BD2: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_d +_081E1BDA: + add sp, 0x38 + pop {r4,pc} + thumb_func_end __ledf2 + + thumb_func_start __floatsidf +__floatsidf: ; 81E1BE0 + push {r4,r5,lr} + sub sp, 0x14 + adds r2, r0, 0 + movs r0, 0x3 + str r0, [sp] + lsrs r1, r2, 31 + str r1, [sp, 0x4] + cmp r2, 0 + bne _081E1BF8 + movs r0, 0x2 + str r0, [sp] + b _081E1C4E +_081E1BF8: + movs r0, 0x3C + str r0, [sp, 0x8] + cmp r1, 0 + beq _081E1C1E + movs r0, 0x80 + lsls r0, 24 + cmp r2, r0 + bne _081E1C18 + ldr r1, _081E1C14 + ldr r0, _081E1C10 + b _081E1C54 + .align 2, 0 +_081E1C10: .4byte 0xc1e00000 +_081E1C14: .4byte 0x00000000 +_081E1C18: + negs r0, r2 + asrs r1, r0, 31 + b _081E1C22 +_081E1C1E: + adds r0, r2, 0 + asrs r1, r2, 31 +_081E1C22: + str r0, [sp, 0xC] + str r1, [sp, 0x10] + ldr r0, [sp, 0x10] + ldr r1, _081E1C58 + cmp r0, r1 + bhi _081E1C4E + adds r5, r1, 0 + ldr r4, [sp, 0x8] +_081E1C32: + ldr r0, [sp, 0xC] + ldr r1, [sp, 0x10] + lsrs r3, r0, 31 + lsls r2, r1, 1 + adds r1, r3, 0 + orrs r1, r2 + lsls r0, 1 + str r0, [sp, 0xC] + str r1, [sp, 0x10] + subs r4, 0x1 + ldr r0, [sp, 0x10] + cmp r0, r5 + bls _081E1C32 + str r4, [sp, 0x8] +_081E1C4E: + mov r0, sp + bl __pack_d +_081E1C54: + add sp, 0x14 + pop {r4,r5,pc} + .align 2, 0 +_081E1C58: .4byte 0x0fffffff + thumb_func_end __floatsidf + + thumb_func_start __fixdfsi +; int __fixdfsi(double arg_a) +__fixdfsi: ; 81E1C5C + push {lr} + sub sp, 0x1C + str r0, [sp, 0x14] + str r1, [sp, 0x18] + add r0, sp, 0x14 + mov r1, sp + bl __unpack_d + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x2 + bne _081E1C76 + movs r1, 0x1 +_081E1C76: + cmp r1, 0 + bne _081E1CAA + movs r1, 0 + cmp r0, 0x1 + bhi _081E1C82 + movs r1, 0x1 +_081E1C82: + cmp r1, 0 + bne _081E1CAA + movs r1, 0 + cmp r0, 0x4 + bne _081E1C8E + movs r1, 0x1 +_081E1C8E: + cmp r1, 0 + beq _081E1CA4 +_081E1C92: + ldr r0, [sp, 0x4] + ldr r1, _081E1CA0 + cmp r0, 0 + beq _081E1CC8 + adds r1, 0x1 + b _081E1CC8 + .align 2, 0 +_081E1CA0: .4byte 0x7fffffff +_081E1CA4: + ldr r0, [sp, 0x8] + cmp r0, 0 + bge _081E1CAE +_081E1CAA: + movs r0, 0 + b _081E1CCA +_081E1CAE: + cmp r0, 0x1E + bgt _081E1C92 + movs r2, 0x3C + subs r2, r0 + ldr r0, [sp, 0xC] + ldr r1, [sp, 0x10] + bl __lshrdi3 + adds r1, r0, 0 + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _081E1CC8 + negs r1, r1 +_081E1CC8: + adds r0, r1, 0 +_081E1CCA: + add sp, 0x1C + pop {pc} + thumb_func_end __fixdfsi + + thumb_func_start __negdf2 +__negdf2: ; 81E1CD0 + push {lr} + sub sp, 0x1C + str r0, [sp, 0x14] + str r1, [sp, 0x18] + add r0, sp, 0x14 + mov r1, sp + bl __unpack_d + movs r1, 0 + ldr r0, [sp, 0x4] + cmp r0, 0 + bne _081E1CEA + movs r1, 0x1 +_081E1CEA: + str r1, [sp, 0x4] + mov r0, sp + bl __pack_d + add sp, 0x1C + pop {pc} + thumb_func_end __negdf2 + + thumb_func_start __make_dp +__make_dp: ; 81E1CF8 + sub sp, 0x4 + push {r4,lr} + sub sp, 0x14 + str r3, [sp, 0x1C] + ldr r3, [sp, 0x1C] + ldr r4, [sp, 0x20] + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + str r4, [sp, 0x10] + mov r0, sp + bl __pack_d + add sp, 0x14 + pop {r4} + pop {r3} + add sp, 0x4 + bx r3 + thumb_func_end __make_dp + + thumb_func_start __truncdfsf2 +__truncdfsf2: ; 81E1D20 + push {r4,r5,lr} + sub sp, 0x1C + str r0, [sp, 0x14] + str r1, [sp, 0x18] + add r0, sp, 0x14 + mov r1, sp + bl __unpack_d + ldr r2, [sp, 0xC] + ldr r3, [sp, 0x10] + lsls r5, r3, 2 + lsrs r4, r2, 30 + adds r0, r5, 0 + orrs r0, r4 + adds r5, r0, 0 + ldr r4, _081E1D60 + adds r0, r2, 0 + ands r0, r4 + movs r1, 0 + orrs r0, r1 + cmp r0, 0 + beq _081E1D50 + movs r0, 0x1 + orrs r5, r0 +_081E1D50: + ldr r0, [sp] + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + adds r3, r5, 0 + bl __make_fp + add sp, 0x1C + pop {r4,r5,pc} + .align 2, 0 +_081E1D60: .4byte 0x3fffffff + thumb_func_end __truncdfsf2 + + thumb_func_start __pack_f +__pack_f: ; 81E1D64 + push {r4-r6,lr} + ldr r2, [r0, 0xC] + ldr r6, [r0, 0x4] + movs r5, 0 + movs r1, 0 + ldr r3, [r0] + cmp r3, 0x1 + bhi _081E1D76 + movs r1, 0x1 +_081E1D76: + cmp r1, 0 + beq _081E1D84 + movs r5, 0xFF + movs r0, 0x80 + lsls r0, 13 + orrs r2, r0 + b _081E1DEA +_081E1D84: + movs r1, 0 + cmp r3, 0x4 + bne _081E1D8C + movs r1, 0x1 +_081E1D8C: + cmp r1, 0 + bne _081E1DC0 + movs r1, 0 + cmp r3, 0x2 + bne _081E1D98 + movs r1, 0x1 +_081E1D98: + cmp r1, 0 + beq _081E1DA0 + movs r2, 0 + b _081E1DEA +_081E1DA0: + cmp r2, 0 + beq _081E1DEA + ldr r0, [r0, 0x8] + movs r3, 0x7E + negs r3, r3 + cmp r0, r3 + bge _081E1DBC + subs r0, r3, r0 + cmp r0, 0x19 + ble _081E1DB8 + movs r2, 0 + b _081E1DE8 +_081E1DB8: + lsrs r2, r0 + b _081E1DE8 +_081E1DBC: + cmp r0, 0x7F + ble _081E1DC6 +_081E1DC0: + movs r5, 0xFF + movs r2, 0 + b _081E1DEA +_081E1DC6: + adds r5, r0, 0 + adds r5, 0x7F + movs r0, 0x7F + ands r0, r2 + cmp r0, 0x40 + bne _081E1DDE + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _081E1DE0 + adds r2, 0x40 + b _081E1DE0 +_081E1DDE: + adds r2, 0x3F +_081E1DE0: + cmp r2, 0 + bge _081E1DE8 + lsrs r2, 1 + adds r5, 0x1 +_081E1DE8: + lsrs r2, 7 +_081E1DEA: + ldr r0, _081E1E0C + ands r2, r0 + ldr r0, _081E1E10 + ands r4, r0 + orrs r4, r2 + movs r0, 0xFF + ands r5, r0 + lsls r1, r5, 23 + ldr r0, _081E1E14 + ands r4, r0 + orrs r4, r1 + lsls r1, r6, 31 + ldr r0, _081E1E18 + ands r4, r0 + orrs r4, r1 + adds r0, r4, 0 + pop {r4-r6,pc} + .align 2, 0 +_081E1E0C: .4byte 0x007fffff +_081E1E10: .4byte 0xff800000 +_081E1E14: .4byte 0x807fffff +_081E1E18: .4byte 0x7fffffff + thumb_func_end __pack_f + + thumb_func_start __unpack_f +__unpack_f: ; 81E1E1C + push {r4,lr} + adds r3, r1, 0 + ldr r0, [r0] + lsls r1, r0, 9 + lsrs r2, r1, 9 + lsls r1, r0, 1 + lsrs r1, 24 + lsrs r0, 31 + str r0, [r3, 0x4] + cmp r1, 0 + bne _081E1E60 + cmp r2, 0 + bne _081E1E3C + movs r0, 0x2 + str r0, [r3] + b _081E1E94 +_081E1E3C: + adds r4, r1, 0 + subs r4, 0x7E + str r4, [r3, 0x8] + lsls r2, 7 + movs r0, 0x3 + str r0, [r3] + ldr r1, _081E1E5C + cmp r2, r1 + bhi _081E1E7C + adds r0, r4, 0 +_081E1E50: + lsls r2, 1 + subs r0, 0x1 + cmp r2, r1 + bls _081E1E50 + str r0, [r3, 0x8] + b _081E1E7C + .align 2, 0 +_081E1E5C: .4byte 0x3fffffff +_081E1E60: + cmp r1, 0xFF + bne _081E1E80 + cmp r2, 0 + bne _081E1E6E + movs r0, 0x4 + str r0, [r3] + b _081E1E94 +_081E1E6E: + movs r0, 0x80 + lsls r0, 13 + ands r0, r2 + cmp r0, 0 + beq _081E1E7A + movs r0, 0x1 +_081E1E7A: + str r0, [r3] +_081E1E7C: + str r2, [r3, 0xC] + b _081E1E94 +_081E1E80: + adds r0, r1, 0 + subs r0, 0x7F + str r0, [r3, 0x8] + movs r0, 0x3 + str r0, [r3] + lsls r0, r2, 7 + movs r1, 0x80 + lsls r1, 23 + orrs r0, r1 + str r0, [r3, 0xC] +_081E1E94: + pop {r4,pc} + thumb_func_end __unpack_f + + thumb_func_start __fpadd_parts_f +__fpadd_parts_f: ; 81E1E98 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r7, r1, 0 + adds r5, r2, 0 + movs r0, 0 + ldr r2, [r6] + cmp r2, 0x1 + bhi _081E1EAE + movs r0, 0x1 +_081E1EAE: + cmp r0, 0 + beq _081E1EB6 +_081E1EB2: + adds r0, r6, 0 + b _081E200C +_081E1EB6: + movs r1, 0 + ldr r0, [r7] + cmp r0, 0x1 + bhi _081E1EC0 + movs r1, 0x1 +_081E1EC0: + cmp r1, 0 + bne _081E1F34 + movs r1, 0 + cmp r2, 0x4 + bne _081E1ECC + movs r1, 0x1 +_081E1ECC: + cmp r1, 0 + beq _081E1EEC + movs r1, 0 + cmp r0, 0x4 + bne _081E1ED8 + movs r1, 0x1 +_081E1ED8: + cmp r1, 0 + beq _081E1EB2 + ldr r1, [r6, 0x4] + ldr r0, [r7, 0x4] + cmp r1, r0 + beq _081E1EB2 + ldr r0, _081E1EE8 + b _081E200C + .align 2, 0 +_081E1EE8: .4byte 0x03000f50 +_081E1EEC: + movs r1, 0 + cmp r0, 0x4 + bne _081E1EF4 + movs r1, 0x1 +_081E1EF4: + cmp r1, 0 + bne _081E1F34 + movs r1, 0 + cmp r0, 0x2 + bne _081E1F00 + movs r1, 0x1 +_081E1F00: + cmp r1, 0 + beq _081E1F26 + movs r0, 0 + cmp r2, 0x2 + bne _081E1F0C + movs r0, 0x1 +_081E1F0C: + cmp r0, 0 + beq _081E1EB2 + adds r1, r5, 0 + adds r0, r6, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r0] + str r0, [r1] + ldr r0, [r6, 0x4] + ldr r1, [r7, 0x4] + ands r0, r1 + str r0, [r5, 0x4] + b _081E200A +_081E1F26: + movs r1, 0 + ldr r0, [r6] + cmp r0, 0x2 + bne _081E1F30 + movs r1, 0x1 +_081E1F30: + cmp r1, 0 + beq _081E1F38 +_081E1F34: + adds r0, r7, 0 + b _081E200C +_081E1F38: + ldr r1, [r6, 0x8] + ldr r3, [r7, 0x8] + ldr r2, [r6, 0xC] + ldr r4, [r7, 0xC] + subs r0, r1, r3 + cmp r0, 0 + bge _081E1F48 + negs r0, r0 +_081E1F48: + cmp r0, 0x1F + bgt _081E1F8C + ldr r6, [r6, 0x4] + ldr r7, [r7, 0x4] + mov r8, r7 + cmp r1, r3 + ble _081E1F6E + movs r7, 0x1 + mov r12, r7 + subs r3, r1, r3 +_081E1F5C: + subs r3, 0x1 + adds r0, r4, 0 + mov r7, r12 + ands r0, r7 + lsrs r4, 1 + orrs r4, r0 + cmp r3, 0 + bne _081E1F5C + adds r3, r1, 0 +_081E1F6E: + cmp r3, r1 + ble _081E1F9E + movs r0, 0x1 + mov r12, r0 + subs r1, r3, r1 +_081E1F78: + subs r1, 0x1 + adds r0, r2, 0 + mov r7, r12 + ands r0, r7 + lsrs r2, 1 + orrs r2, r0 + cmp r1, 0 + bne _081E1F78 + adds r1, r3, 0 + b _081E1F9E +_081E1F8C: + cmp r1, r3 + ble _081E1F94 + movs r4, 0 + b _081E1F98 +_081E1F94: + adds r1, r3, 0 + movs r2, 0 +_081E1F98: + ldr r6, [r6, 0x4] + ldr r7, [r7, 0x4] + mov r8, r7 +_081E1F9E: + cmp r6, r8 + beq _081E1FE8 + cmp r6, 0 + beq _081E1FAA + subs r3, r4, r2 + b _081E1FAC +_081E1FAA: + subs r3, r2, r4 +_081E1FAC: + cmp r3, 0 + blt _081E1FBA + movs r0, 0 + str r0, [r5, 0x4] + str r1, [r5, 0x8] + str r3, [r5, 0xC] + b _081E1FC4 +_081E1FBA: + movs r0, 0x1 + str r0, [r5, 0x4] + str r1, [r5, 0x8] + negs r0, r3 + str r0, [r5, 0xC] +_081E1FC4: + ldr r1, [r5, 0xC] + subs r0, r1, 0x1 + ldr r2, _081E1FE4 + cmp r0, r2 + bhi _081E1FF0 +_081E1FCE: + lsls r0, r1, 1 + str r0, [r5, 0xC] + ldr r1, [r5, 0x8] + subs r1, 0x1 + str r1, [r5, 0x8] + adds r1, r0, 0 + subs r0, r1, 0x1 + cmp r0, r2 + bls _081E1FCE + b _081E1FF0 + .align 2, 0 +_081E1FE4: .4byte 0x3ffffffe +_081E1FE8: + str r6, [r5, 0x4] + str r1, [r5, 0x8] + adds r0, r2, r4 + str r0, [r5, 0xC] +_081E1FF0: + movs r0, 0x3 + str r0, [r5] + ldr r1, [r5, 0xC] + cmp r1, 0 + bge _081E200A + movs r0, 0x1 + ands r0, r1 + lsrs r1, 1 + orrs r0, r1 + str r0, [r5, 0xC] + ldr r0, [r5, 0x8] + adds r0, 0x1 + str r0, [r5, 0x8] +_081E200A: + adds r0, r5, 0 +_081E200C: + pop {r3} + mov r8, r3 + pop {r4-r7,pc} + thumb_func_end __fpadd_parts_f + + thumb_func_start __addsf3 +__addsf3: ; 81E2014 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x30] + str r1, [sp, 0x34] + add r0, sp, 0x30 + mov r1, sp + bl __unpack_f + add r0, sp, 0x34 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + add r2, sp, 0x20 + mov r0, sp + adds r1, r4, 0 + bl __fpadd_parts_f + bl __pack_f + add sp, 0x38 + pop {r4,pc} + thumb_func_end __addsf3 + + thumb_func_start __subsf3 +__subsf3: ; 81E2040 + push {r4,lr} + sub sp, 0x38 + str r0, [sp, 0x30] + str r1, [sp, 0x34] + add r0, sp, 0x30 + mov r1, sp + bl __unpack_f + add r0, sp, 0x34 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + ldr r0, [r4, 0x4] + movs r1, 0x1 + eors r0, r1 + str r0, [r4, 0x4] + add r2, sp, 0x20 + mov r0, sp + adds r1, r4, 0 + bl __fpadd_parts_f + bl __pack_f + add sp, 0x38 + pop {r4,pc} + thumb_func_end __subsf3 + + thumb_func_start __mulsf3 +__mulsf3: ; 81E2074 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x38 + str r0, [sp, 0x30] + str r1, [sp, 0x34] + add r0, sp, 0x30 + mov r1, sp + bl __unpack_f + add r0, sp, 0x34 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + mov r7, sp + add r0, sp, 0x20 + mov r8, r0 + movs r0, 0 + ldr r1, [sp] + mov r9, r8 + cmp r1, 0x1 + bhi _081E20A6 + movs r0, 0x1 +_081E20A6: + cmp r0, 0 + bne _081E2104 + movs r2, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E20B4 + movs r2, 0x1 +_081E20B4: + cmp r2, 0 + beq _081E20BC + ldr r0, [sp, 0x4] + b _081E2124 +_081E20BC: + movs r2, 0 + cmp r1, 0x4 + bne _081E20C4 + movs r2, 0x1 +_081E20C4: + cmp r2, 0 + beq _081E20D6 + movs r1, 0 + cmp r0, 0x2 + bne _081E20D0 + movs r1, 0x1 +_081E20D0: + cmp r1, 0 + bne _081E20EE + b _081E2104 +_081E20D6: + movs r2, 0 + cmp r0, 0x4 + bne _081E20DE + movs r2, 0x1 +_081E20DE: + cmp r2, 0 + beq _081E20F8 + movs r0, 0 + cmp r1, 0x2 + bne _081E20EA + movs r0, 0x1 +_081E20EA: + cmp r0, 0 + beq _081E2122 +_081E20EE: + ldr r0, _081E20F4 + b _081E21C6 + .align 2, 0 +_081E20F4: .4byte 0x03000f50 +_081E20F8: + movs r2, 0 + cmp r1, 0x2 + bne _081E2100 + movs r2, 0x1 +_081E2100: + cmp r2, 0 + beq _081E2116 +_081E2104: + ldr r0, [sp, 0x4] + ldr r1, [sp, 0x14] + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0x4] + mov r0, sp + b _081E21C6 +_081E2116: + movs r1, 0 + cmp r0, 0x2 + bne _081E211E + movs r1, 0x1 +_081E211E: + cmp r1, 0 + beq _081E2134 +_081E2122: + ldr r0, [r7, 0x4] +_081E2124: + ldr r1, [sp, 0x14] + eors r0, r1 + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + str r1, [sp, 0x14] + adds r0, r4, 0 + b _081E21C6 +_081E2134: + ldr r0, [r7, 0xC] + movs r1, 0 + ldr r2, [sp, 0x1C] + movs r3, 0 + bl __muldi3 + adds r2, r1, 0 + adds r5, r2, 0 + adds r6, r0, 0 + ldr r4, [r7, 0x8] + ldr r0, [sp, 0x18] + adds r4, r0 + str r4, [sp, 0x28] + ldr r1, [r7, 0x4] + ldr r0, [sp, 0x14] + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + str r0, [sp, 0x24] + adds r4, 0x2 + str r4, [sp, 0x28] + cmp r2, 0 + bge _081E2180 + movs r2, 0x1 + movs r1, 0x80 + lsls r1, 24 +_081E216A: + adds r4, 0x1 + adds r0, r5, 0 + ands r0, r2 + cmp r0, 0 + beq _081E2178 + lsrs r6, 1 + orrs r6, r1 +_081E2178: + lsrs r5, 1 + cmp r5, 0 + blt _081E216A + str r4, [sp, 0x28] +_081E2180: + ldr r0, _081E21D4 + cmp r5, r0 + bhi _081E21A6 + movs r4, 0x80 + lsls r4, 24 + movs r3, 0x1 + adds r2, r0, 0 + ldr r1, [sp, 0x28] +_081E2190: + subs r1, 0x1 + lsls r5, 1 + adds r0, r6, 0 + ands r0, r4 + cmp r0, 0 + beq _081E219E + orrs r5, r3 +_081E219E: + lsls r6, 1 + cmp r5, r2 + bls _081E2190 + str r1, [sp, 0x28] +_081E21A6: + movs r0, 0x7F + ands r0, r5 + cmp r0, 0x40 + bne _081E21BC + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + bne _081E21BA + cmp r6, 0 + beq _081E21BC +_081E21BA: + adds r5, 0x40 +_081E21BC: + str r5, [sp, 0x2C] + movs r0, 0x3 + mov r1, r8 + str r0, [r1] + mov r0, r9 +_081E21C6: + bl __pack_f + add sp, 0x38 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7,pc} + .align 2, 0 +_081E21D4: .4byte 0x3fffffff + thumb_func_end __mulsf3 + + thumb_func_start __divsf3 +__divsf3: ; 81E21D8 + push {r4-r6,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r5, sp, 0x10 + adds r1, r5, 0 + bl __unpack_f + mov r4, sp + movs r0, 0 + ldr r3, [sp] + cmp r3, 0x1 + bhi _081E21FE + movs r0, 0x1 +_081E21FE: + cmp r0, 0 + beq _081E2206 + mov r1, sp + b _081E22B8 +_081E2206: + movs r0, 0 + ldr r2, [sp, 0x10] + adds r6, r2, 0 + cmp r2, 0x1 + bhi _081E2212 + movs r0, 0x1 +_081E2212: + cmp r0, 0 + beq _081E221A + adds r1, r5, 0 + b _081E22B8 +_081E221A: + ldr r0, [sp, 0x4] + ldr r1, [sp, 0x14] + eors r0, r1 + str r0, [sp, 0x4] + movs r0, 0 + cmp r3, 0x4 + bne _081E222A + movs r0, 0x1 +_081E222A: + cmp r0, 0 + bne _081E223A + movs r0, 0 + cmp r3, 0x2 + bne _081E2236 + movs r0, 0x1 +_081E2236: + cmp r0, 0 + beq _081E224C +_081E223A: + ldr r0, [r4] + adds r1, r4, 0 + cmp r0, r6 + bne _081E22B8 + ldr r1, _081E2248 + b _081E22B8 + .align 2, 0 +_081E2248: .4byte 0x03000f50 +_081E224C: + movs r1, 0 + cmp r2, 0x4 + bne _081E2254 + movs r1, 0x1 +_081E2254: + cmp r1, 0 + beq _081E2260 + str r0, [sp, 0xC] + str r0, [sp, 0x8] + mov r1, sp + b _081E22B8 +_081E2260: + movs r0, 0 + cmp r2, 0x2 + bne _081E2268 + movs r0, 0x1 +_081E2268: + cmp r0, 0 + beq _081E2272 + movs r0, 0x4 + str r0, [r4] + b _081E22B6 +_081E2272: + ldr r1, [r4, 0x8] + ldr r0, [sp, 0x18] + subs r0, r1, r0 + str r0, [r4, 0x8] + ldr r2, [r4, 0xC] + ldr r3, [sp, 0x1C] + cmp r2, r3 + bcs _081E2288 + lsls r2, 1 + subs r0, 0x1 + str r0, [r4, 0x8] +_081E2288: + movs r0, 0x80 + lsls r0, 23 + movs r1, 0 +_081E228E: + cmp r2, r3 + bcc _081E2296 + orrs r1, r0 + subs r2, r3 +_081E2296: + lsrs r0, 1 + lsls r2, 1 + cmp r0, 0 + bne _081E228E + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x40 + bne _081E22B4 + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _081E22B2 + cmp r2, 0 + beq _081E22B4 +_081E22B2: + adds r1, 0x40 +_081E22B4: + str r1, [r4, 0xC] +_081E22B6: + adds r1, r4, 0 +_081E22B8: + adds r0, r1, 0 + bl __pack_f + add sp, 0x28 + pop {r4-r6,pc} + thumb_func_end __divsf3 + + thumb_func_start __fpcmp_parts_f +__fpcmp_parts_f: ; 81E22C4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + ldr r2, [r4] + cmp r2, 0x1 + bhi _081E22D2 + movs r0, 0x1 +_081E22D2: + cmp r0, 0 + bne _081E22E4 + movs r0, 0 + ldr r3, [r1] + cmp r3, 0x1 + bhi _081E22E0 + movs r0, 0x1 +_081E22E0: + cmp r0, 0 + beq _081E22E8 +_081E22E4: + movs r0, 0x1 + b _081E23A6 +_081E22E8: + movs r0, 0 + cmp r2, 0x4 + bne _081E22F0 + movs r0, 0x1 +_081E22F0: + cmp r0, 0 + beq _081E2308 + movs r0, 0 + cmp r3, 0x4 + bne _081E22FC + movs r0, 0x1 +_081E22FC: + cmp r0, 0 + beq _081E2308 + ldr r0, [r1, 0x4] + ldr r1, [r4, 0x4] + subs r0, r1 + b _081E23A6 +_081E2308: + movs r2, 0 + ldr r0, [r4] + cmp r0, 0x4 + bne _081E2312 + movs r2, 0x1 +_081E2312: + cmp r2, 0 + bne _081E2360 + movs r2, 0 + cmp r3, 0x4 + bne _081E231E + movs r2, 0x1 +_081E231E: + cmp r2, 0 + beq _081E2330 +_081E2322: + ldr r0, [r1, 0x4] + movs r1, 0x1 + negs r1, r1 + cmp r0, 0 + beq _081E236A + movs r1, 0x1 + b _081E236A +_081E2330: + movs r2, 0 + cmp r0, 0x2 + bne _081E2338 + movs r2, 0x1 +_081E2338: + cmp r2, 0 + beq _081E2348 + movs r2, 0 + cmp r3, 0x2 + bne _081E2344 + movs r2, 0x1 +_081E2344: + cmp r2, 0 + bne _081E23A4 +_081E2348: + movs r2, 0 + cmp r0, 0x2 + bne _081E2350 + movs r2, 0x1 +_081E2350: + cmp r2, 0 + bne _081E2322 + movs r0, 0 + cmp r3, 0x2 + bne _081E235C + movs r0, 0x1 +_081E235C: + cmp r0, 0 + beq _081E236E +_081E2360: + ldr r0, [r4, 0x4] + movs r1, 0x1 + cmp r0, 0 + beq _081E236A + subs r1, 0x2 +_081E236A: + adds r0, r1, 0 + b _081E23A6 +_081E236E: + ldr r3, [r4, 0x4] + ldr r0, [r1, 0x4] + cmp r3, r0 + beq _081E2380 +_081E2376: + movs r0, 0x1 + cmp r3, 0 + beq _081E23A6 + subs r0, 0x2 + b _081E23A6 +_081E2380: + ldr r2, [r4, 0x8] + ldr r0, [r1, 0x8] + cmp r2, r0 + bgt _081E2376 + cmp r2, r0 + bge _081E2398 +_081E238C: + movs r0, 0x1 + negs r0, r0 + cmp r3, 0 + beq _081E23A6 + movs r0, 0x1 + b _081E23A6 +_081E2398: + ldr r0, [r4, 0xC] + ldr r1, [r1, 0xC] + cmp r0, r1 + bhi _081E2376 + cmp r0, r1 + bcc _081E238C +_081E23A4: + movs r0, 0 +_081E23A6: + pop {r4,pc} + thumb_func_end __fpcmp_parts_f + + thumb_func_start __cmpsf2 +__cmpsf2: ; 81E23A8 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f + add sp, 0x28 + pop {r4,pc} + thumb_func_end __cmpsf2 + + thumb_func_start __eqsf2 +__eqsf2: ; 81E23D0 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E23F4 + movs r1, 0x1 +_081E23F4: + cmp r1, 0 + bne _081E2406 + movs r1, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E2402 + movs r1, 0x1 +_081E2402: + cmp r1, 0 + beq _081E240A +_081E2406: + movs r0, 0x1 + b _081E2412 +_081E240A: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f +_081E2412: + add sp, 0x28 + pop {r4,pc} + thumb_func_end __eqsf2 + + thumb_func_start __nesf2 +__nesf2: ; 81E2418 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E243C + movs r1, 0x1 +_081E243C: + cmp r1, 0 + bne _081E244E + movs r1, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E244A + movs r1, 0x1 +_081E244A: + cmp r1, 0 + beq _081E2452 +_081E244E: + movs r0, 0x1 + b _081E245A +_081E2452: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f +_081E245A: + add sp, 0x28 + pop {r4,pc} + thumb_func_end __nesf2 + + thumb_func_start __gtsf2 +__gtsf2: ; 81E2460 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E2484 + movs r1, 0x1 +_081E2484: + cmp r1, 0 + bne _081E2496 + movs r1, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E2492 + movs r1, 0x1 +_081E2492: + cmp r1, 0 + beq _081E249C +_081E2496: + movs r0, 0x1 + negs r0, r0 + b _081E24A4 +_081E249C: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f +_081E24A4: + add sp, 0x28 + pop {r4,pc} + thumb_func_end __gtsf2 + + thumb_func_start __gesf2 +__gesf2: ; 81E24A8 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E24CC + movs r1, 0x1 +_081E24CC: + cmp r1, 0 + bne _081E24DE + movs r1, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E24DA + movs r1, 0x1 +_081E24DA: + cmp r1, 0 + beq _081E24E4 +_081E24DE: + movs r0, 0x1 + negs r0, r0 + b _081E24EC +_081E24E4: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f +_081E24EC: + add sp, 0x28 + pop {r4,pc} + thumb_func_end __gesf2 + + thumb_func_start __ltsf2 +__ltsf2: ; 81E24F0 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E2514 + movs r1, 0x1 +_081E2514: + cmp r1, 0 + bne _081E2526 + movs r1, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E2522 + movs r1, 0x1 +_081E2522: + cmp r1, 0 + beq _081E252A +_081E2526: + movs r0, 0x1 + b _081E2532 +_081E252A: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f +_081E2532: + add sp, 0x28 + pop {r4,pc} + thumb_func_end __ltsf2 + + thumb_func_start __lesf2 +__lesf2: ; 81E2538 + push {r4,lr} + sub sp, 0x28 + str r0, [sp, 0x20] + str r1, [sp, 0x24] + add r0, sp, 0x20 + mov r1, sp + bl __unpack_f + add r0, sp, 0x24 + add r4, sp, 0x10 + adds r1, r4, 0 + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bhi _081E255C + movs r1, 0x1 +_081E255C: + cmp r1, 0 + bne _081E256E + movs r1, 0 + ldr r0, [sp, 0x10] + cmp r0, 0x1 + bhi _081E256A + movs r1, 0x1 +_081E256A: + cmp r1, 0 + beq _081E2572 +_081E256E: + movs r0, 0x1 + b _081E257A +_081E2572: + mov r0, sp + adds r1, r4, 0 + bl __fpcmp_parts_f +_081E257A: + add sp, 0x28 + pop {r4,pc} + thumb_func_end __lesf2 + + thumb_func_start __floatsisf +__floatsisf: ; 81E2580 + push {lr} + sub sp, 0x10 + adds r1, r0, 0 + movs r0, 0x3 + str r0, [sp] + lsrs r2, r1, 31 + str r2, [sp, 0x4] + cmp r1, 0 + bne _081E2598 + movs r0, 0x2 + str r0, [sp] + b _081E25D0 +_081E2598: + movs r0, 0x1E + str r0, [sp, 0x8] + cmp r2, 0 + beq _081E25B6 + movs r0, 0x80 + lsls r0, 24 + cmp r1, r0 + bne _081E25B0 + ldr r0, _081E25AC + b _081E25D6 + .align 2, 0 +_081E25AC: .4byte 0xcf000000 +_081E25B0: + negs r0, r1 + str r0, [sp, 0xC] + b _081E25B8 +_081E25B6: + str r1, [sp, 0xC] +_081E25B8: + ldr r2, [sp, 0xC] + ldr r3, _081E25DC + cmp r2, r3 + bhi _081E25D0 + ldr r1, [sp, 0x8] +_081E25C2: + lsls r0, r2, 1 + subs r1, 0x1 + adds r2, r0, 0 + cmp r0, r3 + bls _081E25C2 + str r1, [sp, 0x8] + str r0, [sp, 0xC] +_081E25D0: + mov r0, sp + bl __pack_f +_081E25D6: + add sp, 0x10 + pop {pc} + .align 2, 0 +_081E25DC: .4byte 0x3fffffff + thumb_func_end __floatsisf + + thumb_func_start __fixsfsi +__fixsfsi: ; 81E25E0 + push {lr} + sub sp, 0x14 + str r0, [sp, 0x10] + add r0, sp, 0x10 + mov r1, sp + bl __unpack_f + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x2 + bne _081E25F8 + movs r1, 0x1 +_081E25F8: + cmp r1, 0 + bne _081E262A + movs r1, 0 + cmp r0, 0x1 + bhi _081E2604 + movs r1, 0x1 +_081E2604: + cmp r1, 0 + bne _081E262A + movs r1, 0 + cmp r0, 0x4 + bne _081E2610 + movs r1, 0x1 +_081E2610: + cmp r1, 0 + beq _081E2624 +_081E2614: + ldr r0, [sp, 0x4] + ldr r1, _081E2620 + cmp r0, 0 + beq _081E2642 + adds r1, 0x1 + b _081E2642 + .align 2, 0 +_081E2620: .4byte 0x7fffffff +_081E2624: + ldr r1, [sp, 0x8] + cmp r1, 0 + bge _081E262E +_081E262A: + movs r0, 0 + b _081E2644 +_081E262E: + cmp r1, 0x1E + bgt _081E2614 + movs r0, 0x1E + subs r0, r1 + ldr r1, [sp, 0xC] + lsrs r1, r0 + ldr r0, [sp, 0x4] + cmp r0, 0 + beq _081E2642 + negs r1, r1 +_081E2642: + adds r0, r1, 0 +_081E2644: + add sp, 0x14 + pop {pc} + thumb_func_end __fixsfsi + + thumb_func_start __negsf2 +__negsf2: ; 81E2648 + push {lr} + sub sp, 0x14 + str r0, [sp, 0x10] + add r0, sp, 0x10 + mov r1, sp + bl __unpack_f + movs r1, 0 + ldr r0, [sp, 0x4] + cmp r0, 0 + bne _081E2660 + movs r1, 0x1 +_081E2660: + str r1, [sp, 0x4] + mov r0, sp + bl __pack_f + add sp, 0x14 + pop {pc} + thumb_func_end __negsf2 + + thumb_func_start __make_fp +__make_fp: ; 81E266C + push {lr} + sub sp, 0x10 + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + mov r0, sp + bl __pack_f + add sp, 0x10 + pop {pc} + thumb_func_end __make_fp + + thumb_func_start __extendsfdf2 +__extendsfdf2: ; 81E2684 + push {r4-r6,lr} + sub sp, 0x18 + str r0, [sp, 0x14] + add r0, sp, 0x14 + add r1, sp, 0x4 + bl __unpack_f + ldr r0, [sp, 0x4] + ldr r1, [sp, 0x8] + ldr r2, [sp, 0xC] + ldr r3, [sp, 0x10] + movs r4, 0 + lsrs r6, r3, 2 + lsls r5, r4, 30 + adds r4, r6, 0 + orrs r4, r5 + lsls r3, 30 + str r4, [sp] + bl __make_dp + add sp, 0x18 + pop {r4-r6,pc} + thumb_func_end __extendsfdf2 + + thumb_func_start __lshrdi3 +__lshrdi3: ; 81E26B0 + push {r4-r6,lr} + adds r6, r1, 0 + adds r5, r0, 0 + cmp r2, 0 + beq _081E26E0 + movs r0, 0x20 + subs r0, r2 + cmp r0, 0 + bgt _081E26CC + movs r4, 0 + negs r0, r0 + adds r3, r6, 0 + lsrs r3, r0 + b _081E26DC +_081E26CC: + adds r1, r6, 0 + lsls r1, r0 + adds r4, r6, 0 + lsrs r4, r2 + adds r0, r5, 0 + lsrs r0, r2 + adds r3, r0, 0 + orrs r3, r1 +_081E26DC: + adds r1, r4, 0 + adds r0, r3, 0 +_081E26E0: + pop {r4-r6,pc} + thumb_func_end __lshrdi3 + + thumb_func_start __negdi2 +__negdi2: ; 81E26E4 + push {r4,lr} + negs r2, r0 + adds r3, r2, 0 + negs r1, r1 + cmp r2, 0 + beq _081E26F2 + subs r1, 0x1 +_081E26F2: + adds r4, r1, 0 + adds r1, r4, 0 + adds r0, r3, 0 + pop {r4,pc} + thumb_func_end __negdi2 + + thumb_func_start memcpy +; void *memcpy(void *dest, void *src, int size) +memcpy: ; 81E26FC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r5, 0 + adds r3, r1, 0 + cmp r2, 0xF + bls _081E273C + adds r0, r3, 0 + orrs r0, r5 + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _081E273C + adds r1, r5, 0 +_081E2716: + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + subs r2, 0x10 + cmp r2, 0xF + bhi _081E2716 + cmp r2, 0x3 + bls _081E273A +_081E2730: + ldm r3!, {r0} + stm r1!, {r0} + subs r2, 0x4 + cmp r2, 0x3 + bhi _081E2730 +_081E273A: + adds r4, r1, 0 +_081E273C: + subs r2, 0x1 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _081E2756 + adds r1, r0, 0 +_081E2748: + ldrb r0, [r3] + strb r0, [r4] + adds r3, 0x1 + adds r4, 0x1 + subs r2, 0x1 + cmp r2, r1 + bne _081E2748 +_081E2756: + adds r0, r5, 0 + pop {r4,r5,pc} + thumb_func_end memcpy + + thumb_func_start memset +; void *memset(void *dest, char c, int size) +memset: ; 81E275C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r3, r5, 0 + cmp r2, 0x3 + bls _081E27A2 + movs r0, 0x3 + ands r0, r5 + cmp r0, 0 + bne _081E27A2 + adds r1, r5, 0 + movs r0, 0xFF + ands r4, r0 + lsls r3, r4, 8 + orrs r3, r4 + lsls r0, r3, 16 + orrs r3, r0 + cmp r2, 0xF + bls _081E2796 +_081E2782: + stm r1!, {r3} + stm r1!, {r3} + stm r1!, {r3} + stm r1!, {r3} + subs r2, 0x10 + cmp r2, 0xF + bhi _081E2782 + b _081E2796 +_081E2792: + stm r1!, {r3} + subs r2, 0x4 +_081E2796: + cmp r2, 0x3 + bhi _081E2792 + adds r3, r1, 0 + b _081E27A2 +_081E279E: + strb r4, [r3] + adds r3, 0x1 +_081E27A2: + adds r0, r2, 0 + subs r2, 0x1 + cmp r0, 0 + bne _081E279E + adds r0, r5, 0 + pop {r4,r5,pc} + thumb_func_end memset + + thumb_func_start strcmp +; int strcmp(char *s1, char *s2) +strcmp: ; 81E27B0 + push {r4,r5,lr} + adds r2, r0, 0 + adds r3, r1, 0 + orrs r0, r3 + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + bne _081E27F6 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + bne _081E27F6 + ldr r5, _081E27DC + ldr r4, _081E27E0 +_081E27CC: + ldr r1, [r2] + adds r0, r1, r5 + bics r0, r1 + ands r0, r4 + cmp r0, 0 + beq _081E27E4 + movs r0, 0 + b _081E2808 + .align 2, 0 +_081E27DC: .4byte 0xfefefeff +_081E27E0: .4byte 0x80808080 +_081E27E4: + adds r2, 0x4 + adds r3, 0x4 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + beq _081E27CC + b _081E27F6 +_081E27F2: + adds r2, 0x1 + adds r3, 0x1 +_081E27F6: + ldrb r0, [r2] + cmp r0, 0 + beq _081E2802 + ldrb r1, [r3] + cmp r0, r1 + beq _081E27F2 +_081E2802: + ldrb r2, [r2] + ldrb r3, [r3] + subs r0, r2, r3 +_081E2808: + pop {r4,r5,pc} + thumb_func_end strcmp |