Files
perfect-dark/src/lib/lib_04840.c
T

179 lines
6.7 KiB
C

#include <ultra64.h>
#include "constants.h"
#include "game/data/data_000000.h"
#include "game/data/data_0083d0.h"
#include "game/data/data_00e460.h"
#include "game/data/data_0160b0.h"
#include "game/data/data_01a3a0.h"
#include "game/data/data_020df0.h"
#include "game/data/data_02da90.h"
#include "gvars/gvars.h"
#include "lib/lib_04840.h"
#include "lib/lib_16110.h"
#include "lib/lib_4a360.h"
#include "types.h"
const u32 var700524b0[] = {0x3c8efa35};
const u32 var700524b4[] = {0x00000000};
const u32 var700524b8[] = {0x00000000};
const u32 var700524bc[] = {0x00000000};
GLOBAL_ASM(
glabel func00004840
/* 4840: 27bdffd0 */ addiu $sp,$sp,-48
/* 4844: 44867000 */ mtc1 $a2,$f14
/* 4848: afbf0014 */ sw $ra,0x14($sp)
/* 484c: afa50034 */ sw $a1,0x34($sp)
/* 4850: afa7003c */ sw $a3,0x3c($sp)
/* 4854: afa50034 */ sw $a1,0x34($sp)
/* 4858: afa40030 */ sw $a0,0x30($sp)
/* 485c: 0c012918 */ jal func0004a460
/* 4860: e7ae0038 */ swc1 $f14,0x38($sp)
/* 4864: 3c017005 */ lui $at,%hi(var700524b0)
/* 4868: c7ae0038 */ lwc1 $f14,0x38($sp)
/* 486c: c42424b0 */ lwc1 $f4,%lo(var700524b0)($at)
/* 4870: 3c013f00 */ lui $at,0x3f00
/* 4874: 44813000 */ mtc1 $at,$f6
/* 4878: 46047382 */ mul.s $f14,$f14,$f4
/* 487c: 00000000 */ nop
/* 4880: 46067302 */ mul.s $f12,$f14,$f6
/* 4884: 0c0068f4 */ jal cosf
/* 4888: e7ac001c */ swc1 $f12,0x1c($sp)
/* 488c: c7ac001c */ lwc1 $f12,0x1c($sp)
/* 4890: 0c0068f7 */ jal sinf
/* 4894: e7a00020 */ swc1 $f0,0x20($sp)
/* 4898: c7a80020 */ lwc1 $f8,0x20($sp)
/* 489c: c7aa003c */ lwc1 $f10,0x3c($sp)
/* 48a0: c7ac0040 */ lwc1 $f12,0x40($sp)
/* 48a4: 46004083 */ div.s $f2,$f8,$f0
/* 48a8: c7b00044 */ lwc1 $f16,0x44($sp)
/* 48ac: 8fa60030 */ lw $a2,0x30($sp)
/* 48b0: 8fa70034 */ lw $a3,0x34($sp)
/* 48b4: 46106480 */ add.s $f18,$f12,$f16
/* 48b8: 3c01bf80 */ lui $at,0xbf80
/* 48bc: 44814000 */ mtc1 $at,$f8
/* 48c0: 46106381 */ sub.s $f14,$f12,$f16
/* 48c4: 00002825 */ or $a1,$zero,$zero
/* 48c8: e4c8002c */ swc1 $f8,0x2c($a2)
/* 48cc: 44804000 */ mtc1 $zero,$f8
/* 48d0: 24040004 */ addiu $a0,$zero,0x4
/* 48d4: e4c8003c */ swc1 $f8,0x3c($a2)
/* 48d8: 460e9183 */ div.s $f6,$f18,$f14
/* 48dc: e4c20014 */ swc1 $f2,0x14($a2)
/* 48e0: 460a1103 */ div.s $f4,$f2,$f10
/* 48e4: e4c60028 */ swc1 $f6,0x28($a2)
/* 48e8: 460c6280 */ add.s $f10,$f12,$f12
/* 48ec: e4c40000 */ swc1 $f4,0x0($a2)
/* 48f0: 46105102 */ mul.s $f4,$f10,$f16
/* 48f4: 460e2183 */ div.s $f6,$f4,$f14
/* 48f8: e4c60038 */ swc1 $f6,0x38($a2)
/* 48fc: c7a00048 */ lwc1 $f0,0x48($sp)
.L00004900:
/* 4900: 00001825 */ or $v1,$zero,$zero
/* 4904: 00c01025 */ or $v0,$a2,$zero
/* 4908: c44e0000 */ lwc1 $f14,0x0($v0)
/* 490c: 24630001 */ addiu $v1,$v1,0x1
/* 4910: 46007402 */ mul.s $f16,$f14,$f0
/* 4914: 50640008 */ beql $v1,$a0,.L00004938
/* 4918: 24420004 */ addiu $v0,$v0,0x4
.L0000491c:
/* 491c: c44e0004 */ lwc1 $f14,0x4($v0)
/* 4920: 24630001 */ addiu $v1,$v1,0x1
/* 4924: e4500000 */ swc1 $f16,0x0($v0)
/* 4928: 46007402 */ mul.s $f16,$f14,$f0
/* 492c: 1464fffb */ bne $v1,$a0,.L0000491c
/* 4930: 24420004 */ addiu $v0,$v0,0x4
/* 4934: 24420004 */ addiu $v0,$v0,0x4
.L00004938:
/* 4938: e450fffc */ swc1 $f16,-0x4($v0)
/* 493c: 24a50001 */ addiu $a1,$a1,0x1
/* 4940: 14a4ffef */ bne $a1,$a0,.L00004900
/* 4944: 24c60010 */ addiu $a2,$a2,0x10
/* 4948: 10e00032 */ beqz $a3,.L00004a14
/* 494c: 3c014000 */ lui $at,0x4000
/* 4950: 44813000 */ mtc1 $at,$f6
/* 4954: 340effff */ dli $t6,0xffff
/* 4958: 3c014800 */ lui $at,0x4800
/* 495c: 4606903e */ c.le.s $f18,$f6
/* 4960: 00000000 */ nop
/* 4964: 45020004 */ bc1fl .L00004978
/* 4968: 44814000 */ mtc1 $at,$f8
/* 496c: 10000029 */ b .L00004a14
/* 4970: a4ee0000 */ sh $t6,0x0($a3)
/* 4974: 44814000 */ mtc1 $at,$f8
.L00004978:
/* 4978: 24180001 */ addiu $t8,$zero,0x1
/* 497c: 3c014f00 */ lui $at,0x4f00
/* 4980: 46124283 */ div.s $f10,$f8,$f18
/* 4984: 24080001 */ addiu $t0,$zero,0x1
/* 4988: 444ff800 */ cfc1 $t7,$31
/* 498c: 44d8f800 */ ctc1 $t8,$31
/* 4990: 00000000 */ nop
/* 4994: 46005124 */ cvt.w.s $f4,$f10
/* 4998: 4458f800 */ cfc1 $t8,$31
/* 499c: 00000000 */ nop
/* 49a0: 33180078 */ andi $t8,$t8,0x78
/* 49a4: 53000013 */ beqzl $t8,.L000049f4
/* 49a8: 44182000 */ mfc1 $t8,$f4
/* 49ac: 44812000 */ mtc1 $at,$f4
/* 49b0: 24180001 */ addiu $t8,$zero,0x1
/* 49b4: 46045101 */ sub.s $f4,$f10,$f4
/* 49b8: 44d8f800 */ ctc1 $t8,$31
/* 49bc: 00000000 */ nop
/* 49c0: 46002124 */ cvt.w.s $f4,$f4
/* 49c4: 4458f800 */ cfc1 $t8,$31
/* 49c8: 00000000 */ nop
/* 49cc: 33180078 */ andi $t8,$t8,0x78
/* 49d0: 17000005 */ bnez $t8,.L000049e8
/* 49d4: 00000000 */ nop
/* 49d8: 44182000 */ mfc1 $t8,$f4
/* 49dc: 3c018000 */ lui $at,0x8000
/* 49e0: 10000007 */ b .L00004a00
/* 49e4: 0301c025 */ or $t8,$t8,$at
.L000049e8:
/* 49e8: 10000005 */ b .L00004a00
/* 49ec: 2418ffff */ addiu $t8,$zero,-1
/* 49f0: 44182000 */ mfc1 $t8,$f4
.L000049f4:
/* 49f4: 00000000 */ nop
/* 49f8: 0700fffb */ bltz $t8,.L000049e8
/* 49fc: 00000000 */ nop
.L00004a00:
/* 4a00: 44cff800 */ ctc1 $t7,$31
/* 4a04: 3319ffff */ andi $t9,$t8,0xffff
/* 4a08: 1f200002 */ bgtz $t9,.L00004a14
/* 4a0c: a4f80000 */ sh $t8,0x0($a3)
/* 4a10: a4e80000 */ sh $t0,0x0($a3)
.L00004a14:
/* 4a14: 8fbf0014 */ lw $ra,0x14($sp)
/* 4a18: 27bd0030 */ addiu $sp,$sp,0x30
/* 4a1c: 03e00008 */ jr $ra
/* 4a20: 00000000 */ nop
);
GLOBAL_ASM(
glabel func00004a24
/* 4a24: 27bdff98 */ addiu $sp,$sp,-104
/* 4a28: 44866000 */ mtc1 $a2,$f12
/* 4a2c: 44877000 */ mtc1 $a3,$f14
/* 4a30: c7a40078 */ lwc1 $f4,0x78($sp)
/* 4a34: c7a6007c */ lwc1 $f6,0x7c($sp)
/* 4a38: c7a80080 */ lwc1 $f8,0x80($sp)
/* 4a3c: afbf0024 */ sw $ra,0x24($sp)
/* 4a40: afa40068 */ sw $a0,0x68($sp)
/* 4a44: 44066000 */ mfc1 $a2,$f12
/* 4a48: 44077000 */ mfc1 $a3,$f14
/* 4a4c: 27a40028 */ addiu $a0,$sp,0x28
/* 4a50: e7a40010 */ swc1 $f4,0x10($sp)
/* 4a54: e7a60014 */ swc1 $f6,0x14($sp)
/* 4a58: 0c001210 */ jal func00004840
/* 4a5c: e7a80018 */ swc1 $f8,0x18($sp)
/* 4a60: 27a40028 */ addiu $a0,$sp,0x28
/* 4a64: 0c0128d8 */ jal func0004a360
/* 4a68: 8fa50068 */ lw $a1,0x68($sp)
/* 4a6c: 8fbf0024 */ lw $ra,0x24($sp)
/* 4a70: 27bd0068 */ addiu $sp,$sp,0x68
/* 4a74: 03e00008 */ jr $ra
/* 4a78: 00000000 */ nop
/* 4a7c: 00000000 */ nop
);