prime/asm/Runtime/s_atan.s

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