mirror of https://github.com/PrimeDecomp/prime.git
191 lines
7.8 KiB
ArmAsm
191 lines
7.8 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .rodata
|
|
.global lbl_803D89D0
|
|
lbl_803D89D0:
|
|
# ROM: 0x3D59D0
|
|
.4byte 0x3FDDAC67
|
|
.4byte 0x0561BB4F
|
|
.4byte 0x3FE921FB
|
|
.4byte 0x54442D18
|
|
.4byte 0x3FEF730B
|
|
.4byte 0xD281F69B
|
|
.4byte 0x3FF921FB
|
|
.4byte 0x54442D18
|
|
.4byte 0x3C7A2B7F
|
|
.4byte 0x222F65E2
|
|
.4byte 0x3C81A626
|
|
.4byte 0x33145C07
|
|
.4byte 0x3C700788
|
|
.4byte 0x7AF0CBBD
|
|
.4byte 0x3C91A626
|
|
.4byte 0x33145C07
|
|
.4byte 0x3FD55555
|
|
.4byte 0x5555550D
|
|
.4byte 0xBFC99999
|
|
.4byte 0x9998EBC4
|
|
.4byte 0x3FC24924
|
|
.4byte 0x920083FF
|
|
.4byte 0xBFBC71C6
|
|
.4byte 0xFE231671
|
|
.4byte 0x3FB745CD
|
|
.4byte 0xC54C206E
|
|
.4byte 0xBFB3B0F2
|
|
.4byte 0xAF749A6D
|
|
.4byte 0x3FB10D66
|
|
.4byte 0xA0D03D51
|
|
.4byte 0xBFADDE2D
|
|
.4byte 0x52DEFD9A
|
|
.4byte 0x3FA97B4B
|
|
.4byte 0x24760DEB
|
|
.4byte 0xBFA2B444
|
|
.4byte 0x2C6A6C2F
|
|
.4byte 0x3F90AD3A
|
|
.4byte 0xE322DA11
|
|
|
|
|
|
.section .text, "ax"
|
|
|
|
.global atan
|
|
atan:
|
|
/* 803941C8 00391128 94 21 FF F0 */ stwu r1, -0x10(r1)
|
|
/* 803941CC 0039112C 3C 60 80 3E */ lis r3, lbl_803D89D0@ha
|
|
/* 803941D0 00391130 3C 00 44 10 */ lis r0, 0x4410
|
|
/* 803941D4 00391134 D8 21 00 08 */ stfd f1, 8(r1)
|
|
/* 803941D8 00391138 38 83 89 D0 */ addi r4, r3, lbl_803D89D0@l
|
|
/* 803941DC 0039113C 80 C1 00 08 */ lwz r6, 8(r1)
|
|
/* 803941E0 00391140 54 C5 00 7E */ clrlwi r5, r6, 1
|
|
/* 803941E4 00391144 7C 05 00 00 */ cmpw r5, r0
|
|
/* 803941E8 00391148 41 80 00 60 */ blt lbl_80394248
|
|
/* 803941EC 0039114C 3C 00 7F F0 */ lis r0, 0x7ff0
|
|
/* 803941F0 00391150 7C 05 00 00 */ cmpw r5, r0
|
|
/* 803941F4 00391154 41 81 00 1C */ bgt lbl_80394210
|
|
/* 803941F8 00391158 3C 05 80 10 */ addis r0, r5, 0x8010
|
|
/* 803941FC 0039115C 28 00 00 00 */ cmplwi r0, 0
|
|
/* 80394200 00391160 40 82 00 1C */ bne lbl_8039421C
|
|
/* 80394204 00391164 80 01 00 0C */ lwz r0, 0xc(r1)
|
|
/* 80394208 00391168 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 8039420C 0039116C 41 82 00 10 */ beq lbl_8039421C
|
|
lbl_80394210:
|
|
/* 80394210 00391170 C8 01 00 08 */ lfd f0, 8(r1)
|
|
/* 80394214 00391174 FC 20 00 2A */ fadd f1, f0, f0
|
|
/* 80394218 00391178 48 00 01 A8 */ b lbl_803943C0
|
|
lbl_8039421C:
|
|
/* 8039421C 0039117C 2C 06 00 00 */ cmpwi r6, 0
|
|
/* 80394220 00391180 40 81 00 14 */ ble lbl_80394234
|
|
/* 80394224 00391184 C8 24 00 18 */ lfd f1, 0x18(r4)
|
|
/* 80394228 00391188 C8 04 00 38 */ lfd f0, 0x38(r4)
|
|
/* 8039422C 0039118C FC 21 00 2A */ fadd f1, f1, f0
|
|
/* 80394230 00391190 48 00 01 90 */ b lbl_803943C0
|
|
lbl_80394234:
|
|
/* 80394234 00391194 C8 24 00 18 */ lfd f1, 0x18(r4)
|
|
/* 80394238 00391198 C8 04 00 38 */ lfd f0, 0x38(r4)
|
|
/* 8039423C 0039119C FC 20 08 50 */ fneg f1, f1
|
|
/* 80394240 003911A0 FC 21 00 28 */ fsub f1, f1, f0
|
|
/* 80394244 003911A4 48 00 01 7C */ b lbl_803943C0
|
|
lbl_80394248:
|
|
/* 80394248 003911A8 3C 00 3F DC */ lis r0, 0x3fdc
|
|
/* 8039424C 003911AC 7C 05 00 00 */ cmpw r5, r0
|
|
/* 80394250 003911B0 40 80 00 30 */ bge lbl_80394280
|
|
/* 80394254 003911B4 3C 00 3E 20 */ lis r0, 0x3e20
|
|
/* 80394258 003911B8 7C 05 00 00 */ cmpw r5, r0
|
|
/* 8039425C 003911BC 40 80 00 1C */ bge lbl_80394278
|
|
/* 80394260 003911C0 C8 42 D4 70 */ lfd f2, lbl_805AF190@sda21(r2)
|
|
/* 80394264 003911C4 C8 02 D4 78 */ lfd f0, lbl_805AF198@sda21(r2)
|
|
/* 80394268 003911C8 FC 42 08 2A */ fadd f2, f2, f1
|
|
/* 8039426C 003911CC FC 02 00 40 */ fcmpo cr0, f2, f0
|
|
/* 80394270 003911D0 40 81 00 08 */ ble lbl_80394278
|
|
/* 80394274 003911D4 48 00 01 4C */ b lbl_803943C0
|
|
lbl_80394278:
|
|
/* 80394278 003911D8 38 00 FF FF */ li r0, -1
|
|
/* 8039427C 003911DC 48 00 00 A0 */ b lbl_8039431C
|
|
lbl_80394280:
|
|
/* 80394280 003911E0 FC 60 0A 10 */ fabs f3, f1
|
|
/* 80394284 003911E4 3C 00 3F F3 */ lis r0, 0x3ff3
|
|
/* 80394288 003911E8 7C 05 00 00 */ cmpw r5, r0
|
|
/* 8039428C 003911EC D8 61 00 08 */ stfd f3, 8(r1)
|
|
/* 80394290 003911F0 40 80 00 4C */ bge lbl_803942DC
|
|
/* 80394294 003911F4 3C 00 3F E6 */ lis r0, 0x3fe6
|
|
/* 80394298 003911F8 7C 05 00 00 */ cmpw r5, r0
|
|
/* 8039429C 003911FC 40 80 00 24 */ bge lbl_803942C0
|
|
/* 803942A0 00391200 C8 42 D4 80 */ lfd f2, lbl_805AF1A0@sda21(r2)
|
|
/* 803942A4 00391204 38 00 00 00 */ li r0, 0
|
|
/* 803942A8 00391208 C8 22 D4 78 */ lfd f1, lbl_805AF198@sda21(r2)
|
|
/* 803942AC 0039120C FC 02 18 2A */ fadd f0, f2, f3
|
|
/* 803942B0 00391210 FC 22 08 F8 */ fmsub f1, f2, f3, f1
|
|
/* 803942B4 00391214 FC 01 00 24 */ fdiv f0, f1, f0
|
|
/* 803942B8 00391218 D8 01 00 08 */ stfd f0, 8(r1)
|
|
/* 803942BC 0039121C 48 00 00 60 */ b lbl_8039431C
|
|
lbl_803942C0:
|
|
/* 803942C0 00391220 C8 02 D4 78 */ lfd f0, lbl_805AF198@sda21(r2)
|
|
/* 803942C4 00391224 38 00 00 01 */ li r0, 1
|
|
/* 803942C8 00391228 FC 23 00 28 */ fsub f1, f3, f0
|
|
/* 803942CC 0039122C FC 00 18 2A */ fadd f0, f0, f3
|
|
/* 803942D0 00391230 FC 01 00 24 */ fdiv f0, f1, f0
|
|
/* 803942D4 00391234 D8 01 00 08 */ stfd f0, 8(r1)
|
|
/* 803942D8 00391238 48 00 00 44 */ b lbl_8039431C
|
|
lbl_803942DC:
|
|
/* 803942DC 0039123C 3C 60 40 04 */ lis r3, 0x40038000@ha
|
|
/* 803942E0 00391240 38 03 80 00 */ addi r0, r3, 0x40038000@l
|
|
/* 803942E4 00391244 7C 05 00 00 */ cmpw r5, r0
|
|
/* 803942E8 00391248 40 80 00 24 */ bge lbl_8039430C
|
|
/* 803942EC 0039124C C8 42 D4 88 */ lfd f2, lbl_805AF1A8@sda21(r2)
|
|
/* 803942F0 00391250 38 00 00 02 */ li r0, 2
|
|
/* 803942F4 00391254 C8 02 D4 78 */ lfd f0, lbl_805AF198@sda21(r2)
|
|
/* 803942F8 00391258 FC 23 10 28 */ fsub f1, f3, f2
|
|
/* 803942FC 0039125C FC 02 00 FA */ fmadd f0, f2, f3, f0
|
|
/* 80394300 00391260 FC 01 00 24 */ fdiv f0, f1, f0
|
|
/* 80394304 00391264 D8 01 00 08 */ stfd f0, 8(r1)
|
|
/* 80394308 00391268 48 00 00 14 */ b lbl_8039431C
|
|
lbl_8039430C:
|
|
/* 8039430C 0039126C C8 02 D4 90 */ lfd f0, lbl_805AF1B0@sda21(r2)
|
|
/* 80394310 00391270 38 00 00 03 */ li r0, 3
|
|
/* 80394314 00391274 FC 00 18 24 */ fdiv f0, f0, f3
|
|
/* 80394318 00391278 D8 01 00 08 */ stfd f0, 8(r1)
|
|
lbl_8039431C:
|
|
/* 8039431C 0039127C C9 21 00 08 */ lfd f9, 8(r1)
|
|
/* 80394320 00391280 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 80394324 00391284 C8 84 00 90 */ lfd f4, 0x90(r4)
|
|
/* 80394328 00391288 FD 69 02 72 */ fmul f11, f9, f9
|
|
/* 8039432C 0039128C C8 24 00 80 */ lfd f1, 0x80(r4)
|
|
/* 80394330 00391290 C8 E4 00 70 */ lfd f7, 0x70(r4)
|
|
/* 80394334 00391294 C8 64 00 88 */ lfd f3, 0x88(r4)
|
|
/* 80394338 00391298 C8 04 00 78 */ lfd f0, 0x78(r4)
|
|
/* 8039433C 0039129C FD 4B 02 F2 */ fmul f10, f11, f11
|
|
/* 80394340 003912A0 C8 C4 00 60 */ lfd f6, 0x60(r4)
|
|
/* 80394344 003912A4 C8 44 00 68 */ lfd f2, 0x68(r4)
|
|
/* 80394348 003912A8 C8 A4 00 50 */ lfd f5, 0x50(r4)
|
|
/* 8039434C 003912AC FD 0A 09 3A */ fmadd f8, f10, f4, f1
|
|
/* 80394350 003912B0 C8 24 00 58 */ lfd f1, 0x58(r4)
|
|
/* 80394354 003912B4 C8 84 00 40 */ lfd f4, 0x40(r4)
|
|
/* 80394358 003912B8 FC 6A 00 FA */ fmadd f3, f10, f3, f0
|
|
/* 8039435C 003912BC C8 04 00 48 */ lfd f0, 0x48(r4)
|
|
/* 80394360 003912C0 FC EA 3A 3A */ fmadd f7, f10, f8, f7
|
|
/* 80394364 003912C4 FC 4A 10 FA */ fmadd f2, f10, f3, f2
|
|
/* 80394368 003912C8 FC 6A 31 FA */ fmadd f3, f10, f7, f6
|
|
/* 8039436C 003912CC FC 2A 08 BA */ fmadd f1, f10, f2, f1
|
|
/* 80394370 003912D0 FC 4A 28 FA */ fmadd f2, f10, f3, f5
|
|
/* 80394374 003912D4 FC 0A 00 7A */ fmadd f0, f10, f1, f0
|
|
/* 80394378 003912D8 FC 2A 20 BA */ fmadd f1, f10, f2, f4
|
|
/* 8039437C 003912DC FC 4A 00 32 */ fmul f2, f10, f0
|
|
/* 80394380 003912E0 FC 0B 00 72 */ fmul f0, f11, f1
|
|
/* 80394384 003912E4 40 80 00 10 */ bge lbl_80394394
|
|
/* 80394388 003912E8 FC 00 10 2A */ fadd f0, f0, f2
|
|
/* 8039438C 003912EC FC 29 48 3C */ fnmsub f1, f9, f0, f9
|
|
/* 80394390 003912F0 48 00 00 30 */ b lbl_803943C0
|
|
lbl_80394394:
|
|
/* 80394394 003912F4 54 00 18 38 */ slwi r0, r0, 3
|
|
/* 80394398 003912F8 FC 20 10 2A */ fadd f1, f0, f2
|
|
/* 8039439C 003912FC 7C 64 02 14 */ add r3, r4, r0
|
|
/* 803943A0 00391300 2C 06 00 00 */ cmpwi r6, 0
|
|
/* 803943A4 00391304 C8 03 00 20 */ lfd f0, 0x20(r3)
|
|
/* 803943A8 00391308 C8 43 00 00 */ lfd f2, 0(r3)
|
|
/* 803943AC 0039130C FC 09 00 78 */ fmsub f0, f9, f1, f0
|
|
/* 803943B0 00391310 FC 00 48 28 */ fsub f0, f0, f9
|
|
/* 803943B4 00391314 FC 22 00 28 */ fsub f1, f2, f0
|
|
/* 803943B8 00391318 40 80 00 08 */ bge lbl_803943C0
|
|
/* 803943BC 0039131C FC 20 08 50 */ fneg f1, f1
|
|
lbl_803943C0:
|
|
/* 803943C0 00391320 38 21 00 10 */ addi r1, r1, 0x10
|
|
/* 803943C4 00391324 4E 80 00 20 */ blr
|