mirror of https://github.com/PrimeDecomp/prime.git
173 lines
7.9 KiB
ArmAsm
173 lines
7.9 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .rodata
|
|
.global lbl_803D8720
|
|
lbl_803D8720:
|
|
# ROM: 0x3D5720
|
|
.4byte 0x3FE00000
|
|
.4byte 0
|
|
.4byte 0xBFE00000
|
|
.4byte 0
|
|
.4byte 0x3FE62E42
|
|
.4byte 0xFEE00000
|
|
.4byte 0xBFE62E42
|
|
.4byte 0xFEE00000
|
|
.4byte 0x3DEA39EF
|
|
.4byte 0x35793C76
|
|
.4byte 0xBDEA39EF
|
|
.4byte 0x35793C76
|
|
|
|
|
|
.section .text, "ax"
|
|
|
|
.global __ieee754_exp
|
|
__ieee754_exp:
|
|
/* 80391BCC 0038EB2C 94 21 FF D0 */ stwu r1, -0x30(r1)
|
|
/* 80391BD0 0038EB30 3C 60 40 86 */ lis r3, 0x40862E42@ha
|
|
/* 80391BD4 0038EB34 3C 80 80 3E */ lis r4, lbl_803D8720@ha
|
|
/* 80391BD8 0038EB38 D8 21 00 08 */ stfd f1, 8(r1)
|
|
/* 80391BDC 0038EB3C 38 03 2E 42 */ addi r0, r3, 0x40862E42@l
|
|
/* 80391BE0 0038EB40 38 84 87 20 */ addi r4, r4, lbl_803D8720@l
|
|
/* 80391BE4 0038EB44 81 01 00 08 */ lwz r8, 8(r1)
|
|
/* 80391BE8 0038EB48 55 05 00 7E */ clrlwi r5, r8, 1
|
|
/* 80391BEC 0038EB4C 55 07 0F FE */ srwi r7, r8, 0x1f
|
|
/* 80391BF0 0038EB50 7C 05 00 40 */ cmplw r5, r0
|
|
/* 80391BF4 0038EB54 41 80 00 64 */ blt lbl_80391C58
|
|
/* 80391BF8 0038EB58 3C 00 7F F0 */ lis r0, 0x7ff0
|
|
/* 80391BFC 0038EB5C 7C 05 00 40 */ cmplw r5, r0
|
|
/* 80391C00 0038EB60 41 80 00 30 */ blt lbl_80391C30
|
|
/* 80391C04 0038EB64 80 01 00 0C */ lwz r0, 0xc(r1)
|
|
/* 80391C08 0038EB68 55 03 03 3E */ clrlwi r3, r8, 0xc
|
|
/* 80391C0C 0038EB6C 7C 60 03 79 */ or. r0, r3, r0
|
|
/* 80391C10 0038EB70 41 82 00 0C */ beq lbl_80391C1C
|
|
/* 80391C14 0038EB74 FC 21 08 2A */ fadd f1, f1, f1
|
|
/* 80391C18 0038EB78 48 00 01 C8 */ b lbl_80391DE0
|
|
lbl_80391C1C:
|
|
/* 80391C1C 0038EB7C 2C 07 00 00 */ cmpwi r7, 0
|
|
/* 80391C20 0038EB80 40 82 00 08 */ bne lbl_80391C28
|
|
/* 80391C24 0038EB84 48 00 01 BC */ b lbl_80391DE0
|
|
lbl_80391C28:
|
|
/* 80391C28 0038EB88 C8 22 D1 18 */ lfd f1, lbl_805AEE38@sda21(r2)
|
|
/* 80391C2C 0038EB8C 48 00 01 B4 */ b lbl_80391DE0
|
|
lbl_80391C30:
|
|
/* 80391C30 0038EB90 C8 02 D1 20 */ lfd f0, lbl_805AEE40@sda21(r2)
|
|
/* 80391C34 0038EB94 FC 01 00 40 */ fcmpo cr0, f1, f0
|
|
/* 80391C38 0038EB98 40 81 00 0C */ ble lbl_80391C44
|
|
/* 80391C3C 0038EB9C C8 22 D1 28 */ lfd f1, lbl_805AEE48@sda21(r2)
|
|
/* 80391C40 0038EBA0 48 00 01 A0 */ b lbl_80391DE0
|
|
lbl_80391C44:
|
|
/* 80391C44 0038EBA4 C8 02 D1 30 */ lfd f0, lbl_805AEE50@sda21(r2)
|
|
/* 80391C48 0038EBA8 FC 01 00 40 */ fcmpo cr0, f1, f0
|
|
/* 80391C4C 0038EBAC 40 80 00 0C */ bge lbl_80391C58
|
|
/* 80391C50 0038EBB0 C8 22 D1 18 */ lfd f1, lbl_805AEE38@sda21(r2)
|
|
/* 80391C54 0038EBB4 48 00 01 8C */ b lbl_80391DE0
|
|
lbl_80391C58:
|
|
/* 80391C58 0038EBB8 3C 60 3F D6 */ lis r3, 0x3FD62E42@ha
|
|
/* 80391C5C 0038EBBC 38 03 2E 42 */ addi r0, r3, 0x3FD62E42@l
|
|
/* 80391C60 0038EBC0 7C 05 00 40 */ cmplw r5, r0
|
|
/* 80391C64 0038EBC4 40 81 00 90 */ ble lbl_80391CF4
|
|
/* 80391C68 0038EBC8 3C 60 3F F1 */ lis r3, 0x3FF0A2B2@ha
|
|
/* 80391C6C 0038EBCC 38 03 A2 B2 */ addi r0, r3, 0x3FF0A2B2@l
|
|
/* 80391C70 0038EBD0 7C 05 00 40 */ cmplw r5, r0
|
|
/* 80391C74 0038EBD4 40 80 00 28 */ bge lbl_80391C9C
|
|
/* 80391C78 0038EBD8 54 E3 18 38 */ slwi r3, r7, 3
|
|
/* 80391C7C 0038EBDC 20 07 00 01 */ subfic r0, r7, 1
|
|
/* 80391C80 0038EBE0 7C 64 1A 14 */ add r3, r4, r3
|
|
/* 80391C84 0038EBE4 C8 21 00 08 */ lfd f1, 8(r1)
|
|
/* 80391C88 0038EBE8 C8 03 00 10 */ lfd f0, 0x10(r3)
|
|
/* 80391C8C 0038EBEC 7C C7 00 50 */ subf r6, r7, r0
|
|
/* 80391C90 0038EBF0 C9 03 00 20 */ lfd f8, 0x20(r3)
|
|
/* 80391C94 0038EBF4 FC E1 00 28 */ fsub f7, f1, f0
|
|
/* 80391C98 0038EBF8 48 00 00 50 */ b lbl_80391CE8
|
|
lbl_80391C9C:
|
|
/* 80391C9C 0038EBFC 54 E3 18 38 */ slwi r3, r7, 3
|
|
/* 80391CA0 0038EC00 3C 00 43 30 */ lis r0, 0x4330
|
|
/* 80391CA4 0038EC04 C8 22 D1 38 */ lfd f1, lbl_805AEE58@sda21(r2)
|
|
/* 80391CA8 0038EC08 C8 81 00 08 */ lfd f4, 8(r1)
|
|
/* 80391CAC 0038EC0C 7C 04 1C AE */ lfdx f0, r4, r3
|
|
/* 80391CB0 0038EC10 90 01 00 20 */ stw r0, 0x20(r1)
|
|
/* 80391CB4 0038EC14 FC 41 01 3A */ fmadd f2, f1, f4, f0
|
|
/* 80391CB8 0038EC18 C8 62 D1 88 */ lfd f3, lbl_805AEEA8@sda21(r2)
|
|
/* 80391CBC 0038EC1C C8 24 00 10 */ lfd f1, 0x10(r4)
|
|
/* 80391CC0 0038EC20 C8 04 00 20 */ lfd f0, 0x20(r4)
|
|
/* 80391CC4 0038EC24 FC 40 10 1E */ fctiwz f2, f2
|
|
/* 80391CC8 0038EC28 D8 41 00 18 */ stfd f2, 0x18(r1)
|
|
/* 80391CCC 0038EC2C 80 C1 00 1C */ lwz r6, 0x1c(r1)
|
|
/* 80391CD0 0038EC30 6C C0 80 00 */ xoris r0, r6, 0x8000
|
|
/* 80391CD4 0038EC34 90 01 00 24 */ stw r0, 0x24(r1)
|
|
/* 80391CD8 0038EC38 C8 41 00 20 */ lfd f2, 0x20(r1)
|
|
/* 80391CDC 0038EC3C FC 42 18 28 */ fsub f2, f2, f3
|
|
/* 80391CE0 0038EC40 FC E2 20 7C */ fnmsub f7, f2, f1, f4
|
|
/* 80391CE4 0038EC44 FD 02 00 32 */ fmul f8, f2, f0
|
|
lbl_80391CE8:
|
|
/* 80391CE8 0038EC48 FC 07 40 28 */ fsub f0, f7, f8
|
|
/* 80391CEC 0038EC4C D8 01 00 08 */ stfd f0, 8(r1)
|
|
/* 80391CF0 0038EC50 48 00 00 34 */ b lbl_80391D24
|
|
lbl_80391CF4:
|
|
/* 80391CF4 0038EC54 3C 00 3E 30 */ lis r0, 0x3e30
|
|
/* 80391CF8 0038EC58 7C 05 00 40 */ cmplw r5, r0
|
|
/* 80391CFC 0038EC5C 40 80 00 24 */ bge lbl_80391D20
|
|
/* 80391D00 0038EC60 C8 22 D1 40 */ lfd f1, lbl_805AEE60@sda21(r2)
|
|
/* 80391D04 0038EC64 C8 41 00 08 */ lfd f2, 8(r1)
|
|
/* 80391D08 0038EC68 C8 02 D1 48 */ lfd f0, lbl_805AEE68@sda21(r2)
|
|
/* 80391D0C 0038EC6C FC 21 10 2A */ fadd f1, f1, f2
|
|
/* 80391D10 0038EC70 FC 01 00 40 */ fcmpo cr0, f1, f0
|
|
/* 80391D14 0038EC74 40 81 00 10 */ ble lbl_80391D24
|
|
/* 80391D18 0038EC78 FC 20 10 2A */ fadd f1, f0, f2
|
|
/* 80391D1C 0038EC7C 48 00 00 C4 */ b lbl_80391DE0
|
|
lbl_80391D20:
|
|
/* 80391D20 0038EC80 38 C0 00 00 */ li r6, 0
|
|
lbl_80391D24:
|
|
/* 80391D24 0038EC84 C8 A1 00 08 */ lfd f5, 8(r1)
|
|
/* 80391D28 0038EC88 2C 06 00 00 */ cmpwi r6, 0
|
|
/* 80391D2C 0038EC8C C8 82 D1 70 */ lfd f4, lbl_805AEE90@sda21(r2)
|
|
/* 80391D30 0038EC90 FC C5 01 72 */ fmul f6, f5, f5
|
|
/* 80391D34 0038EC94 C8 62 D1 68 */ lfd f3, lbl_805AEE88@sda21(r2)
|
|
/* 80391D38 0038EC98 C8 42 D1 60 */ lfd f2, lbl_805AEE80@sda21(r2)
|
|
/* 80391D3C 0038EC9C C8 22 D1 58 */ lfd f1, lbl_805AEE78@sda21(r2)
|
|
/* 80391D40 0038ECA0 C8 02 D1 50 */ lfd f0, lbl_805AEE70@sda21(r2)
|
|
/* 80391D44 0038ECA4 FC 64 19 BA */ fmadd f3, f4, f6, f3
|
|
/* 80391D48 0038ECA8 FC 46 10 FA */ fmadd f2, f6, f3, f2
|
|
/* 80391D4C 0038ECAC FC 26 08 BA */ fmadd f1, f6, f2, f1
|
|
/* 80391D50 0038ECB0 FC 06 00 7A */ fmadd f0, f6, f1, f0
|
|
/* 80391D54 0038ECB4 FC 66 28 3C */ fnmsub f3, f6, f0, f5
|
|
/* 80391D58 0038ECB8 40 82 00 24 */ bne lbl_80391D7C
|
|
/* 80391D5C 0038ECBC C8 02 D1 78 */ lfd f0, lbl_805AEE98@sda21(r2)
|
|
/* 80391D60 0038ECC0 FC 25 00 F2 */ fmul f1, f5, f3
|
|
/* 80391D64 0038ECC4 C8 42 D1 48 */ lfd f2, lbl_805AEE68@sda21(r2)
|
|
/* 80391D68 0038ECC8 FC 03 00 28 */ fsub f0, f3, f0
|
|
/* 80391D6C 0038ECCC FC 01 00 24 */ fdiv f0, f1, f0
|
|
/* 80391D70 0038ECD0 FC 00 28 28 */ fsub f0, f0, f5
|
|
/* 80391D74 0038ECD4 FC 22 00 28 */ fsub f1, f2, f0
|
|
/* 80391D78 0038ECD8 48 00 00 68 */ b lbl_80391DE0
|
|
lbl_80391D7C:
|
|
/* 80391D7C 0038ECDC C8 02 D1 78 */ lfd f0, lbl_805AEE98@sda21(r2)
|
|
/* 80391D80 0038ECE0 FC 25 00 F2 */ fmul f1, f5, f3
|
|
/* 80391D84 0038ECE4 C8 42 D1 48 */ lfd f2, lbl_805AEE68@sda21(r2)
|
|
/* 80391D88 0038ECE8 2C 06 FC 03 */ cmpwi r6, -1021
|
|
/* 80391D8C 0038ECEC FC 00 18 28 */ fsub f0, f0, f3
|
|
/* 80391D90 0038ECF0 FC 01 00 24 */ fdiv f0, f1, f0
|
|
/* 80391D94 0038ECF4 FC 08 00 28 */ fsub f0, f8, f0
|
|
/* 80391D98 0038ECF8 FC 00 38 28 */ fsub f0, f0, f7
|
|
/* 80391D9C 0038ECFC FC 02 00 28 */ fsub f0, f2, f0
|
|
/* 80391DA0 0038ED00 D8 01 00 10 */ stfd f0, 0x10(r1)
|
|
/* 80391DA4 0038ED04 41 80 00 1C */ blt lbl_80391DC0
|
|
/* 80391DA8 0038ED08 80 61 00 10 */ lwz r3, 0x10(r1)
|
|
/* 80391DAC 0038ED0C 54 C0 A0 16 */ slwi r0, r6, 0x14
|
|
/* 80391DB0 0038ED10 7C 03 02 14 */ add r0, r3, r0
|
|
/* 80391DB4 0038ED14 90 01 00 10 */ stw r0, 0x10(r1)
|
|
/* 80391DB8 0038ED18 C8 21 00 10 */ lfd f1, 0x10(r1)
|
|
/* 80391DBC 0038ED1C 48 00 00 24 */ b lbl_80391DE0
|
|
lbl_80391DC0:
|
|
/* 80391DC0 0038ED20 38 06 03 E8 */ addi r0, r6, 0x3e8
|
|
/* 80391DC4 0038ED24 80 61 00 10 */ lwz r3, 0x10(r1)
|
|
/* 80391DC8 0038ED28 54 00 A0 16 */ slwi r0, r0, 0x14
|
|
/* 80391DCC 0038ED2C C8 22 D1 80 */ lfd f1, lbl_805AEEA0@sda21(r2)
|
|
/* 80391DD0 0038ED30 7C 03 02 14 */ add r0, r3, r0
|
|
/* 80391DD4 0038ED34 90 01 00 10 */ stw r0, 0x10(r1)
|
|
/* 80391DD8 0038ED38 C8 01 00 10 */ lfd f0, 0x10(r1)
|
|
/* 80391DDC 0038ED3C FC 21 00 32 */ fmul f1, f1, f0
|
|
lbl_80391DE0:
|
|
/* 80391DE0 0038ED40 38 21 00 30 */ addi r1, r1, 0x30
|
|
/* 80391DE4 0038ED44 4E 80 00 20 */ blr
|