.set noat # allow manual use of $at .set noreorder # don't insert nops after branches glabel func_8004D510 /* 028910 8004D510 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 028914 8004D514 AFB10014 */ sw $s1, 0x14($sp) /* 028918 8004D518 0080882D */ daddu $s1, $a0, $zero /* 02891C 8004D51C AFB3001C */ sw $s3, 0x1c($sp) /* 028920 8004D520 0000982D */ daddu $s3, $zero, $zero /* 028924 8004D524 2406FFFF */ addiu $a2, $zero, -1 /* 028928 8004D528 AFBF0020 */ sw $ra, 0x20($sp) /* 02892C 8004D52C AFB20018 */ sw $s2, 0x18($sp) /* 028930 8004D530 AFB00010 */ sw $s0, 0x10($sp) /* 028934 8004D534 8E220014 */ lw $v0, 0x14($s1) /* 028938 8004D538 92230258 */ lbu $v1, 0x258($s1) /* 02893C 8004D53C 24420001 */ addiu $v0, $v0, 1 /* 028940 8004D540 1060008D */ beqz $v1, .L8004D778 /* 028944 8004D544 AE220014 */ sw $v0, 0x14($s1) /* 028948 8004D548 2C620008 */ sltiu $v0, $v1, 8 /* 02894C 8004D54C 10400023 */ beqz $v0, .L8004D5DC /* 028950 8004D550 0263102B */ sltu $v0, $s3, $v1 /* 028954 8004D554 92240259 */ lbu $a0, 0x259($s1) /* 028958 8004D558 10400015 */ beqz $v0, .L8004D5B0 /* 02895C 8004D55C 0260282D */ daddu $a1, $s3, $zero /* 028960 8004D560 0060382D */ daddu $a3, $v1, $zero /* 028964 8004D564 308200FF */ andi $v0, $a0, 0xff .L8004D568: /* 028968 8004D568 00021080 */ sll $v0, $v0, 2 /* 02896C 8004D56C 02221021 */ addu $v0, $s1, $v0 /* 028970 8004D570 8C430238 */ lw $v1, 0x238($v0) /* 028974 8004D574 10600009 */ beqz $v1, .L8004D59C /* 028978 8004D578 2C620010 */ sltiu $v0, $v1, 0x10 /* 02897C 8004D57C 10400003 */ beqz $v0, .L8004D58C /* 028980 8004D580 24840001 */ addiu $a0, $a0, 1 /* 028984 8004D584 30660003 */ andi $a2, $v1, 3 /* 028988 8004D588 00039882 */ srl $s3, $v1, 2 .L8004D58C: /* 02898C 8004D58C 308200FF */ andi $v0, $a0, 0xff /* 028990 8004D590 2C420008 */ sltiu $v0, $v0, 8 /* 028994 8004D594 50400001 */ beql $v0, $zero, .L8004D59C /* 028998 8004D598 0000202D */ daddu $a0, $zero, $zero .L8004D59C: /* 02899C 8004D59C 24A50001 */ addiu $a1, $a1, 1 /* 0289A0 8004D5A0 30A200FF */ andi $v0, $a1, 0xff /* 0289A4 8004D5A4 0047102B */ sltu $v0, $v0, $a3 /* 0289A8 8004D5A8 1440FFEF */ bnez $v0, .L8004D568 /* 0289AC 8004D5AC 308200FF */ andi $v0, $a0, 0xff .L8004D5B0: /* 0289B0 8004D5B0 9223025A */ lbu $v1, 0x25a($s1) /* 0289B4 8004D5B4 92220259 */ lbu $v0, 0x259($s1) /* 0289B8 8004D5B8 00622023 */ subu $a0, $v1, $v0 /* 0289BC 8004D5BC 04820001 */ bltzl $a0, .L8004D5C4 /* 0289C0 8004D5C0 24840008 */ addiu $a0, $a0, 8 .L8004D5C4: /* 0289C4 8004D5C4 92220258 */ lbu $v0, 0x258($s1) /* 0289C8 8004D5C8 9223025A */ lbu $v1, 0x25a($s1) /* 0289CC 8004D5CC 00441023 */ subu $v0, $v0, $a0 /* 0289D0 8004D5D0 A2220258 */ sb $v0, 0x258($s1) /* 0289D4 8004D5D4 08013578 */ j .L8004D5E0 /* 0289D8 8004D5D8 A2230259 */ sb $v1, 0x259($s1) .L8004D5DC: /* 0289DC 8004D5DC A2200258 */ sb $zero, 0x258($s1) .L8004D5E0: /* 0289E0 8004D5E0 2402FFFF */ addiu $v0, $zero, -1 /* 0289E4 8004D5E4 10C20064 */ beq $a2, $v0, .L8004D778 /* 0289E8 8004D5E8 00000000 */ nop /* 0289EC 8004D5EC 10C00058 */ beqz $a2, .L8004D750 /* 0289F0 8004D5F0 00000000 */ nop /* 0289F4 8004D5F4 96220058 */ lhu $v0, 0x58($s1) /* 0289F8 8004D5F8 10C2005F */ beq $a2, $v0, .L8004D778 /* 0289FC 8004D5FC 3C030002 */ lui $v1, 2 /* 028A00 8004D600 3463625A */ ori $v1, $v1, 0x625a /* 028A04 8004D604 30C200FF */ andi $v0, $a2, 0xff /* 028A08 8004D608 A6220058 */ sh $v0, 0x58($s1) /* 028A0C 8004D60C A622005A */ sh $v0, 0x5a($s1) /* 028A10 8004D610 24020003 */ addiu $v0, $zero, 3 /* 028A14 8004D614 A2220221 */ sb $v0, 0x221($s1) /* 028A18 8004D618 24020002 */ addiu $v0, $zero, 2 /* 028A1C 8004D61C 14C20004 */ bne $a2, $v0, .L8004D630 /* 028A20 8004D620 AE230008 */ sw $v1, 8($s1) /* 028A24 8004D624 8E220000 */ lw $v0, ($s1) /* 028A28 8004D628 0801358E */ j .L8004D638 /* 028A2C 8004D62C 8C500060 */ lw $s0, 0x60($v0) .L8004D630: /* 028A30 8004D630 8E220000 */ lw $v0, ($s1) /* 028A34 8004D634 8C50005C */ lw $s0, 0x5c($v0) .L8004D638: /* 028A38 8004D638 8E220074 */ lw $v0, 0x74($s1) /* 028A3C 8004D63C 0220202D */ daddu $a0, $s1, $zero /* 028A40 8004D640 AE300064 */ sw $s0, 0x64($s1) /* 028A44 8004D644 90420000 */ lbu $v0, ($v0) /* 028A48 8004D648 3C050002 */ lui $a1, 2 /* 028A4C 8004D64C 30420007 */ andi $v0, $v0, 7 /* 028A50 8004D650 3C068008 */ lui $a2, 0x8008 /* 028A54 8004D654 00C23021 */ addu $a2, $a2, $v0 /* 028A58 8004D658 90C68510 */ lbu $a2, -0x7af0($a2) /* 028A5C 8004D65C 0C013A20 */ jal func_8004E880 /* 028A60 8004D660 34A5625A */ ori $a1, $a1, 0x625a /* 028A64 8004D664 26120010 */ addiu $s2, $s0, 0x10 /* 028A68 8004D668 00131040 */ sll $v0, $s3, 1 /* 028A6C 8004D66C 02421021 */ addu $v0, $s2, $v0 /* 028A70 8004D670 94420004 */ lhu $v0, 4($v0) /* 028A74 8004D674 14400003 */ bnez $v0, .L8004D684 /* 028A78 8004D678 00021080 */ sll $v0, $v0, 2 /* 028A7C 8004D67C 96020014 */ lhu $v0, 0x14($s0) /* 028A80 8004D680 00021080 */ sll $v0, $v0, 2 .L8004D684: /* 028A84 8004D684 00501021 */ addu $v0, $v0, $s0 /* 028A88 8004D688 AE22006C */ sw $v0, 0x6c($s1) /* 028A8C 8004D68C AE220068 */ sw $v0, 0x68($s1) /* 028A90 8004D690 9602001C */ lhu $v0, 0x1c($s0) /* 028A94 8004D694 10400020 */ beqz $v0, .L8004D718 /* 028A98 8004D698 00021080 */ sll $v0, $v0, 2 /* 028A9C 8004D69C 8E230064 */ lw $v1, 0x64($s1) /* 028AA0 8004D6A0 00431021 */ addu $v0, $v0, $v1 /* 028AA4 8004D6A4 AE220078 */ sw $v0, 0x78($s1) /* 028AA8 8004D6A8 9202001F */ lbu $v0, 0x1f($s0) /* 028AAC 8004D6AC A222021C */ sb $v0, 0x21c($s1) /* 028AB0 8004D6B0 304200FF */ andi $v0, $v0, 0xff /* 028AB4 8004D6B4 1040000C */ beqz $v0, .L8004D6E8 /* 028AB8 8004D6B8 0000182D */ daddu $v1, $zero, $zero /* 028ABC 8004D6BC 0220282D */ daddu $a1, $s1, $zero /* 028AC0 8004D6C0 0060202D */ daddu $a0, $v1, $zero .L8004D6C4: /* 028AC4 8004D6C4 8E220078 */ lw $v0, 0x78($s1) /* 028AC8 8004D6C8 24630001 */ addiu $v1, $v1, 1 /* 028ACC 8004D6CC 00441021 */ addu $v0, $v0, $a0 /* 028AD0 8004D6D0 ACA20080 */ sw $v0, 0x80($a1) /* 028AD4 8004D6D4 24A50004 */ addiu $a1, $a1, 4 /* 028AD8 8004D6D8 9222021C */ lbu $v0, 0x21c($s1) /* 028ADC 8004D6DC 0062102B */ sltu $v0, $v1, $v0 /* 028AE0 8004D6E0 1440FFF8 */ bnez $v0, .L8004D6C4 /* 028AE4 8004D6E4 2484000C */ addiu $a0, $a0, 0xc .L8004D6E8: /* 028AE8 8004D6E8 2C62000C */ sltiu $v0, $v1, 0xc /* 028AEC 8004D6EC 1040000C */ beqz $v0, .L8004D720 /* 028AF0 8004D6F0 00031080 */ sll $v0, $v1, 2 /* 028AF4 8004D6F4 00512021 */ addu $a0, $v0, $s1 .L8004D6F8: /* 028AF8 8004D6F8 8E220080 */ lw $v0, 0x80($s1) /* 028AFC 8004D6FC 24630001 */ addiu $v1, $v1, 1 /* 028B00 8004D700 AC820080 */ sw $v0, 0x80($a0) /* 028B04 8004D704 2C62000C */ sltiu $v0, $v1, 0xc /* 028B08 8004D708 1440FFFB */ bnez $v0, .L8004D6F8 /* 028B0C 8004D70C 24840004 */ addiu $a0, $a0, 4 /* 028B10 8004D710 080135C8 */ j .L8004D720 /* 028B14 8004D714 00000000 */ nop .L8004D718: /* 028B18 8004D718 AE200078 */ sw $zero, 0x78($s1) /* 028B1C 8004D71C A220021C */ sb $zero, 0x21c($s1) .L8004D720: /* 028B20 8004D720 96420010 */ lhu $v0, 0x10($s2) /* 028B24 8004D724 10400007 */ beqz $v0, .L8004D744 /* 028B28 8004D728 00021080 */ sll $v0, $v0, 2 /* 028B2C 8004D72C 8E230064 */ lw $v1, 0x64($s1) /* 028B30 8004D730 00431021 */ addu $v0, $v0, $v1 /* 028B34 8004D734 AE22007C */ sw $v0, 0x7c($s1) /* 028B38 8004D738 92420013 */ lbu $v0, 0x13($s2) /* 028B3C 8004D73C 080135DE */ j .L8004D778 /* 028B40 8004D740 A222021D */ sb $v0, 0x21d($s1) .L8004D744: /* 028B44 8004D744 AE20007C */ sw $zero, 0x7c($s1) /* 028B48 8004D748 080135DE */ j .L8004D778 /* 028B4C 8004D74C A220021D */ sb $zero, 0x21d($s1) .L8004D750: /* 028B50 8004D750 96220058 */ lhu $v0, 0x58($s1) /* 028B54 8004D754 10400006 */ beqz $v0, .L8004D770 /* 028B58 8004D758 24020004 */ addiu $v0, $zero, 4 /* 028B5C 8004D75C A2220221 */ sb $v0, 0x221($s1) /* 028B60 8004D760 24020001 */ addiu $v0, $zero, 1 /* 028B64 8004D764 AE220010 */ sw $v0, 0x10($s1) /* 028B68 8004D768 080135DE */ j .L8004D778 /* 028B6C 8004D76C AE220008 */ sw $v0, 8($s1) .L8004D770: /* 028B70 8004D770 0C0136AA */ jal func_8004DAA8 /* 028B74 8004D774 0220202D */ daddu $a0, $s1, $zero .L8004D778: /* 028B78 8004D778 8FBF0020 */ lw $ra, 0x20($sp) /* 028B7C 8004D77C 8FB3001C */ lw $s3, 0x1c($sp) /* 028B80 8004D780 8FB20018 */ lw $s2, 0x18($sp) /* 028B84 8004D784 8FB10014 */ lw $s1, 0x14($sp) /* 028B88 8004D788 8FB00010 */ lw $s0, 0x10($sp) /* 028B8C 8004D78C 03E00008 */ jr $ra /* 028B90 8004D790 27BD0028 */ addiu $sp, $sp, 0x28