#include #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_4a5e0.h" #include "lib/lib_4a680.h" #include "lib/lib_4ae00.h" #include "types.h" GLOBAL_ASM( glabel func00052070 /* 52070: 3c03a460 */ lui $v1,0xa460 /* 52074: 34630010 */ ori $v1,$v1,0x10 /* 52078: 8c620000 */ lw $v0,0x0($v1) /* 5207c: 3c188000 */ lui $t8,0x8000 /* 52080: 304e0003 */ andi $t6,$v0,0x3 /* 52084: 11c00005 */ beqz $t6,.L0005209c /* 52088: 00000000 */ sll $zero,$zero,0x0 /* 5208c: 8c620000 */ lw $v0,0x0($v1) .L00052090: /* 52090: 304f0003 */ andi $t7,$v0,0x3 /* 52094: 55e0fffe */ bnezl $t7,.L00052090 /* 52098: 8c620000 */ lw $v0,0x0($v1) .L0005209c: /* 5209c: 8f180308 */ lw $t8,0x308($t8) /* 520a0: 3c01a000 */ lui $at,0xa000 /* 520a4: 00001025 */ or $v0,$zero,$zero /* 520a8: 0304c825 */ or $t9,$t8,$a0 /* 520ac: 03214025 */ or $t0,$t9,$at /* 520b0: 8d090000 */ lw $t1,0x0($t0) /* 520b4: 03e00008 */ jr $ra /* 520b8: aca90000 */ sw $t1,0x0($a1) /* 520bc: 00000000 */ sll $zero,$zero,0x0 ); GLOBAL_ASM( glabel func000520c0 /* 520c0: 27bdff70 */ addiu $sp,$sp,-144 /* 520c4: afb10020 */ sw $s1,0x20($sp) /* 520c8: 30a200ff */ andi $v0,$a1,0xff /* 520cc: 24030058 */ addiu $v1,$zero,0x58 /* 520d0: 00808825 */ or $s1,$a0,$zero /* 520d4: afbf002c */ sw $ra,0x2c($sp) /* 520d8: afb30028 */ sw $s3,0x28($sp) /* 520dc: afb20024 */ sw $s2,0x24($sp) /* 520e0: afb0001c */ sw $s0,0x1c($sp) /* 520e4: 14620004 */ bne $v1,$v0,.L000520f8 /* 520e8: afa50094 */ sw $a1,0x94($sp) /* 520ec: 3c138006 */ lui $s3,%hi(var80061344) /* 520f0: 10000003 */ beqz $zero,.L00052100 /* 520f4: 26731344 */ addiu $s3,$s3,%lo(var80061344) .L000520f8: /* 520f8: 3c138006 */ lui $s3,%hi(var80061330) /* 520fc: 26731330 */ addiu $s3,$s3,%lo(var80061330) .L00052100: /* 52100: 2401006f */ addiu $at,$zero,0x6f /* 52104: 14410003 */ bne $v0,$at,.L00052114 /* 52108: 24100018 */ addiu $s0,$zero,0x18 /* 5210c: 10000009 */ beqz $zero,.L00052134 /* 52110: 24090008 */ addiu $t1,$zero,0x8 .L00052114: /* 52114: 24010078 */ addiu $at,$zero,0x78 /* 52118: 10410005 */ beq $v0,$at,.L00052130 /* 5211c: 24080010 */ addiu $t0,$zero,0x10 /* 52120: 10620003 */ beq $v1,$v0,.L00052130 /* 52124: 00000000 */ sll $zero,$zero,0x0 /* 52128: 10000001 */ beqz $zero,.L00052130 /* 5212c: 2408000a */ addiu $t0,$zero,0xa .L00052130: /* 52130: 01004825 */ or $t1,$t0,$zero .L00052134: /* 52134: 8e380000 */ lw $t8,0x0($s1) /* 52138: 8e390004 */ lw $t9,0x4($s1) /* 5213c: 24010064 */ addiu $at,$zero,0x64 /* 52140: afb80060 */ sw $t8,0x60($sp) /* 52144: afb80040 */ sw $t8,0x40($sp) /* 52148: afb90044 */ sw $t9,0x44($sp) /* 5214c: 10410004 */ beq $v0,$at,.L00052160 /* 52150: afb90064 */ sw $t9,0x64($sp) /* 52154: 24010069 */ addiu $at,$zero,0x69 /* 52158: 54410010 */ bnel $v0,$at,.L0005219c /* 5215c: 8faa0060 */ lw $t2,0x60($sp) .L00052160: /* 52160: 8fac0040 */ lw $t4,0x40($sp) /* 52164: 5d80000d */ bgtzl $t4,.L0005219c /* 52168: 8faa0060 */ lw $t2,0x60($sp) /* 5216c: 05800003 */ bltz $t4,.L0005217c /* 52170: 8fae0060 */ lw $t6,0x60($sp) /* 52174: 10000009 */ beqz $zero,.L0005219c /* 52178: 8faa0060 */ lw $t2,0x60($sp) .L0005217c: /* 5217c: 8faf0064 */ lw $t7,0x64($sp) /* 52180: 01c0c027 */ nor $t8,$t6,$zero /* 52184: 2de10001 */ sltiu $at,$t7,0x1 /* 52188: 0301c021 */ addu $t8,$t8,$at /* 5218c: 000fc823 */ negu $t9,$t7 /* 52190: afb90064 */ sw $t9,0x64($sp) /* 52194: afb80060 */ sw $t8,0x60($sp) /* 52198: 8faa0060 */ lw $t2,0x60($sp) .L0005219c: /* 5219c: 8fab0064 */ lw $t3,0x64($sp) /* 521a0: 24080017 */ addiu $t0,$zero,0x17 /* 521a4: 15400006 */ bnez $t2,.L000521c0 /* 521a8: 8fa40060 */ lw $a0,0x60($sp) /* 521ac: 55600005 */ bnezl $t3,.L000521c4 /* 521b0: 24100017 */ addiu $s0,$zero,0x17 /* 521b4: 8e2c0024 */ lw $t4,0x24($s1) /* 521b8: 51800010 */ beqzl $t4,.L000521fc /* 521bc: 27b20078 */ addiu $s2,$sp,0x78 .L000521c0: /* 521c0: 24100017 */ addiu $s0,$zero,0x17 .L000521c4: /* 521c4: 8fa50064 */ lw $a1,0x64($sp) /* 521c8: 01203825 */ or $a3,$t1,$zero /* 521cc: 000937c3 */ sra $a2,$t1,0x1f /* 521d0: afa8004c */ sw $t0,0x4c($sp) /* 521d4: 0c012b8b */ jal func0004ae2c /* 521d8: afa90070 */ sw $t1,0x70($sp) /* 521dc: 8fa8004c */ lw $t0,0x4c($sp) /* 521e0: 00737021 */ addu $t6,$v1,$s3 /* 521e4: 91cf0000 */ lbu $t7,0x0($t6) /* 521e8: 27b20078 */ addiu $s2,$sp,0x78 /* 521ec: 8fa90070 */ lw $t1,0x70($sp) /* 521f0: 0248c021 */ addu $t8,$s2,$t0 /* 521f4: a30f0000 */ sb $t7,0x0($t8) /* 521f8: 27b20078 */ addiu $s2,$sp,0x78 .L000521fc: /* 521fc: 8fa40060 */ lw $a0,0x60($sp) /* 52200: 8fa50064 */ lw $a1,0x64($sp) /* 52204: 01203825 */ or $a3,$t1,$zero /* 52208: 000937c3 */ sra $a2,$t1,0x1f /* 5220c: 0c012b9a */ jal func0004ae68 /* 52210: afa90070 */ sw $t1,0x70($sp) /* 52214: 8fa90070 */ lw $t1,0x70($sp) /* 52218: ae230004 */ sw $v1,0x4($s1) /* 5221c: 0440002b */ bltz $v0,.L000522cc /* 52220: ae220000 */ sw $v0,0x0($s1) /* 52224: 1c400003 */ bgtz $v0,.L00052234 /* 52228: 00000000 */ sll $zero,$zero,0x0 /* 5222c: 50600028 */ beqzl $v1,.L000522d0 /* 52230: 240c0018 */ addiu $t4,$zero,0x18 .L00052234: /* 52234: 1a000025 */ blez $s0,.L000522cc /* 52238: 000967c3 */ sra $t4,$t1,0x1f /* 5223c: 8e2a0000 */ lw $t2,0x0($s1) /* 52240: 8e2b0004 */ lw $t3,0x4($s1) /* 52244: afa9003c */ sw $t1,0x3c($sp) /* 52248: afac0038 */ sw $t4,0x38($sp) /* 5224c: afaa0040 */ sw $t2,0x40($sp) /* 52250: afab0044 */ sw $t3,0x44($sp) /* 52254: 8fae0038 */ lw $t6,0x38($sp) .L00052258: /* 52258: 8faf003c */ lw $t7,0x3c($sp) /* 5225c: 27a40050 */ addiu $a0,$sp,0x50 /* 52260: 8fa60040 */ lw $a2,0x40($sp) /* 52264: 8fa70044 */ lw $a3,0x44($sp) /* 52268: afae0010 */ sw $t6,0x10($sp) /* 5226c: 0c0129a0 */ jal func0004a680 /* 52270: afaf0014 */ sw $t7,0x14($sp) /* 52274: 8fb80050 */ lw $t8,0x50($sp) /* 52278: 8fb90054 */ lw $t9,0x54($sp) /* 5227c: 2604ffff */ addiu $a0,$s0,-1 /* 52280: ae380000 */ sw $t8,0x0($s1) /* 52284: ae390004 */ sw $t9,0x4($s1) /* 52288: 8fab005c */ lw $t3,0x5c($sp) /* 5228c: 02447821 */ addu $t7,$s2,$a0 /* 52290: 00808025 */ or $s0,$a0,$zero /* 52294: 01736821 */ addu $t5,$t3,$s3 /* 52298: 91ae0000 */ lbu $t6,0x0($t5) /* 5229c: a1ee0000 */ sb $t6,0x0($t7) /* 522a0: 8e380000 */ lw $t8,0x0($s1) /* 522a4: 8e390004 */ lw $t9,0x4($s1) /* 522a8: afb80040 */ sw $t8,0x40($sp) /* 522ac: 07000007 */ bltz $t8,.L000522cc /* 522b0: afb90044 */ sw $t9,0x44($sp) /* 522b4: 1f000003 */ bgtz $t8,.L000522c4 /* 522b8: 00000000 */ sll $zero,$zero,0x0 /* 522bc: 53200004 */ beqzl $t9,.L000522d0 /* 522c0: 240c0018 */ addiu $t4,$zero,0x18 .L000522c4: /* 522c4: 5e00ffe4 */ bgtzl $s0,.L00052258 /* 522c8: 8fae0038 */ lw $t6,0x38($sp) .L000522cc: /* 522cc: 240c0018 */ addiu $t4,$zero,0x18 .L000522d0: /* 522d0: 01903023 */ subu $a2,$t4,$s0 /* 522d4: ae260014 */ sw $a2,0x14($s1) /* 522d8: 8e240008 */ lw $a0,0x8($s1) /* 522dc: 0c012978 */ jal memcpy /* 522e0: 02502821 */ addu $a1,$s2,$s0 /* 522e4: 8e250014 */ lw $a1,0x14($s1) /* 522e8: 8e240024 */ lw $a0,0x24($s1) /* 522ec: 00a4082a */ slt $at,$a1,$a0 /* 522f0: 10200002 */ beqz $at,.L000522fc /* 522f4: 00856823 */ subu $t5,$a0,$a1 /* 522f8: ae2d0010 */ sw $t5,0x10($s1) .L000522fc: /* 522fc: 04830010 */ bgezl $a0,.L00052340 /* 52300: 8fbf002c */ lw $ra,0x2c($sp) /* 52304: 8e2e0030 */ lw $t6,0x30($s1) /* 52308: 24010010 */ addiu $at,$zero,0x10 /* 5230c: 31cf0014 */ andi $t7,$t6,0x14 /* 52310: 55e1000b */ bnel $t7,$at,.L00052340 /* 52314: 8fbf002c */ lw $ra,0x2c($sp) /* 52318: 8e380028 */ lw $t8,0x28($s1) /* 5231c: 8e39000c */ lw $t9,0xc($s1) /* 52320: 8e220010 */ lw $v0,0x10($s1) /* 52324: 03195023 */ subu $t2,$t8,$t9 /* 52328: 01425823 */ subu $t3,$t2,$v0 /* 5232c: 01658023 */ subu $s0,$t3,$a1 /* 52330: 1a000002 */ blez $s0,.L0005233c /* 52334: 00506021 */ addu $t4,$v0,$s0 /* 52338: ae2c0010 */ sw $t4,0x10($s1) .L0005233c: /* 5233c: 8fbf002c */ lw $ra,0x2c($sp) .L00052340: /* 52340: 8fb0001c */ lw $s0,0x1c($sp) /* 52344: 8fb10020 */ lw $s1,0x20($sp) /* 52348: 8fb20024 */ lw $s2,0x24($sp) /* 5234c: 8fb30028 */ lw $s3,0x28($sp) /* 52350: 03e00008 */ jr $ra /* 52354: 27bd0090 */ addiu $sp,$sp,0x90 /* 52358: 00000000 */ sll $zero,$zero,0x0 /* 5235c: 00000000 */ sll $zero,$zero,0x0 );