papermario/asm/nonmatchings/code_26840_len_20d0/func_8004BA74.s
2020-08-12 22:37:16 -04:00

493 lines
22 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004BA74
/* 026E74 8004BA74 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 026E78 8004BA78 AFB40028 */ sw $s4, 0x28($sp)
/* 026E7C 8004BA7C 0080A02D */ daddu $s4, $a0, $zero
/* 026E80 8004BA80 AFB70034 */ sw $s7, 0x34($sp)
/* 026E84 8004BA84 00A0B82D */ daddu $s7, $a1, $zero
/* 026E88 8004BA88 AFBF003C */ sw $ra, 0x3c($sp)
/* 026E8C 8004BA8C AFBE0038 */ sw $fp, 0x38($sp)
/* 026E90 8004BA90 AFB60030 */ sw $s6, 0x30($sp)
/* 026E94 8004BA94 AFB5002C */ sw $s5, 0x2c($sp)
/* 026E98 8004BA98 AFB30024 */ sw $s3, 0x24($sp)
/* 026E9C 8004BA9C AFB20020 */ sw $s2, 0x20($sp)
/* 026EA0 8004BAA0 AFB1001C */ sw $s1, 0x1c($sp)
/* 026EA4 8004BAA4 AFB00018 */ sw $s0, 0x18($sp)
/* 026EA8 8004BAA8 96E20000 */ lhu $v0, ($s7)
/* 026EAC 8004BAAC 0000402D */ daddu $t0, $zero, $zero
/* 026EB0 8004BAB0 2445FFFF */ addiu $a1, $v0, -1
/* 026EB4 8004BAB4 304923FF */ andi $t1, $v0, 0x23ff
/* 026EB8 8004BAB8 0040182D */ daddu $v1, $v0, $zero
/* 026EBC 8004BABC 30422000 */ andi $v0, $v0, 0x2000
/* 026EC0 8004BAC0 10400020 */ beqz $v0, .L8004BB44
/* 026EC4 8004BAC4 30A400FF */ andi $a0, $a1, 0xff
/* 026EC8 8004BAC8 30A401FF */ andi $a0, $a1, 0x1ff
/* 026ECC 8004BACC 2C820140 */ sltiu $v0, $a0, 0x140
/* 026ED0 8004BAD0 10400178 */ beqz $v0, .L8004C0B4
/* 026ED4 8004BAD4 00041880 */ sll $v1, $a0, 2
/* 026ED8 8004BAD8 8E82002C */ lw $v0, 0x2c($s4)
/* 026EDC 8004BADC 00439021 */ addu $s2, $v0, $v1
/* 026EE0 8004BAE0 96420000 */ lhu $v0, ($s2)
/* 026EE4 8004BAE4 10400173 */ beqz $v0, .L8004C0B4
/* 026EE8 8004BAE8 24100007 */ addiu $s0, $zero, 7
/* 026EEC 8004BAEC 3124FFFF */ andi $a0, $t1, 0xffff
/* 026EF0 8004BAF0 24030620 */ addiu $v1, $zero, 0x620
.L8004BAF4:
/* 026EF4 8004BAF4 02833821 */ addu $a3, $s4, $v1
/* 026EF8 8004BAF8 94E20096 */ lhu $v0, 0x96($a3)
/* 026EFC 8004BAFC 1044000F */ beq $v0, $a0, .L8004BB3C
/* 026F00 8004BB00 2610FFFF */ addiu $s0, $s0, -1
/* 026F04 8004BB04 0601FFFB */ bgez $s0, .L8004BAF4
/* 026F08 8004BB08 2463FF54 */ addiu $v1, $v1, -0xac
.L8004BB0C:
/* 026F0C 8004BB0C 55000038 */ bnel $t0, $zero, .L8004BBF0
/* 026F10 8004BB10 0280202D */ daddu $a0, $s4, $zero
/* 026F14 8004BB14 24100007 */ addiu $s0, $zero, 7
/* 026F18 8004BB18 24030620 */ addiu $v1, $zero, 0x620
.L8004BB1C:
/* 026F1C 8004BB1C 02833821 */ addu $a3, $s4, $v1
/* 026F20 8004BB20 8CE20000 */ lw $v0, ($a3)
/* 026F24 8004BB24 10400010 */ beqz $v0, .L8004BB68
/* 026F28 8004BB28 2610FFFF */ addiu $s0, $s0, -1
/* 026F2C 8004BB2C 0601FFFB */ bgez $s0, .L8004BB1C
/* 026F30 8004BB30 2463FF54 */ addiu $v1, $v1, -0xac
/* 026F34 8004BB34 08012EFA */ j .L8004BBE8
/* 026F38 8004BB38 00000000 */ nop
.L8004BB3C:
/* 026F3C 8004BB3C 08012EC3 */ j .L8004BB0C
/* 026F40 8004BB40 24080001 */ addiu $t0, $zero, 1
.L8004BB44:
/* 026F44 8004BB44 2C8200C0 */ sltiu $v0, $a0, 0xc0
/* 026F48 8004BB48 14400031 */ bnez $v0, .L8004BC10
/* 026F4C 8004BB4C 00000000 */ nop
/* 026F50 8004BB50 10C00007 */ beqz $a2, .L8004BB70
/* 026F54 8004BB54 00C0902D */ daddu $s2, $a2, $zero
/* 026F58 8004BB58 08012EE5 */ j .L8004BB94
/* 026F5C 8004BB5C 00000000 */ nop
.L8004BB60:
/* 026F60 8004BB60 08012EF0 */ j .L8004BBC0
/* 026F64 8004BB64 24080001 */ addiu $t0, $zero, 1
.L8004BB68:
/* 026F68 8004BB68 08012EFA */ j .L8004BBE8
/* 026F6C 8004BB6C 24080001 */ addiu $t0, $zero, 1
.L8004BB70:
/* 026F70 8004BB70 2522FFFF */ addiu $v0, $t1, -1
/* 026F74 8004BB74 00021203 */ sra $v0, $v0, 8
/* 026F78 8004BB78 24420004 */ addiu $v0, $v0, 4
/* 026F7C 8004BB7C 00021080 */ sll $v0, $v0, 2
/* 026F80 8004BB80 02821021 */ addu $v0, $s4, $v0
/* 026F84 8004BB84 2483FF40 */ addiu $v1, $a0, -0xc0
/* 026F88 8004BB88 8C42000C */ lw $v0, 0xc($v0)
/* 026F8C 8004BB8C 00031880 */ sll $v1, $v1, 2
/* 026F90 8004BB90 00439021 */ addu $s2, $v0, $v1
.L8004BB94:
/* 026F94 8004BB94 96420000 */ lhu $v0, ($s2)
/* 026F98 8004BB98 10400146 */ beqz $v0, .L8004C0B4
/* 026F9C 8004BB9C 24100007 */ addiu $s0, $zero, 7
/* 026FA0 8004BBA0 3124FFFF */ andi $a0, $t1, 0xffff
/* 026FA4 8004BBA4 24030620 */ addiu $v1, $zero, 0x620
.L8004BBA8:
/* 026FA8 8004BBA8 02833821 */ addu $a3, $s4, $v1
/* 026FAC 8004BBAC 94E20096 */ lhu $v0, 0x96($a3)
/* 026FB0 8004BBB0 1044FFEB */ beq $v0, $a0, .L8004BB60
/* 026FB4 8004BBB4 2610FFFF */ addiu $s0, $s0, -1
/* 026FB8 8004BBB8 0601FFFB */ bgez $s0, .L8004BBA8
/* 026FBC 8004BBBC 2463FF54 */ addiu $v1, $v1, -0xac
.L8004BBC0:
/* 026FC0 8004BBC0 5500000B */ bnel $t0, $zero, .L8004BBF0
/* 026FC4 8004BBC4 0280202D */ daddu $a0, $s4, $zero
/* 026FC8 8004BBC8 24100007 */ addiu $s0, $zero, 7
/* 026FCC 8004BBCC 24030620 */ addiu $v1, $zero, 0x620
.L8004BBD0:
/* 026FD0 8004BBD0 02833821 */ addu $a3, $s4, $v1
/* 026FD4 8004BBD4 8CE20000 */ lw $v0, ($a3)
/* 026FD8 8004BBD8 1040FFE3 */ beqz $v0, .L8004BB68
/* 026FDC 8004BBDC 2610FFFF */ addiu $s0, $s0, -1
/* 026FE0 8004BBE0 0601FFFB */ bgez $s0, .L8004BBD0
/* 026FE4 8004BBE4 2463FF54 */ addiu $v1, $v1, -0xac
.L8004BBE8:
/* 026FE8 8004BBE8 11000132 */ beqz $t0, .L8004C0B4
/* 026FEC 8004BBEC 0280202D */ daddu $a0, $s4, $zero
.L8004BBF0:
/* 026FF0 8004BBF0 00E0282D */ daddu $a1, $a3, $zero
/* 026FF4 8004BBF4 0240302D */ daddu $a2, $s2, $zero
/* 026FF8 8004BBF8 02E0382D */ daddu $a3, $s7, $zero
/* 026FFC 8004BBFC AFA00010 */ sw $zero, 0x10($sp)
/* 027000 8004BC00 0C013039 */ jal func_8004C0E4
/* 027004 8004BC04 AFA00014 */ sw $zero, 0x14($sp)
/* 027008 8004BC08 0801302D */ j .L8004C0B4
/* 02700C 8004BC0C 00000000 */ nop
.L8004BC10:
/* 027010 8004BC10 10C00005 */ beqz $a2, .L8004BC28
/* 027014 8004BC14 00C0902D */ daddu $s2, $a2, $zero
/* 027018 8004BC18 08012F10 */ j .L8004BC40
/* 02701C 8004BC1C 00000000 */ nop
.L8004BC20:
/* 027020 8004BC20 08012F28 */ j .L8004BCA0
/* 027024 8004BC24 24080001 */ addiu $t0, $zero, 1
.L8004BC28:
/* 027028 8004BC28 00031182 */ srl $v0, $v1, 6
/* 02702C 8004BC2C 3042000C */ andi $v0, $v0, 0xc
/* 027030 8004BC30 02821021 */ addu $v0, $s4, $v0
/* 027034 8004BC34 8C43000C */ lw $v1, 0xc($v0)
/* 027038 8004BC38 00041080 */ sll $v0, $a0, 2
/* 02703C 8004BC3C 00629021 */ addu $s2, $v1, $v0
.L8004BC40:
/* 027040 8004BC40 96420000 */ lhu $v0, ($s2)
/* 027044 8004BC44 1040011B */ beqz $v0, .L8004C0B4
/* 027048 8004BC48 00000000 */ nop
/* 02704C 8004BC4C 96440002 */ lhu $a0, 2($s2)
/* 027050 8004BC50 30820300 */ andi $v0, $a0, 0x300
/* 027054 8004BC54 0002AA02 */ srl $s5, $v0, 8
/* 027058 8004BC58 30820060 */ andi $v0, $a0, 0x60
/* 02705C 8004BC5C 00028142 */ srl $s0, $v0, 5
/* 027060 8004BC60 30820080 */ andi $v0, $a0, 0x80
/* 027064 8004BC64 1600007F */ bnez $s0, .L8004BE64
/* 027068 8004BC68 000299C2 */ srl $s3, $v0, 7
/* 02706C 8004BC6C 96E20002 */ lhu $v0, 2($s7)
/* 027070 8004BC70 1040000B */ beqz $v0, .L8004BCA0
/* 027074 8004BC74 00000000 */ nop
/* 027078 8004BC78 0000802D */ daddu $s0, $zero, $zero
/* 02707C 8004BC7C 0040282D */ daddu $a1, $v0, $zero
/* 027080 8004BC80 2403016C */ addiu $v1, $zero, 0x16c
.L8004BC84:
/* 027084 8004BC84 02833821 */ addu $a3, $s4, $v1
/* 027088 8004BC88 94E20096 */ lhu $v0, 0x96($a3)
/* 02708C 8004BC8C 1045FFE4 */ beq $v0, $a1, .L8004BC20
/* 027090 8004BC90 26100001 */ addiu $s0, $s0, 1
/* 027094 8004BC94 2A020008 */ slti $v0, $s0, 8
/* 027098 8004BC98 1440FFFA */ bnez $v0, .L8004BC84
/* 02709C 8004BC9C 246300AC */ addiu $v1, $v1, 0xac
.L8004BCA0:
/* 0270A0 8004BCA0 1660001C */ bnez $s3, .L8004BD14
/* 0270A4 8004BCA4 00000000 */ nop
/* 0270A8 8004BCA8 55000064 */ bnel $t0, $zero, .L8004BE3C
/* 0270AC 8004BCAC 0280202D */ daddu $a0, $s4, $zero
/* 0270B0 8004BCB0 30900007 */ andi $s0, $a0, 7
/* 0270B4 8004BCB4 00101040 */ sll $v0, $s0, 1
/* 0270B8 8004BCB8 00501021 */ addu $v0, $v0, $s0
/* 0270BC 8004BCBC 00021080 */ sll $v0, $v0, 2
/* 0270C0 8004BCC0 00501023 */ subu $v0, $v0, $s0
/* 0270C4 8004BCC4 00021080 */ sll $v0, $v0, 2
/* 0270C8 8004BCC8 00501023 */ subu $v0, $v0, $s0
/* 0270CC 8004BCCC 00021080 */ sll $v0, $v0, 2
/* 0270D0 8004BCD0 2442016C */ addiu $v0, $v0, 0x16c
/* 0270D4 8004BCD4 02823821 */ addu $a3, $s4, $v0
/* 0270D8 8004BCD8 8CE20000 */ lw $v0, ($a3)
/* 0270DC 8004BCDC 10400057 */ beqz $v0, .L8004BE3C
/* 0270E0 8004BCE0 0280202D */ daddu $a0, $s4, $zero
/* 0270E4 8004BCE4 90E20098 */ lbu $v0, 0x98($a3)
/* 0270E8 8004BCE8 02A2102B */ sltu $v0, $s5, $v0
/* 0270EC 8004BCEC 10400054 */ beqz $v0, .L8004BE40
/* 0270F0 8004BCF0 00E0282D */ daddu $a1, $a3, $zero
/* 0270F4 8004BCF4 0801302D */ j .L8004C0B4
/* 0270F8 8004BCF8 00000000 */ nop
.L8004BCFC:
/* 0270FC 8004BCFC 08012F58 */ j .L8004BD60
/* 027100 8004BD00 24080001 */ addiu $t0, $zero, 1
.L8004BD04:
/* 027104 8004BD04 08012F6A */ j .L8004BDA8
/* 027108 8004BD08 24080001 */ addiu $t0, $zero, 1
.L8004BD0C:
/* 02710C 8004BD0C 08012F7D */ j .L8004BDF4
/* 027110 8004BD10 24080001 */ addiu $t0, $zero, 1
.L8004BD14:
/* 027114 8004BD14 55000049 */ bnel $t0, $zero, .L8004BE3C
/* 027118 8004BD18 0280202D */ daddu $a0, $s4, $zero
/* 02711C 8004BD1C 30900007 */ andi $s0, $a0, 7
/* 027120 8004BD20 0600000F */ bltz $s0, .L8004BD60
/* 027124 8004BD24 00101040 */ sll $v0, $s0, 1
/* 027128 8004BD28 3125FFFF */ andi $a1, $t1, 0xffff
/* 02712C 8004BD2C 00501021 */ addu $v0, $v0, $s0
/* 027130 8004BD30 00021080 */ sll $v0, $v0, 2
/* 027134 8004BD34 00501023 */ subu $v0, $v0, $s0
/* 027138 8004BD38 00021080 */ sll $v0, $v0, 2
/* 02713C 8004BD3C 00501023 */ subu $v0, $v0, $s0
/* 027140 8004BD40 00021080 */ sll $v0, $v0, 2
/* 027144 8004BD44 2443016C */ addiu $v1, $v0, 0x16c
.L8004BD48:
/* 027148 8004BD48 02833821 */ addu $a3, $s4, $v1
/* 02714C 8004BD4C 94E20096 */ lhu $v0, 0x96($a3)
/* 027150 8004BD50 1045FFEA */ beq $v0, $a1, .L8004BCFC
/* 027154 8004BD54 2610FFFF */ addiu $s0, $s0, -1
/* 027158 8004BD58 0601FFFB */ bgez $s0, .L8004BD48
/* 02715C 8004BD5C 2463FF54 */ addiu $v1, $v1, -0xac
.L8004BD60:
/* 027160 8004BD60 55000036 */ bnel $t0, $zero, .L8004BE3C
/* 027164 8004BD64 0280202D */ daddu $a0, $s4, $zero
/* 027168 8004BD68 30900007 */ andi $s0, $a0, 7
/* 02716C 8004BD6C 0600000E */ bltz $s0, .L8004BDA8
/* 027170 8004BD70 00101040 */ sll $v0, $s0, 1
/* 027174 8004BD74 00501021 */ addu $v0, $v0, $s0
/* 027178 8004BD78 00021080 */ sll $v0, $v0, 2
/* 02717C 8004BD7C 00501023 */ subu $v0, $v0, $s0
/* 027180 8004BD80 00021080 */ sll $v0, $v0, 2
/* 027184 8004BD84 00501023 */ subu $v0, $v0, $s0
/* 027188 8004BD88 00021080 */ sll $v0, $v0, 2
/* 02718C 8004BD8C 2443016C */ addiu $v1, $v0, 0x16c
.L8004BD90:
/* 027190 8004BD90 02833821 */ addu $a3, $s4, $v1
/* 027194 8004BD94 8CE20000 */ lw $v0, ($a3)
/* 027198 8004BD98 1040FFDA */ beqz $v0, .L8004BD04
/* 02719C 8004BD9C 2610FFFF */ addiu $s0, $s0, -1
/* 0271A0 8004BDA0 0601FFFB */ bgez $s0, .L8004BD90
/* 0271A4 8004BDA4 2463FF54 */ addiu $v1, $v1, -0xac
.L8004BDA8:
/* 0271A8 8004BDA8 55000024 */ bnel $t0, $zero, .L8004BE3C
/* 0271AC 8004BDAC 0280202D */ daddu $a0, $s4, $zero
/* 0271B0 8004BDB0 30900007 */ andi $s0, $a0, 7
/* 0271B4 8004BDB4 0600000F */ bltz $s0, .L8004BDF4
/* 0271B8 8004BDB8 00101040 */ sll $v0, $s0, 1
/* 0271BC 8004BDBC 00501021 */ addu $v0, $v0, $s0
/* 0271C0 8004BDC0 00021080 */ sll $v0, $v0, 2
/* 0271C4 8004BDC4 00501023 */ subu $v0, $v0, $s0
/* 0271C8 8004BDC8 00021080 */ sll $v0, $v0, 2
/* 0271CC 8004BDCC 00501023 */ subu $v0, $v0, $s0
/* 0271D0 8004BDD0 00021080 */ sll $v0, $v0, 2
/* 0271D4 8004BDD4 2443016C */ addiu $v1, $v0, 0x16c
.L8004BDD8:
/* 0271D8 8004BDD8 02833821 */ addu $a3, $s4, $v1
/* 0271DC 8004BDDC 90E20098 */ lbu $v0, 0x98($a3)
/* 0271E0 8004BDE0 0055102B */ sltu $v0, $v0, $s5
/* 0271E4 8004BDE4 1440FFC9 */ bnez $v0, .L8004BD0C
/* 0271E8 8004BDE8 2610FFFF */ addiu $s0, $s0, -1
/* 0271EC 8004BDEC 0601FFFA */ bgez $s0, .L8004BDD8
/* 0271F0 8004BDF0 2463FF54 */ addiu $v1, $v1, -0xac
.L8004BDF4:
/* 0271F4 8004BDF4 55000011 */ bnel $t0, $zero, .L8004BE3C
/* 0271F8 8004BDF8 0280202D */ daddu $a0, $s4, $zero
/* 0271FC 8004BDFC 30900007 */ andi $s0, $a0, 7
/* 027200 8004BE00 00101040 */ sll $v0, $s0, 1
/* 027204 8004BE04 00501021 */ addu $v0, $v0, $s0
/* 027208 8004BE08 00021080 */ sll $v0, $v0, 2
/* 02720C 8004BE0C 00501023 */ subu $v0, $v0, $s0
/* 027210 8004BE10 00021080 */ sll $v0, $v0, 2
/* 027214 8004BE14 00501023 */ subu $v0, $v0, $s0
/* 027218 8004BE18 00021080 */ sll $v0, $v0, 2
/* 02721C 8004BE1C 2442016C */ addiu $v0, $v0, 0x16c
/* 027220 8004BE20 02823821 */ addu $a3, $s4, $v0
/* 027224 8004BE24 90E20098 */ lbu $v0, 0x98($a3)
/* 027228 8004BE28 02A2102B */ sltu $v0, $s5, $v0
/* 02722C 8004BE2C 50400001 */ beql $v0, $zero, .L8004BE34
/* 027230 8004BE30 24080001 */ addiu $t0, $zero, 1
.L8004BE34:
/* 027234 8004BE34 1100009F */ beqz $t0, .L8004C0B4
/* 027238 8004BE38 0280202D */ daddu $a0, $s4, $zero
.L8004BE3C:
/* 02723C 8004BE3C 00E0282D */ daddu $a1, $a3, $zero
.L8004BE40:
/* 027240 8004BE40 96420000 */ lhu $v0, ($s2)
/* 027244 8004BE44 8C860008 */ lw $a2, 8($a0)
/* 027248 8004BE48 02E0382D */ daddu $a3, $s7, $zero
/* 02724C 8004BE4C AFB50010 */ sw $s5, 0x10($sp)
/* 027250 8004BE50 AFA00014 */ sw $zero, 0x14($sp)
/* 027254 8004BE54 0C013039 */ jal func_8004C0E4
/* 027258 8004BE58 00463021 */ addu $a2, $v0, $a2
/* 02725C 8004BE5C 0801302D */ j .L8004C0B4
/* 027260 8004BE60 00000000 */ nop
.L8004BE64:
/* 027264 8004BE64 96420000 */ lhu $v0, ($s2)
/* 027268 8004BE68 8E830008 */ lw $v1, 8($s4)
/* 02726C 8004BE6C 00439021 */ addu $s2, $v0, $v1
/* 027270 8004BE70 30821800 */ andi $v0, $a0, 0x1800
/* 027274 8004BE74 0002B2C2 */ srl $s6, $v0, 0xb
/* 027278 8004BE78 12C00005 */ beqz $s6, .L8004BE90
/* 02727C 8004BE7C 0280202D */ daddu $a0, $s4, $zero
/* 027280 8004BE80 0C0130C0 */ jal func_8004C300
/* 027284 8004BE84 02C0282D */ daddu $a1, $s6, $zero
/* 027288 8004BE88 08012FA8 */ j .L8004BEA0
/* 02728C 8004BE8C 2603FFFF */ addiu $v1, $s0, -1
.L8004BE90:
/* 027290 8004BE90 96E50000 */ lhu $a1, ($s7)
/* 027294 8004BE94 0C0130A9 */ jal func_8004C2A4
/* 027298 8004BE98 0280202D */ daddu $a0, $s4, $zero
/* 02729C 8004BE9C 2603FFFF */ addiu $v1, $s0, -1
.L8004BEA0:
/* 0272A0 8004BEA0 24020002 */ addiu $v0, $zero, 2
/* 0272A4 8004BEA4 1260005D */ beqz $s3, .L8004C01C
/* 0272A8 8004BEA8 00628804 */ sllv $s1, $v0, $v1
/* 0272AC 8004BEAC 24100007 */ addiu $s0, $zero, 7
/* 0272B0 8004BEB0 3C1E8008 */ lui $fp, 0x8008
/* 0272B4 8004BEB4 27DE8464 */ addiu $fp, $fp, -0x7b9c
/* 0272B8 8004BEB8 24130620 */ addiu $s3, $zero, 0x620
.L8004BEBC:
/* 0272BC 8004BEBC 96420000 */ lhu $v0, ($s2)
/* 0272C0 8004BEC0 10400010 */ beqz $v0, .L8004BF04
/* 0272C4 8004BEC4 02933821 */ addu $a3, $s4, $s3
/* 0272C8 8004BEC8 8CE20000 */ lw $v0, ($a3)
/* 0272CC 8004BECC 545E0011 */ bnel $v0, $fp, .L8004BF14
/* 0272D0 8004BED0 2610FFFF */ addiu $s0, $s0, -1
/* 0272D4 8004BED4 0280202D */ daddu $a0, $s4, $zero
/* 0272D8 8004BED8 00E0282D */ daddu $a1, $a3, $zero
/* 0272DC 8004BEDC 02E0382D */ daddu $a3, $s7, $zero
/* 0272E0 8004BEE0 96420000 */ lhu $v0, ($s2)
/* 0272E4 8004BEE4 8E860008 */ lw $a2, 8($s4)
/* 0272E8 8004BEE8 2631FFFF */ addiu $s1, $s1, -1
/* 0272EC 8004BEEC AFB50010 */ sw $s5, 0x10($sp)
/* 0272F0 8004BEF0 AFB60014 */ sw $s6, 0x14($sp)
/* 0272F4 8004BEF4 0C013039 */ jal func_8004C0E4
/* 0272F8 8004BEF8 00463021 */ addu $a2, $v0, $a2
/* 0272FC 8004BEFC 08012FC2 */ j .L8004BF08
/* 027300 8004BF00 00000000 */ nop
.L8004BF04:
/* 027304 8004BF04 2631FFFF */ addiu $s1, $s1, -1
.L8004BF08:
/* 027308 8004BF08 1A200004 */ blez $s1, .L8004BF1C
/* 02730C 8004BF0C 2610FFFF */ addiu $s0, $s0, -1
/* 027310 8004BF10 26520004 */ addiu $s2, $s2, 4
.L8004BF14:
/* 027314 8004BF14 0601FFE9 */ bgez $s0, .L8004BEBC
/* 027318 8004BF18 2673FF54 */ addiu $s3, $s3, -0xac
.L8004BF1C:
/* 02731C 8004BF1C 12200065 */ beqz $s1, .L8004C0B4
/* 027320 8004BF20 24100007 */ addiu $s0, $zero, 7
/* 027324 8004BF24 24130620 */ addiu $s3, $zero, 0x620
.L8004BF28:
/* 027328 8004BF28 96420000 */ lhu $v0, ($s2)
/* 02732C 8004BF2C 10400013 */ beqz $v0, .L8004BF7C
/* 027330 8004BF30 02933821 */ addu $a3, $s4, $s3
/* 027334 8004BF34 8CE20000 */ lw $v0, ($a3)
/* 027338 8004BF38 5440000E */ bnel $v0, $zero, .L8004BF74
/* 02733C 8004BF3C 2673FF54 */ addiu $s3, $s3, -0xac
/* 027340 8004BF40 0280202D */ daddu $a0, $s4, $zero
/* 027344 8004BF44 00E0282D */ daddu $a1, $a3, $zero
/* 027348 8004BF48 02E0382D */ daddu $a3, $s7, $zero
/* 02734C 8004BF4C 96420000 */ lhu $v0, ($s2)
/* 027350 8004BF50 8E860008 */ lw $a2, 8($s4)
/* 027354 8004BF54 2631FFFF */ addiu $s1, $s1, -1
/* 027358 8004BF58 AFB50010 */ sw $s5, 0x10($sp)
/* 02735C 8004BF5C AFB60014 */ sw $s6, 0x14($sp)
/* 027360 8004BF60 0C013039 */ jal func_8004C0E4
/* 027364 8004BF64 00463021 */ addu $a2, $v0, $a2
/* 027368 8004BF68 1A20000A */ blez $s1, .L8004BF94
/* 02736C 8004BF6C 2673FF54 */ addiu $s3, $s3, -0xac
/* 027370 8004BF70 26520004 */ addiu $s2, $s2, 4
.L8004BF74:
/* 027374 8004BF74 08012FE3 */ j .L8004BF8C
/* 027378 8004BF78 2610FFFF */ addiu $s0, $s0, -1
.L8004BF7C:
/* 02737C 8004BF7C 2631FFFF */ addiu $s1, $s1, -1
/* 027380 8004BF80 1A200004 */ blez $s1, .L8004BF94
/* 027384 8004BF84 00000000 */ nop
/* 027388 8004BF88 26520004 */ addiu $s2, $s2, 4
.L8004BF8C:
/* 02738C 8004BF8C 0601FFE6 */ bgez $s0, .L8004BF28
/* 027390 8004BF90 00000000 */ nop
.L8004BF94:
/* 027394 8004BF94 12200047 */ beqz $s1, .L8004C0B4
/* 027398 8004BF98 24100007 */ addiu $s0, $zero, 7
/* 02739C 8004BF9C 24130620 */ addiu $s3, $zero, 0x620
.L8004BFA0:
/* 0273A0 8004BFA0 96420000 */ lhu $v0, ($s2)
/* 0273A4 8004BFA4 10400015 */ beqz $v0, .L8004BFFC
/* 0273A8 8004BFA8 02933821 */ addu $a3, $s4, $s3
/* 0273AC 8004BFAC 90E20099 */ lbu $v0, 0x99($a3)
/* 0273B0 8004BFB0 0056102B */ sltu $v0, $v0, $s6
/* 0273B4 8004BFB4 50400015 */ beql $v0, $zero, .L8004C00C
/* 0273B8 8004BFB8 2610FFFF */ addiu $s0, $s0, -1
/* 0273BC 8004BFBC 90E20098 */ lbu $v0, 0x98($a3)
/* 0273C0 8004BFC0 02A2102B */ sltu $v0, $s5, $v0
/* 0273C4 8004BFC4 54400011 */ bnel $v0, $zero, .L8004C00C
/* 0273C8 8004BFC8 2610FFFF */ addiu $s0, $s0, -1
/* 0273CC 8004BFCC 0280202D */ daddu $a0, $s4, $zero
/* 0273D0 8004BFD0 00E0282D */ daddu $a1, $a3, $zero
/* 0273D4 8004BFD4 02E0382D */ daddu $a3, $s7, $zero
/* 0273D8 8004BFD8 96420000 */ lhu $v0, ($s2)
/* 0273DC 8004BFDC 8E860008 */ lw $a2, 8($s4)
/* 0273E0 8004BFE0 2631FFFF */ addiu $s1, $s1, -1
/* 0273E4 8004BFE4 AFB50010 */ sw $s5, 0x10($sp)
/* 0273E8 8004BFE8 AFB60014 */ sw $s6, 0x14($sp)
/* 0273EC 8004BFEC 0C013039 */ jal func_8004C0E4
/* 0273F0 8004BFF0 00463021 */ addu $a2, $v0, $a2
/* 0273F4 8004BFF4 08013000 */ j .L8004C000
/* 0273F8 8004BFF8 00000000 */ nop
.L8004BFFC:
/* 0273FC 8004BFFC 2631FFFF */ addiu $s1, $s1, -1
.L8004C000:
/* 027400 8004C000 1A20002C */ blez $s1, .L8004C0B4
/* 027404 8004C004 26520004 */ addiu $s2, $s2, 4
/* 027408 8004C008 2610FFFF */ addiu $s0, $s0, -1
.L8004C00C:
/* 02740C 8004C00C 0601FFE4 */ bgez $s0, .L8004BFA0
/* 027410 8004C010 2673FF54 */ addiu $s3, $s3, -0xac
/* 027414 8004C014 0801302D */ j .L8004C0B4
/* 027418 8004C018 00000000 */ nop
.L8004C01C:
/* 02741C 8004C01C 1A200025 */ blez $s1, .L8004C0B4
/* 027420 8004C020 0000982D */ daddu $s3, $zero, $zero
.L8004C024:
/* 027424 8004C024 96420000 */ lhu $v0, ($s2)
/* 027428 8004C028 5040001F */ beql $v0, $zero, .L8004C0A8
/* 02742C 8004C02C 26730001 */ addiu $s3, $s3, 1
/* 027430 8004C030 96440002 */ lhu $a0, 2($s2)
/* 027434 8004C034 30900007 */ andi $s0, $a0, 7
/* 027438 8004C038 00101040 */ sll $v0, $s0, 1
/* 02743C 8004C03C 00501021 */ addu $v0, $v0, $s0
/* 027440 8004C040 00021080 */ sll $v0, $v0, 2
/* 027444 8004C044 00501023 */ subu $v0, $v0, $s0
/* 027448 8004C048 00021080 */ sll $v0, $v0, 2
/* 02744C 8004C04C 00501023 */ subu $v0, $v0, $s0
/* 027450 8004C050 00021080 */ sll $v0, $v0, 2
/* 027454 8004C054 2442016C */ addiu $v0, $v0, 0x16c
/* 027458 8004C058 02823821 */ addu $a3, $s4, $v0
/* 02745C 8004C05C 30820300 */ andi $v0, $a0, 0x300
/* 027460 8004C060 8CE30000 */ lw $v1, ($a3)
/* 027464 8004C064 10600005 */ beqz $v1, .L8004C07C
/* 027468 8004C068 0002AA02 */ srl $s5, $v0, 8
/* 02746C 8004C06C 90E20098 */ lbu $v0, 0x98($a3)
/* 027470 8004C070 02A2102B */ sltu $v0, $s5, $v0
/* 027474 8004C074 5440000B */ bnel $v0, $zero, .L8004C0A4
/* 027478 8004C078 26520004 */ addiu $s2, $s2, 4
.L8004C07C:
/* 02747C 8004C07C 0280202D */ daddu $a0, $s4, $zero
/* 027480 8004C080 00E0282D */ daddu $a1, $a3, $zero
/* 027484 8004C084 96420000 */ lhu $v0, ($s2)
/* 027488 8004C088 8E860008 */ lw $a2, 8($s4)
/* 02748C 8004C08C 02E0382D */ daddu $a3, $s7, $zero
/* 027490 8004C090 AFB50010 */ sw $s5, 0x10($sp)
/* 027494 8004C094 AFB60014 */ sw $s6, 0x14($sp)
/* 027498 8004C098 0C013039 */ jal func_8004C0E4
/* 02749C 8004C09C 00463021 */ addu $a2, $v0, $a2
/* 0274A0 8004C0A0 26520004 */ addiu $s2, $s2, 4
.L8004C0A4:
/* 0274A4 8004C0A4 26730001 */ addiu $s3, $s3, 1
.L8004C0A8:
/* 0274A8 8004C0A8 0271102A */ slt $v0, $s3, $s1
/* 0274AC 8004C0AC 1440FFDD */ bnez $v0, .L8004C024
/* 0274B0 8004C0B0 00000000 */ nop
.L8004C0B4:
/* 0274B4 8004C0B4 8FBF003C */ lw $ra, 0x3c($sp)
/* 0274B8 8004C0B8 8FBE0038 */ lw $fp, 0x38($sp)
/* 0274BC 8004C0BC 8FB70034 */ lw $s7, 0x34($sp)
/* 0274C0 8004C0C0 8FB60030 */ lw $s6, 0x30($sp)
/* 0274C4 8004C0C4 8FB5002C */ lw $s5, 0x2c($sp)
/* 0274C8 8004C0C8 8FB40028 */ lw $s4, 0x28($sp)
/* 0274CC 8004C0CC 8FB30024 */ lw $s3, 0x24($sp)
/* 0274D0 8004C0D0 8FB20020 */ lw $s2, 0x20($sp)
/* 0274D4 8004C0D4 8FB1001C */ lw $s1, 0x1c($sp)
/* 0274D8 8004C0D8 8FB00018 */ lw $s0, 0x18($sp)
/* 0274DC 8004C0DC 03E00008 */ jr $ra
/* 0274E0 8004C0E0 27BD0040 */ addiu $sp, $sp, 0x40