papermario/ver/jp/asm/nonmatchings/2BC40/func_800510E4.s
Ethan Roseman 3315d6010f
Splat refactor (#257)
* all non-world rodata migrated

* data disasm

* kinda working

* updated yaml

* bloop

* linker header

* configure 2.0

* bin

* mass rename to remove code_

* pause rename

* battle partner stuff

* whew

* more renames

* more renames

* more renaming

* it builds!

* updates

* remove main prefix

* one more thing

* crc, yay0

* .data, .rodata, .bss

* img

* dead_atan2

* it buildsgit add -A

* split battle/partner/6FAD10

* rm &s on sleepy_sheep syms

* sha1sum ninja rule description

* OK but commented out PaperMarioMapFS and PaperMarioNpcSprites

* uncomment

* fix mapfs

* match func_8003CFB4

* .

* clean up and name npc_iter_no_op

* npc.c

* enable cc warnings

* name npc_find_near

* use singular options.asset_path

* smores

* cc_dsl only when needed

* kinda fix configure for splat refactor2

* ok!

* new msg format

* remove old msg format docs

* slight bug fixes, splat adjustment

* git subrepo pull (merge) --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "cfc140bb76"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "cfc140bb76"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* git subrepo pull (merge) --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "85349befcd"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "85349befcd"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* Update symbol addrs

* git subrepo pull tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "a44631e194"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "a44631e194"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

Co-authored-by: Alex Bates <hi@imalex.xyz>
2021-04-13 16:47:52 +09:00

942 lines
47 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800510E4
/* 2C4E4 800510E4 27BDFF90 */ addiu $sp, $sp, -0x70
/* 2C4E8 800510E8 AFB5005C */ sw $s5, 0x5c($sp)
/* 2C4EC 800510EC 00A0A82D */ daddu $s5, $a1, $zero
/* 2C4F0 800510F0 AFB00048 */ sw $s0, 0x48($sp)
/* 2C4F4 800510F4 0000802D */ daddu $s0, $zero, $zero
/* 2C4F8 800510F8 27A50010 */ addiu $a1, $sp, 0x10
/* 2C4FC 800510FC AFBF006C */ sw $ra, 0x6c($sp)
/* 2C500 80051100 AFBE0068 */ sw $fp, 0x68($sp)
/* 2C504 80051104 AFB70064 */ sw $s7, 0x64($sp)
/* 2C508 80051108 AFB60060 */ sw $s6, 0x60($sp)
/* 2C50C 8005110C AFB40058 */ sw $s4, 0x58($sp)
/* 2C510 80051110 AFB30054 */ sw $s3, 0x54($sp)
/* 2C514 80051114 AFB20050 */ sw $s2, 0x50($sp)
/* 2C518 80051118 AFB1004C */ sw $s1, 0x4c($sp)
/* 2C51C 8005111C AFA40070 */ sw $a0, 0x70($sp)
/* 2C520 80051120 8C880000 */ lw $t0, ($a0)
/* 2C524 80051124 27A40020 */ addiu $a0, $sp, 0x20
/* 2C528 80051128 A3A00034 */ sb $zero, 0x34($sp)
/* 2C52C 8005112C AFA80030 */ sw $t0, 0x30($sp)
.L80051130:
/* 2C530 80051130 00B01021 */ addu $v0, $a1, $s0
/* 2C534 80051134 00901821 */ addu $v1, $a0, $s0
/* 2C538 80051138 26100001 */ addiu $s0, $s0, 1
/* 2C53C 8005113C A0400000 */ sb $zero, ($v0)
/* 2C540 80051140 2E020010 */ sltiu $v0, $s0, 0x10
/* 2C544 80051144 1440FFFA */ bnez $v0, .L80051130
/* 2C548 80051148 A0600000 */ sb $zero, ($v1)
/* 2C54C 8005114C 92A20043 */ lbu $v0, 0x43($s5)
/* 2C550 80051150 24100001 */ addiu $s0, $zero, 1
/* 2C554 80051154 14500005 */ bne $v0, $s0, .L8005116C
/* 2C558 80051158 00000000 */ nop
/* 2C55C 8005115C 8FA40070 */ lw $a0, 0x70($sp)
/* 2C560 80051160 0C0147A6 */ jal func_80051E98
/* 2C564 80051164 02A0282D */ daddu $a1, $s5, $zero
/* 2C568 80051168 A2A00043 */ sb $zero, 0x43($s5)
.L8005116C:
/* 2C56C 8005116C 96A20040 */ lhu $v0, 0x40($s5)
/* 2C570 80051170 10400024 */ beqz $v0, .L80051204
/* 2C574 80051174 0000B02D */ daddu $s6, $zero, $zero
/* 2C578 80051178 8EA20038 */ lw $v0, 0x38($s5)
/* 2C57C 8005117C 8EA4003C */ lw $a0, 0x3c($s5)
/* 2C580 80051180 96A30040 */ lhu $v1, 0x40($s5)
/* 2C584 80051184 00441021 */ addu $v0, $v0, $a0
/* 2C588 80051188 2463FFFF */ addiu $v1, $v1, -1
/* 2C58C 8005118C A6A30040 */ sh $v1, 0x40($s5)
/* 2C590 80051190 3063FFFF */ andi $v1, $v1, 0xffff
/* 2C594 80051194 14600018 */ bnez $v1, .L800511F8
/* 2C598 80051198 AEA20038 */ sw $v0, 0x38($s5)
/* 2C59C 8005119C 92A20042 */ lbu $v0, 0x42($s5)
/* 2C5A0 800511A0 92A30026 */ lbu $v1, 0x26($s5)
/* 2C5A4 800511A4 00021600 */ sll $v0, $v0, 0x18
/* 2C5A8 800511A8 10600013 */ beqz $v1, .L800511F8
/* 2C5AC 800511AC AEA20038 */ sw $v0, 0x38($s5)
/* 2C5B0 800511B0 1470000D */ bne $v1, $s0, .L800511E8
/* 2C5B4 800511B4 24020002 */ addiu $v0, $zero, 2
/* 2C5B8 800511B8 3C028008 */ lui $v0, %hi(D_800784F0)
/* 2C5BC 800511BC 244284F0 */ addiu $v0, $v0, %lo(D_800784F0)
/* 2C5C0 800511C0 AEA20008 */ sw $v0, 8($s5)
/* 2C5C4 800511C4 0801447E */ j .L800511F8
/* 2C5C8 800511C8 AEA30018 */ sw $v1, 0x18($s5)
.L800511CC:
/* 2C5CC 800511CC 8FA40070 */ lw $a0, 0x70($sp)
/* 2C5D0 800511D0 02A0282D */ daddu $a1, $s5, $zero
/* 2C5D4 800511D4 AEA00008 */ sw $zero, 8($s5)
/* 2C5D8 800511D8 0C0147A6 */ jal func_80051E98
/* 2C5DC 800511DC AEA00020 */ sw $zero, 0x20($s5)
/* 2C5E0 800511E0 0801475B */ j .L80051D6C
/* 2C5E4 800511E4 00000000 */ nop
.L800511E8:
/* 2C5E8 800511E8 14620004 */ bne $v1, $v0, .L800511FC
/* 2C5EC 800511EC 24080001 */ addiu $t0, $zero, 1
/* 2C5F0 800511F0 24020003 */ addiu $v0, $zero, 3
/* 2C5F4 800511F4 A2A20024 */ sb $v0, 0x24($s5)
.L800511F8:
/* 2C5F8 800511F8 24080001 */ addiu $t0, $zero, 1
.L800511FC:
/* 2C5FC 800511FC A3A80034 */ sb $t0, 0x34($sp)
/* 2C600 80051200 0000B02D */ daddu $s6, $zero, $zero
.L80051204:
/* 2C604 80051204 27A80020 */ addiu $t0, $sp, 0x20
/* 2C608 80051208 AFA80038 */ sw $t0, 0x38($sp)
/* 2C60C 8005120C 241E0044 */ addiu $fp, $zero, 0x44
.L80051210:
/* 2C610 80051210 02BE9821 */ addu $s3, $s5, $fp
/* 2C614 80051214 86620014 */ lh $v0, 0x14($s3)
/* 2C618 80051218 96630014 */ lhu $v1, 0x14($s3)
/* 2C61C 8005121C 10400042 */ beqz $v0, .L80051328
/* 2C620 80051220 2462FFFF */ addiu $v0, $v1, -1
/* 2C624 80051224 A6620014 */ sh $v0, 0x14($s3)
/* 2C628 80051228 00021400 */ sll $v0, $v0, 0x10
/* 2C62C 8005122C 10400005 */ beqz $v0, .L80051244
/* 2C630 80051230 00000000 */ nop
/* 2C634 80051234 8E62000C */ lw $v0, 0xc($s3)
/* 2C638 80051238 8E630010 */ lw $v1, 0x10($s3)
/* 2C63C 8005123C 08014493 */ j .L8005124C
/* 2C640 80051240 00431021 */ addu $v0, $v0, $v1
.L80051244:
/* 2C644 80051244 86620016 */ lh $v0, 0x16($s3)
/* 2C648 80051248 00021400 */ sll $v0, $v0, 0x10
.L8005124C:
/* 2C64C 8005124C AE62000C */ sw $v0, 0xc($s3)
/* 2C650 80051250 00162400 */ sll $a0, $s6, 0x10
/* 2C654 80051254 8EB00030 */ lw $s0, 0x30($s5)
/* 2C658 80051258 8EA30014 */ lw $v1, 0x14($s5)
/* 2C65C 8005125C 8EA20034 */ lw $v0, 0x34($s5)
/* 2C660 80051260 0202102B */ sltu $v0, $s0, $v0
/* 2C664 80051264 10400030 */ beqz $v0, .L80051328
/* 2C668 80051268 0064B821 */ addu $s7, $v1, $a0
/* 2C66C 8005126C 001010C0 */ sll $v0, $s0, 3
/* 2C670 80051270 00501021 */ addu $v0, $v0, $s0
/* 2C674 80051274 000210C0 */ sll $v0, $v0, 3
/* 2C678 80051278 24541320 */ addiu $s4, $v0, 0x1320
.L8005127C:
/* 2C67C 8005127C 8EA20030 */ lw $v0, 0x30($s5)
/* 2C680 80051280 8FA80070 */ lw $t0, 0x70($sp)
/* 2C684 80051284 02021023 */ subu $v0, $s0, $v0
/* 2C688 80051288 000210C0 */ sll $v0, $v0, 3
/* 2C68C 8005128C 244207B4 */ addiu $v0, $v0, 0x7b4
/* 2C690 80051290 01029021 */ addu $s2, $t0, $v0
/* 2C694 80051294 8E420000 */ lw $v0, ($s2)
/* 2C698 80051298 3C08FFFF */ lui $t0, 0xffff
/* 2C69C 8005129C 00481024 */ and $v0, $v0, $t0
/* 2C6A0 800512A0 1457001C */ bne $v0, $s7, .L80051314
/* 2C6A4 800512A4 00000000 */ nop
/* 2C6A8 800512A8 8FA80030 */ lw $t0, 0x30($sp)
/* 2C6AC 800512AC 01148821 */ addu $s1, $t0, $s4
/* 2C6B0 800512B0 8FA80070 */ lw $t0, 0x70($sp)
/* 2C6B4 800512B4 92230045 */ lbu $v1, 0x45($s1)
/* 2C6B8 800512B8 91020022 */ lbu $v0, 0x22($t0)
/* 2C6BC 800512BC 14620015 */ bne $v1, $v0, .L80051314
/* 2C6C0 800512C0 24080009 */ addiu $t0, $zero, 9
/* 2C6C4 800512C4 12C80013 */ beq $s6, $t0, .L80051314
/* 2C6C8 800512C8 00000000 */ nop
/* 2C6CC 800512CC 86420004 */ lh $v0, 4($s2)
/* 2C6D0 800512D0 8664000C */ lh $a0, 0xc($s3)
/* 2C6D4 800512D4 0C014D6A */ jal func_800535A8
/* 2C6D8 800512D8 00442021 */ addu $a0, $v0, $a0
/* 2C6DC 800512DC 8E620000 */ lw $v0, ($s3)
/* 2C6E0 800512E0 C4420020 */ lwc1 $f2, 0x20($v0)
/* 2C6E4 800512E4 46020002 */ mul.s $f0, $f0, $f2
/* 2C6E8 800512E8 00000000 */ nop
/* 2C6EC 800512EC 92220043 */ lbu $v0, 0x43($s1)
/* 2C6F0 800512F0 34420008 */ ori $v0, $v0, 8
/* 2C6F4 800512F4 A2220043 */ sb $v0, 0x43($s1)
/* 2C6F8 800512F8 E6200004 */ swc1 $f0, 4($s1)
/* 2C6FC 800512FC 8EA20030 */ lw $v0, 0x30($s5)
/* 2C700 80051300 8FA80038 */ lw $t0, 0x38($sp)
/* 2C704 80051304 02021023 */ subu $v0, $s0, $v0
/* 2C708 80051308 01021021 */ addu $v0, $t0, $v0
/* 2C70C 8005130C 24080001 */ addiu $t0, $zero, 1
/* 2C710 80051310 A0480000 */ sb $t0, ($v0)
.L80051314:
/* 2C714 80051314 8EA20034 */ lw $v0, 0x34($s5)
/* 2C718 80051318 26100001 */ addiu $s0, $s0, 1
/* 2C71C 8005131C 0202102B */ sltu $v0, $s0, $v0
/* 2C720 80051320 1440FFD6 */ bnez $v0, .L8005127C
/* 2C724 80051324 26940048 */ addiu $s4, $s4, 0x48
.L80051328:
/* 2C728 80051328 26D60001 */ addiu $s6, $s6, 1
/* 2C72C 8005132C 2EC2000A */ sltiu $v0, $s6, 0xa
/* 2C730 80051330 1440FFB7 */ bnez $v0, .L80051210
/* 2C734 80051334 27DE0028 */ addiu $fp, $fp, 0x28
/* 2C738 80051338 0000B02D */ daddu $s6, $zero, $zero
/* 2C73C 8005133C 3C06FFFF */ lui $a2, 0xffff
/* 2C740 80051340 24050044 */ addiu $a1, $zero, 0x44
.L80051344:
/* 2C744 80051344 02A59821 */ addu $s3, $s5, $a1
/* 2C748 80051348 86620020 */ lh $v0, 0x20($s3)
/* 2C74C 8005134C 96630020 */ lhu $v1, 0x20($s3)
/* 2C750 80051350 1040003F */ beqz $v0, .L80051450
/* 2C754 80051354 2462FFFF */ addiu $v0, $v1, -1
/* 2C758 80051358 A6620020 */ sh $v0, 0x20($s3)
/* 2C75C 8005135C 00021400 */ sll $v0, $v0, 0x10
/* 2C760 80051360 10400005 */ beqz $v0, .L80051378
/* 2C764 80051364 00000000 */ nop
/* 2C768 80051368 8E620018 */ lw $v0, 0x18($s3)
/* 2C76C 8005136C 8E63001C */ lw $v1, 0x1c($s3)
/* 2C770 80051370 080144E0 */ j .L80051380
/* 2C774 80051374 00431021 */ addu $v0, $v0, $v1
.L80051378:
/* 2C778 80051378 86620022 */ lh $v0, 0x22($s3)
/* 2C77C 8005137C 00021400 */ sll $v0, $v0, 0x10
.L80051380:
/* 2C780 80051380 AE620018 */ sw $v0, 0x18($s3)
/* 2C784 80051384 00162400 */ sll $a0, $s6, 0x10
/* 2C788 80051388 8EB00030 */ lw $s0, 0x30($s5)
/* 2C78C 8005138C 8EA30014 */ lw $v1, 0x14($s5)
/* 2C790 80051390 8EA20034 */ lw $v0, 0x34($s5)
/* 2C794 80051394 0202102B */ sltu $v0, $s0, $v0
/* 2C798 80051398 1040002D */ beqz $v0, .L80051450
/* 2C79C 8005139C 0064B821 */ addu $s7, $v1, $a0
/* 2C7A0 800513A0 001010C0 */ sll $v0, $s0, 3
/* 2C7A4 800513A4 00501021 */ addu $v0, $v0, $s0
/* 2C7A8 800513A8 000210C0 */ sll $v0, $v0, 3
/* 2C7AC 800513AC 24441320 */ addiu $a0, $v0, 0x1320
.L800513B0:
/* 2C7B0 800513B0 8EA20030 */ lw $v0, 0x30($s5)
/* 2C7B4 800513B4 8FA80070 */ lw $t0, 0x70($sp)
/* 2C7B8 800513B8 02021023 */ subu $v0, $s0, $v0
/* 2C7BC 800513BC 000210C0 */ sll $v0, $v0, 3
/* 2C7C0 800513C0 244207B4 */ addiu $v0, $v0, 0x7b4
/* 2C7C4 800513C4 01029021 */ addu $s2, $t0, $v0
/* 2C7C8 800513C8 8E420000 */ lw $v0, ($s2)
/* 2C7CC 800513CC 00461024 */ and $v0, $v0, $a2
/* 2C7D0 800513D0 1457001A */ bne $v0, $s7, .L8005143C
/* 2C7D4 800513D4 00000000 */ nop
/* 2C7D8 800513D8 8FA80030 */ lw $t0, 0x30($sp)
/* 2C7DC 800513DC 01048821 */ addu $s1, $t0, $a0
/* 2C7E0 800513E0 8FA80070 */ lw $t0, 0x70($sp)
/* 2C7E4 800513E4 92230045 */ lbu $v1, 0x45($s1)
/* 2C7E8 800513E8 91020022 */ lbu $v0, 0x22($t0)
/* 2C7EC 800513EC 14620013 */ bne $v1, $v0, .L8005143C
/* 2C7F0 800513F0 00000000 */ nop
/* 2C7F4 800513F4 92430001 */ lbu $v1, 1($s2)
/* 2C7F8 800513F8 00031080 */ sll $v0, $v1, 2
/* 2C7FC 800513FC 00431021 */ addu $v0, $v0, $v1
/* 2C800 80051400 000210C0 */ sll $v0, $v0, 3
/* 2C804 80051404 00559821 */ addu $s3, $v0, $s5
/* 2C808 80051408 82A30038 */ lb $v1, 0x38($s5)
/* 2C80C 8005140C 8662005C */ lh $v0, 0x5c($s3)
/* 2C810 80051410 00620018 */ mult $v1, $v0
/* 2C814 80051414 00004012 */ mflo $t0
/* 2C818 80051418 82420006 */ lb $v0, 6($s2)
/* 2C81C 8005141C 00000000 */ nop
/* 2C820 80051420 01020018 */ mult $t0, $v0
/* 2C824 80051424 9222003D */ lbu $v0, 0x3d($s1)
/* 2C828 80051428 34420020 */ ori $v0, $v0, 0x20
/* 2C82C 8005142C A222003D */ sb $v0, 0x3d($s1)
/* 2C830 80051430 00004012 */ mflo $t0
/* 2C834 80051434 00081383 */ sra $v0, $t0, 0xe
/* 2C838 80051438 A6220040 */ sh $v0, 0x40($s1)
.L8005143C:
/* 2C83C 8005143C 8EA20034 */ lw $v0, 0x34($s5)
/* 2C840 80051440 26100001 */ addiu $s0, $s0, 1
/* 2C844 80051444 0202102B */ sltu $v0, $s0, $v0
/* 2C848 80051448 1440FFD9 */ bnez $v0, .L800513B0
/* 2C84C 8005144C 24840048 */ addiu $a0, $a0, 0x48
.L80051450:
/* 2C850 80051450 26D60001 */ addiu $s6, $s6, 1
/* 2C854 80051454 2EC2000A */ sltiu $v0, $s6, 0xa
/* 2C858 80051458 1440FFBA */ bnez $v0, .L80051344
/* 2C85C 8005145C 24A50028 */ addiu $a1, $a1, 0x28
/* 2C860 80051460 8EA20018 */ lw $v0, 0x18($s5)
/* 2C864 80051464 2442FFFF */ addiu $v0, $v0, -1
/* 2C868 80051468 1C400240 */ bgtz $v0, .L80051D6C
/* 2C86C 8005146C AEA20018 */ sw $v0, 0x18($s5)
/* 2C870 80051470 1440023E */ bnez $v0, .L80051D6C
/* 2C874 80051474 00000000 */ nop
/* 2C878 80051478 241E0001 */ addiu $fp, $zero, 1
/* 2C87C 8005147C 27A80010 */ addiu $t0, $sp, 0x10
/* 2C880 80051480 AFA80040 */ sw $t0, 0x40($sp)
/* 2C884 80051484 27A80020 */ addiu $t0, $sp, 0x20
/* 2C888 80051488 AFA8003C */ sw $t0, 0x3c($sp)
.L8005148C:
/* 2C88C 8005148C 0C0147A0 */ jal func_80051E80
/* 2C890 80051490 02A0202D */ daddu $a0, $s5, $zero
/* 2C894 80051494 0040802D */ daddu $s0, $v0, $zero
/* 2C898 80051498 00101600 */ sll $v0, $s0, 0x18
/* 2C89C 8005149C 0440000E */ bltz $v0, .L800514D8
/* 2C8A0 800514A0 320300FF */ andi $v1, $s0, 0xff
/* 2C8A4 800514A4 1060FF49 */ beqz $v1, .L800511CC
/* 2C8A8 800514A8 2C620078 */ sltiu $v0, $v1, 0x78
/* 2C8AC 800514AC 5440022C */ bnel $v0, $zero, .L80051D60
/* 2C8B0 800514B0 AEA30018 */ sw $v1, 0x18($s5)
/* 2C8B4 800514B4 0C0147A0 */ jal func_80051E80
/* 2C8B8 800514B8 02A0202D */ daddu $a0, $s5, $zero
/* 2C8BC 800514BC 32030007 */ andi $v1, $s0, 7
/* 2C8C0 800514C0 00031A00 */ sll $v1, $v1, 8
/* 2C8C4 800514C4 304200FF */ andi $v0, $v0, 0xff
/* 2C8C8 800514C8 00621821 */ addu $v1, $v1, $v0
/* 2C8CC 800514CC 24630078 */ addiu $v1, $v1, 0x78
/* 2C8D0 800514D0 08014758 */ j .L80051D60
/* 2C8D4 800514D4 AEA30018 */ sw $v1, 0x18($s5)
.L800514D8:
/* 2C8D8 800514D8 0C0147A0 */ jal func_80051E80
/* 2C8DC 800514DC 02A0202D */ daddu $a0, $s5, $zero
/* 2C8E0 800514E0 3216000F */ andi $s6, $s0, 0xf
/* 2C8E4 800514E4 00161880 */ sll $v1, $s6, 2
/* 2C8E8 800514E8 00761821 */ addu $v1, $v1, $s6
/* 2C8EC 800514EC 000318C0 */ sll $v1, $v1, 3
/* 2C8F0 800514F0 24630044 */ addiu $v1, $v1, 0x44
/* 2C8F4 800514F4 02A39821 */ addu $s3, $s5, $v1
/* 2C8F8 800514F8 0040B82D */ daddu $s7, $v0, $zero
/* 2C8FC 800514FC 320300F0 */ andi $v1, $s0, 0xf0
/* 2C900 80051500 240200B0 */ addiu $v0, $zero, 0xb0
/* 2C904 80051504 1062018E */ beq $v1, $v0, .L80051B40
/* 2C908 80051508 286200B1 */ slti $v0, $v1, 0xb1
/* 2C90C 8005150C 1040000E */ beqz $v0, .L80051548
/* 2C910 80051510 24020090 */ addiu $v0, $zero, 0x90
/* 2C914 80051514 10620047 */ beq $v1, $v0, .L80051634
/* 2C918 80051518 28620091 */ slti $v0, $v1, 0x91
/* 2C91C 8005151C 10400005 */ beqz $v0, .L80051534
/* 2C920 80051520 24020080 */ addiu $v0, $zero, 0x80
/* 2C924 80051524 10620011 */ beq $v1, $v0, .L8005156C
/* 2C928 80051528 00000000 */ nop
/* 2C92C 8005152C 08014758 */ j .L80051D60
/* 2C930 80051530 00000000 */ nop
.L80051534:
/* 2C934 80051534 240200A0 */ addiu $v0, $zero, 0xa0
/* 2C938 80051538 10620111 */ beq $v1, $v0, .L80051980
/* 2C93C 8005153C 32E20080 */ andi $v0, $s7, 0x80
/* 2C940 80051540 08014758 */ j .L80051D60
/* 2C944 80051544 00000000 */ nop
.L80051548:
/* 2C948 80051548 240200E0 */ addiu $v0, $zero, 0xe0
/* 2C94C 8005154C 106201C8 */ beq $v1, $v0, .L80051C70
/* 2C950 80051550 286200E1 */ slti $v0, $v1, 0xe1
/* 2C954 80051554 10400202 */ beqz $v0, .L80051D60
/* 2C958 80051558 240200C0 */ addiu $v0, $zero, 0xc0
/* 2C95C 8005155C 106201B7 */ beq $v1, $v0, .L80051C3C
/* 2C960 80051560 00000000 */ nop
/* 2C964 80051564 08014758 */ j .L80051D60
/* 2C968 80051568 00000000 */ nop
.L8005156C:
/* 2C96C 8005156C 92A20025 */ lbu $v0, 0x25($s5)
/* 2C970 80051570 144001FB */ bnez $v0, .L80051D60
/* 2C974 80051574 00161400 */ sll $v0, $s6, 0x10
/* 2C978 80051578 8EB00030 */ lw $s0, 0x30($s5)
/* 2C97C 8005157C 8EA40014 */ lw $a0, 0x14($s5)
/* 2C980 80051580 8EA30034 */ lw $v1, 0x34($s5)
/* 2C984 80051584 00822021 */ addu $a0, $a0, $v0
/* 2C988 80051588 32E200FF */ andi $v0, $s7, 0xff
/* 2C98C 8005158C 00021200 */ sll $v0, $v0, 8
/* 2C990 80051590 0203182B */ sltu $v1, $s0, $v1
/* 2C994 80051594 106001F2 */ beqz $v1, .L80051D60
/* 2C998 80051598 0082B821 */ addu $s7, $a0, $v0
/* 2C99C 8005159C 001010C0 */ sll $v0, $s0, 3
/* 2C9A0 800515A0 00501021 */ addu $v0, $v0, $s0
/* 2C9A4 800515A4 000210C0 */ sll $v0, $v0, 3
/* 2C9A8 800515A8 24441320 */ addiu $a0, $v0, 0x1320
.L800515AC:
/* 2C9AC 800515AC 8EA20030 */ lw $v0, 0x30($s5)
/* 2C9B0 800515B0 8FA80070 */ lw $t0, 0x70($sp)
/* 2C9B4 800515B4 02021023 */ subu $v0, $s0, $v0
/* 2C9B8 800515B8 000210C0 */ sll $v0, $v0, 3
/* 2C9BC 800515BC 01021821 */ addu $v1, $t0, $v0
/* 2C9C0 800515C0 8C6207B4 */ lw $v0, 0x7b4($v1)
/* 2C9C4 800515C4 1457000C */ bne $v0, $s7, .L800515F8
/* 2C9C8 800515C8 00000000 */ nop
/* 2C9CC 800515CC 8FA80030 */ lw $t0, 0x30($sp)
/* 2C9D0 800515D0 A07E07B7 */ sb $fp, 0x7b7($v1)
/* 2C9D4 800515D4 01048821 */ addu $s1, $t0, $a0
/* 2C9D8 800515D8 8FA80070 */ lw $t0, 0x70($sp)
/* 2C9DC 800515DC 92230045 */ lbu $v1, 0x45($s1)
/* 2C9E0 800515E0 91020022 */ lbu $v0, 0x22($t0)
/* 2C9E4 800515E4 14620004 */ bne $v1, $v0, .L800515F8
/* 2C9E8 800515E8 00000000 */ nop
/* 2C9EC 800515EC 9222003D */ lbu $v0, 0x3d($s1)
/* 2C9F0 800515F0 34420010 */ ori $v0, $v0, 0x10
/* 2C9F4 800515F4 A222003D */ sb $v0, 0x3d($s1)
.L800515F8:
/* 2C9F8 800515F8 8EA20034 */ lw $v0, 0x34($s5)
/* 2C9FC 800515FC 26100001 */ addiu $s0, $s0, 1
/* 2CA00 80051600 0202102B */ sltu $v0, $s0, $v0
/* 2CA04 80051604 1440FFE9 */ bnez $v0, .L800515AC
/* 2CA08 80051608 24840048 */ addiu $a0, $a0, 0x48
/* 2CA0C 8005160C 08014758 */ j .L80051D60
/* 2CA10 80051610 00000000 */ nop
.L80051614:
/* 2CA14 80051614 0C014D5D */ jal func_80053574
/* 2CA18 80051618 320500FF */ andi $a1, $s0, 0xff
/* 2CA1C 8005161C 080145BB */ j .L800516EC
/* 2CA20 80051620 00000000 */ nop
.L80051624:
/* 2CA24 80051624 0C014D5D */ jal func_80053574
/* 2CA28 80051628 320500FF */ andi $a1, $s0, 0xff
/* 2CA2C 8005162C 080145D4 */ j .L80051750
/* 2CA30 80051630 00000000 */ nop
.L80051634:
/* 2CA34 80051634 0C0147A0 */ jal func_80051E80
/* 2CA38 80051638 02A0202D */ daddu $a0, $s5, $zero
/* 2CA3C 8005163C 92A30025 */ lbu $v1, 0x25($s5)
/* 2CA40 80051640 146001C7 */ bnez $v1, .L80051D60
/* 2CA44 80051644 0040A02D */ daddu $s4, $v0, $zero
/* 2CA48 80051648 8EB00030 */ lw $s0, 0x30($s5)
/* 2CA4C 8005164C 8EA40034 */ lw $a0, 0x34($s5)
/* 2CA50 80051650 0204102B */ sltu $v0, $s0, $a0
/* 2CA54 80051654 10400012 */ beqz $v0, .L800516A0
/* 2CA58 80051658 001010C0 */ sll $v0, $s0, 3
/* 2CA5C 8005165C 00501021 */ addu $v0, $v0, $s0
/* 2CA60 80051660 000210C0 */ sll $v0, $v0, 3
/* 2CA64 80051664 24431320 */ addiu $v1, $v0, 0x1320
/* 2CA68 80051668 8FA80030 */ lw $t0, 0x30($sp)
.L8005166C:
/* 2CA6C 8005166C 01038821 */ addu $s1, $t0, $v1
/* 2CA70 80051670 92220045 */ lbu $v0, 0x45($s1)
/* 2CA74 80051674 10400005 */ beqz $v0, .L8005168C
/* 2CA78 80051678 00000000 */ nop
/* 2CA7C 8005167C 26100001 */ addiu $s0, $s0, 1
/* 2CA80 80051680 0204102B */ sltu $v0, $s0, $a0
/* 2CA84 80051684 1440FFF9 */ bnez $v0, .L8005166C
/* 2CA88 80051688 24630048 */ addiu $v1, $v1, 0x48
.L8005168C:
/* 2CA8C 8005168C 8EA20034 */ lw $v0, 0x34($s5)
/* 2CA90 80051690 0202102B */ sltu $v0, $s0, $v0
/* 2CA94 80051694 14400032 */ bnez $v0, .L80051760
/* 2CA98 80051698 00000000 */ nop
/* 2CA9C 8005169C 8EB00030 */ lw $s0, 0x30($s5)
.L800516A0:
/* 2CAA0 800516A0 8EA30034 */ lw $v1, 0x34($s5)
/* 2CAA4 800516A4 0203102B */ sltu $v0, $s0, $v1
/* 2CAA8 800516A8 10400014 */ beqz $v0, .L800516FC
/* 2CAAC 800516AC 001010C0 */ sll $v0, $s0, 3
/* 2CAB0 800516B0 0060202D */ daddu $a0, $v1, $zero
/* 2CAB4 800516B4 00501021 */ addu $v0, $v0, $s0
/* 2CAB8 800516B8 000210C0 */ sll $v0, $v0, 3
/* 2CABC 800516BC 8FA80070 */ lw $t0, 0x70($sp)
/* 2CAC0 800516C0 24431320 */ addiu $v1, $v0, 0x1320
/* 2CAC4 800516C4 91050022 */ lbu $a1, 0x22($t0)
/* 2CAC8 800516C8 8FA80030 */ lw $t0, 0x30($sp)
.L800516CC:
/* 2CACC 800516CC 01038821 */ addu $s1, $t0, $v1
/* 2CAD0 800516D0 92220045 */ lbu $v0, 0x45($s1)
/* 2CAD4 800516D4 5045FFCF */ beql $v0, $a1, .L80051614
/* 2CAD8 800516D8 0220202D */ daddu $a0, $s1, $zero
/* 2CADC 800516DC 26100001 */ addiu $s0, $s0, 1
/* 2CAE0 800516E0 0204102B */ sltu $v0, $s0, $a0
/* 2CAE4 800516E4 1440FFF9 */ bnez $v0, .L800516CC
/* 2CAE8 800516E8 24630048 */ addiu $v1, $v1, 0x48
.L800516EC:
/* 2CAEC 800516EC 8EA20034 */ lw $v0, 0x34($s5)
/* 2CAF0 800516F0 0202102B */ sltu $v0, $s0, $v0
/* 2CAF4 800516F4 1440001A */ bnez $v0, .L80051760
/* 2CAF8 800516F8 00000000 */ nop
.L800516FC:
/* 2CAFC 800516FC 8EB00030 */ lw $s0, 0x30($s5)
/* 2CB00 80051700 8EA30034 */ lw $v1, 0x34($s5)
/* 2CB04 80051704 0203102B */ sltu $v0, $s0, $v1
/* 2CB08 80051708 10400195 */ beqz $v0, .L80051D60
/* 2CB0C 8005170C 001010C0 */ sll $v0, $s0, 3
/* 2CB10 80051710 0060202D */ daddu $a0, $v1, $zero
/* 2CB14 80051714 00501021 */ addu $v0, $v0, $s0
/* 2CB18 80051718 000210C0 */ sll $v0, $v0, 3
/* 2CB1C 8005171C 8FA80070 */ lw $t0, 0x70($sp)
/* 2CB20 80051720 24431320 */ addiu $v1, $v0, 0x1320
/* 2CB24 80051724 91050022 */ lbu $a1, 0x22($t0)
/* 2CB28 80051728 8FA80030 */ lw $t0, 0x30($sp)
.L8005172C:
/* 2CB2C 8005172C 01038821 */ addu $s1, $t0, $v1
/* 2CB30 80051730 92220045 */ lbu $v0, 0x45($s1)
/* 2CB34 80051734 0045102B */ sltu $v0, $v0, $a1
/* 2CB38 80051738 5440FFBA */ bnel $v0, $zero, .L80051624
/* 2CB3C 8005173C 0220202D */ daddu $a0, $s1, $zero
/* 2CB40 80051740 26100001 */ addiu $s0, $s0, 1
/* 2CB44 80051744 0204102B */ sltu $v0, $s0, $a0
/* 2CB48 80051748 1440FFF8 */ bnez $v0, .L8005172C
/* 2CB4C 8005174C 24630048 */ addiu $v1, $v1, 0x48
.L80051750:
/* 2CB50 80051750 8EA20034 */ lw $v0, 0x34($s5)
/* 2CB54 80051754 0202102B */ sltu $v0, $s0, $v0
/* 2CB58 80051758 10400181 */ beqz $v0, .L80051D60
/* 2CB5C 8005175C 00000000 */ nop
.L80051760:
/* 2CB60 80051760 8EA20030 */ lw $v0, 0x30($s5)
/* 2CB64 80051764 8FA80040 */ lw $t0, 0x40($sp)
/* 2CB68 80051768 02021023 */ subu $v0, $s0, $v0
/* 2CB6C 8005176C 01021021 */ addu $v0, $t0, $v0
/* 2CB70 80051770 A05E0000 */ sb $fp, ($v0)
/* 2CB74 80051774 8EA20030 */ lw $v0, 0x30($s5)
/* 2CB78 80051778 8FA8003C */ lw $t0, 0x3c($sp)
/* 2CB7C 8005177C 02021023 */ subu $v0, $s0, $v0
/* 2CB80 80051780 01021021 */ addu $v0, $t0, $v0
/* 2CB84 80051784 A05E0000 */ sb $fp, ($v0)
/* 2CB88 80051788 8EA20030 */ lw $v0, 0x30($s5)
/* 2CB8C 8005178C 8FA80070 */ lw $t0, 0x70($sp)
/* 2CB90 80051790 8EA30014 */ lw $v1, 0x14($s5)
/* 2CB94 80051794 02021023 */ subu $v0, $s0, $v0
/* 2CB98 80051798 000210C0 */ sll $v0, $v0, 3
/* 2CB9C 8005179C 244207B4 */ addiu $v0, $v0, 0x7b4
/* 2CBA0 800517A0 01029021 */ addu $s2, $t0, $v0
/* 2CBA4 800517A4 00161400 */ sll $v0, $s6, 0x10
/* 2CBA8 800517A8 00621821 */ addu $v1, $v1, $v0
/* 2CBAC 800517AC 32E200FF */ andi $v0, $s7, 0xff
/* 2CBB0 800517B0 00021200 */ sll $v0, $v0, 8
/* 2CBB4 800517B4 00621821 */ addu $v1, $v1, $v0
/* 2CBB8 800517B8 AE430000 */ sw $v1, ($s2)
/* 2CBBC 800517BC 92620026 */ lbu $v0, 0x26($s3)
/* 2CBC0 800517C0 30420001 */ andi $v0, $v0, 1
/* 2CBC4 800517C4 50400002 */ beql $v0, $zero, .L800517D0
/* 2CBC8 800517C8 A2400007 */ sb $zero, 7($s2)
/* 2CBCC 800517CC A25E0007 */ sb $fp, 7($s2)
.L800517D0:
/* 2CBD0 800517D0 24080009 */ addiu $t0, $zero, 9
/* 2CBD4 800517D4 12C80033 */ beq $s6, $t0, .L800518A4
/* 2CBD8 800517D8 32E3007F */ andi $v1, $s7, 0x7f
/* 2CBDC 800517DC 92620026 */ lbu $v0, 0x26($s3)
/* 2CBE0 800517E0 30420001 */ andi $v0, $v0, 1
/* 2CBE4 800517E4 50400002 */ beql $v0, $zero, .L800517F0
/* 2CBE8 800517E8 A2400007 */ sb $zero, 7($s2)
/* 2CBEC 800517EC A25E0007 */ sb $fp, 7($s2)
.L800517F0:
/* 2CBF0 800517F0 3284007F */ andi $a0, $s4, 0x7f
/* 2CBF4 800517F4 8E620000 */ lw $v0, ($s3)
/* 2CBF8 800517F8 32E3007F */ andi $v1, $s7, 0x7f
/* 2CBFC 800517FC 9445001E */ lhu $a1, 0x1e($v0)
/* 2CC00 80051800 00031040 */ sll $v0, $v1, 1
/* 2CC04 80051804 00431021 */ addu $v0, $v0, $v1
/* 2CC08 80051808 000210C0 */ sll $v0, $v0, 3
/* 2CC0C 8005180C 00431021 */ addu $v0, $v0, $v1
/* 2CC10 80051810 00021080 */ sll $v0, $v0, 2
/* 2CC14 80051814 A2440006 */ sb $a0, 6($s2)
/* 2CC18 80051818 00451023 */ subu $v0, $v0, $a1
/* 2CC1C 8005181C A6420004 */ sh $v0, 4($s2)
/* 2CC20 80051820 82A30038 */ lb $v1, 0x38($s5)
/* 2CC24 80051824 86620018 */ lh $v0, 0x18($s3)
/* 2CC28 80051828 00620018 */ mult $v1, $v0
/* 2CC2C 8005182C 00004012 */ mflo $t0
/* 2CC30 80051830 00000000 */ nop
/* 2CC34 80051834 00000000 */ nop
/* 2CC38 80051838 01040018 */ mult $t0, $a0
/* 2CC3C 8005183C 00004012 */ mflo $t0
/* 2CC40 80051840 00081383 */ sra $v0, $t0, 0xe
/* 2CC44 80051844 A6220040 */ sh $v0, 0x40($s1)
/* 2CC48 80051848 86420004 */ lh $v0, 4($s2)
/* 2CC4C 8005184C 8664000C */ lh $a0, 0xc($s3)
/* 2CC50 80051850 0C014D6A */ jal func_800535A8
/* 2CC54 80051854 00442021 */ addu $a0, $v0, $a0
/* 2CC58 80051858 8E620000 */ lw $v0, ($s3)
/* 2CC5C 8005185C C4420020 */ lwc1 $f2, 0x20($v0)
/* 2CC60 80051860 46020002 */ mul.s $f0, $f0, $f2
/* 2CC64 80051864 00000000 */ nop
/* 2CC68 80051868 E6200004 */ swc1 $f0, 4($s1)
/* 2CC6C 8005186C 92620024 */ lbu $v0, 0x24($s3)
/* 2CC70 80051870 A222000E */ sb $v0, 0xe($s1)
/* 2CC74 80051874 92620025 */ lbu $v0, 0x25($s3)
/* 2CC78 80051878 A222000F */ sb $v0, 0xf($s1)
/* 2CC7C 8005187C 8E620000 */ lw $v0, ($s3)
/* 2CC80 80051880 AE220000 */ sw $v0, ($s1)
/* 2CC84 80051884 8FA80070 */ lw $t0, 0x70($sp)
/* 2CC88 80051888 91020023 */ lbu $v0, 0x23($t0)
/* 2CC8C 8005188C A2220010 */ sb $v0, 0x10($s1)
/* 2CC90 80051890 8E620004 */ lw $v0, 4($s3)
/* 2CC94 80051894 AE220014 */ sw $v0, 0x14($s1)
/* 2CC98 80051898 8E620008 */ lw $v0, 8($s3)
/* 2CC9C 8005189C 08014659 */ j .L80051964
/* 2CCA0 800518A0 AE220018 */ sw $v0, 0x18($s1)
.L800518A4:
/* 2CCA4 800518A4 A2400007 */ sb $zero, 7($s2)
/* 2CCA8 800518A8 8FA80070 */ lw $t0, 0x70($sp)
/* 2CCAC 800518AC 00031040 */ sll $v0, $v1, 1
/* 2CCB0 800518B0 8D040000 */ lw $a0, ($t0)
/* 2CCB4 800518B4 00431021 */ addu $v0, $v0, $v1
/* 2CCB8 800518B8 8C900054 */ lw $s0, 0x54($a0)
/* 2CCBC 800518BC 00021080 */ sll $v0, $v0, 2
/* 2CCC0 800518C0 02028021 */ addu $s0, $s0, $v0
/* 2CCC4 800518C4 96060000 */ lhu $a2, ($s0)
/* 2CCC8 800518C8 26270014 */ addiu $a3, $s1, 0x14
/* 2CCCC 800518CC 00062A02 */ srl $a1, $a2, 8
/* 2CCD0 800518D0 0C014E26 */ jal func_80053898
/* 2CCD4 800518D4 30C600FF */ andi $a2, $a2, 0xff
/* 2CCD8 800518D8 AE220000 */ sw $v0, ($s1)
/* 2CCDC 800518DC 96030002 */ lhu $v1, 2($s0)
/* 2CCE0 800518E0 9442001E */ lhu $v0, 0x1e($v0)
/* 2CCE4 800518E4 00621823 */ subu $v1, $v1, $v0
/* 2CCE8 800518E8 A6430004 */ sh $v1, 4($s2)
/* 2CCEC 800518EC 92030004 */ lbu $v1, 4($s0)
/* 2CCF0 800518F0 3282007F */ andi $v0, $s4, 0x7f
/* 2CCF4 800518F4 00430018 */ mult $v0, $v1
/* 2CCF8 800518F8 00004012 */ mflo $t0
/* 2CCFC 800518FC 000819C3 */ sra $v1, $t0, 7
/* 2CD00 80051900 A2430006 */ sb $v1, 6($s2)
/* 2CD04 80051904 82A40038 */ lb $a0, 0x38($s5)
/* 2CD08 80051908 86620018 */ lh $v0, 0x18($s3)
/* 2CD0C 8005190C 00820018 */ mult $a0, $v0
/* 2CD10 80051910 00004012 */ mflo $t0
/* 2CD14 80051914 00031E00 */ sll $v1, $v1, 0x18
/* 2CD18 80051918 00031E03 */ sra $v1, $v1, 0x18
/* 2CD1C 8005191C 01030018 */ mult $t0, $v1
/* 2CD20 80051920 00004012 */ mflo $t0
/* 2CD24 80051924 00081383 */ sra $v0, $t0, 0xe
/* 2CD28 80051928 A6220040 */ sh $v0, 0x40($s1)
/* 2CD2C 8005192C 0C014D6A */ jal func_800535A8
/* 2CD30 80051930 86440004 */ lh $a0, 4($s2)
/* 2CD34 80051934 8E220000 */ lw $v0, ($s1)
/* 2CD38 80051938 C4420020 */ lwc1 $f2, 0x20($v0)
/* 2CD3C 8005193C 46020002 */ mul.s $f0, $f0, $f2
/* 2CD40 80051940 00000000 */ nop
/* 2CD44 80051944 E6200004 */ swc1 $f0, 4($s1)
/* 2CD48 80051948 92020005 */ lbu $v0, 5($s0)
/* 2CD4C 8005194C A222000E */ sb $v0, 0xe($s1)
/* 2CD50 80051950 92020006 */ lbu $v0, 6($s0)
/* 2CD54 80051954 A222000F */ sb $v0, 0xf($s1)
/* 2CD58 80051958 8FA80070 */ lw $t0, 0x70($sp)
/* 2CD5C 8005195C 91020023 */ lbu $v0, 0x23($t0)
/* 2CD60 80051960 A2220010 */ sb $v0, 0x10($s1)
.L80051964:
/* 2CD64 80051964 24020002 */ addiu $v0, $zero, 2
/* 2CD68 80051968 A2220043 */ sb $v0, 0x43($s1)
/* 2CD6C 8005196C 8FA80070 */ lw $t0, 0x70($sp)
/* 2CD70 80051970 91020022 */ lbu $v0, 0x22($t0)
/* 2CD74 80051974 A2220045 */ sb $v0, 0x45($s1)
/* 2CD78 80051978 08014758 */ j .L80051D60
/* 2CD7C 8005197C A2220044 */ sb $v0, 0x44($s1)
.L80051980:
/* 2CD80 80051980 1040002C */ beqz $v0, .L80051A34
/* 2CD84 80051984 32E2007F */ andi $v0, $s7, 0x7f
/* 2CD88 80051988 00162400 */ sll $a0, $s6, 0x10
/* 2CD8C 8005198C A2620024 */ sb $v0, 0x24($s3)
/* 2CD90 80051990 8EB00030 */ lw $s0, 0x30($s5)
/* 2CD94 80051994 8EA30014 */ lw $v1, 0x14($s5)
/* 2CD98 80051998 8EA20034 */ lw $v0, 0x34($s5)
/* 2CD9C 8005199C 0202102B */ sltu $v0, $s0, $v0
/* 2CDA0 800519A0 104000EF */ beqz $v0, .L80051D60
/* 2CDA4 800519A4 0064B821 */ addu $s7, $v1, $a0
/* 2CDA8 800519A8 001010C0 */ sll $v0, $s0, 3
/* 2CDAC 800519AC 00501021 */ addu $v0, $v0, $s0
/* 2CDB0 800519B0 000210C0 */ sll $v0, $v0, 3
/* 2CDB4 800519B4 24441320 */ addiu $a0, $v0, 0x1320
.L800519B8:
/* 2CDB8 800519B8 8EA20030 */ lw $v0, 0x30($s5)
/* 2CDBC 800519BC 8FA80070 */ lw $t0, 0x70($sp)
/* 2CDC0 800519C0 02021023 */ subu $v0, $s0, $v0
/* 2CDC4 800519C4 000210C0 */ sll $v0, $v0, 3
/* 2CDC8 800519C8 00489021 */ addu $s2, $v0, $t0
/* 2CDCC 800519CC 8E4207B4 */ lw $v0, 0x7b4($s2)
/* 2CDD0 800519D0 3C08FFFF */ lui $t0, 0xffff
/* 2CDD4 800519D4 00481024 */ and $v0, $v0, $t0
/* 2CDD8 800519D8 1457000F */ bne $v0, $s7, .L80051A18
/* 2CDDC 800519DC 00000000 */ nop
/* 2CDE0 800519E0 8FA80030 */ lw $t0, 0x30($sp)
/* 2CDE4 800519E4 01048821 */ addu $s1, $t0, $a0
/* 2CDE8 800519E8 8FA80070 */ lw $t0, 0x70($sp)
/* 2CDEC 800519EC 92230045 */ lbu $v1, 0x45($s1)
/* 2CDF0 800519F0 91020022 */ lbu $v0, 0x22($t0)
/* 2CDF4 800519F4 14620008 */ bne $v1, $v0, .L80051A18
/* 2CDF8 800519F8 24080009 */ addiu $t0, $zero, 9
/* 2CDFC 800519FC 12C80006 */ beq $s6, $t0, .L80051A18
/* 2CE00 80051A00 00000000 */ nop
/* 2CE04 80051A04 92220043 */ lbu $v0, 0x43($s1)
/* 2CE08 80051A08 92630024 */ lbu $v1, 0x24($s3)
/* 2CE0C 80051A0C 34420010 */ ori $v0, $v0, 0x10
/* 2CE10 80051A10 A223000E */ sb $v1, 0xe($s1)
/* 2CE14 80051A14 A2220043 */ sb $v0, 0x43($s1)
.L80051A18:
/* 2CE18 80051A18 8EA20034 */ lw $v0, 0x34($s5)
/* 2CE1C 80051A1C 26100001 */ addiu $s0, $s0, 1
/* 2CE20 80051A20 0202102B */ sltu $v0, $s0, $v0
/* 2CE24 80051A24 1440FFE4 */ bnez $v0, .L800519B8
/* 2CE28 80051A28 24840048 */ addiu $a0, $a0, 0x48
/* 2CE2C 80051A2C 08014758 */ j .L80051D60
/* 2CE30 80051A30 00000000 */ nop
.L80051A34:
/* 2CE34 80051A34 00171E00 */ sll $v1, $s7, 0x18
/* 2CE38 80051A38 10600005 */ beqz $v1, .L80051A50
/* 2CE3C 80051A3C AE630018 */ sw $v1, 0x18($s3)
/* 2CE40 80051A40 3C0200FF */ lui $v0, 0xff
/* 2CE44 80051A44 3442FFFF */ ori $v0, $v0, 0xffff
/* 2CE48 80051A48 00621025 */ or $v0, $v1, $v0
/* 2CE4C 80051A4C AE620018 */ sw $v0, 0x18($s3)
.L80051A50:
/* 2CE50 80051A50 00162400 */ sll $a0, $s6, 0x10
/* 2CE54 80051A54 8EB00030 */ lw $s0, 0x30($s5)
/* 2CE58 80051A58 8EA30014 */ lw $v1, 0x14($s5)
/* 2CE5C 80051A5C 8EA20034 */ lw $v0, 0x34($s5)
/* 2CE60 80051A60 0202102B */ sltu $v0, $s0, $v0
/* 2CE64 80051A64 104000BE */ beqz $v0, .L80051D60
/* 2CE68 80051A68 0064B821 */ addu $s7, $v1, $a0
/* 2CE6C 80051A6C 001010C0 */ sll $v0, $s0, 3
/* 2CE70 80051A70 00501021 */ addu $v0, $v0, $s0
/* 2CE74 80051A74 000210C0 */ sll $v0, $v0, 3
/* 2CE78 80051A78 24441320 */ addiu $a0, $v0, 0x1320
.L80051A7C:
/* 2CE7C 80051A7C 8EA20030 */ lw $v0, 0x30($s5)
/* 2CE80 80051A80 8FA80070 */ lw $t0, 0x70($sp)
/* 2CE84 80051A84 02021023 */ subu $v0, $s0, $v0
/* 2CE88 80051A88 000210C0 */ sll $v0, $v0, 3
/* 2CE8C 80051A8C 244207B4 */ addiu $v0, $v0, 0x7b4
/* 2CE90 80051A90 01029021 */ addu $s2, $t0, $v0
/* 2CE94 80051A94 8E420000 */ lw $v0, ($s2)
/* 2CE98 80051A98 3C08FFFF */ lui $t0, 0xffff
/* 2CE9C 80051A9C 00481024 */ and $v0, $v0, $t0
/* 2CEA0 80051AA0 14570020 */ bne $v0, $s7, .L80051B24
/* 2CEA4 80051AA4 00000000 */ nop
/* 2CEA8 80051AA8 8FA80030 */ lw $t0, 0x30($sp)
/* 2CEAC 80051AAC 01048821 */ addu $s1, $t0, $a0
/* 2CEB0 80051AB0 8FA80070 */ lw $t0, 0x70($sp)
/* 2CEB4 80051AB4 92230045 */ lbu $v1, 0x45($s1)
/* 2CEB8 80051AB8 91020022 */ lbu $v0, 0x22($t0)
/* 2CEBC 80051ABC 14620019 */ bne $v1, $v0, .L80051B24
/* 2CEC0 80051AC0 00000000 */ nop
/* 2CEC4 80051AC4 82A30038 */ lb $v1, 0x38($s5)
/* 2CEC8 80051AC8 86620018 */ lh $v0, 0x18($s3)
/* 2CECC 80051ACC 00620018 */ mult $v1, $v0
/* 2CED0 80051AD0 00004012 */ mflo $t0
/* 2CED4 80051AD4 82420006 */ lb $v0, 6($s2)
/* 2CED8 80051AD8 00000000 */ nop
/* 2CEDC 80051ADC 01020018 */ mult $t0, $v0
/* 2CEE0 80051AE0 00004012 */ mflo $t0
/* 2CEE4 80051AE4 00081383 */ sra $v0, $t0, 0xe
/* 2CEE8 80051AE8 A6220040 */ sh $v0, 0x40($s1)
/* 2CEEC 80051AEC 8EA20030 */ lw $v0, 0x30($s5)
/* 2CEF0 80051AF0 8FA80040 */ lw $t0, 0x40($sp)
/* 2CEF4 80051AF4 02021023 */ subu $v0, $s0, $v0
/* 2CEF8 80051AF8 01021021 */ addu $v0, $t0, $v0
/* 2CEFC 80051AFC 90420000 */ lbu $v0, ($v0)
/* 2CF00 80051B00 14400008 */ bnez $v0, .L80051B24
/* 2CF04 80051B04 00000000 */ nop
/* 2CF08 80051B08 9222003D */ lbu $v0, 0x3d($s1)
/* 2CF0C 80051B0C 34420020 */ ori $v0, $v0, 0x20
/* 2CF10 80051B10 A222003D */ sb $v0, 0x3d($s1)
/* 2CF14 80051B14 8EA20030 */ lw $v0, 0x30($s5)
/* 2CF18 80051B18 02021023 */ subu $v0, $s0, $v0
/* 2CF1C 80051B1C 01021021 */ addu $v0, $t0, $v0
/* 2CF20 80051B20 A05E0000 */ sb $fp, ($v0)
.L80051B24:
/* 2CF24 80051B24 8EA20034 */ lw $v0, 0x34($s5)
/* 2CF28 80051B28 26100001 */ addiu $s0, $s0, 1
/* 2CF2C 80051B2C 0202102B */ sltu $v0, $s0, $v0
/* 2CF30 80051B30 1440FFD2 */ bnez $v0, .L80051A7C
/* 2CF34 80051B34 24840048 */ addiu $a0, $a0, 0x48
/* 2CF38 80051B38 08014758 */ j .L80051D60
/* 2CF3C 80051B3C 00000000 */ nop
.L80051B40:
/* 2CF40 80051B40 0C0147A0 */ jal func_80051E80
/* 2CF44 80051B44 02A0202D */ daddu $a0, $s5, $zero
/* 2CF48 80051B48 0040A02D */ daddu $s4, $v0, $zero
/* 2CF4C 80051B4C 32E300FF */ andi $v1, $s7, 0xff
/* 2CF50 80051B50 24020067 */ addiu $v0, $zero, 0x67
/* 2CF54 80051B54 10620013 */ beq $v1, $v0, .L80051BA4
/* 2CF58 80051B58 28620068 */ slti $v0, $v1, 0x68
/* 2CF5C 80051B5C 10400005 */ beqz $v0, .L80051B74
/* 2CF60 80051B60 24020066 */ addiu $v0, $zero, 0x66
/* 2CF64 80051B64 1062000A */ beq $v1, $v0, .L80051B90
/* 2CF68 80051B68 32820001 */ andi $v0, $s4, 1
/* 2CF6C 80051B6C 08014758 */ j .L80051D60
/* 2CF70 80051B70 00000000 */ nop
.L80051B74:
/* 2CF74 80051B74 24020068 */ addiu $v0, $zero, 0x68
/* 2CF78 80051B78 10620027 */ beq $v1, $v0, .L80051C18
/* 2CF7C 80051B7C 24020069 */ addiu $v0, $zero, 0x69
/* 2CF80 80051B80 10620027 */ beq $v1, $v0, .L80051C20
/* 2CF84 80051B84 328300FF */ andi $v1, $s4, 0xff
/* 2CF88 80051B88 08014758 */ j .L80051D60
/* 2CF8C 80051B8C 00000000 */ nop
.L80051B90:
/* 2CF90 80051B90 00021080 */ sll $v0, $v0, 2
/* 2CF94 80051B94 8EA30008 */ lw $v1, 8($s5)
/* 2CF98 80051B98 02A21021 */ addu $v0, $s5, $v0
/* 2CF9C 80051B9C 08014758 */ j .L80051D60
/* 2CFA0 80051BA0 AC43000C */ sw $v1, 0xc($v0)
.L80051BA4:
/* 2CFA4 80051BA4 3282007C */ andi $v0, $s4, 0x7c
/* 2CFA8 80051BA8 00022882 */ srl $a1, $v0, 2
/* 2CFAC 80051BAC 10A00013 */ beqz $a1, .L80051BFC
/* 2CFB0 80051BB0 32840001 */ andi $a0, $s4, 1
/* 2CFB4 80051BB4 02A41821 */ addu $v1, $s5, $a0
/* 2CFB8 80051BB8 9062002C */ lbu $v0, 0x2c($v1)
/* 2CFBC 80051BBC 10400009 */ beqz $v0, .L80051BE4
/* 2CFC0 80051BC0 2442FFFF */ addiu $v0, $v0, -1
/* 2CFC4 80051BC4 A062002C */ sb $v0, 0x2c($v1)
/* 2CFC8 80051BC8 304200FF */ andi $v0, $v0, 0xff
/* 2CFCC 80051BCC 10400064 */ beqz $v0, .L80051D60
/* 2CFD0 80051BD0 00041080 */ sll $v0, $a0, 2
/* 2CFD4 80051BD4 02A21021 */ addu $v0, $s5, $v0
/* 2CFD8 80051BD8 8C42000C */ lw $v0, 0xc($v0)
/* 2CFDC 80051BDC 08014758 */ j .L80051D60
/* 2CFE0 80051BE0 AEA20008 */ sw $v0, 8($s5)
.L80051BE4:
/* 2CFE4 80051BE4 00041080 */ sll $v0, $a0, 2
/* 2CFE8 80051BE8 02A21021 */ addu $v0, $s5, $v0
/* 2CFEC 80051BEC 8C42000C */ lw $v0, 0xc($v0)
/* 2CFF0 80051BF0 AEA20008 */ sw $v0, 8($s5)
/* 2CFF4 80051BF4 08014758 */ j .L80051D60
/* 2CFF8 80051BF8 A065002C */ sb $a1, 0x2c($v1)
.L80051BFC:
/* 2CFFC 80051BFC 00041080 */ sll $v0, $a0, 2
/* 2D000 80051C00 02A21021 */ addu $v0, $s5, $v0
/* 2D004 80051C04 8C42000C */ lw $v0, 0xc($v0)
/* 2D008 80051C08 AEA20008 */ sw $v0, 8($s5)
/* 2D00C 80051C0C 02A41021 */ addu $v0, $s5, $a0
/* 2D010 80051C10 08014758 */ j .L80051D60
/* 2D014 80051C14 A040002C */ sb $zero, 0x2c($v0)
.L80051C18:
/* 2D018 80051C18 08014758 */ j .L80051D60
/* 2D01C 80051C1C A2740025 */ sb $s4, 0x25($s3)
.L80051C20:
/* 2D020 80051C20 24020001 */ addiu $v0, $zero, 1
/* 2D024 80051C24 1462004E */ bne $v1, $v0, .L80051D60
/* 2D028 80051C28 00000000 */ nop
/* 2D02C 80051C2C 92620026 */ lbu $v0, 0x26($s3)
/* 2D030 80051C30 34420001 */ ori $v0, $v0, 1
/* 2D034 80051C34 08014758 */ j .L80051D60
/* 2D038 80051C38 A2620026 */ sb $v0, 0x26($s3)
.L80051C3C:
/* 2D03C 80051C3C 0C0147A0 */ jal func_80051E80
/* 2D040 80051C40 02A0202D */ daddu $a0, $s5, $zero
/* 2D044 80051C44 24080009 */ addiu $t0, $zero, 9
/* 2D048 80051C48 12C80045 */ beq $s6, $t0, .L80051D60
/* 2D04C 80051C4C 0040A02D */ daddu $s4, $v0, $zero
/* 2D050 80051C50 32E500FF */ andi $a1, $s7, 0xff
/* 2D054 80051C54 8FA80070 */ lw $t0, 0x70($sp)
/* 2D058 80051C58 328600FF */ andi $a2, $s4, 0xff
/* 2D05C 80051C5C 8D040000 */ lw $a0, ($t0)
/* 2D060 80051C60 0C014E26 */ jal func_80053898
/* 2D064 80051C64 26670004 */ addiu $a3, $s3, 4
/* 2D068 80051C68 08014758 */ j .L80051D60
/* 2D06C 80051C6C AE620000 */ sw $v0, ($s3)
.L80051C70:
/* 2D070 80051C70 0C0147A0 */ jal func_80051E80
/* 2D074 80051C74 02A0202D */ daddu $a0, $s5, $zero
/* 2D078 80051C78 00171E00 */ sll $v1, $s7, 0x18
/* 2D07C 80051C7C 304200FF */ andi $v0, $v0, 0xff
/* 2D080 80051C80 00021400 */ sll $v0, $v0, 0x10
/* 2D084 80051C84 00621821 */ addu $v1, $v1, $v0
/* 2D088 80051C88 00162400 */ sll $a0, $s6, 0x10
/* 2D08C 80051C8C AE63000C */ sw $v1, 0xc($s3)
/* 2D090 80051C90 8EB00030 */ lw $s0, 0x30($s5)
/* 2D094 80051C94 8EA30014 */ lw $v1, 0x14($s5)
/* 2D098 80051C98 8EA20034 */ lw $v0, 0x34($s5)
/* 2D09C 80051C9C 0202102B */ sltu $v0, $s0, $v0
/* 2D0A0 80051CA0 1040002F */ beqz $v0, .L80051D60
/* 2D0A4 80051CA4 0064B821 */ addu $s7, $v1, $a0
/* 2D0A8 80051CA8 001010C0 */ sll $v0, $s0, 3
/* 2D0AC 80051CAC 00501021 */ addu $v0, $v0, $s0
/* 2D0B0 80051CB0 000210C0 */ sll $v0, $v0, 3
/* 2D0B4 80051CB4 24541320 */ addiu $s4, $v0, 0x1320
.L80051CB8:
/* 2D0B8 80051CB8 8EA20030 */ lw $v0, 0x30($s5)
/* 2D0BC 80051CBC 8FA80070 */ lw $t0, 0x70($sp)
/* 2D0C0 80051CC0 02021023 */ subu $v0, $s0, $v0
/* 2D0C4 80051CC4 000210C0 */ sll $v0, $v0, 3
/* 2D0C8 80051CC8 244207B4 */ addiu $v0, $v0, 0x7b4
/* 2D0CC 80051CCC 01029021 */ addu $s2, $t0, $v0
/* 2D0D0 80051CD0 8E420000 */ lw $v0, ($s2)
/* 2D0D4 80051CD4 3C08FFFF */ lui $t0, 0xffff
/* 2D0D8 80051CD8 00481024 */ and $v0, $v0, $t0
/* 2D0DC 80051CDC 1457001B */ bne $v0, $s7, .L80051D4C
/* 2D0E0 80051CE0 00000000 */ nop
/* 2D0E4 80051CE4 8FA80030 */ lw $t0, 0x30($sp)
/* 2D0E8 80051CE8 01148821 */ addu $s1, $t0, $s4
/* 2D0EC 80051CEC 8FA80070 */ lw $t0, 0x70($sp)
/* 2D0F0 80051CF0 92230045 */ lbu $v1, 0x45($s1)
/* 2D0F4 80051CF4 91020022 */ lbu $v0, 0x22($t0)
/* 2D0F8 80051CF8 14620014 */ bne $v1, $v0, .L80051D4C
/* 2D0FC 80051CFC 24080009 */ addiu $t0, $zero, 9
/* 2D100 80051D00 12C80012 */ beq $s6, $t0, .L80051D4C
/* 2D104 80051D04 00000000 */ nop
/* 2D108 80051D08 86420004 */ lh $v0, 4($s2)
/* 2D10C 80051D0C 8664000C */ lh $a0, 0xc($s3)
/* 2D110 80051D10 0C014D6A */ jal func_800535A8
/* 2D114 80051D14 00442021 */ addu $a0, $v0, $a0
/* 2D118 80051D18 8E620000 */ lw $v0, ($s3)
/* 2D11C 80051D1C C4420020 */ lwc1 $f2, 0x20($v0)
/* 2D120 80051D20 46020002 */ mul.s $f0, $f0, $f2
/* 2D124 80051D24 00000000 */ nop
/* 2D128 80051D28 92220043 */ lbu $v0, 0x43($s1)
/* 2D12C 80051D2C 34420008 */ ori $v0, $v0, 8
/* 2D130 80051D30 A2220043 */ sb $v0, 0x43($s1)
/* 2D134 80051D34 E6200004 */ swc1 $f0, 4($s1)
/* 2D138 80051D38 8EA20030 */ lw $v0, 0x30($s5)
/* 2D13C 80051D3C 8FA8003C */ lw $t0, 0x3c($sp)
/* 2D140 80051D40 02021023 */ subu $v0, $s0, $v0
/* 2D144 80051D44 01021021 */ addu $v0, $t0, $v0
/* 2D148 80051D48 A05E0000 */ sb $fp, ($v0)
.L80051D4C:
/* 2D14C 80051D4C 8EA20034 */ lw $v0, 0x34($s5)
/* 2D150 80051D50 26100001 */ addiu $s0, $s0, 1
/* 2D154 80051D54 0202102B */ sltu $v0, $s0, $v0
/* 2D158 80051D58 1440FFD7 */ bnez $v0, .L80051CB8
/* 2D15C 80051D5C 26940048 */ addiu $s4, $s4, 0x48
.L80051D60:
/* 2D160 80051D60 8EA20018 */ lw $v0, 0x18($s5)
/* 2D164 80051D64 1040FDC9 */ beqz $v0, .L8005148C
/* 2D168 80051D68 00000000 */ nop
.L80051D6C:
/* 2D16C 80051D6C 93A20034 */ lbu $v0, 0x34($sp)
/* 2D170 80051D70 10400037 */ beqz $v0, .L80051E50
/* 2D174 80051D74 00000000 */ nop
/* 2D178 80051D78 8EB00030 */ lw $s0, 0x30($s5)
/* 2D17C 80051D7C 8EA20034 */ lw $v0, 0x34($s5)
/* 2D180 80051D80 0202102B */ sltu $v0, $s0, $v0
/* 2D184 80051D84 10400032 */ beqz $v0, .L80051E50
/* 2D188 80051D88 001010C0 */ sll $v0, $s0, 3
/* 2D18C 80051D8C 3C07FF00 */ lui $a3, 0xff00
/* 2D190 80051D90 27A60010 */ addiu $a2, $sp, 0x10
/* 2D194 80051D94 00501021 */ addu $v0, $v0, $s0
/* 2D198 80051D98 000210C0 */ sll $v0, $v0, 3
/* 2D19C 80051D9C 24451320 */ addiu $a1, $v0, 0x1320
.L80051DA0:
/* 2D1A0 80051DA0 8EA20030 */ lw $v0, 0x30($s5)
/* 2D1A4 80051DA4 8FA80070 */ lw $t0, 0x70($sp)
/* 2D1A8 80051DA8 02022023 */ subu $a0, $s0, $v0
/* 2D1AC 80051DAC 000410C0 */ sll $v0, $a0, 3
/* 2D1B0 80051DB0 244207B4 */ addiu $v0, $v0, 0x7b4
/* 2D1B4 80051DB4 01029021 */ addu $s2, $t0, $v0
/* 2D1B8 80051DB8 8E420000 */ lw $v0, ($s2)
/* 2D1BC 80051DBC 8EA30014 */ lw $v1, 0x14($s5)
/* 2D1C0 80051DC0 00471024 */ and $v0, $v0, $a3
/* 2D1C4 80051DC4 1443001D */ bne $v0, $v1, .L80051E3C
/* 2D1C8 80051DC8 00000000 */ nop
/* 2D1CC 80051DCC 8FA80030 */ lw $t0, 0x30($sp)
/* 2D1D0 80051DD0 01058821 */ addu $s1, $t0, $a1
/* 2D1D4 80051DD4 8FA80070 */ lw $t0, 0x70($sp)
/* 2D1D8 80051DD8 92230045 */ lbu $v1, 0x45($s1)
/* 2D1DC 80051DDC 91020022 */ lbu $v0, 0x22($t0)
/* 2D1E0 80051DE0 14620016 */ bne $v1, $v0, .L80051E3C
/* 2D1E4 80051DE4 00C41021 */ addu $v0, $a2, $a0
/* 2D1E8 80051DE8 90420000 */ lbu $v0, ($v0)
/* 2D1EC 80051DEC 14400013 */ bnez $v0, .L80051E3C
/* 2D1F0 80051DF0 00000000 */ nop
/* 2D1F4 80051DF4 92430001 */ lbu $v1, 1($s2)
/* 2D1F8 80051DF8 00031080 */ sll $v0, $v1, 2
/* 2D1FC 80051DFC 00431021 */ addu $v0, $v0, $v1
/* 2D200 80051E00 000210C0 */ sll $v0, $v0, 3
/* 2D204 80051E04 00559821 */ addu $s3, $v0, $s5
/* 2D208 80051E08 82A30038 */ lb $v1, 0x38($s5)
/* 2D20C 80051E0C 8662005C */ lh $v0, 0x5c($s3)
/* 2D210 80051E10 00620018 */ mult $v1, $v0
/* 2D214 80051E14 00004012 */ mflo $t0
/* 2D218 80051E18 82420006 */ lb $v0, 6($s2)
/* 2D21C 80051E1C 00000000 */ nop
/* 2D220 80051E20 01020018 */ mult $t0, $v0
/* 2D224 80051E24 9222003D */ lbu $v0, 0x3d($s1)
/* 2D228 80051E28 34420020 */ ori $v0, $v0, 0x20
/* 2D22C 80051E2C A222003D */ sb $v0, 0x3d($s1)
/* 2D230 80051E30 00004012 */ mflo $t0
/* 2D234 80051E34 00081383 */ sra $v0, $t0, 0xe
/* 2D238 80051E38 A6220040 */ sh $v0, 0x40($s1)
.L80051E3C:
/* 2D23C 80051E3C 8EA20034 */ lw $v0, 0x34($s5)
/* 2D240 80051E40 26100001 */ addiu $s0, $s0, 1
/* 2D244 80051E44 0202102B */ sltu $v0, $s0, $v0
/* 2D248 80051E48 1440FFD5 */ bnez $v0, .L80051DA0
/* 2D24C 80051E4C 24A50048 */ addiu $a1, $a1, 0x48
.L80051E50:
/* 2D250 80051E50 8FBF006C */ lw $ra, 0x6c($sp)
/* 2D254 80051E54 8FBE0068 */ lw $fp, 0x68($sp)
/* 2D258 80051E58 8FB70064 */ lw $s7, 0x64($sp)
/* 2D25C 80051E5C 8FB60060 */ lw $s6, 0x60($sp)
/* 2D260 80051E60 8FB5005C */ lw $s5, 0x5c($sp)
/* 2D264 80051E64 8FB40058 */ lw $s4, 0x58($sp)
/* 2D268 80051E68 8FB30054 */ lw $s3, 0x54($sp)
/* 2D26C 80051E6C 8FB20050 */ lw $s2, 0x50($sp)
/* 2D270 80051E70 8FB1004C */ lw $s1, 0x4c($sp)
/* 2D274 80051E74 8FB00048 */ lw $s0, 0x48($sp)
/* 2D278 80051E78 03E00008 */ jr $ra
/* 2D27C 80051E7C 27BD0070 */ addiu $sp, $sp, 0x70