perfect_dark/src/lib/lib_0d0a0.c

348 lines
13 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_0d0a0.h"
#include "lib/lib_4e470.h"
#include "types.h"
GLOBAL_ASM(
glabel func0000d0a0
/* d0a0: 27bdffe8 */ addiu $sp,$sp,-24
/* d0a4: 3c028009 */ lui $v0,%hi(var80094de8)
/* d0a8: 3c038009 */ lui $v1,%hi(var80094e08)
/* d0ac: afbf0014 */ sw $ra,0x14($sp)
/* d0b0: 24634e08 */ addiu $v1,$v1,%lo(var80094e08)
/* d0b4: 24424de8 */ addiu $v0,$v0,%lo(var80094de8)
.L0000d0b8:
/* d0b8: 24420001 */ addiu $v0,$v0,0x1
/* d0bc: 1443fffe */ bne $v0,$v1,.L0000d0b8
/* d0c0: a040ffff */ sb $zero,-0x1($v0)
/* d0c4: 3c0e8009 */ lui $t6,%hi(var80094ae0)
/* d0c8: 25ce4ae0 */ addiu $t6,$t6,%lo(var80094ae0)
/* d0cc: 3c048009 */ lui $a0,%hi(var80094e88)
/* d0d0: 3c058009 */ lui $a1,%hi(var80094e08)
/* d0d4: adc00000 */ sw $zero,0x0($t6)
/* d0d8: 24a54e08 */ addiu $a1,$a1,%lo(var80094e08)
/* d0dc: 24844e88 */ addiu $a0,$a0,%lo(var80094e88)
/* d0e0: 0c0120d0 */ jal osCreateMesgQueue
/* d0e4: 24060020 */ addiu $a2,$zero,0x20
/* d0e8: 8fbf0014 */ lw $ra,0x14($sp)
/* d0ec: 27bd0018 */ addiu $sp,$sp,0x18
/* d0f0: 03e00008 */ jr $ra
/* d0f4: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0000d0f8
/* d0f8: 27bdffa8 */ addiu $sp,$sp,-88
/* d0fc: afb70044 */ sw $s7,0x44($sp)
/* d100: 3c178009 */ lui $s7,%hi(var80094ae0)
/* d104: 26f74ae0 */ addiu $s7,$s7,%lo(var80094ae0)
/* d108: 8eee0000 */ lw $t6,0x0($s7)
/* d10c: afb40038 */ sw $s4,0x38($sp)
/* d110: afb30034 */ sw $s3,0x34($sp)
/* d114: afb00028 */ sw $s0,0x28($sp)
/* d118: 00c08025 */ or $s0,$a2,$zero
/* d11c: 00809825 */ or $s3,$a0,$zero
/* d120: 00a0a025 */ or $s4,$a1,$zero
/* d124: afbf004c */ sw $ra,0x4c($sp)
/* d128: afbe0048 */ sw $s8,0x48($sp)
/* d12c: afb60040 */ sw $s6,0x40($sp)
/* d130: afb5003c */ sw $s5,0x3c($sp)
/* d134: afb20030 */ sw $s2,0x30($sp)
/* d138: afb1002c */ sw $s1,0x2c($sp)
/* d13c: 11c00003 */ beqz $t6,.L0000d14c
/* d140: afa70064 */ sw $a3,0x64($sp)
/* d144: 0c0034d4 */ jal func0000d350
/* d148: 00000000 */ nop
.L0000d14c:
/* d14c: 3c010008 */ lui $at,0x8
/* d150: 0201082b */ sltu $at,$s0,$at
/* d154: 10200005 */ beqz $at,.L0000d16c
/* d158: 02602025 */ or $a0,$s3,$zero
/* d15c: 320f3fff */ andi $t7,$s0,0x3fff
/* d160: 0010f382 */ srl $s8,$s0,0xe
/* d164: 10000003 */ b .L0000d174
/* d168: afaf0050 */ sw $t7,0x50($sp)
.L0000d16c:
/* d16c: 0000f025 */ or $s8,$zero,$zero
/* d170: afb00050 */ sw $s0,0x50($sp)
.L0000d174:
/* d174: 0c013920 */ jal osInvalDCache
/* d178: 02002825 */ or $a1,$s0,$zero
/* d17c: 13c0001b */ beqz $s8,.L0000d1ec
/* d180: 00009025 */ or $s2,$zero,$zero
/* d184: 3c108009 */ lui $s0,%hi(var80094de8)
/* d188: 3c118009 */ lui $s1,%hi(var80094ae8)
/* d18c: 3c168009 */ lui $s6,%hi(var80094e88)
/* d190: 26d64e88 */ addiu $s6,$s6,%lo(var80094e88)
/* d194: 26314ae8 */ addiu $s1,$s1,%lo(var80094ae8)
/* d198: 26104de8 */ addiu $s0,$s0,%lo(var80094de8)
/* d19c: 24150001 */ addiu $s5,$zero,0x1
.L0000d1a0:
/* d1a0: a2150000 */ sb $s5,0x0($s0)
/* d1a4: 8ee20000 */ lw $v0,0x0($s7)
/* d1a8: 24194000 */ addiu $t9,$zero,0x4000
/* d1ac: afb90014 */ sw $t9,0x14($sp)
/* d1b0: 24580001 */ addiu $t8,$v0,0x1
/* d1b4: aef80000 */ sw $t8,0x0($s7)
/* d1b8: 02202025 */ or $a0,$s1,$zero
/* d1bc: 8fa50064 */ lw $a1,0x64($sp)
/* d1c0: 00003025 */ or $a2,$zero,$zero
/* d1c4: 02803825 */ or $a3,$s4,$zero
/* d1c8: afb30010 */ sw $s3,0x10($sp)
/* d1cc: 0c01394c */ jal osPiStartDma
/* d1d0: afb60018 */ sw $s6,0x18($sp)
/* d1d4: 26520001 */ addiu $s2,$s2,0x1
/* d1d8: 26100001 */ addiu $s0,$s0,0x1
/* d1dc: 26310018 */ addiu $s1,$s1,0x18
/* d1e0: 26944000 */ addiu $s4,$s4,0x4000
/* d1e4: 165effee */ bne $s2,$s8,.L0000d1a0
/* d1e8: 26734000 */ addiu $s3,$s3,0x4000
.L0000d1ec:
/* d1ec: 8fa30050 */ lw $v1,0x50($sp)
/* d1f0: 3c168009 */ lui $s6,%hi(var80094e88)
/* d1f4: 26d64e88 */ addiu $s6,$s6,%lo(var80094e88)
/* d1f8: 10600014 */ beqz $v1,.L0000d24c
/* d1fc: 24150001 */ addiu $s5,$zero,0x1
/* d200: 3c018009 */ lui $at,%hi(var80094de8)
/* d204: 00320821 */ addu $at,$at,$s2
/* d208: a0354de8 */ sb $s5,%lo(var80094de8)($at)
/* d20c: 8ee20000 */ lw $v0,0x0($s7)
/* d210: 00124880 */ sll $t1,$s2,0x2
/* d214: 01324823 */ subu $t1,$t1,$s2
/* d218: 3c0a8009 */ lui $t2,%hi(var80094ae8)
/* d21c: 254a4ae8 */ addiu $t2,$t2,%lo(var80094ae8)
/* d220: 000948c0 */ sll $t1,$t1,0x3
/* d224: 24480001 */ addiu $t0,$v0,0x1
/* d228: aee80000 */ sw $t0,0x0($s7)
/* d22c: 012a2021 */ addu $a0,$t1,$t2
/* d230: 8fa50064 */ lw $a1,0x64($sp)
/* d234: 00003025 */ or $a2,$zero,$zero
/* d238: 02803825 */ or $a3,$s4,$zero
/* d23c: afb30010 */ sw $s3,0x10($sp)
/* d240: afa30014 */ sw $v1,0x14($sp)
/* d244: 0c01394c */ jal osPiStartDma
/* d248: afb60018 */ sw $s6,0x18($sp)
.L0000d24c:
/* d24c: 8fbf004c */ lw $ra,0x4c($sp)
/* d250: 8fb00028 */ lw $s0,0x28($sp)
/* d254: 8fb1002c */ lw $s1,0x2c($sp)
/* d258: 8fb20030 */ lw $s2,0x30($sp)
/* d25c: 8fb30034 */ lw $s3,0x34($sp)
/* d260: 8fb40038 */ lw $s4,0x38($sp)
/* d264: 8fb5003c */ lw $s5,0x3c($sp)
/* d268: 8fb60040 */ lw $s6,0x40($sp)
/* d26c: 8fb70044 */ lw $s7,0x44($sp)
/* d270: 8fbe0048 */ lw $s8,0x48($sp)
/* d274: 03e00008 */ jr $ra
/* d278: 27bd0058 */ addiu $sp,$sp,0x58
);
u32 xorDeadbeef(u32 value)
{
return value ^ 0xdeadbeef;
}
u32 xorDeadbabe(u32 value)
{
return value ^ 0xdeadbabe;
}
GLOBAL_ASM(
glabel func0000d29c
/* d29c: 3c0e8006 */ lui $t6,%hi(var8005d9a0)
/* d2a0: 91ced9a0 */ lbu $t6,%lo(var8005d9a0)($t6)
/* d2a4: 27bdffd0 */ addiu $sp,$sp,-48
/* d2a8: afbf0014 */ sw $ra,0x14($sp)
/* d2ac: 11c00024 */ beqz $t6,.L0000d340
/* d2b0: 00803025 */ or $a2,$a0,$zero
/* d2b4: 2ca10081 */ sltiu $at,$a1,0x81
/* d2b8: 14200021 */ bnez $at,.L0000d340
/* d2bc: 3c04dd9d */ lui $a0,0xdd9d
/* d2c0: 348476cf */ ori $a0,$a0,0x76cf
/* d2c4: 0c00349f */ jal xorDeadbeef
/* d2c8: afa60030 */ sw $a2,0x30($sp)
/* d2cc: 8fa60030 */ lw $a2,0x30($sp)
/* d2d0: 00002025 */ or $a0,$zero,$zero
/* d2d4: 00c01825 */ or $v1,$a2,$zero
.L0000d2d8:
/* d2d8: 8c6f0000 */ lw $t7,0x0($v1)
/* d2dc: 24840001 */ addiu $a0,$a0,0x1
/* d2e0: 28810008 */ slti $at,$a0,0x8
/* d2e4: 01e2c026 */ xor $t8,$t7,$v0
/* d2e8: 24630004 */ addiu $v1,$v1,0x4
/* d2ec: 1420fffa */ bnez $at,.L0000d2d8
/* d2f0: ac78fffc */ sw $t8,-0x4($v1)
/* d2f4: 3c046ead */ lui $a0,0x6ead
/* d2f8: 3484b9fe */ ori $a0,$a0,0xb9fe
/* d2fc: 0c0034a3 */ jal xorDeadbabe
/* d300: afa60030 */ sw $a2,0x30($sp)
/* d304: 00402025 */ or $a0,$v0,$zero
/* d308: 0c013994 */ jal osPiReadIo
/* d30c: 27a50024 */ addiu $a1,$sp,0x24
/* d310: 8fa30030 */ lw $v1,0x30($sp)
/* d314: 00002025 */ or $a0,$zero,$zero
/* d318: 24020008 */ addiu $v0,$zero,0x8
.L0000d31c:
/* d31c: 8c790000 */ lw $t9,0x0($v1)
/* d320: 8fa80024 */ lw $t0,0x24($sp)
/* d324: 24840001 */ addiu $a0,$a0,0x1
/* d328: 24630004 */ addiu $v1,$v1,0x4
/* d32c: 03284826 */ xor $t1,$t9,$t0
/* d330: 1482fffa */ bne $a0,$v0,.L0000d31c
/* d334: ac69fffc */ sw $t1,-0x4($v1)
/* d338: 3c018006 */ lui $at,%hi(var8005d9a0)
/* d33c: a020d9a0 */ sb $zero,%lo(var8005d9a0)($at)
.L0000d340:
/* d340: 8fbf0014 */ lw $ra,0x14($sp)
/* d344: 27bd0030 */ addiu $sp,$sp,0x30
/* d348: 03e00008 */ jr $ra
/* d34c: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0000d350
/* d350: 27bdffb8 */ addiu $sp,$sp,-72
/* d354: afb2001c */ sw $s2,0x1c($sp)
/* d358: 3c128009 */ lui $s2,%hi(var80094ae0)
/* d35c: 26524ae0 */ addiu $s2,$s2,%lo(var80094ae0)
/* d360: 8e4e0000 */ lw $t6,0x0($s2)
/* d364: afbf002c */ sw $ra,0x2c($sp)
/* d368: afb50028 */ sw $s5,0x28($sp)
/* d36c: afb40024 */ sw $s4,0x24($sp)
/* d370: afb30020 */ sw $s3,0x20($sp)
/* d374: afb10018 */ sw $s1,0x18($sp)
/* d378: 11c0001c */ beqz $t6,.L0000d3ec
/* d37c: afb00014 */ sw $s0,0x14($sp)
/* d380: 3c158009 */ lui $s5,%hi(var80094de8)
/* d384: 3c138009 */ lui $s3,%hi(var80094e88)
/* d388: 26734e88 */ addiu $s3,$s3,%lo(var80094e88)
/* d38c: 26b54de8 */ addiu $s5,$s5,%lo(var80094de8)
/* d390: 27b40040 */ addiu $s4,$sp,0x40
/* d394: 24110020 */ addiu $s1,$zero,0x20
/* d398: 02602025 */ or $a0,$s3,$zero
.L0000d39c:
/* d39c: 02802825 */ or $a1,$s4,$zero
/* d3a0: 24060001 */ addiu $a2,$zero,0x1
/* d3a4: 0c0121bc */ jal osRecvMesg
/* d3a8: 00008025 */ or $s0,$zero,$zero
/* d3ac: 3c028009 */ lui $v0,%hi(var80094ae8)
/* d3b0: 24424ae8 */ addiu $v0,$v0,%lo(var80094ae8)
/* d3b4: 8fa30040 */ lw $v1,0x40($sp)
.L0000d3b8:
/* d3b8: 50620005 */ beql $v1,$v0,.L0000d3d0
/* d3bc: 02b07821 */ addu $t7,$s5,$s0
/* d3c0: 26100001 */ addiu $s0,$s0,0x1
/* d3c4: 1611fffc */ bne $s0,$s1,.L0000d3b8
/* d3c8: 24420018 */ addiu $v0,$v0,0x18
/* d3cc: 02b07821 */ addu $t7,$s5,$s0
.L0000d3d0:
/* d3d0: a1e00000 */ sb $zero,0x0($t7)
/* d3d4: 8e420000 */ lw $v0,0x0($s2)
/* d3d8: 2458ffff */ addiu $t8,$v0,-1
/* d3dc: ae580000 */ sw $t8,0x0($s2)
/* d3e0: 8e590000 */ lw $t9,0x0($s2)
/* d3e4: 5720ffed */ bnezl $t9,.L0000d39c
/* d3e8: 02602025 */ or $a0,$s3,$zero
.L0000d3ec:
/* d3ec: 8fbf002c */ lw $ra,0x2c($sp)
/* d3f0: 8fb00014 */ lw $s0,0x14($sp)
/* d3f4: 8fb10018 */ lw $s1,0x18($sp)
/* d3f8: 8fb2001c */ lw $s2,0x1c($sp)
/* d3fc: 8fb30020 */ lw $s3,0x20($sp)
/* d400: 8fb40024 */ lw $s4,0x24($sp)
/* d404: 8fb50028 */ lw $s5,0x28($sp)
/* d408: 03e00008 */ jr $ra
/* d40c: 27bd0048 */ addiu $sp,$sp,0x48
);
GLOBAL_ASM(
glabel func0000d410
/* d410: 27bdffe8 */ addiu $sp,$sp,-24
/* d414: afbf0014 */ sw $ra,0x14($sp)
/* d418: afa40018 */ sw $a0,0x18($sp)
/* d41c: afa60020 */ sw $a2,0x20($sp)
/* d420: 0c00343e */ jal func0000d0f8
/* d424: 00003825 */ or $a3,$zero,$zero
/* d428: 0c0034d4 */ jal func0000d350
/* d42c: 00000000 */ nop
/* d430: 8fa40018 */ lw $a0,0x18($sp)
/* d434: 0c0034a7 */ jal func0000d29c
/* d438: 8fa50020 */ lw $a1,0x20($sp)
/* d43c: 8fbf0014 */ lw $ra,0x14($sp)
/* d440: 27bd0018 */ addiu $sp,$sp,0x18
/* d444: 03e00008 */ jr $ra
/* d448: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0000d44c
/* d44c: 27bdffe8 */ addiu $sp,$sp,-24
/* d450: afbf0014 */ sw $ra,0x14($sp)
/* d454: afa40018 */ sw $a0,0x18($sp)
/* d458: afa60020 */ sw $a2,0x20($sp)
/* d45c: 0c00343e */ jal func0000d0f8
/* d460: 24070001 */ addiu $a3,$zero,0x1
/* d464: 0c0034d4 */ jal func0000d350
/* d468: 00000000 */ nop
/* d46c: 8fa40018 */ lw $a0,0x18($sp)
/* d470: 0c0034a7 */ jal func0000d29c
/* d474: 8fa50020 */ lw $a1,0x20($sp)
/* d478: 8fbf0014 */ lw $ra,0x14($sp)
/* d47c: 27bd0018 */ addiu $sp,$sp,0x18
/* d480: 03e00008 */ jr $ra
/* d484: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0000d488
/* d488: 27bdffd0 */ addiu $sp,$sp,-48
/* d48c: afbf0014 */ sw $ra,0x14($sp)
/* d490: afa40030 */ sw $a0,0x30($sp)
/* d494: afa60038 */ sw $a2,0x38($sp)
/* d498: 14c00009 */ bnez $a2,.L0000d4c0
/* d49c: 00a03825 */ or $a3,$a1,$zero
/* d4a0: 2498000f */ addiu $t8,$a0,0xf
/* d4a4: 34a90001 */ ori $t1,$a1,0x1
/* d4a8: 392a0001 */ xori $t2,$t1,0x1
/* d4ac: 3719000f */ ori $t9,$t8,0xf
/* d4b0: 3b28000f */ xori $t0,$t9,0xf
/* d4b4: 00aa5823 */ subu $t3,$a1,$t2
/* d4b8: 10000014 */ b .L0000d50c
/* d4bc: 010b1021 */ addu $v0,$t0,$t3
.L0000d4c0:
/* d4c0: 8fa40030 */ lw $a0,0x30($sp)
/* d4c4: 8faf0038 */ lw $t7,0x38($sp)
/* d4c8: 34e50001 */ ori $a1,$a3,0x1
/* d4cc: 38ae0001 */ xori $t6,$a1,0x1
/* d4d0: 00ee1823 */ subu $v1,$a3,$t6
/* d4d4: 2484000f */ addiu $a0,$a0,0xf
/* d4d8: 006f3021 */ addu $a2,$v1,$t7
/* d4dc: 24c6000f */ addiu $a2,$a2,0xf
/* d4e0: 348c000f */ ori $t4,$a0,0xf
/* d4e4: 3984000f */ xori $a0,$t4,0xf
/* d4e8: 34d8000f */ ori $t8,$a2,0xf
/* d4ec: 3b06000f */ xori $a2,$t8,0xf
/* d4f0: afa4001c */ sw $a0,0x1c($sp)
/* d4f4: afa30018 */ sw $v1,0x18($sp)
/* d4f8: 0c003504 */ jal func0000d410
/* d4fc: 01c02825 */ or $a1,$t6,$zero
/* d500: 8fa30018 */ lw $v1,0x18($sp)
/* d504: 8fa4001c */ lw $a0,0x1c($sp)
/* d508: 00831021 */ addu $v0,$a0,$v1
.L0000d50c:
/* d50c: 8fbf0014 */ lw $ra,0x14($sp)
/* d510: 27bd0030 */ addiu $sp,$sp,0x30
/* d514: 03e00008 */ jr $ra
/* d518: 00000000 */ nop
/* d51c: 00000000 */ nop
);