.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global func_801DD5C8 func_801DD5C8: /* 801DD5C8 001D9228 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801DD5CC 001D922C 80 A3 00 00 */ lwz r5, 0(r3) /* 801DD5D0 001D9230 2C 05 00 00 */ cmpwi r5, 0 /* 801DD5D4 001D9234 41 82 02 20 */ beq lbl_801DD7F4 /* 801DD5D8 001D9238 A0 83 00 06 */ lhz r4, 6(r3) /* 801DD5DC 001D923C 54 80 07 FF */ clrlwi. r0, r4, 0x1f /* 801DD5E0 001D9240 41 82 02 14 */ beq lbl_801DD7F4 /* 801DD5E4 001D9244 54 80 07 39 */ rlwinm. r0, r4, 0, 0x1c, 0x1c /* 801DD5E8 001D9248 41 82 00 08 */ beq lbl_801DD5F0 /* 801DD5EC 001D924C 48 00 02 08 */ b lbl_801DD7F4 lbl_801DD5F0: /* 801DD5F0 001D9250 C0 63 00 08 */ lfs f3, 8(r3) /* 801DD5F4 001D9254 C0 03 00 0C */ lfs f0, 0xc(r3) /* 801DD5F8 001D9258 EC 21 00 F2 */ fmuls f1, f1, f3 /* 801DD5FC 001D925C C0 42 95 E0 */ lfs f2, lbl_80641BE0-_SDA2_BASE_(r2) /* 801DD600 001D9260 EC 20 08 2A */ fadds f1, f0, f1 /* 801DD604 001D9264 FC 01 10 40 */ fcmpo cr0, f1, f2 /* 801DD608 001D9268 D0 23 00 0C */ stfs f1, 0xc(r3) /* 801DD60C 001D926C 40 80 00 F8 */ bge lbl_801DD704 /* 801DD610 001D9270 A0 03 00 04 */ lhz r0, 4(r3) /* 801DD614 001D9274 60 84 00 04 */ ori r4, r4, 4 /* 801DD618 001D9278 B0 83 00 06 */ sth r4, 6(r3) /* 801DD61C 001D927C 2C 00 00 02 */ cmpwi r0, 2 /* 801DD620 001D9280 41 82 00 3C */ beq lbl_801DD65C /* 801DD624 001D9284 40 80 00 C8 */ bge lbl_801DD6EC /* 801DD628 001D9288 2C 00 00 01 */ cmpwi r0, 1 /* 801DD62C 001D928C 40 80 00 20 */ bge lbl_801DD64C /* 801DD630 001D9290 48 00 00 BC */ b lbl_801DD6EC /* 801DD634 001D9294 48 00 00 18 */ b lbl_801DD64C lbl_801DD638: /* 801DD638 001D9298 80 83 00 00 */ lwz r4, 0(r3) /* 801DD63C 001D929C C0 23 00 0C */ lfs f1, 0xc(r3) /* 801DD640 001D92A0 C0 04 00 08 */ lfs f0, 8(r4) /* 801DD644 001D92A4 EC 01 00 2A */ fadds f0, f1, f0 /* 801DD648 001D92A8 D0 03 00 0C */ stfs f0, 0xc(r3) lbl_801DD64C: /* 801DD64C 001D92AC C0 03 00 0C */ lfs f0, 0xc(r3) /* 801DD650 001D92B0 FC 00 10 40 */ fcmpo cr0, f0, f2 /* 801DD654 001D92B4 41 80 FF E4 */ blt lbl_801DD638 /* 801DD658 001D92B8 48 00 01 90 */ b lbl_801DD7E8 lbl_801DD65C: /* 801DD65C 001D92BC FC 00 08 50 */ fneg f0, f1 /* 801DD660 001D92C0 D0 03 00 0C */ stfs f0, 0xc(r3) /* 801DD664 001D92C4 FC 00 00 18 */ frsp f0, f0 /* 801DD668 001D92C8 C0 45 00 08 */ lfs f2, 8(r5) /* 801DD66C 001D92CC FC 00 10 40 */ fcmpo cr0, f0, f2 /* 801DD670 001D92D0 40 81 00 70 */ ble lbl_801DD6E0 /* 801DD674 001D92D4 EC 80 10 24 */ fdivs f4, f0, f2 /* 801DD678 001D92D8 3C 00 43 30 */ lis r0, 0x4330 /* 801DD67C 001D92DC 90 01 00 10 */ stw r0, 0x10(r1) /* 801DD680 001D92E0 C8 22 95 E8 */ lfd f1, lbl_80641BE8-_SDA2_BASE_(r2) /* 801DD684 001D92E4 FC 00 20 1E */ fctiwz f0, f4 /* 801DD688 001D92E8 D8 01 00 08 */ stfd f0, 8(r1) /* 801DD68C 001D92EC 80 A1 00 0C */ lwz r5, 0xc(r1) /* 801DD690 001D92F0 6C A0 80 00 */ xoris r0, r5, 0x8000 /* 801DD694 001D92F4 54 A4 0F FE */ srwi r4, r5, 0x1f /* 801DD698 001D92F8 90 01 00 14 */ stw r0, 0x14(r1) /* 801DD69C 001D92FC 54 A0 07 FE */ clrlwi r0, r5, 0x1f /* 801DD6A0 001D9300 7C 00 22 78 */ xor r0, r0, r4 /* 801DD6A4 001D9304 C8 01 00 10 */ lfd f0, 0x10(r1) /* 801DD6A8 001D9308 7C 04 00 51 */ subf. r0, r4, r0 /* 801DD6AC 001D930C EC 00 08 28 */ fsubs f0, f0, f1 /* 801DD6B0 001D9310 EC 84 00 28 */ fsubs f4, f4, f0 /* 801DD6B4 001D9314 41 82 00 18 */ beq lbl_801DD6CC /* 801DD6B8 001D9318 C0 02 95 E4 */ lfs f0, lbl_80641BE4-_SDA2_BASE_(r2) /* 801DD6BC 001D931C EC 00 20 28 */ fsubs f0, f0, f4 /* 801DD6C0 001D9320 EC 02 00 32 */ fmuls f0, f2, f0 /* 801DD6C4 001D9324 D0 03 00 0C */ stfs f0, 0xc(r3) /* 801DD6C8 001D9328 48 00 01 20 */ b lbl_801DD7E8 lbl_801DD6CC: /* 801DD6CC 001D932C EC 22 01 32 */ fmuls f1, f2, f4 /* 801DD6D0 001D9330 FC 00 18 50 */ fneg f0, f3 /* 801DD6D4 001D9334 D0 23 00 0C */ stfs f1, 0xc(r3) /* 801DD6D8 001D9338 D0 03 00 08 */ stfs f0, 8(r3) /* 801DD6DC 001D933C 48 00 01 0C */ b lbl_801DD7E8 lbl_801DD6E0: /* 801DD6E0 001D9340 FC 00 18 50 */ fneg f0, f3 /* 801DD6E4 001D9344 D0 03 00 08 */ stfs f0, 8(r3) /* 801DD6E8 001D9348 48 00 01 00 */ b lbl_801DD7E8 lbl_801DD6EC: /* 801DD6EC 001D934C A0 03 00 06 */ lhz r0, 6(r3) /* 801DD6F0 001D9350 C0 02 95 E0 */ lfs f0, lbl_80641BE0-_SDA2_BASE_(r2) /* 801DD6F4 001D9354 60 00 00 08 */ ori r0, r0, 8 /* 801DD6F8 001D9358 B0 03 00 06 */ sth r0, 6(r3) /* 801DD6FC 001D935C D0 03 00 0C */ stfs f0, 0xc(r3) /* 801DD700 001D9360 48 00 00 E8 */ b lbl_801DD7E8 lbl_801DD704: /* 801DD704 001D9364 C0 05 00 08 */ lfs f0, 8(r5) /* 801DD708 001D9368 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 801DD70C 001D936C 40 81 00 DC */ ble lbl_801DD7E8 /* 801DD710 001D9370 A0 03 00 04 */ lhz r0, 4(r3) /* 801DD714 001D9374 60 84 00 04 */ ori r4, r4, 4 /* 801DD718 001D9378 B0 83 00 06 */ sth r4, 6(r3) /* 801DD71C 001D937C 2C 00 00 02 */ cmpwi r0, 2 /* 801DD720 001D9380 41 82 00 40 */ beq lbl_801DD760 /* 801DD724 001D9384 40 80 00 AC */ bge lbl_801DD7D0 /* 801DD728 001D9388 2C 00 00 01 */ cmpwi r0, 1 /* 801DD72C 001D938C 40 80 00 1C */ bge lbl_801DD748 /* 801DD730 001D9390 48 00 00 A0 */ b lbl_801DD7D0 /* 801DD734 001D9394 48 00 00 14 */ b lbl_801DD748 lbl_801DD738: /* 801DD738 001D9398 C0 23 00 0C */ lfs f1, 0xc(r3) /* 801DD73C 001D939C C0 04 00 08 */ lfs f0, 8(r4) /* 801DD740 001D93A0 EC 01 00 28 */ fsubs f0, f1, f0 /* 801DD744 001D93A4 D0 03 00 0C */ stfs f0, 0xc(r3) lbl_801DD748: /* 801DD748 001D93A8 80 83 00 00 */ lwz r4, 0(r3) /* 801DD74C 001D93AC C0 23 00 0C */ lfs f1, 0xc(r3) /* 801DD750 001D93B0 C0 04 00 08 */ lfs f0, 8(r4) /* 801DD754 001D93B4 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 801DD758 001D93B8 41 81 FF E0 */ bgt lbl_801DD738 /* 801DD75C 001D93BC 48 00 00 8C */ b lbl_801DD7E8 lbl_801DD760: /* 801DD760 001D93C0 C0 45 00 08 */ lfs f2, 8(r5) /* 801DD764 001D93C4 3C 00 43 30 */ lis r0, 0x4330 /* 801DD768 001D93C8 90 01 00 08 */ stw r0, 8(r1) /* 801DD76C 001D93CC EC 81 10 24 */ fdivs f4, f1, f2 /* 801DD770 001D93D0 C8 22 95 E8 */ lfd f1, lbl_80641BE8-_SDA2_BASE_(r2) /* 801DD774 001D93D4 FC 00 20 1E */ fctiwz f0, f4 /* 801DD778 001D93D8 D8 01 00 10 */ stfd f0, 0x10(r1) /* 801DD77C 001D93DC 80 A1 00 14 */ lwz r5, 0x14(r1) /* 801DD780 001D93E0 6C A0 80 00 */ xoris r0, r5, 0x8000 /* 801DD784 001D93E4 54 A4 0F FE */ srwi r4, r5, 0x1f /* 801DD788 001D93E8 90 01 00 0C */ stw r0, 0xc(r1) /* 801DD78C 001D93EC 54 A0 07 FE */ clrlwi r0, r5, 0x1f /* 801DD790 001D93F0 7C 00 22 78 */ xor r0, r0, r4 /* 801DD794 001D93F4 C8 01 00 08 */ lfd f0, 8(r1) /* 801DD798 001D93F8 7C 04 00 51 */ subf. r0, r4, r0 /* 801DD79C 001D93FC EC 00 08 28 */ fsubs f0, f0, f1 /* 801DD7A0 001D9400 EC 84 00 28 */ fsubs f4, f4, f0 /* 801DD7A4 001D9404 41 82 00 20 */ beq lbl_801DD7C4 /* 801DD7A8 001D9408 C0 22 95 E4 */ lfs f1, lbl_80641BE4-_SDA2_BASE_(r2) /* 801DD7AC 001D940C FC 00 18 50 */ fneg f0, f3 /* 801DD7B0 001D9410 EC 21 20 28 */ fsubs f1, f1, f4 /* 801DD7B4 001D9414 D0 03 00 08 */ stfs f0, 8(r3) /* 801DD7B8 001D9418 EC 02 00 72 */ fmuls f0, f2, f1 /* 801DD7BC 001D941C D0 03 00 0C */ stfs f0, 0xc(r3) /* 801DD7C0 001D9420 48 00 00 28 */ b lbl_801DD7E8 lbl_801DD7C4: /* 801DD7C4 001D9424 EC 02 01 32 */ fmuls f0, f2, f4 /* 801DD7C8 001D9428 D0 03 00 0C */ stfs f0, 0xc(r3) /* 801DD7CC 001D942C 48 00 00 1C */ b lbl_801DD7E8 lbl_801DD7D0: /* 801DD7D0 001D9430 A0 03 00 06 */ lhz r0, 6(r3) /* 801DD7D4 001D9434 80 83 00 00 */ lwz r4, 0(r3) /* 801DD7D8 001D9438 60 00 00 08 */ ori r0, r0, 8 /* 801DD7DC 001D943C B0 03 00 06 */ sth r0, 6(r3) /* 801DD7E0 001D9440 C0 04 00 08 */ lfs f0, 8(r4) /* 801DD7E4 001D9444 D0 03 00 0C */ stfs f0, 0xc(r3) lbl_801DD7E8: /* 801DD7E8 001D9448 A0 03 00 06 */ lhz r0, 6(r3) /* 801DD7EC 001D944C 60 00 00 02 */ ori r0, r0, 2 /* 801DD7F0 001D9450 B0 03 00 06 */ sth r0, 6(r3) lbl_801DD7F4: /* 801DD7F4 001D9454 38 21 00 20 */ addi r1, r1, 0x20 /* 801DD7F8 001D9458 4E 80 00 20 */ blr .global func_801DD7FC func_801DD7FC: /* 801DD7FC 001D945C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801DD800 001D9460 7C 08 02 A6 */ mflr r0 /* 801DD804 001D9464 90 01 00 24 */ stw r0, 0x24(r1) /* 801DD808 001D9468 39 61 00 20 */ addi r11, r1, 0x20 /* 801DD80C 001D946C 4B FE 99 19 */ bl _savegpr_26 /* 801DD810 001D9470 80 C3 00 00 */ lwz r6, 0(r3) /* 801DD814 001D9474 7C 7A 1B 78 */ mr r26, r3 /* 801DD818 001D9478 7C 9B 23 78 */ mr r27, r4 /* 801DD81C 001D947C 7C BC 2B 78 */ mr r28, r5 /* 801DD820 001D9480 2C 06 00 00 */ cmpwi r6, 0 /* 801DD824 001D9484 41 82 00 64 */ beq lbl_801DD888 /* 801DD828 001D9488 A0 03 00 06 */ lhz r0, 6(r3) /* 801DD82C 001D948C 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e /* 801DD830 001D9490 40 82 00 08 */ bne lbl_801DD838 /* 801DD834 001D9494 48 00 00 54 */ b lbl_801DD888 lbl_801DD838: /* 801DD838 001D9498 83 E6 00 04 */ lwz r31, 4(r6) /* 801DD83C 001D949C 3B A0 00 00 */ li r29, 0 /* 801DD840 001D94A0 A3 C6 00 02 */ lhz r30, 2(r6) /* 801DD844 001D94A4 48 00 00 30 */ b lbl_801DD874 lbl_801DD848: /* 801DD848 001D94A8 81 9F 00 0C */ lwz r12, 0xc(r31) /* 801DD84C 001D94AC 2C 0C 00 00 */ cmpwi r12, 0 /* 801DD850 001D94B0 41 82 00 1C */ beq lbl_801DD86C /* 801DD854 001D94B4 7F 63 DB 78 */ mr r3, r27 /* 801DD858 001D94B8 7F E4 FB 78 */ mr r4, r31 /* 801DD85C 001D94BC 7F 85 E3 78 */ mr r5, r28 /* 801DD860 001D94C0 C0 3A 00 0C */ lfs f1, 0xc(r26) /* 801DD864 001D94C4 7D 89 03 A6 */ mtctr r12 /* 801DD868 001D94C8 4E 80 04 21 */ bctrl lbl_801DD86C: /* 801DD86C 001D94CC 3B BD 00 01 */ addi r29, r29, 1 /* 801DD870 001D94D0 3B FF 00 10 */ addi r31, r31, 0x10 lbl_801DD874: /* 801DD874 001D94D4 7C 1D F0 00 */ cmpw r29, r30 /* 801DD878 001D94D8 41 80 FF D0 */ blt lbl_801DD848 /* 801DD87C 001D94DC A0 1A 00 06 */ lhz r0, 6(r26) /* 801DD880 001D94E0 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d /* 801DD884 001D94E4 B0 1A 00 06 */ sth r0, 6(r26) lbl_801DD888: /* 801DD888 001D94E8 39 61 00 20 */ addi r11, r1, 0x20 /* 801DD88C 001D94EC 4B FE 98 E5 */ bl _restgpr_26 /* 801DD890 001D94F0 80 01 00 24 */ lwz r0, 0x24(r1) /* 801DD894 001D94F4 7C 08 03 A6 */ mtlr r0 /* 801DD898 001D94F8 38 21 00 20 */ addi r1, r1, 0x20 /* 801DD89C 001D94FC 4E 80 00 20 */ blr .global func_801DD8A0 func_801DD8A0: /* 801DD8A0 001D9500 38 A0 00 01 */ li r5, 1 /* 801DD8A4 001D9504 38 6D A0 88 */ addi r3, r13, lbl_8063F348-_SDA_BASE_ /* 801DD8A8 001D9508 38 80 00 04 */ li r4, 4 /* 801DD8AC 001D950C 38 00 00 00 */ li r0, 0 /* 801DD8B0 001D9510 98 AD A0 88 */ stb r5, lbl_8063F348-_SDA_BASE_(r13) /* 801DD8B4 001D9514 B0 83 00 02 */ sth r4, 2(r3) /* 801DD8B8 001D9518 98 03 00 04 */ stb r0, 4(r3) /* 801DD8BC 001D951C 4E 80 00 20 */ blr