glabel func_80045508 /* ABC6A8 80045508 27BDFFA8 */ addiu $sp, $sp, -0x58 /* ABC6AC 8004550C AFBF001C */ sw $ra, 0x1c($sp) /* ABC6B0 80045510 AFB10018 */ sw $s1, 0x18($sp) /* ABC6B4 80045514 AFB00014 */ sw $s0, 0x14($sp) /* ABC6B8 80045518 AFA5005C */ sw $a1, 0x5c($sp) /* ABC6BC 8004551C 24820074 */ addiu $v0, $a0, 0x74 /* ABC6C0 80045520 8C4F0000 */ lw $t7, ($v0) /* ABC6C4 80045524 24850050 */ addiu $a1, $a0, 0x50 /* ABC6C8 80045528 00C08025 */ move $s0, $a2 /* ABC6CC 8004552C ACCF0000 */ sw $t7, ($a2) /* ABC6D0 80045530 8C4E0004 */ lw $t6, 4($v0) /* ABC6D4 80045534 00E08825 */ move $s1, $a3 /* ABC6D8 80045538 ACCE0004 */ sw $t6, 4($a2) /* ABC6DC 8004553C 8C4F0008 */ lw $t7, 8($v0) /* ABC6E0 80045540 ACCF0008 */ sw $t7, 8($a2) /* ABC6E4 80045544 AFA5002C */ sw $a1, 0x2c($sp) /* ABC6E8 80045548 AFA40058 */ sw $a0, 0x58($sp) /* ABC6EC 8004554C AFA00034 */ sw $zero, 0x34($sp) /* ABC6F0 80045550 0C010F46 */ jal func_80043D18 /* ABC6F4 80045554 AFA20028 */ sw $v0, 0x28($sp) /* ABC6F8 80045558 8FA30034 */ lw $v1, 0x34($sp) /* ABC6FC 8004555C 10400067 */ beqz $v0, .L800456FC /* ABC700 80045560 AFA2003C */ sw $v0, 0x3c($sp) /* ABC704 80045564 8FB8002C */ lw $t8, 0x2c($sp) /* ABC708 80045568 2605000C */ addiu $a1, $s0, 0xc /* ABC70C 8004556C 2604001C */ addiu $a0, $s0, 0x1c /* ABC710 80045570 8F080000 */ lw $t0, ($t8) /* ABC714 80045574 AE280000 */ sw $t0, ($s1) /* ABC718 80045578 8F190004 */ lw $t9, 4($t8) /* ABC71C 8004557C AE390004 */ sw $t9, 4($s1) /* ABC720 80045580 8F080008 */ lw $t0, 8($t8) /* ABC724 80045584 AE280008 */ sw $t0, 8($s1) /* ABC728 80045588 0C01F0FD */ jal func_8007C3F4 /* ABC72C 8004558C AFA50024 */ sw $a1, 0x24($sp) /* ABC730 80045590 86090020 */ lh $t1, 0x20($s0) /* ABC734 80045594 8FAA005C */ lw $t2, 0x5c($sp) /* ABC738 80045598 02203025 */ move $a2, $s1 /* ABC73C 8004559C 29212EE1 */ slti $at, $t1, 0x2ee1 /* ABC740 800455A0 54200004 */ bnezl $at, .L800455B4 /* ABC744 800455A4 8FA40058 */ lw $a0, 0x58($sp) /* ABC748 800455A8 854B0006 */ lh $t3, 6($t2) /* ABC74C 800455AC A60B0022 */ sh $t3, 0x22($s0) /* ABC750 800455B0 8FA40058 */ lw $a0, 0x58($sp) .L800455B4: /* ABC754 800455B4 0C010F46 */ jal func_80043D18 /* ABC758 800455B8 8FA50028 */ lw $a1, 0x28($sp) /* ABC75C 800455BC 14400023 */ bnez $v0, .L8004564C /* ABC760 800455C0 AFA20038 */ sw $v0, 0x38($sp) /* ABC764 800455C4 87AC006A */ lh $t4, 0x6a($sp) /* ABC768 800455C8 8FAE002C */ lw $t6, 0x2c($sp) /* ABC76C 800455CC 318D0001 */ andi $t5, $t4, 1 /* ABC770 800455D0 11A0001C */ beqz $t5, .L80045644 /* ABC774 800455D4 00000000 */ nop /* ABC778 800455D8 8DD80000 */ lw $t8, ($t6) /* ABC77C 800455DC 27A50040 */ addiu $a1, $sp, 0x40 /* ABC780 800455E0 02203025 */ move $a2, $s1 /* ABC784 800455E4 AE380000 */ sw $t8, ($s1) /* ABC788 800455E8 8DCF0004 */ lw $t7, 4($t6) /* ABC78C 800455EC AE2F0004 */ sw $t7, 4($s1) /* ABC790 800455F0 8DD80008 */ lw $t8, 8($t6) /* ABC794 800455F4 AE380008 */ sw $t8, 8($s1) /* ABC798 800455F8 8FB90058 */ lw $t9, 0x58($sp) /* ABC79C 800455FC 8F29005C */ lw $t1, 0x5c($t9) /* ABC7A0 80045600 ACA90000 */ sw $t1, ($a1) /* ABC7A4 80045604 8F280060 */ lw $t0, 0x60($t9) /* ABC7A8 80045608 ACA80004 */ sw $t0, 4($a1) /* ABC7AC 8004560C 8F290064 */ lw $t1, 0x64($t9) /* ABC7B0 80045610 ACA90008 */ sw $t1, 8($a1) /* ABC7B4 80045614 0C010F46 */ jal func_80043D18 /* ABC7B8 80045618 8FA40058 */ lw $a0, 0x58($sp) /* ABC7BC 8004561C 54400004 */ bnezl $v0, .L80045630 /* ABC7C0 80045620 8E2A0018 */ lw $t2, 0x18($s1) /* ABC7C4 80045624 10000036 */ b .L80045700 /* ABC7C8 80045628 24020003 */ li $v0, 3 /* ABC7CC 8004562C 8E2A0018 */ lw $t2, 0x18($s1) .L80045630: /* ABC7D0 80045630 8E0B0018 */ lw $t3, 0x18($s0) /* ABC7D4 80045634 554B000C */ bnel $t2, $t3, .L80045668 /* ABC7D8 80045638 2630000C */ addiu $s0, $s1, 0xc /* ABC7DC 8004563C 10000030 */ b .L80045700 /* ABC7E0 80045640 24020003 */ li $v0, 3 .L80045644: /* ABC7E4 80045644 1000002E */ b .L80045700 /* ABC7E8 80045648 24020003 */ li $v0, 3 .L8004564C: /* ABC7EC 8004564C 8E2C0018 */ lw $t4, 0x18($s1) /* ABC7F0 80045650 8E0D0018 */ lw $t5, 0x18($s0) /* ABC7F4 80045654 558D0004 */ bnel $t4, $t5, .L80045668 /* ABC7F8 80045658 2630000C */ addiu $s0, $s1, 0xc /* ABC7FC 8004565C 10000028 */ b .L80045700 /* ABC800 80045660 24020003 */ li $v0, 3 /* ABC804 80045664 2630000C */ addiu $s0, $s1, 0xc .L80045668: /* ABC808 80045668 02002825 */ move $a1, $s0 /* ABC80C 8004566C 0C01F0FD */ jal func_8007C3F4 /* ABC810 80045670 2624001C */ addiu $a0, $s1, 0x1c /* ABC814 80045674 862E0020 */ lh $t6, 0x20($s1) /* ABC818 80045678 8FAF005C */ lw $t7, 0x5c($sp) /* ABC81C 8004567C 02002825 */ move $a1, $s0 /* ABC820 80045680 29C12EE1 */ slti $at, $t6, 0x2ee1 /* ABC824 80045684 54200005 */ bnezl $at, .L8004569C /* ABC828 80045688 8FA8003C */ lw $t0, 0x3c($sp) /* ABC82C 8004568C 85F80006 */ lh $t8, 6($t7) /* ABC830 80045690 27198001 */ addiu $t9, $t8, -0x7fff /* ABC834 80045694 A6390022 */ sh $t9, 0x22($s1) /* ABC838 80045698 8FA8003C */ lw $t0, 0x3c($sp) .L8004569C: /* ABC83C 8004569C 8FA90038 */ lw $t1, 0x38($sp) /* ABC840 800456A0 11090003 */ beq $t0, $t1, .L800456B0 /* ABC844 800456A4 00000000 */ nop /* ABC848 800456A8 10000014 */ b .L800456FC /* ABC84C 800456AC 24030003 */ li $v1, 3 .L800456B0: /* ABC850 800456B0 0C032BFB */ jal func_800CAFEC /* ABC854 800456B4 8FA40024 */ lw $a0, 0x24($sp) /* ABC858 800456B8 3C01BF00 */ li $at, 0xBF000000 # 0.000000 /* ABC85C 800456BC 44812000 */ mtc1 $at, $f4 /* ABC860 800456C0 3C013F00 */ li $at, 0x3F000000 # 0.000000 /* ABC864 800456C4 4604003C */ c.lt.s $f0, $f4 /* ABC868 800456C8 00000000 */ nop /* ABC86C 800456CC 45020004 */ bc1fl .L800456E0 /* ABC870 800456D0 44813000 */ mtc1 $at, $f6 /* ABC874 800456D4 10000009 */ b .L800456FC /* ABC878 800456D8 24030006 */ li $v1, 6 /* ABC87C 800456DC 44813000 */ mtc1 $at, $f6 .L800456E0: /* ABC880 800456E0 24030002 */ li $v1, 2 /* ABC884 800456E4 4600303C */ c.lt.s $f6, $f0 /* ABC888 800456E8 00000000 */ nop /* ABC88C 800456EC 45000003 */ bc1f .L800456FC /* ABC890 800456F0 00000000 */ nop /* ABC894 800456F4 10000001 */ b .L800456FC /* ABC898 800456F8 24030003 */ li $v1, 3 .L800456FC: /* ABC89C 800456FC 00601025 */ move $v0, $v1 .L80045700: /* ABC8A0 80045700 8FBF001C */ lw $ra, 0x1c($sp) /* ABC8A4 80045704 8FB00014 */ lw $s0, 0x14($sp) /* ABC8A8 80045708 8FB10018 */ lw $s1, 0x18($sp) /* ABC8AC 8004570C 03E00008 */ jr $ra /* ABC8B0 80045710 27BD0058 */ addiu $sp, $sp, 0x58