.include "macros.inc" .section .text, "ax" .global ldexp ldexp: /* 80394698 003915F8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8039469C 003915FC 7C 08 02 A6 */ mflr r0 /* 803946A0 00391600 D8 21 00 10 */ stfd f1, 0x10(r1) /* 803946A4 00391604 80 A1 00 10 */ lwz r5, 0x10(r1) /* 803946A8 00391608 90 01 00 24 */ stw r0, 0x24(r1) /* 803946AC 0039160C 3C 00 7F F0 */ lis r0, 0x7ff0 /* 803946B0 00391610 54 A4 00 56 */ rlwinm r4, r5, 0, 1, 0xb /* 803946B4 00391614 7C 04 00 00 */ cmpw r4, r0 /* 803946B8 00391618 D8 21 00 08 */ stfd f1, 8(r1) /* 803946BC 0039161C 41 82 00 14 */ beq lbl_803946D0 /* 803946C0 00391620 40 80 00 58 */ bge lbl_80394718 /* 803946C4 00391624 2C 04 00 00 */ cmpwi r4, 0 /* 803946C8 00391628 41 82 00 2C */ beq lbl_803946F4 /* 803946CC 0039162C 48 00 00 4C */ b lbl_80394718 lbl_803946D0: /* 803946D0 00391630 54 A0 03 3F */ clrlwi. r0, r5, 0xc /* 803946D4 00391634 40 82 00 10 */ bne lbl_803946E4 /* 803946D8 00391638 80 01 00 14 */ lwz r0, 0x14(r1) /* 803946DC 0039163C 2C 00 00 00 */ cmpwi r0, 0 /* 803946E0 00391640 41 82 00 0C */ beq lbl_803946EC lbl_803946E4: /* 803946E4 00391644 38 00 00 01 */ li r0, 1 /* 803946E8 00391648 48 00 00 34 */ b lbl_8039471C lbl_803946EC: /* 803946EC 0039164C 38 00 00 02 */ li r0, 2 /* 803946F0 00391650 48 00 00 2C */ b lbl_8039471C lbl_803946F4: /* 803946F4 00391654 54 A0 03 3F */ clrlwi. r0, r5, 0xc /* 803946F8 00391658 40 82 00 10 */ bne lbl_80394708 /* 803946FC 0039165C 80 01 00 14 */ lwz r0, 0x14(r1) /* 80394700 00391660 2C 00 00 00 */ cmpwi r0, 0 /* 80394704 00391664 41 82 00 0C */ beq lbl_80394710 lbl_80394708: /* 80394708 00391668 38 00 00 05 */ li r0, 5 /* 8039470C 0039166C 48 00 00 10 */ b lbl_8039471C lbl_80394710: /* 80394710 00391670 38 00 00 03 */ li r0, 3 /* 80394714 00391674 48 00 00 08 */ b lbl_8039471C lbl_80394718: /* 80394718 00391678 38 00 00 04 */ li r0, 4 lbl_8039471C: /* 8039471C 0039167C 2C 00 00 02 */ cmpwi r0, 2 /* 80394720 00391680 40 81 01 2C */ ble lbl_8039484C /* 80394724 00391684 C8 02 D4 B8 */ lfd f0, lbl_805AF1D8@sda21(r2) /* 80394728 00391688 FC 00 08 00 */ fcmpu cr0, f0, f1 /* 8039472C 0039168C 40 82 00 08 */ bne lbl_80394734 /* 80394730 00391690 48 00 01 1C */ b lbl_8039484C lbl_80394734: /* 80394734 00391694 80 A1 00 08 */ lwz r5, 8(r1) /* 80394738 00391698 80 C1 00 0C */ lwz r6, 0xc(r1) /* 8039473C 0039169C 54 A4 65 7F */ rlwinm. r4, r5, 0xc, 0x15, 0x1f /* 80394740 003916A0 40 82 00 4C */ bne lbl_8039478C /* 80394744 003916A4 54 A0 00 7E */ clrlwi r0, r5, 1 /* 80394748 003916A8 7C C0 03 79 */ or. r0, r6, r0 /* 8039474C 003916AC 40 82 00 08 */ bne lbl_80394754 /* 80394750 003916B0 48 00 00 FC */ b lbl_8039484C lbl_80394754: /* 80394754 003916B4 C8 21 00 08 */ lfd f1, 8(r1) /* 80394758 003916B8 3C 80 FF FF */ lis r4, 0xFFFF3CB0@ha /* 8039475C 003916BC C8 02 D4 C0 */ lfd f0, lbl_805AF1E0@sda21(r2) /* 80394760 003916C0 38 04 3C B0 */ addi r0, r4, 0xFFFF3CB0@l /* 80394764 003916C4 7C 03 00 00 */ cmpw r3, r0 /* 80394768 003916C8 FC 21 00 32 */ fmul f1, f1, f0 /* 8039476C 003916CC D8 21 00 08 */ stfd f1, 8(r1) /* 80394770 003916D0 80 A1 00 08 */ lwz r5, 8(r1) /* 80394774 003916D4 54 A4 65 7E */ rlwinm r4, r5, 0xc, 0x15, 0x1f /* 80394778 003916D8 38 84 FF CA */ addi r4, r4, -54 /* 8039477C 003916DC 40 80 00 10 */ bge lbl_8039478C /* 80394780 003916E0 C8 02 D4 C8 */ lfd f0, lbl_805AF1E8@sda21(r2) /* 80394784 003916E4 FC 20 00 72 */ fmul f1, f0, f1 /* 80394788 003916E8 48 00 00 C4 */ b lbl_8039484C lbl_8039478C: /* 8039478C 003916EC 2C 04 07 FF */ cmpwi r4, 0x7ff /* 80394790 003916F0 40 82 00 10 */ bne lbl_803947A0 /* 80394794 003916F4 C8 01 00 08 */ lfd f0, 8(r1) /* 80394798 003916F8 FC 20 00 2A */ fadd f1, f0, f0 /* 8039479C 003916FC 48 00 00 B0 */ b lbl_8039484C lbl_803947A0: /* 803947A0 00391700 7C 84 1A 14 */ add r4, r4, r3 /* 803947A4 00391704 2C 04 07 FE */ cmpwi r4, 0x7fe /* 803947A8 00391708 40 81 00 1C */ ble lbl_803947C4 /* 803947AC 0039170C C8 22 D4 D0 */ lfd f1, lbl_805AF1F0@sda21(r2) /* 803947B0 00391710 C8 41 00 08 */ lfd f2, 8(r1) /* 803947B4 00391714 4B FF FC 15 */ bl copysign /* 803947B8 00391718 C8 02 D4 D0 */ lfd f0, lbl_805AF1F0@sda21(r2) /* 803947BC 0039171C FC 20 00 72 */ fmul f1, f0, f1 /* 803947C0 00391720 48 00 00 8C */ b lbl_8039484C lbl_803947C4: /* 803947C4 00391724 2C 04 00 00 */ cmpwi r4, 0 /* 803947C8 00391728 40 81 00 1C */ ble lbl_803947E4 /* 803947CC 0039172C 54 A3 03 00 */ rlwinm r3, r5, 0, 0xc, 0 /* 803947D0 00391730 54 80 A0 16 */ slwi r0, r4, 0x14 /* 803947D4 00391734 7C 60 03 78 */ or r0, r3, r0 /* 803947D8 00391738 90 01 00 08 */ stw r0, 8(r1) /* 803947DC 0039173C C8 21 00 08 */ lfd f1, 8(r1) /* 803947E0 00391740 48 00 00 6C */ b lbl_8039484C lbl_803947E4: /* 803947E4 00391744 2C 04 FF CA */ cmpwi r4, -54 /* 803947E8 00391748 41 81 00 44 */ bgt lbl_8039482C /* 803947EC 0039174C 3C 80 00 01 */ lis r4, 0x0000C350@ha /* 803947F0 00391750 38 04 C3 50 */ addi r0, r4, 0x0000C350@l /* 803947F4 00391754 7C 03 00 00 */ cmpw r3, r0 /* 803947F8 00391758 40 81 00 1C */ ble lbl_80394814 /* 803947FC 0039175C C8 22 D4 D0 */ lfd f1, lbl_805AF1F0@sda21(r2) /* 80394800 00391760 C8 41 00 08 */ lfd f2, 8(r1) /* 80394804 00391764 4B FF FB C5 */ bl copysign /* 80394808 00391768 C8 02 D4 D0 */ lfd f0, lbl_805AF1F0@sda21(r2) /* 8039480C 0039176C FC 20 00 72 */ fmul f1, f0, f1 /* 80394810 00391770 48 00 00 3C */ b lbl_8039484C lbl_80394814: /* 80394814 00391774 C8 22 D4 C8 */ lfd f1, lbl_805AF1E8@sda21(r2) /* 80394818 00391778 C8 41 00 08 */ lfd f2, 8(r1) /* 8039481C 0039177C 4B FF FB AD */ bl copysign /* 80394820 00391780 C8 02 D4 C8 */ lfd f0, lbl_805AF1E8@sda21(r2) /* 80394824 00391784 FC 20 00 72 */ fmul f1, f0, f1 /* 80394828 00391788 48 00 00 24 */ b lbl_8039484C lbl_8039482C: /* 8039482C 0039178C 38 04 00 36 */ addi r0, r4, 0x36 /* 80394830 00391790 54 A3 03 00 */ rlwinm r3, r5, 0, 0xc, 0 /* 80394834 00391794 54 00 A0 16 */ slwi r0, r0, 0x14 /* 80394838 00391798 C8 22 D4 D8 */ lfd f1, lbl_805AF1F8@sda21(r2) /* 8039483C 0039179C 7C 60 03 78 */ or r0, r3, r0 /* 80394840 003917A0 90 01 00 08 */ stw r0, 8(r1) /* 80394844 003917A4 C8 01 00 08 */ lfd f0, 8(r1) /* 80394848 003917A8 FC 21 00 32 */ fmul f1, f1, f0 lbl_8039484C: /* 8039484C 003917AC 80 01 00 24 */ lwz r0, 0x24(r1) /* 80394850 003917B0 7C 08 03 A6 */ mtlr r0 /* 80394854 003917B4 38 21 00 20 */ addi r1, r1, 0x20 /* 80394858 003917B8 4E 80 00 20 */ blr