.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global ldexp ldexp: /* 801D4318 001CFF78 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801D431C 001CFF7C 7C 08 02 A6 */ mflr r0 /* 801D4320 001CFF80 90 01 00 24 */ stw r0, 0x24(r1) /* 801D4324 001CFF84 DB E1 00 18 */ stfd f31, 0x18(r1) /* 801D4328 001CFF88 FF E0 08 90 */ fmr f31, f1 /* 801D432C 001CFF8C 93 E1 00 14 */ stw r31, 0x14(r1) /* 801D4330 001CFF90 7C 7F 1B 78 */ mr r31, r3 /* 801D4334 001CFF94 D8 21 00 08 */ stfd f1, 8(r1) /* 801D4338 001CFF98 4B FF 63 F9 */ bl __fpclassifyd /* 801D433C 001CFF9C 2C 03 00 02 */ cmpwi r3, 2 /* 801D4340 001CFFA0 40 81 00 10 */ ble lbl_801D4350 /* 801D4344 001CFFA4 C8 02 95 A0 */ lfd f0, lbl_80641BA0-_SDA2_BASE_(r2) /* 801D4348 001CFFA8 FC 00 F8 00 */ fcmpu cr0, f0, f31 /* 801D434C 001CFFAC 40 82 00 0C */ bne lbl_801D4358 lbl_801D4350: /* 801D4350 001CFFB0 FC 20 F8 90 */ fmr f1, f31 /* 801D4354 001CFFB4 48 00 01 18 */ b lbl_801D446C lbl_801D4358: /* 801D4358 001CFFB8 80 A1 00 08 */ lwz r5, 8(r1) /* 801D435C 001CFFBC 80 61 00 0C */ lwz r3, 0xc(r1) /* 801D4360 001CFFC0 54 A4 65 7F */ rlwinm. r4, r5, 0xc, 0x15, 0x1f /* 801D4364 001CFFC4 40 82 00 4C */ bne lbl_801D43B0 /* 801D4368 001CFFC8 54 A0 00 7E */ clrlwi r0, r5, 1 /* 801D436C 001CFFCC 7C 60 03 79 */ or. r0, r3, r0 /* 801D4370 001CFFD0 40 82 00 0C */ bne lbl_801D437C /* 801D4374 001CFFD4 FC 20 F8 90 */ fmr f1, f31 /* 801D4378 001CFFD8 48 00 00 F4 */ b lbl_801D446C lbl_801D437C: /* 801D437C 001CFFDC C8 02 95 A8 */ lfd f0, lbl_80641BA8-_SDA2_BASE_(r2) /* 801D4380 001CFFE0 3C 60 FF FF */ lis r3, 0xFFFF3CB0@ha /* 801D4384 001CFFE4 38 03 3C B0 */ addi r0, r3, 0xFFFF3CB0@l /* 801D4388 001CFFE8 FF FF 00 32 */ fmul f31, f31, f0 /* 801D438C 001CFFEC 7C 1F 00 00 */ cmpw r31, r0 /* 801D4390 001CFFF0 DB E1 00 08 */ stfd f31, 8(r1) /* 801D4394 001CFFF4 80 A1 00 08 */ lwz r5, 8(r1) /* 801D4398 001CFFF8 54 A3 65 7E */ rlwinm r3, r5, 0xc, 0x15, 0x1f /* 801D439C 001CFFFC 38 83 FF CA */ addi r4, r3, -54 /* 801D43A0 001D0000 40 80 00 10 */ bge lbl_801D43B0 /* 801D43A4 001D0004 C8 02 95 B0 */ lfd f0, lbl_80641BB0-_SDA2_BASE_(r2) /* 801D43A8 001D0008 FC 20 07 F2 */ fmul f1, f0, f31 /* 801D43AC 001D000C 48 00 00 C0 */ b lbl_801D446C lbl_801D43B0: /* 801D43B0 001D0010 2C 04 07 FF */ cmpwi r4, 0x7ff /* 801D43B4 001D0014 40 82 00 0C */ bne lbl_801D43C0 /* 801D43B8 001D0018 FC 3F F8 2A */ fadd f1, f31, f31 /* 801D43BC 001D001C 48 00 00 B0 */ b lbl_801D446C lbl_801D43C0: /* 801D43C0 001D0020 7C 84 FA 14 */ add r4, r4, r31 /* 801D43C4 001D0024 2C 04 07 FE */ cmpwi r4, 0x7fe /* 801D43C8 001D0028 40 81 00 1C */ ble lbl_801D43E4 /* 801D43CC 001D002C FC 40 F8 90 */ fmr f2, f31 /* 801D43D0 001D0030 C8 22 95 B8 */ lfd f1, lbl_80641BB8-_SDA2_BASE_(r2) /* 801D43D4 001D0034 4B FF FC 79 */ bl copysign /* 801D43D8 001D0038 C8 02 95 B8 */ lfd f0, lbl_80641BB8-_SDA2_BASE_(r2) /* 801D43DC 001D003C FC 20 00 72 */ fmul f1, f0, f1 /* 801D43E0 001D0040 48 00 00 8C */ b lbl_801D446C lbl_801D43E4: /* 801D43E4 001D0044 2C 04 00 00 */ cmpwi r4, 0 /* 801D43E8 001D0048 40 81 00 1C */ ble lbl_801D4404 /* 801D43EC 001D004C 54 A3 03 00 */ rlwinm r3, r5, 0, 0xc, 0 /* 801D43F0 001D0050 54 80 A0 16 */ slwi r0, r4, 0x14 /* 801D43F4 001D0054 7C 60 03 78 */ or r0, r3, r0 /* 801D43F8 001D0058 90 01 00 08 */ stw r0, 8(r1) /* 801D43FC 001D005C C8 21 00 08 */ lfd f1, 8(r1) /* 801D4400 001D0060 48 00 00 6C */ b lbl_801D446C lbl_801D4404: /* 801D4404 001D0064 2C 04 FF CA */ cmpwi r4, -54 /* 801D4408 001D0068 41 81 00 44 */ bgt lbl_801D444C /* 801D440C 001D006C 3C 60 00 01 */ lis r3, 0x0000C350@ha /* 801D4410 001D0070 38 03 C3 50 */ addi r0, r3, 0x0000C350@l /* 801D4414 001D0074 7C 1F 00 00 */ cmpw r31, r0 /* 801D4418 001D0078 40 81 00 1C */ ble lbl_801D4434 /* 801D441C 001D007C FC 40 F8 90 */ fmr f2, f31 /* 801D4420 001D0080 C8 22 95 B8 */ lfd f1, lbl_80641BB8-_SDA2_BASE_(r2) /* 801D4424 001D0084 4B FF FC 29 */ bl copysign /* 801D4428 001D0088 C8 02 95 B8 */ lfd f0, lbl_80641BB8-_SDA2_BASE_(r2) /* 801D442C 001D008C FC 20 00 72 */ fmul f1, f0, f1 /* 801D4430 001D0090 48 00 00 3C */ b lbl_801D446C lbl_801D4434: /* 801D4434 001D0094 FC 40 F8 90 */ fmr f2, f31 /* 801D4438 001D0098 C8 22 95 B0 */ lfd f1, lbl_80641BB0-_SDA2_BASE_(r2) /* 801D443C 001D009C 4B FF FC 11 */ bl copysign /* 801D4440 001D00A0 C8 02 95 B0 */ lfd f0, lbl_80641BB0-_SDA2_BASE_(r2) /* 801D4444 001D00A4 FC 20 00 72 */ fmul f1, f0, f1 /* 801D4448 001D00A8 48 00 00 24 */ b lbl_801D446C lbl_801D444C: /* 801D444C 001D00AC 38 04 00 36 */ addi r0, r4, 0x36 /* 801D4450 001D00B0 54 A3 03 00 */ rlwinm r3, r5, 0, 0xc, 0 /* 801D4454 001D00B4 54 00 A0 16 */ slwi r0, r0, 0x14 /* 801D4458 001D00B8 C8 22 95 C0 */ lfd f1, lbl_80641BC0-_SDA2_BASE_(r2) /* 801D445C 001D00BC 7C 60 03 78 */ or r0, r3, r0 /* 801D4460 001D00C0 90 01 00 08 */ stw r0, 8(r1) /* 801D4464 001D00C4 C8 01 00 08 */ lfd f0, 8(r1) /* 801D4468 001D00C8 FC 21 00 32 */ fmul f1, f1, f0 lbl_801D446C: /* 801D446C 001D00CC 80 01 00 24 */ lwz r0, 0x24(r1) /* 801D4470 001D00D0 CB E1 00 18 */ lfd f31, 0x18(r1) /* 801D4474 001D00D4 83 E1 00 14 */ lwz r31, 0x14(r1) /* 801D4478 001D00D8 7C 08 03 A6 */ mtlr r0 /* 801D447C 001D00DC 38 21 00 20 */ addi r1, r1, 0x20 /* 801D4480 001D00E0 4E 80 00 20 */ blr