glabel func_80099EC4 /* 09AAC4 80099EC4 27BDFF70 */ addiu $sp, $sp, -0x90 /* 09AAC8 80099EC8 AFB1002C */ sw $s1, 0x2c($sp) /* 09AACC 80099ECC 3C028019 */ lui $v0, %hi(D_8018E0E8) # 0x8019 /* 09AAD0 80099ED0 2451E0E8 */ addiu $s1, $v0, %lo(D_8018E0E8) # -0x1f18 /* 09AAD4 80099ED4 AFBF004C */ sw $ra, 0x4c($sp) /* 09AAD8 80099ED8 AFBE0048 */ sw $fp, 0x48($sp) /* 09AADC 80099EDC AFB70044 */ sw $s7, 0x44($sp) /* 09AAE0 80099EE0 AFB60040 */ sw $s6, 0x40($sp) /* 09AAE4 80099EE4 AFB5003C */ sw $s5, 0x3c($sp) /* 09AAE8 80099EE8 AFB40038 */ sw $s4, 0x38($sp) /* 09AAEC 80099EEC AFB30034 */ sw $s3, 0x34($sp) /* 09AAF0 80099EF0 AFB20030 */ sw $s2, 0x30($sp) /* 09AAF4 80099EF4 AFB00028 */ sw $s0, 0x28($sp) /* 09AAF8 80099EF8 8E320000 */ lw $s2, ($s1) /* 09AAFC 80099EFC 3C138019 */ lui $s3, %hi(gMenuCompressedBuffer) # $s3, 0x8019 /* 09AB00 80099F00 0000A025 */ move $s4, $zero /* 09AB04 80099F04 124000C0 */ beqz $s2, .L8009A208 /* 09AB08 80099F08 2673D9B4 */ addiu $s3, %lo(gMenuCompressedBuffer) # addiu $s3, $s3, -0x264c /* 09AB0C 80099F0C 96430010 */ lhu $v1, 0x10($s2) /* 09AB10 80099F10 24101400 */ li $s0, 5120 /* 09AB14 80099F14 10600003 */ beqz $v1, .L80099F24 /* 09AB18 80099F18 00000000 */ nop /* 09AB1C 80099F1C 10000001 */ b .L80099F24 /* 09AB20 80099F20 00608025 */ move $s0, $v1 .L80099F24: /* 09AB24 80099F24 06010004 */ bgez $s0, .L80099F38 /* 09AB28 80099F28 320E0007 */ andi $t6, $s0, 7 /* 09AB2C 80099F2C 11C00002 */ beqz $t6, .L80099F38 /* 09AB30 80099F30 00000000 */ nop /* 09AB34 80099F34 25CEFFF8 */ addiu $t6, $t6, -8 .L80099F38: /* 09AB38 80099F38 51C00008 */ beql $t6, $zero, .L80099F5C /* 09AB3C 80099F3C 8E640000 */ lw $a0, ($s3) /* 09AB40 80099F40 06010003 */ bgez $s0, .L80099F50 /* 09AB44 80099F44 001078C3 */ sra $t7, $s0, 3 /* 09AB48 80099F48 26010007 */ addiu $at, $s0, 7 /* 09AB4C 80099F4C 000178C3 */ sra $t7, $at, 3 .L80099F50: /* 09AB50 80099F50 000FC0C0 */ sll $t8, $t7, 3 /* 09AB54 80099F54 27100008 */ addiu $s0, $t8, 8 /* 09AB58 80099F58 8E640000 */ lw $a0, ($s3) .L80099F5C: /* 09AB5C 80099F5C 0C0336E0 */ jal osInvalDCache /* 09AB60 80099F60 02002825 */ move $a1, $s0 /* 09AB64 80099F64 8E590004 */ lw $t9, 4($s2) /* 09AB68 80099F68 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff /* 09AB6C 80099F6C 8E690000 */ lw $t1, ($s3) /* 09AB70 80099F70 3C158015 */ lui $s5, %hi(gDmaMesgQueue) # $s5, 0x8015 /* 09AB74 80099F74 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff /* 09AB78 80099F78 3C1E0073 */ lui $fp, %hi(_textures_0aSegmentRomStart) # $fp, 0x73 /* 09AB7C 80099F7C 26B5EF58 */ addiu $s5, %lo(gDmaMesgQueue) # addiu $s5, $s5, -0x10a8 /* 09AB80 80099F80 27DE9A30 */ addiu $fp, %lo(_textures_0aSegmentRomStart) # addiu $fp, $fp, -0x65d0 /* 09AB84 80099F84 03214024 */ and $t0, $t9, $at /* 09AB88 80099F88 03C83821 */ addu $a3, $fp, $t0 /* 09AB8C 80099F8C AFB50018 */ sw $s5, 0x18($sp) /* 09AB90 80099F90 AFB00014 */ sw $s0, 0x14($sp) /* 09AB94 80099F94 27A40068 */ addiu $a0, $sp, 0x68 /* 09AB98 80099F98 00002825 */ move $a1, $zero /* 09AB9C 80099F9C 00003025 */ move $a2, $zero /* 09ABA0 80099FA0 0C03370C */ jal osPiStartDma /* 09ABA4 80099FA4 AFA90010 */ sw $t1, 0x10($sp) /* 09ABA8 80099FA8 27B60064 */ addiu $s6, $sp, 0x64 /* 09ABAC 80099FAC 02C02825 */ move $a1, $s6 /* 09ABB0 80099FB0 02A02025 */ move $a0, $s5 /* 09ABB4 80099FB4 0C0335D4 */ jal osRecvMesg /* 09ABB8 80099FB8 24060001 */ li $a2, 1 /* 09ABBC 80099FBC 3C17802C */ lui $s7, %hi(D_802BFB80) # $s7, 0x802c /* 09ABC0 80099FC0 26F7FB80 */ addiu $s7, %lo(D_802BFB80) # addiu $s7, $s7, -0x480 /* 09ABC4 80099FC4 8E220008 */ lw $v0, 8($s1) .L80099FC8: /* 09ABC8 80099FC8 54400006 */ bnel $v0, $zero, .L80099FE4 /* 09ABCC 80099FCC 94430010 */ lhu $v1, 0x10($v0) /* 09ABD0 80099FD0 26940001 */ addiu $s4, $s4, 1 /* 09ABD4 80099FD4 00145600 */ sll $t2, $s4, 0x18 /* 09ABD8 80099FD8 10000027 */ b .L8009A078 /* 09ABDC 80099FDC 000AA603 */ sra $s4, $t2, 0x18 /* 09ABE0 80099FE0 94430010 */ lhu $v1, 0x10($v0) .L80099FE4: /* 09ABE4 80099FE4 00409025 */ move $s2, $v0 /* 09ABE8 80099FE8 24101400 */ li $s0, 5120 /* 09ABEC 80099FEC 10600003 */ beqz $v1, .L80099FFC /* 09ABF0 80099FF0 00000000 */ nop /* 09ABF4 80099FF4 10000001 */ b .L80099FFC /* 09ABF8 80099FF8 00608025 */ move $s0, $v1 .L80099FFC: /* 09ABFC 80099FFC 06010004 */ bgez $s0, .L8009A010 /* 09AC00 8009A000 320C0007 */ andi $t4, $s0, 7 /* 09AC04 8009A004 11800002 */ beqz $t4, .L8009A010 /* 09AC08 8009A008 00000000 */ nop /* 09AC0C 8009A00C 258CFFF8 */ addiu $t4, $t4, -8 .L8009A010: /* 09AC10 8009A010 51800008 */ beql $t4, $zero, .L8009A034 /* 09AC14 8009A014 8E640000 */ lw $a0, ($s3) /* 09AC18 8009A018 06010003 */ bgez $s0, .L8009A028 /* 09AC1C 8009A01C 001068C3 */ sra $t5, $s0, 3 /* 09AC20 8009A020 26010007 */ addiu $at, $s0, 7 /* 09AC24 8009A024 000168C3 */ sra $t5, $at, 3 .L8009A028: /* 09AC28 8009A028 000D70C0 */ sll $t6, $t5, 3 /* 09AC2C 8009A02C 25D00008 */ addiu $s0, $t6, 8 /* 09AC30 8009A030 8E640000 */ lw $a0, ($s3) .L8009A034: /* 09AC34 8009A034 02002825 */ move $a1, $s0 /* 09AC38 8009A038 0C0336E0 */ jal osInvalDCache /* 09AC3C 8009A03C 24841400 */ addiu $a0, $a0, 0x1400 /* 09AC40 8009A040 8E4F0004 */ lw $t7, 4($s2) /* 09AC44 8009A044 8E790000 */ lw $t9, ($s3) /* 09AC48 8009A048 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff /* 09AC4C 8009A04C 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff /* 09AC50 8009A050 01E1C024 */ and $t8, $t7, $at /* 09AC54 8009A054 27281400 */ addiu $t0, $t9, 0x1400 /* 09AC58 8009A058 AFA80010 */ sw $t0, 0x10($sp) /* 09AC5C 8009A05C 03D83821 */ addu $a3, $fp, $t8 /* 09AC60 8009A060 AFB50018 */ sw $s5, 0x18($sp) /* 09AC64 8009A064 AFB00014 */ sw $s0, 0x14($sp) /* 09AC68 8009A068 27A40068 */ addiu $a0, $sp, 0x68 /* 09AC6C 8009A06C 00002825 */ move $a1, $zero /* 09AC70 8009A070 0C03370C */ jal osPiStartDma /* 09AC74 8009A074 00003025 */ move $a2, $zero .L8009A078: /* 09AC78 8009A078 86220004 */ lh $v0, 4($s1) /* 09AC7C 8009A07C 86290006 */ lh $t1, 6($s1) /* 09AC80 8009A080 8E640000 */ lw $a0, ($s3) /* 09AC84 8009A084 00095400 */ sll $t2, $t1, 0x10 /* 09AC88 8009A088 02EA5821 */ addu $t3, $s7, $t2 /* 09AC8C 8009A08C 04410003 */ bgez $v0, .L8009A09C /* 09AC90 8009A090 00026043 */ sra $t4, $v0, 1 /* 09AC94 8009A094 24410001 */ addiu $at, $v0, 1 /* 09AC98 8009A098 00016043 */ sra $t4, $at, 1 .L8009A09C: /* 09AC9C 8009A09C 000C6BC0 */ sll $t5, $t4, 0xf /* 09ACA0 8009A0A0 016D7021 */ addu $t6, $t3, $t5 /* 09ACA4 8009A0A4 04410004 */ bgez $v0, .L8009A0B8 /* 09ACA8 8009A0A8 304F0001 */ andi $t7, $v0, 1 /* 09ACAC 8009A0AC 11E00002 */ beqz $t7, .L8009A0B8 /* 09ACB0 8009A0B0 00000000 */ nop /* 09ACB4 8009A0B4 25EFFFFE */ addiu $t7, $t7, -2 .L8009A0B8: /* 09ACB8 8009A0B8 000FC340 */ sll $t8, $t7, 0xd /* 09ACBC 8009A0BC 01D82821 */ addu $a1, $t6, $t8 /* 09ACC0 8009A0C0 0C010034 */ jal mio0decode /* 09ACC4 8009A0C4 24A54000 */ addiu $a1, $a1, 0x4000 /* 09ACC8 8009A0C8 AE200000 */ sw $zero, ($s1) /* 09ACCC 8009A0CC 1680004E */ bnez $s4, .L8009A208 /* 09ACD0 8009A0D0 26310008 */ addiu $s1, $s1, 8 /* 09ACD4 8009A0D4 02A02025 */ move $a0, $s5 /* 09ACD8 8009A0D8 02C02825 */ move $a1, $s6 /* 09ACDC 8009A0DC 0C0335D4 */ jal osRecvMesg /* 09ACE0 8009A0E0 24060001 */ li $a2, 1 /* 09ACE4 8009A0E4 8E220008 */ lw $v0, 8($s1) /* 09ACE8 8009A0E8 54400006 */ bnel $v0, $zero, .L8009A104 /* 09ACEC 8009A0EC 94430010 */ lhu $v1, 0x10($v0) /* 09ACF0 8009A0F0 26940001 */ addiu $s4, $s4, 1 /* 09ACF4 8009A0F4 0014CE00 */ sll $t9, $s4, 0x18 /* 09ACF8 8009A0F8 10000025 */ b .L8009A190 /* 09ACFC 8009A0FC 0019A603 */ sra $s4, $t9, 0x18 /* 09AD00 8009A100 94430010 */ lhu $v1, 0x10($v0) .L8009A104: /* 09AD04 8009A104 00409025 */ move $s2, $v0 /* 09AD08 8009A108 24101400 */ li $s0, 5120 /* 09AD0C 8009A10C 10600003 */ beqz $v1, .L8009A11C /* 09AD10 8009A110 00000000 */ nop /* 09AD14 8009A114 10000001 */ b .L8009A11C /* 09AD18 8009A118 00608025 */ move $s0, $v1 .L8009A11C: /* 09AD1C 8009A11C 06010004 */ bgez $s0, .L8009A130 /* 09AD20 8009A120 32090007 */ andi $t1, $s0, 7 /* 09AD24 8009A124 11200002 */ beqz $t1, .L8009A130 /* 09AD28 8009A128 00000000 */ nop /* 09AD2C 8009A12C 2529FFF8 */ addiu $t1, $t1, -8 .L8009A130: /* 09AD30 8009A130 51200008 */ beql $t1, $zero, .L8009A154 /* 09AD34 8009A134 8E640000 */ lw $a0, ($s3) /* 09AD38 8009A138 06010003 */ bgez $s0, .L8009A148 /* 09AD3C 8009A13C 001050C3 */ sra $t2, $s0, 3 /* 09AD40 8009A140 26010007 */ addiu $at, $s0, 7 /* 09AD44 8009A144 000150C3 */ sra $t2, $at, 3 .L8009A148: /* 09AD48 8009A148 000A60C0 */ sll $t4, $t2, 3 /* 09AD4C 8009A14C 25900008 */ addiu $s0, $t4, 8 /* 09AD50 8009A150 8E640000 */ lw $a0, ($s3) .L8009A154: /* 09AD54 8009A154 0C0336E0 */ jal osInvalDCache /* 09AD58 8009A158 02002825 */ move $a1, $s0 /* 09AD5C 8009A15C 8E4B0004 */ lw $t3, 4($s2) /* 09AD60 8009A160 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff /* 09AD64 8009A164 8E6F0000 */ lw $t7, ($s3) /* 09AD68 8009A168 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff /* 09AD6C 8009A16C 01616824 */ and $t5, $t3, $at /* 09AD70 8009A170 03CD3821 */ addu $a3, $fp, $t5 /* 09AD74 8009A174 AFB50018 */ sw $s5, 0x18($sp) /* 09AD78 8009A178 AFB00014 */ sw $s0, 0x14($sp) /* 09AD7C 8009A17C 27A40068 */ addiu $a0, $sp, 0x68 /* 09AD80 8009A180 00002825 */ move $a1, $zero /* 09AD84 8009A184 00003025 */ move $a2, $zero /* 09AD88 8009A188 0C03370C */ jal osPiStartDma /* 09AD8C 8009A18C AFAF0010 */ sw $t7, 0x10($sp) .L8009A190: /* 09AD90 8009A190 86220004 */ lh $v0, 4($s1) /* 09AD94 8009A194 862E0006 */ lh $t6, 6($s1) /* 09AD98 8009A198 8E640000 */ lw $a0, ($s3) /* 09AD9C 8009A19C 000EC400 */ sll $t8, $t6, 0x10 /* 09ADA0 8009A1A0 02F8C821 */ addu $t9, $s7, $t8 /* 09ADA4 8009A1A4 24841400 */ addiu $a0, $a0, 0x1400 /* 09ADA8 8009A1A8 04410003 */ bgez $v0, .L8009A1B8 /* 09ADAC 8009A1AC 00024043 */ sra $t0, $v0, 1 /* 09ADB0 8009A1B0 24410001 */ addiu $at, $v0, 1 /* 09ADB4 8009A1B4 00014043 */ sra $t0, $at, 1 .L8009A1B8: /* 09ADB8 8009A1B8 00084BC0 */ sll $t1, $t0, 0xf /* 09ADBC 8009A1BC 03295021 */ addu $t2, $t9, $t1 /* 09ADC0 8009A1C0 04410004 */ bgez $v0, .L8009A1D4 /* 09ADC4 8009A1C4 304C0001 */ andi $t4, $v0, 1 /* 09ADC8 8009A1C8 11800002 */ beqz $t4, .L8009A1D4 /* 09ADCC 8009A1CC 00000000 */ nop /* 09ADD0 8009A1D0 258CFFFE */ addiu $t4, $t4, -2 .L8009A1D4: /* 09ADD4 8009A1D4 000C5B40 */ sll $t3, $t4, 0xd /* 09ADD8 8009A1D8 014B2821 */ addu $a1, $t2, $t3 /* 09ADDC 8009A1DC 0C010034 */ jal mio0decode /* 09ADE0 8009A1E0 24A54000 */ addiu $a1, $a1, 0x4000 /* 09ADE4 8009A1E4 AE200000 */ sw $zero, ($s1) /* 09ADE8 8009A1E8 16800007 */ bnez $s4, .L8009A208 /* 09ADEC 8009A1EC 26310008 */ addiu $s1, $s1, 8 /* 09ADF0 8009A1F0 02A02025 */ move $a0, $s5 /* 09ADF4 8009A1F4 02C02825 */ move $a1, $s6 /* 09ADF8 8009A1F8 0C0335D4 */ jal osRecvMesg /* 09ADFC 8009A1FC 24060001 */ li $a2, 1 /* 09AE00 8009A200 1000FF71 */ b .L80099FC8 /* 09AE04 8009A204 8E220008 */ lw $v0, 8($s1) .L8009A208: /* 09AE08 8009A208 8FBF004C */ lw $ra, 0x4c($sp) /* 09AE0C 8009A20C 8FB00028 */ lw $s0, 0x28($sp) /* 09AE10 8009A210 8FB1002C */ lw $s1, 0x2c($sp) /* 09AE14 8009A214 8FB20030 */ lw $s2, 0x30($sp) /* 09AE18 8009A218 8FB30034 */ lw $s3, 0x34($sp) /* 09AE1C 8009A21C 8FB40038 */ lw $s4, 0x38($sp) /* 09AE20 8009A220 8FB5003C */ lw $s5, 0x3c($sp) /* 09AE24 8009A224 8FB60040 */ lw $s6, 0x40($sp) /* 09AE28 8009A228 8FB70044 */ lw $s7, 0x44($sp) /* 09AE2C 8009A22C 8FBE0048 */ lw $fp, 0x48($sp) /* 09AE30 8009A230 03E00008 */ jr $ra /* 09AE34 8009A234 27BD0090 */ addiu $sp, $sp, 0x90