.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global __ieee754_fmod __ieee754_fmod: /* 801D13C8 001CD028 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801D13CC 001CD02C D8 41 00 10 */ stfd f2, 0x10(r1) /* 801D13D0 001CD030 D8 21 00 08 */ stfd f1, 8(r1) /* 801D13D4 001CD034 80 01 00 10 */ lwz r0, 0x10(r1) /* 801D13D8 001CD038 80 E1 00 08 */ lwz r7, 8(r1) /* 801D13DC 001CD03C 80 C1 00 14 */ lwz r6, 0x14(r1) /* 801D13E0 001CD040 54 00 00 7E */ clrlwi r0, r0, 1 /* 801D13E4 001CD044 54 E4 00 00 */ rlwinm r4, r7, 0, 0, 0 /* 801D13E8 001CD048 80 A1 00 0C */ lwz r5, 0xc(r1) /* 801D13EC 001CD04C 7C 03 33 79 */ or. r3, r0, r6 /* 801D13F0 001CD050 7C E8 22 78 */ xor r8, r7, r4 /* 801D13F4 001CD054 41 82 00 28 */ beq lbl_801D141C /* 801D13F8 001CD058 3C E0 7F F0 */ lis r7, 0x7ff0 /* 801D13FC 001CD05C 7C 08 38 00 */ cmpw r8, r7 /* 801D1400 001CD060 40 80 00 1C */ bge lbl_801D141C /* 801D1404 001CD064 7C 66 00 D0 */ neg r3, r6 /* 801D1408 001CD068 7C C3 1B 78 */ or r3, r6, r3 /* 801D140C 001CD06C 54 63 0F FE */ srwi r3, r3, 0x1f /* 801D1410 001CD070 7C 03 1B 78 */ or r3, r0, r3 /* 801D1414 001CD074 7C 03 38 40 */ cmplw r3, r7 /* 801D1418 001CD078 40 81 00 10 */ ble lbl_801D1428 lbl_801D141C: /* 801D141C 001CD07C FC 01 00 B2 */ fmul f0, f1, f2 /* 801D1420 001CD080 FC 20 00 24 */ fdiv f1, f0, f0 /* 801D1424 001CD084 48 00 02 CC */ b lbl_801D16F0 lbl_801D1428: /* 801D1428 001CD088 7C 08 00 00 */ cmpw r8, r0 /* 801D142C 001CD08C 41 81 00 2C */ bgt lbl_801D1458 /* 801D1430 001CD090 41 80 02 C0 */ blt lbl_801D16F0 /* 801D1434 001CD094 7C 05 30 40 */ cmplw r5, r6 /* 801D1438 001CD098 40 80 00 08 */ bge lbl_801D1440 /* 801D143C 001CD09C 48 00 02 B4 */ b lbl_801D16F0 lbl_801D1440: /* 801D1440 001CD0A0 40 82 00 18 */ bne lbl_801D1458 /* 801D1444 001CD0A4 3C 60 80 40 */ lis r3, lbl_803FD328@ha /* 801D1448 001CD0A8 54 80 27 38 */ rlwinm r0, r4, 4, 0x1c, 0x1c /* 801D144C 001CD0AC 38 63 D3 28 */ addi r3, r3, lbl_803FD328@l /* 801D1450 001CD0B0 7C 23 04 AE */ lfdx f1, r3, r0 /* 801D1454 001CD0B4 48 00 02 9C */ b lbl_801D16F0 lbl_801D1458: /* 801D1458 001CD0B8 3C 60 00 10 */ lis r3, 0x10 /* 801D145C 001CD0BC 7C 08 18 00 */ cmpw r8, r3 /* 801D1460 001CD0C0 40 80 00 4C */ bge lbl_801D14AC /* 801D1464 001CD0C4 2C 08 00 00 */ cmpwi r8, 0 /* 801D1468 001CD0C8 40 82 00 24 */ bne lbl_801D148C /* 801D146C 001CD0CC 7C A3 2B 78 */ mr r3, r5 /* 801D1470 001CD0D0 39 60 FB ED */ li r11, -1043 /* 801D1474 001CD0D4 48 00 00 0C */ b lbl_801D1480 lbl_801D1478: /* 801D1478 001CD0D8 54 63 08 3C */ slwi r3, r3, 1 /* 801D147C 001CD0DC 39 6B FF FF */ addi r11, r11, -1 lbl_801D1480: /* 801D1480 001CD0E0 2C 03 00 00 */ cmpwi r3, 0 /* 801D1484 001CD0E4 41 81 FF F4 */ bgt lbl_801D1478 /* 801D1488 001CD0E8 48 00 00 2C */ b lbl_801D14B4 lbl_801D148C: /* 801D148C 001CD0EC 55 03 58 28 */ slwi r3, r8, 0xb /* 801D1490 001CD0F0 39 60 FC 02 */ li r11, -1022 /* 801D1494 001CD0F4 48 00 00 0C */ b lbl_801D14A0 lbl_801D1498: /* 801D1498 001CD0F8 54 63 08 3C */ slwi r3, r3, 1 /* 801D149C 001CD0FC 39 6B FF FF */ addi r11, r11, -1 lbl_801D14A0: /* 801D14A0 001CD100 2C 03 00 00 */ cmpwi r3, 0 /* 801D14A4 001CD104 41 81 FF F4 */ bgt lbl_801D1498 /* 801D14A8 001CD108 48 00 00 0C */ b lbl_801D14B4 lbl_801D14AC: /* 801D14AC 001CD10C 7D 03 A6 70 */ srawi r3, r8, 0x14 /* 801D14B0 001CD110 39 63 FC 01 */ addi r11, r3, -1023 lbl_801D14B4: /* 801D14B4 001CD114 3C 60 00 10 */ lis r3, 0x10 /* 801D14B8 001CD118 7C 00 18 00 */ cmpw r0, r3 /* 801D14BC 001CD11C 40 80 00 4C */ bge lbl_801D1508 /* 801D14C0 001CD120 2C 00 00 00 */ cmpwi r0, 0 /* 801D14C4 001CD124 40 82 00 24 */ bne lbl_801D14E8 /* 801D14C8 001CD128 7C C7 33 78 */ mr r7, r6 /* 801D14CC 001CD12C 38 60 FB ED */ li r3, -1043 /* 801D14D0 001CD130 48 00 00 0C */ b lbl_801D14DC lbl_801D14D4: /* 801D14D4 001CD134 54 E7 08 3C */ slwi r7, r7, 1 /* 801D14D8 001CD138 38 63 FF FF */ addi r3, r3, -1 lbl_801D14DC: /* 801D14DC 001CD13C 2C 07 00 00 */ cmpwi r7, 0 /* 801D14E0 001CD140 41 81 FF F4 */ bgt lbl_801D14D4 /* 801D14E4 001CD144 48 00 00 2C */ b lbl_801D1510 lbl_801D14E8: /* 801D14E8 001CD148 54 07 58 28 */ slwi r7, r0, 0xb /* 801D14EC 001CD14C 38 60 FC 02 */ li r3, -1022 /* 801D14F0 001CD150 48 00 00 0C */ b lbl_801D14FC lbl_801D14F4: /* 801D14F4 001CD154 54 E7 08 3C */ slwi r7, r7, 1 /* 801D14F8 001CD158 38 63 FF FF */ addi r3, r3, -1 lbl_801D14FC: /* 801D14FC 001CD15C 2C 07 00 00 */ cmpwi r7, 0 /* 801D1500 001CD160 41 81 FF F4 */ bgt lbl_801D14F4 /* 801D1504 001CD164 48 00 00 0C */ b lbl_801D1510 lbl_801D1508: /* 801D1508 001CD168 7C 03 A6 70 */ srawi r3, r0, 0x14 /* 801D150C 001CD16C 38 63 FC 01 */ addi r3, r3, -1023 lbl_801D1510: /* 801D1510 001CD170 2C 0B FC 02 */ cmpwi r11, -1022 /* 801D1514 001CD174 41 80 00 10 */ blt lbl_801D1524 /* 801D1518 001CD178 55 07 03 3E */ clrlwi r7, r8, 0xc /* 801D151C 001CD17C 64 E9 00 10 */ oris r9, r7, 0x10 /* 801D1520 001CD180 48 00 00 34 */ b lbl_801D1554 lbl_801D1524: /* 801D1524 001CD184 21 2B FC 02 */ subfic r9, r11, -1022 /* 801D1528 001CD188 2C 09 00 1F */ cmpwi r9, 0x1f /* 801D152C 001CD18C 41 81 00 1C */ bgt lbl_801D1548 /* 801D1530 001CD190 20 E9 00 20 */ subfic r7, r9, 0x20 /* 801D1534 001CD194 7D 08 48 30 */ slw r8, r8, r9 /* 801D1538 001CD198 7C A7 3C 30 */ srw r7, r5, r7 /* 801D153C 001CD19C 7C A5 48 30 */ slw r5, r5, r9 /* 801D1540 001CD1A0 7D 09 3B 78 */ or r9, r8, r7 /* 801D1544 001CD1A4 48 00 00 10 */ b lbl_801D1554 lbl_801D1548: /* 801D1548 001CD1A8 38 E9 FF E0 */ addi r7, r9, -32 /* 801D154C 001CD1AC 7C A9 38 30 */ slw r9, r5, r7 /* 801D1550 001CD1B0 38 A0 00 00 */ li r5, 0 lbl_801D1554: /* 801D1554 001CD1B4 2C 03 FC 02 */ cmpwi r3, -1022 /* 801D1558 001CD1B8 41 80 00 10 */ blt lbl_801D1568 /* 801D155C 001CD1BC 54 00 03 3E */ clrlwi r0, r0, 0xc /* 801D1560 001CD1C0 64 08 00 10 */ oris r8, r0, 0x10 /* 801D1564 001CD1C4 48 00 00 34 */ b lbl_801D1598 lbl_801D1568: /* 801D1568 001CD1C8 21 43 FC 02 */ subfic r10, r3, -1022 /* 801D156C 001CD1CC 2C 0A 00 1F */ cmpwi r10, 0x1f /* 801D1570 001CD1D0 41 81 00 1C */ bgt lbl_801D158C /* 801D1574 001CD1D4 20 EA 00 20 */ subfic r7, r10, 0x20 /* 801D1578 001CD1D8 7C 08 50 30 */ slw r8, r0, r10 /* 801D157C 001CD1DC 7C C0 3C 30 */ srw r0, r6, r7 /* 801D1580 001CD1E0 7C C6 50 30 */ slw r6, r6, r10 /* 801D1584 001CD1E4 7D 08 03 78 */ or r8, r8, r0 /* 801D1588 001CD1E8 48 00 00 10 */ b lbl_801D1598 lbl_801D158C: /* 801D158C 001CD1EC 38 0A FF E0 */ addi r0, r10, -32 /* 801D1590 001CD1F0 7C C8 00 30 */ slw r8, r6, r0 /* 801D1594 001CD1F4 38 C0 00 00 */ li r6, 0 lbl_801D1598: /* 801D1598 001CD1F8 7C 03 58 51 */ subf. r0, r3, r11 /* 801D159C 001CD1FC 7C 09 03 A6 */ mtctr r0 /* 801D15A0 001CD200 41 82 00 64 */ beq lbl_801D1604 lbl_801D15A4: /* 801D15A4 001CD204 7C 05 30 40 */ cmplw r5, r6 /* 801D15A8 001CD208 7C E8 48 50 */ subf r7, r8, r9 /* 801D15AC 001CD20C 7D 46 28 50 */ subf r10, r6, r5 /* 801D15B0 001CD210 40 80 00 08 */ bge lbl_801D15B8 /* 801D15B4 001CD214 38 E7 FF FF */ addi r7, r7, -1 lbl_801D15B8: /* 801D15B8 001CD218 2C 07 00 00 */ cmpwi r7, 0 /* 801D15BC 001CD21C 40 80 00 18 */ bge lbl_801D15D4 /* 801D15C0 001CD220 54 A7 0F FE */ srwi r7, r5, 0x1f /* 801D15C4 001CD224 55 20 08 3C */ slwi r0, r9, 1 /* 801D15C8 001CD228 7D 27 02 14 */ add r9, r7, r0 /* 801D15CC 001CD22C 7C A5 2A 14 */ add r5, r5, r5 /* 801D15D0 001CD230 48 00 00 30 */ b lbl_801D1600 lbl_801D15D4: /* 801D15D4 001CD234 7C E0 53 79 */ or. r0, r7, r10 /* 801D15D8 001CD238 40 82 00 18 */ bne lbl_801D15F0 /* 801D15DC 001CD23C 3C 60 80 40 */ lis r3, lbl_803FD328@ha /* 801D15E0 001CD240 54 80 27 38 */ rlwinm r0, r4, 4, 0x1c, 0x1c /* 801D15E4 001CD244 38 63 D3 28 */ addi r3, r3, lbl_803FD328@l /* 801D15E8 001CD248 7C 23 04 AE */ lfdx f1, r3, r0 /* 801D15EC 001CD24C 48 00 01 04 */ b lbl_801D16F0 lbl_801D15F0: /* 801D15F0 001CD250 55 45 0F FE */ srwi r5, r10, 0x1f /* 801D15F4 001CD254 54 E0 08 3C */ slwi r0, r7, 1 /* 801D15F8 001CD258 7D 25 02 14 */ add r9, r5, r0 /* 801D15FC 001CD25C 55 45 08 3C */ slwi r5, r10, 1 lbl_801D1600: /* 801D1600 001CD260 42 00 FF A4 */ bdnz lbl_801D15A4 lbl_801D1604: /* 801D1604 001CD264 7C 05 30 40 */ cmplw r5, r6 /* 801D1608 001CD268 7C E8 48 50 */ subf r7, r8, r9 /* 801D160C 001CD26C 7C 06 28 50 */ subf r0, r6, r5 /* 801D1610 001CD270 40 80 00 08 */ bge lbl_801D1618 /* 801D1614 001CD274 38 E7 FF FF */ addi r7, r7, -1 lbl_801D1618: /* 801D1618 001CD278 2C 07 00 00 */ cmpwi r7, 0 /* 801D161C 001CD27C 41 80 00 0C */ blt lbl_801D1628 /* 801D1620 001CD280 7C E9 3B 78 */ mr r9, r7 /* 801D1624 001CD284 7C 05 03 78 */ mr r5, r0 lbl_801D1628: /* 801D1628 001CD288 7D 20 2B 79 */ or. r0, r9, r5 /* 801D162C 001CD28C 40 82 00 18 */ bne lbl_801D1644 /* 801D1630 001CD290 3C 60 80 40 */ lis r3, lbl_803FD328@ha /* 801D1634 001CD294 54 80 27 38 */ rlwinm r0, r4, 4, 0x1c, 0x1c /* 801D1638 001CD298 38 63 D3 28 */ addi r3, r3, lbl_803FD328@l /* 801D163C 001CD29C 7C 23 04 AE */ lfdx f1, r3, r0 /* 801D1640 001CD2A0 48 00 00 B0 */ b lbl_801D16F0 lbl_801D1644: /* 801D1644 001CD2A4 3C 00 00 10 */ lis r0, 0x10 /* 801D1648 001CD2A8 48 00 00 18 */ b lbl_801D1660 lbl_801D164C: /* 801D164C 001CD2AC 54 A7 0F FE */ srwi r7, r5, 0x1f /* 801D1650 001CD2B0 55 26 08 3C */ slwi r6, r9, 1 /* 801D1654 001CD2B4 7D 27 32 14 */ add r9, r7, r6 /* 801D1658 001CD2B8 7C A5 2A 14 */ add r5, r5, r5 /* 801D165C 001CD2BC 38 63 FF FF */ addi r3, r3, -1 lbl_801D1660: /* 801D1660 001CD2C0 7C 09 00 00 */ cmpw r9, r0 /* 801D1664 001CD2C4 41 80 FF E8 */ blt lbl_801D164C /* 801D1668 001CD2C8 2C 03 FC 02 */ cmpwi r3, -1022 /* 801D166C 001CD2CC 41 80 00 24 */ blt lbl_801D1690 /* 801D1670 001CD2D0 38 03 03 FF */ addi r0, r3, 0x3ff /* 801D1674 001CD2D4 3C 69 FF F0 */ addis r3, r9, 0xfff0 /* 801D1678 001CD2D8 54 00 A0 16 */ slwi r0, r0, 0x14 /* 801D167C 001CD2DC 90 A1 00 0C */ stw r5, 0xc(r1) /* 801D1680 001CD2E0 7C 60 03 78 */ or r0, r3, r0 /* 801D1684 001CD2E4 7C 00 23 78 */ or r0, r0, r4 /* 801D1688 001CD2E8 90 01 00 08 */ stw r0, 8(r1) /* 801D168C 001CD2EC 48 00 00 60 */ b lbl_801D16EC lbl_801D1690: /* 801D1690 001CD2F0 20 C3 FC 02 */ subfic r6, r3, -1022 /* 801D1694 001CD2F4 2C 06 00 14 */ cmpwi r6, 0x14 /* 801D1698 001CD2F8 41 81 00 1C */ bgt lbl_801D16B4 /* 801D169C 001CD2FC 20 06 00 20 */ subfic r0, r6, 0x20 /* 801D16A0 001CD300 7C A3 34 30 */ srw r3, r5, r6 /* 801D16A4 001CD304 7D 20 00 30 */ slw r0, r9, r0 /* 801D16A8 001CD308 7D 29 36 30 */ sraw r9, r9, r6 /* 801D16AC 001CD30C 7C 63 03 78 */ or r3, r3, r0 /* 801D16B0 001CD310 48 00 00 30 */ b lbl_801D16E0 lbl_801D16B4: /* 801D16B4 001CD314 2C 06 00 1F */ cmpwi r6, 0x1f /* 801D16B8 001CD318 41 81 00 1C */ bgt lbl_801D16D4 /* 801D16BC 001CD31C 20 66 00 20 */ subfic r3, r6, 0x20 /* 801D16C0 001CD320 7C A0 34 30 */ srw r0, r5, r6 /* 801D16C4 001CD324 7D 23 18 30 */ slw r3, r9, r3 /* 801D16C8 001CD328 7C 89 23 78 */ mr r9, r4 /* 801D16CC 001CD32C 7C 63 03 78 */ or r3, r3, r0 /* 801D16D0 001CD330 48 00 00 10 */ b lbl_801D16E0 lbl_801D16D4: /* 801D16D4 001CD334 38 06 FF E0 */ addi r0, r6, -32 /* 801D16D8 001CD338 7D 23 06 30 */ sraw r3, r9, r0 /* 801D16DC 001CD33C 7C 89 23 78 */ mr r9, r4 lbl_801D16E0: /* 801D16E0 001CD340 7D 20 23 78 */ or r0, r9, r4 /* 801D16E4 001CD344 90 61 00 0C */ stw r3, 0xc(r1) /* 801D16E8 001CD348 90 01 00 08 */ stw r0, 8(r1) lbl_801D16EC: /* 801D16EC 001CD34C C8 21 00 08 */ lfd f1, 8(r1) lbl_801D16F0: /* 801D16F0 001CD350 38 21 00 20 */ addi r1, r1, 0x20 /* 801D16F4 001CD354 4E 80 00 20 */ blr