.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global __ieee754_rem_pio2 __ieee754_rem_pio2: /* 801D1F40 001CDBA0 94 21 FF A0 */ stwu r1, -0x60(r1) /* 801D1F44 001CDBA4 7C 08 02 A6 */ mflr r0 /* 801D1F48 001CDBA8 3C 80 3F E9 */ lis r4, 0x3FE921FB@ha /* 801D1F4C 001CDBAC 90 01 00 64 */ stw r0, 0x64(r1) /* 801D1F50 001CDBB0 38 04 21 FB */ addi r0, r4, 0x3FE921FB@l /* 801D1F54 001CDBB4 93 E1 00 5C */ stw r31, 0x5c(r1) /* 801D1F58 001CDBB8 D8 21 00 08 */ stfd f1, 8(r1) /* 801D1F5C 001CDBBC 83 E1 00 08 */ lwz r31, 8(r1) /* 801D1F60 001CDBC0 93 C1 00 58 */ stw r30, 0x58(r1) /* 801D1F64 001CDBC4 7C 7E 1B 78 */ mr r30, r3 /* 801D1F68 001CDBC8 57 E6 00 7E */ clrlwi r6, r31, 1 /* 801D1F6C 001CDBCC 7C 06 00 00 */ cmpw r6, r0 /* 801D1F70 001CDBD0 41 81 00 18 */ bgt lbl_801D1F88 /* 801D1F74 001CDBD4 C8 02 94 08 */ lfd f0, lbl_80641A08-_SDA2_BASE_(r2) /* 801D1F78 001CDBD8 D8 23 00 00 */ stfd f1, 0(r3) /* 801D1F7C 001CDBDC D8 03 00 08 */ stfd f0, 8(r3) /* 801D1F80 001CDBE0 38 60 00 00 */ li r3, 0 /* 801D1F84 001CDBE4 48 00 03 3C */ b lbl_801D22C0 lbl_801D1F88: /* 801D1F88 001CDBE8 3C 80 40 03 */ lis r4, 0x4002D97C@ha /* 801D1F8C 001CDBEC 38 04 D9 7C */ addi r0, r4, 0x4002D97C@l /* 801D1F90 001CDBF0 7C 06 00 00 */ cmpw r6, r0 /* 801D1F94 001CDBF4 40 80 00 CC */ bge lbl_801D2060 /* 801D1F98 001CDBF8 2C 1F 00 00 */ cmpwi r31, 0 /* 801D1F9C 001CDBFC 40 81 00 64 */ ble lbl_801D2000 /* 801D1FA0 001CDC00 C8 02 94 10 */ lfd f0, lbl_80641A10-_SDA2_BASE_(r2) /* 801D1FA4 001CDC04 3C 06 C0 07 */ addis r0, r6, 0xc007 /* 801D1FA8 001CDC08 28 00 21 FB */ cmplwi r0, 0x21fb /* 801D1FAC 001CDC0C FC 61 00 28 */ fsub f3, f1, f0 /* 801D1FB0 001CDC10 D8 61 00 10 */ stfd f3, 0x10(r1) /* 801D1FB4 001CDC14 41 82 00 20 */ beq lbl_801D1FD4 /* 801D1FB8 001CDC18 C8 42 94 18 */ lfd f2, lbl_80641A18-_SDA2_BASE_(r2) /* 801D1FBC 001CDC1C FC 23 10 28 */ fsub f1, f3, f2 /* 801D1FC0 001CDC20 FC 03 08 28 */ fsub f0, f3, f1 /* 801D1FC4 001CDC24 D8 23 00 00 */ stfd f1, 0(r3) /* 801D1FC8 001CDC28 FC 00 10 28 */ fsub f0, f0, f2 /* 801D1FCC 001CDC2C D8 03 00 08 */ stfd f0, 8(r3) /* 801D1FD0 001CDC30 48 00 00 28 */ b lbl_801D1FF8 lbl_801D1FD4: /* 801D1FD4 001CDC34 C8 02 94 20 */ lfd f0, lbl_80641A20-_SDA2_BASE_(r2) /* 801D1FD8 001CDC38 C8 42 94 28 */ lfd f2, lbl_80641A28-_SDA2_BASE_(r2) /* 801D1FDC 001CDC3C FC 03 00 28 */ fsub f0, f3, f0 /* 801D1FE0 001CDC40 FC 20 10 28 */ fsub f1, f0, f2 /* 801D1FE4 001CDC44 D8 01 00 10 */ stfd f0, 0x10(r1) /* 801D1FE8 001CDC48 FC 00 08 28 */ fsub f0, f0, f1 /* 801D1FEC 001CDC4C D8 23 00 00 */ stfd f1, 0(r3) /* 801D1FF0 001CDC50 FC 00 10 28 */ fsub f0, f0, f2 /* 801D1FF4 001CDC54 D8 03 00 08 */ stfd f0, 8(r3) lbl_801D1FF8: /* 801D1FF8 001CDC58 38 60 00 01 */ li r3, 1 /* 801D1FFC 001CDC5C 48 00 02 C4 */ b lbl_801D22C0 lbl_801D2000: /* 801D2000 001CDC60 C8 02 94 10 */ lfd f0, lbl_80641A10-_SDA2_BASE_(r2) /* 801D2004 001CDC64 3C 06 C0 07 */ addis r0, r6, 0xc007 /* 801D2008 001CDC68 28 00 21 FB */ cmplwi r0, 0x21fb /* 801D200C 001CDC6C FC 60 08 2A */ fadd f3, f0, f1 /* 801D2010 001CDC70 D8 61 00 10 */ stfd f3, 0x10(r1) /* 801D2014 001CDC74 41 82 00 20 */ beq lbl_801D2034 /* 801D2018 001CDC78 C8 42 94 18 */ lfd f2, lbl_80641A18-_SDA2_BASE_(r2) /* 801D201C 001CDC7C FC 22 18 2A */ fadd f1, f2, f3 /* 801D2020 001CDC80 FC 03 08 28 */ fsub f0, f3, f1 /* 801D2024 001CDC84 D8 23 00 00 */ stfd f1, 0(r3) /* 801D2028 001CDC88 FC 02 00 2A */ fadd f0, f2, f0 /* 801D202C 001CDC8C D8 03 00 08 */ stfd f0, 8(r3) /* 801D2030 001CDC90 48 00 00 28 */ b lbl_801D2058 lbl_801D2034: /* 801D2034 001CDC94 C8 02 94 20 */ lfd f0, lbl_80641A20-_SDA2_BASE_(r2) /* 801D2038 001CDC98 C8 42 94 28 */ lfd f2, lbl_80641A28-_SDA2_BASE_(r2) /* 801D203C 001CDC9C FC 03 00 2A */ fadd f0, f3, f0 /* 801D2040 001CDCA0 FC 22 00 2A */ fadd f1, f2, f0 /* 801D2044 001CDCA4 D8 01 00 10 */ stfd f0, 0x10(r1) /* 801D2048 001CDCA8 FC 00 08 28 */ fsub f0, f0, f1 /* 801D204C 001CDCAC D8 23 00 00 */ stfd f1, 0(r3) /* 801D2050 001CDCB0 FC 02 00 2A */ fadd f0, f2, f0 /* 801D2054 001CDCB4 D8 03 00 08 */ stfd f0, 8(r3) lbl_801D2058: /* 801D2058 001CDCB8 38 60 FF FF */ li r3, -1 /* 801D205C 001CDCBC 48 00 02 64 */ b lbl_801D22C0 lbl_801D2060: /* 801D2060 001CDCC0 3C 80 41 39 */ lis r4, 0x413921FB@ha /* 801D2064 001CDCC4 38 04 21 FB */ addi r0, r4, 0x413921FB@l /* 801D2068 001CDCC8 7C 06 00 00 */ cmpw r6, r0 /* 801D206C 001CDCCC 41 81 01 48 */ bgt lbl_801D21B4 /* 801D2070 001CDCD0 FC A0 0A 10 */ fabs f5, f1 /* 801D2074 001CDCD4 C8 02 94 38 */ lfd f0, lbl_80641A38-_SDA2_BASE_(r2) /* 801D2078 001CDCD8 3C 00 43 30 */ lis r0, 0x4330 /* 801D207C 001CDCDC C8 42 94 30 */ lfd f2, lbl_80641A30-_SDA2_BASE_(r2) /* 801D2080 001CDCE0 90 01 00 38 */ stw r0, 0x38(r1) /* 801D2084 001CDCE4 FC 80 01 72 */ fmul f4, f0, f5 /* 801D2088 001CDCE8 C8 62 94 58 */ lfd f3, lbl_80641A58-_SDA2_BASE_(r2) /* 801D208C 001CDCEC C8 22 94 10 */ lfd f1, lbl_80641A10-_SDA2_BASE_(r2) /* 801D2090 001CDCF0 C8 02 94 18 */ lfd f0, lbl_80641A18-_SDA2_BASE_(r2) /* 801D2094 001CDCF4 FC 42 20 2A */ fadd f2, f2, f4 /* 801D2098 001CDCF8 FC 40 10 1E */ fctiwz f2, f2 /* 801D209C 001CDCFC D8 41 00 30 */ stfd f2, 0x30(r1) /* 801D20A0 001CDD00 80 A1 00 34 */ lwz r5, 0x34(r1) /* 801D20A4 001CDD04 6C A0 80 00 */ xoris r0, r5, 0x8000 /* 801D20A8 001CDD08 2C 05 00 20 */ cmpwi r5, 0x20 /* 801D20AC 001CDD0C 90 01 00 3C */ stw r0, 0x3c(r1) /* 801D20B0 001CDD10 C8 41 00 38 */ lfd f2, 0x38(r1) /* 801D20B4 001CDD14 FC C2 18 28 */ fsub f6, f2, f3 /* 801D20B8 001CDD18 FC 21 01 B2 */ fmul f1, f1, f6 /* 801D20BC 001CDD1C FC 40 01 B2 */ fmul f2, f0, f6 /* 801D20C0 001CDD20 FC 85 08 28 */ fsub f4, f5, f1 /* 801D20C4 001CDD24 40 80 00 2C */ bge lbl_801D20F0 /* 801D20C8 001CDD28 38 05 FF FF */ addi r0, r5, -1 /* 801D20CC 001CDD2C 3C 80 80 40 */ lis r4, lbl_803FD470@ha /* 801D20D0 001CDD30 54 00 10 3A */ slwi r0, r0, 2 /* 801D20D4 001CDD34 38 84 D4 70 */ addi r4, r4, lbl_803FD470@l /* 801D20D8 001CDD38 7C 04 00 2E */ lwzx r0, r4, r0 /* 801D20DC 001CDD3C 7C 06 00 00 */ cmpw r6, r0 /* 801D20E0 001CDD40 41 82 00 10 */ beq lbl_801D20F0 /* 801D20E4 001CDD44 FC 04 10 28 */ fsub f0, f4, f2 /* 801D20E8 001CDD48 D8 03 00 00 */ stfd f0, 0(r3) /* 801D20EC 001CDD4C 48 00 00 90 */ b lbl_801D217C lbl_801D20F0: /* 801D20F0 001CDD50 FC 04 10 28 */ fsub f0, f4, f2 /* 801D20F4 001CDD54 7C C4 A6 70 */ srawi r4, r6, 0x14 /* 801D20F8 001CDD58 D8 03 00 00 */ stfd f0, 0(r3) /* 801D20FC 001CDD5C 80 03 00 00 */ lwz r0, 0(r3) /* 801D2100 001CDD60 54 00 65 7E */ rlwinm r0, r0, 0xc, 0x15, 0x1f /* 801D2104 001CDD64 7C 00 20 50 */ subf r0, r0, r4 /* 801D2108 001CDD68 2C 00 00 10 */ cmpwi r0, 0x10 /* 801D210C 001CDD6C 40 81 00 70 */ ble lbl_801D217C /* 801D2110 001CDD70 C8 22 94 20 */ lfd f1, lbl_80641A20-_SDA2_BASE_(r2) /* 801D2114 001CDD74 FC 40 20 90 */ fmr f2, f4 /* 801D2118 001CDD78 C8 02 94 28 */ lfd f0, lbl_80641A28-_SDA2_BASE_(r2) /* 801D211C 001CDD7C FC 61 01 B2 */ fmul f3, f1, f6 /* 801D2120 001CDD80 FC 20 01 B2 */ fmul f1, f0, f6 /* 801D2124 001CDD84 FC 84 18 28 */ fsub f4, f4, f3 /* 801D2128 001CDD88 FC 02 20 28 */ fsub f0, f2, f4 /* 801D212C 001CDD8C FC 00 18 28 */ fsub f0, f0, f3 /* 801D2130 001CDD90 FC 41 00 28 */ fsub f2, f1, f0 /* 801D2134 001CDD94 FC 04 10 28 */ fsub f0, f4, f2 /* 801D2138 001CDD98 D8 03 00 00 */ stfd f0, 0(r3) /* 801D213C 001CDD9C 80 03 00 00 */ lwz r0, 0(r3) /* 801D2140 001CDDA0 54 00 65 7E */ rlwinm r0, r0, 0xc, 0x15, 0x1f /* 801D2144 001CDDA4 7C 00 20 50 */ subf r0, r0, r4 /* 801D2148 001CDDA8 2C 00 00 31 */ cmpwi r0, 0x31 /* 801D214C 001CDDAC 40 81 00 30 */ ble lbl_801D217C /* 801D2150 001CDDB0 C8 22 94 40 */ lfd f1, lbl_80641A40-_SDA2_BASE_(r2) /* 801D2154 001CDDB4 FC 40 20 90 */ fmr f2, f4 /* 801D2158 001CDDB8 C8 02 94 48 */ lfd f0, lbl_80641A48-_SDA2_BASE_(r2) /* 801D215C 001CDDBC FC 61 01 B2 */ fmul f3, f1, f6 /* 801D2160 001CDDC0 FC 20 01 B2 */ fmul f1, f0, f6 /* 801D2164 001CDDC4 FC 84 18 28 */ fsub f4, f4, f3 /* 801D2168 001CDDC8 FC 02 20 28 */ fsub f0, f2, f4 /* 801D216C 001CDDCC FC 00 18 28 */ fsub f0, f0, f3 /* 801D2170 001CDDD0 FC 41 00 28 */ fsub f2, f1, f0 /* 801D2174 001CDDD4 FC 04 10 28 */ fsub f0, f4, f2 /* 801D2178 001CDDD8 D8 03 00 00 */ stfd f0, 0(r3) lbl_801D217C: /* 801D217C 001CDDDC C8 23 00 00 */ lfd f1, 0(r3) /* 801D2180 001CDDE0 2C 1F 00 00 */ cmpwi r31, 0 /* 801D2184 001CDDE4 FC 04 08 28 */ fsub f0, f4, f1 /* 801D2188 001CDDE8 FC 00 10 28 */ fsub f0, f0, f2 /* 801D218C 001CDDEC D8 03 00 08 */ stfd f0, 8(r3) /* 801D2190 001CDDF0 40 80 00 1C */ bge lbl_801D21AC /* 801D2194 001CDDF4 FC 20 08 50 */ fneg f1, f1 /* 801D2198 001CDDF8 FC 00 00 50 */ fneg f0, f0 /* 801D219C 001CDDFC D8 23 00 00 */ stfd f1, 0(r3) /* 801D21A0 001CDE00 D8 03 00 08 */ stfd f0, 8(r3) /* 801D21A4 001CDE04 7C 65 00 D0 */ neg r3, r5 /* 801D21A8 001CDE08 48 00 01 18 */ b lbl_801D22C0 lbl_801D21AC: /* 801D21AC 001CDE0C 7C A3 2B 78 */ mr r3, r5 /* 801D21B0 001CDE10 48 00 01 10 */ b lbl_801D22C0 lbl_801D21B4: /* 801D21B4 001CDE14 3C 00 7F F0 */ lis r0, 0x7ff0 /* 801D21B8 001CDE18 7C 06 00 00 */ cmpw r6, r0 /* 801D21BC 001CDE1C 41 80 00 18 */ blt lbl_801D21D4 /* 801D21C0 001CDE20 FC 01 08 28 */ fsub f0, f1, f1 /* 801D21C4 001CDE24 D8 03 00 08 */ stfd f0, 8(r3) /* 801D21C8 001CDE28 D8 03 00 00 */ stfd f0, 0(r3) /* 801D21CC 001CDE2C 38 60 00 00 */ li r3, 0 /* 801D21D0 001CDE30 48 00 00 F0 */ b lbl_801D22C0 lbl_801D21D4: /* 801D21D4 001CDE34 7C C3 A6 70 */ srawi r3, r6, 0x14 /* 801D21D8 001CDE38 3C 00 43 30 */ lis r0, 0x4330 /* 801D21DC 001CDE3C 38 A3 FB EA */ addi r5, r3, -1046 /* 801D21E0 001CDE40 80 81 00 0C */ lwz r4, 0xc(r1) /* 801D21E4 001CDE44 54 A3 A0 16 */ slwi r3, r5, 0x14 /* 801D21E8 001CDE48 90 01 00 30 */ stw r0, 0x30(r1) /* 801D21EC 001CDE4C 7C 63 30 50 */ subf r3, r3, r6 /* 801D21F0 001CDE50 C8 A2 94 58 */ lfd f5, lbl_80641A58-_SDA2_BASE_(r2) /* 801D21F4 001CDE54 90 81 00 14 */ stw r4, 0x14(r1) /* 801D21F8 001CDE58 38 81 00 30 */ addi r4, r1, 0x30 /* 801D21FC 001CDE5C C8 82 94 50 */ lfd f4, lbl_80641A50-_SDA2_BASE_(r2) /* 801D2200 001CDE60 38 C0 00 03 */ li r6, 3 /* 801D2204 001CDE64 90 61 00 10 */ stw r3, 0x10(r1) /* 801D2208 001CDE68 C8 22 94 08 */ lfd f1, lbl_80641A08-_SDA2_BASE_(r2) /* 801D220C 001CDE6C C8 61 00 10 */ lfd f3, 0x10(r1) /* 801D2210 001CDE70 90 01 00 48 */ stw r0, 0x48(r1) /* 801D2214 001CDE74 FC 00 18 1E */ fctiwz f0, f3 /* 801D2218 001CDE78 D8 01 00 38 */ stfd f0, 0x38(r1) /* 801D221C 001CDE7C 80 01 00 3C */ lwz r0, 0x3c(r1) /* 801D2220 001CDE80 6C 00 80 00 */ xoris r0, r0, 0x8000 /* 801D2224 001CDE84 90 01 00 34 */ stw r0, 0x34(r1) /* 801D2228 001CDE88 C8 01 00 30 */ lfd f0, 0x30(r1) /* 801D222C 001CDE8C FC 40 28 28 */ fsub f2, f0, f5 /* 801D2230 001CDE90 FC 03 10 28 */ fsub f0, f3, f2 /* 801D2234 001CDE94 D8 41 00 18 */ stfd f2, 0x18(r1) /* 801D2238 001CDE98 FC 64 00 32 */ fmul f3, f4, f0 /* 801D223C 001CDE9C FC 00 18 1E */ fctiwz f0, f3 /* 801D2240 001CDEA0 D8 01 00 40 */ stfd f0, 0x40(r1) /* 801D2244 001CDEA4 80 01 00 44 */ lwz r0, 0x44(r1) /* 801D2248 001CDEA8 6C 00 80 00 */ xoris r0, r0, 0x8000 /* 801D224C 001CDEAC 90 01 00 4C */ stw r0, 0x4c(r1) /* 801D2250 001CDEB0 C8 01 00 48 */ lfd f0, 0x48(r1) /* 801D2254 001CDEB4 FC 40 28 28 */ fsub f2, f0, f5 /* 801D2258 001CDEB8 FC 03 10 28 */ fsub f0, f3, f2 /* 801D225C 001CDEBC D8 41 00 20 */ stfd f2, 0x20(r1) /* 801D2260 001CDEC0 FC 04 00 32 */ fmul f0, f4, f0 /* 801D2264 001CDEC4 D8 01 00 10 */ stfd f0, 0x10(r1) /* 801D2268 001CDEC8 D8 01 00 28 */ stfd f0, 0x28(r1) /* 801D226C 001CDECC 48 00 00 0C */ b lbl_801D2278 lbl_801D2270: /* 801D2270 001CDED0 38 84 FF F8 */ addi r4, r4, -8 /* 801D2274 001CDED4 38 C6 FF FF */ addi r6, r6, -1 lbl_801D2278: /* 801D2278 001CDED8 C8 04 FF F8 */ lfd f0, -8(r4) /* 801D227C 001CDEDC FC 01 00 00 */ fcmpu cr0, f1, f0 /* 801D2280 001CDEE0 41 82 FF F0 */ beq lbl_801D2270 /* 801D2284 001CDEE4 3D 00 80 40 */ lis r8, lbl_803FD368@ha /* 801D2288 001CDEE8 7F C4 F3 78 */ mr r4, r30 /* 801D228C 001CDEEC 38 61 00 18 */ addi r3, r1, 0x18 /* 801D2290 001CDEF0 38 E0 00 02 */ li r7, 2 /* 801D2294 001CDEF4 39 08 D3 68 */ addi r8, r8, lbl_803FD368@l /* 801D2298 001CDEF8 48 00 01 51 */ bl __kernel_rem_pio2 /* 801D229C 001CDEFC 2C 1F 00 00 */ cmpwi r31, 0 /* 801D22A0 001CDF00 40 80 00 20 */ bge lbl_801D22C0 /* 801D22A4 001CDF04 C8 3E 00 00 */ lfd f1, 0(r30) /* 801D22A8 001CDF08 7C 63 00 D0 */ neg r3, r3 /* 801D22AC 001CDF0C C8 1E 00 08 */ lfd f0, 8(r30) /* 801D22B0 001CDF10 FC 20 08 50 */ fneg f1, f1 /* 801D22B4 001CDF14 FC 00 00 50 */ fneg f0, f0 /* 801D22B8 001CDF18 D8 3E 00 00 */ stfd f1, 0(r30) /* 801D22BC 001CDF1C D8 1E 00 08 */ stfd f0, 8(r30) lbl_801D22C0: /* 801D22C0 001CDF20 80 01 00 64 */ lwz r0, 0x64(r1) /* 801D22C4 001CDF24 83 E1 00 5C */ lwz r31, 0x5c(r1) /* 801D22C8 001CDF28 83 C1 00 58 */ lwz r30, 0x58(r1) /* 801D22CC 001CDF2C 7C 08 03 A6 */ mtlr r0 /* 801D22D0 001CDF30 38 21 00 60 */ addi r1, r1, 0x60 /* 801D22D4 001CDF34 4E 80 00 20 */ blr