mirror of https://github.com/zeldaret/oot.git
264 lines
14 KiB
ArmAsm
264 lines
14 KiB
ArmAsm
glabel func_800B91B0
|
|
/* B30350 800B91B0 27BDFFD0 */ addiu $sp, $sp, -0x30
|
|
/* B30354 800B91B4 AFB00020 */ sw $s0, 0x20($sp)
|
|
/* B30358 800B91B8 3C108016 */ lui $s0, %hi(D_8016110C) # $s0, 0x8016
|
|
/* B3035C 800B91BC 2610110C */ addiu $s0, %lo(D_8016110C) # addiu $s0, $s0, 0x110c
|
|
/* B30360 800B91C0 86030000 */ lh $v1, ($s0)
|
|
/* B30364 800B91C4 AFB20028 */ sw $s2, 0x28($sp)
|
|
/* B30368 800B91C8 3C128016 */ lui $s2, %hi(D_80161150)
|
|
/* B3036C 800B91CC 26521150 */ addiu $s2, %lo(D_80161150) # addiu $s2, $s2, 0x1150
|
|
/* B30370 800B91D0 00037100 */ sll $t6, $v1, 4
|
|
/* B30374 800B91D4 024E1021 */ addu $v0, $s2, $t6
|
|
/* B30378 800B91D8 904F0000 */ lbu $t7, ($v0)
|
|
/* B3037C 800B91DC 2406003F */ li $a2, 63
|
|
/* B30380 800B91E0 AFBF002C */ sw $ra, 0x2c($sp)
|
|
/* B30384 800B91E4 AFB10024 */ sw $s1, 0x24($sp)
|
|
/* B30388 800B91E8 AFA40030 */ sw $a0, 0x30($sp)
|
|
/* B3038C 800B91EC 14CF0016 */ bne $a2, $t7, .L800B9248
|
|
/* B30390 800B91F0 AFA50034 */ sw $a1, 0x34($sp)
|
|
/* B30394 800B91F4 24780001 */ addiu $t8, $v1, 1
|
|
.L800B91F8:
|
|
/* B30398 800B91F8 A6180000 */ sh $t8, ($s0)
|
|
/* B3039C 800B91FC 86030000 */ lh $v1, ($s0)
|
|
/* B303A0 800B9200 3C118016 */ lui $s1, %hi(D_80161110)
|
|
/* B303A4 800B9204 26311110 */ addiu $s1, %lo(D_80161110) # addiu $s1, $s1, 0x1110
|
|
/* B303A8 800B9208 2861000F */ slti $at, $v1, 0xf
|
|
/* B303AC 800B920C 14200009 */ bnez $at, .L800B9234
|
|
/* B303B0 800B9210 00001025 */ move $v0, $zero
|
|
/* B303B4 800B9214 44802000 */ mtc1 $zero, $f4
|
|
/* B303B8 800B9218 44803000 */ mtc1 $zero, $f6
|
|
/* B303BC 800B921C A6200008 */ sh $zero, 8($s1)
|
|
/* B303C0 800B9220 A620000A */ sh $zero, 0xa($s1)
|
|
/* B303C4 800B9224 A6000000 */ sh $zero, ($s0)
|
|
/* B303C8 800B9228 E6240000 */ swc1 $f4, ($s1)
|
|
/* B303CC 800B922C 100000D1 */ b .L800B9574
|
|
/* B303D0 800B9230 E6260004 */ swc1 $f6, 4($s1)
|
|
.L800B9234:
|
|
/* B303D4 800B9234 0003C900 */ sll $t9, $v1, 4
|
|
/* B303D8 800B9238 02591021 */ addu $v0, $s2, $t9
|
|
/* B303DC 800B923C 90490000 */ lbu $t1, ($v0)
|
|
/* B303E0 800B9240 50C9FFED */ beql $a2, $t1, .L800B91F8
|
|
/* B303E4 800B9244 24780001 */ addiu $t8, $v1, 1
|
|
.L800B9248:
|
|
/* B303E8 800B9248 3C118016 */ lui $s1, %hi(D_80161110) # $s1, 0x8016
|
|
/* B303EC 800B924C 3C0A8016 */ lui $t2, %hi(D_80161118) # $t2, 0x8016
|
|
/* B303F0 800B9250 26311110 */ addiu $s1, %lo(D_80161110) # addiu $s1, $s1, 0x1110
|
|
/* B303F4 800B9254 254A1118 */ addiu $t2, %lo(D_80161118) # addiu $t2, $t2, 0x1118
|
|
/* B303F8 800B9258 3C048016 */ lui $a0, %hi(D_80161120) # $a0, 0x8016
|
|
/* B303FC 800B925C 3C058016 */ lui $a1, %hi(D_80161138) # $a1, 0x8016
|
|
/* B30400 800B9260 3C068016 */ lui $a2, %hi(D_8016113C) # $a2, 0x8016
|
|
/* B30404 800B9264 24C6113C */ addiu $a2, %lo(D_8016113C) # addiu $a2, $a2, 0x113c
|
|
/* B30408 800B9268 24A51138 */ addiu $a1, %lo(D_80161138) # addiu $a1, $a1, 0x1138
|
|
/* B3040C 800B926C 24841120 */ addiu $a0, %lo(D_80161120) # addiu $a0, $a0, 0x1120
|
|
/* B30410 800B9270 AFAA0010 */ sw $t2, 0x10($sp)
|
|
/* B30414 800B9274 AFB10014 */ sw $s1, 0x14($sp)
|
|
/* B30418 800B9278 0C02ECAD */ jal func_800BB2B4
|
|
/* B3041C 800B927C 8C470004 */ lw $a3, 4($v0)
|
|
/* B30420 800B9280 144000AC */ bnez $v0, .L800B9534
|
|
/* B30424 800B9284 3C048016 */ lui $a0, %hi(D_8016112C) # $a0, 0x8016
|
|
/* B30428 800B9288 860B0000 */ lh $t3, ($s0)
|
|
/* B3042C 800B928C 3C0E8016 */ lui $t6, %hi(D_80161118) # $t6, 0x8016
|
|
/* B30430 800B9290 25CE1118 */ addiu $t6, %lo(D_80161118) # addiu $t6, $t6, 0x1118
|
|
/* B30434 800B9294 000B6100 */ sll $t4, $t3, 4
|
|
/* B30438 800B9298 024C6821 */ addu $t5, $s2, $t4
|
|
/* B3043C 800B929C 8DA70008 */ lw $a3, 8($t5)
|
|
/* B30440 800B92A0 3C058016 */ lui $a1, %hi(D_80161138) # $a1, 0x8016
|
|
/* B30444 800B92A4 3C068016 */ lui $a2, %hi(D_8016113C) # $a2, 0x8016
|
|
/* B30448 800B92A8 24C6113C */ addiu $a2, %lo(D_8016113C) # addiu $a2, $a2, 0x113c
|
|
/* B3044C 800B92AC 24A51138 */ addiu $a1, %lo(D_80161138) # addiu $a1, $a1, 0x1138
|
|
/* B30450 800B92B0 AFB10014 */ sw $s1, 0x14($sp)
|
|
/* B30454 800B92B4 AFAE0010 */ sw $t6, 0x10($sp)
|
|
/* B30458 800B92B8 0C02ECAD */ jal func_800BB2B4
|
|
/* B3045C 800B92BC 2484112C */ addiu $a0, %lo(D_8016112C) # addiu $a0, $a0, 0x112c
|
|
/* B30460 800B92C0 1440009C */ bnez $v0, .L800B9534
|
|
/* B30464 800B92C4 2407000A */ li $a3, 10
|
|
/* B30468 800B92C8 86220008 */ lh $v0, 8($s1)
|
|
/* B3046C 800B92CC 860A0000 */ lh $t2, ($s0)
|
|
/* B30470 800B92D0 C6280004 */ lwc1 $f8, 4($s1)
|
|
/* B30474 800B92D4 24420001 */ addiu $v0, $v0, 1
|
|
/* B30478 800B92D8 0047001A */ div $zero, $v0, $a3
|
|
/* B3047C 800B92DC 000A5900 */ sll $t3, $t2, 4
|
|
/* B30480 800B92E0 024B6021 */ addu $t4, $s2, $t3
|
|
/* B30484 800B92E4 8583000E */ lh $v1, 0xe($t4)
|
|
/* B30488 800B92E8 00007812 */ mflo $t7
|
|
/* B3048C 800B92EC 0000C810 */ mfhi $t9
|
|
/* B30490 800B92F0 2463FFFB */ addiu $v1, $v1, -5
|
|
/* B30494 800B92F4 4600428D */ trunc.w.s $f10, $f8
|
|
/* B30498 800B92F8 0067001A */ div $zero, $v1, $a3
|
|
/* B3049C 800B92FC 44045000 */ mfc1 $a0, $f10
|
|
/* B304A0 800B9300 3C088013 */ lui $t0, %hi(D_8012D13C) # $t0, 0x8013
|
|
/* B304A4 800B9304 25F80030 */ addiu $t8, $t7, 0x30
|
|
/* B304A8 800B9308 2508D13C */ addiu $t0, %lo(D_8012D13C) # addiu $t0, $t0, -0x2ec4
|
|
/* B304AC 800B930C 14E00002 */ bnez $a3, .L800B9318
|
|
/* B304B0 800B9310 00000000 */ nop
|
|
/* B304B4 800B9314 0007000D */ break 7
|
|
.L800B9318:
|
|
/* B304B8 800B9318 2401FFFF */ li $at, -1
|
|
/* B304BC 800B931C 14E10004 */ bne $a3, $at, .L800B9330
|
|
/* B304C0 800B9320 3C018000 */ lui $at, 0x8000
|
|
/* B304C4 800B9324 14410002 */ bne $v0, $at, .L800B9330
|
|
/* B304C8 800B9328 00000000 */ nop
|
|
/* B304CC 800B932C 0006000D */ break 6
|
|
.L800B9330:
|
|
/* B304D0 800B9330 A1180007 */ sb $t8, 7($t0)
|
|
/* B304D4 800B9334 00006812 */ mflo $t5
|
|
/* B304D8 800B9338 00007810 */ mfhi $t7
|
|
/* B304DC 800B933C 27290030 */ addiu $t1, $t9, 0x30
|
|
/* B304E0 800B9340 25AE0030 */ addiu $t6, $t5, 0x30
|
|
/* B304E4 800B9344 25F80030 */ addiu $t8, $t7, 0x30
|
|
/* B304E8 800B9348 3C058013 */ lui $a1, %hi(D_8012D11E) # $a1, 0x8013
|
|
/* B304EC 800B934C 00042400 */ sll $a0, $a0, 0x10
|
|
/* B304F0 800B9350 A1090008 */ sb $t1, 8($t0)
|
|
/* B304F4 800B9354 14E00002 */ bnez $a3, .L800B9360
|
|
/* B304F8 800B9358 00000000 */ nop
|
|
/* B304FC 800B935C 0007000D */ break 7
|
|
.L800B9360:
|
|
/* B30500 800B9360 2401FFFF */ li $at, -1
|
|
/* B30504 800B9364 14E10004 */ bne $a3, $at, .L800B9378
|
|
/* B30508 800B9368 3C018000 */ lui $at, 0x8000
|
|
/* B3050C 800B936C 14610002 */ bne $v1, $at, .L800B9378
|
|
/* B30510 800B9370 00000000 */ nop
|
|
/* B30514 800B9374 0006000D */ break 6
|
|
.L800B9378:
|
|
/* B30518 800B9378 A10E000A */ sb $t6, 0xa($t0)
|
|
/* B3051C 800B937C A118000B */ sb $t8, 0xb($t0)
|
|
/* B30520 800B9380 00042403 */ sra $a0, $a0, 0x10
|
|
/* B30524 800B9384 24A5D11E */ addiu $a1, %lo(D_8012D11E) # addiu $a1, $a1, -0x2ee2
|
|
/* B30528 800B9388 0C02CF7E */ jal func_800B3DF8
|
|
/* B3052C 800B938C 24060004 */ li $a2, 4
|
|
/* B30530 800B9390 3C078013 */ lui $a3, %hi(D_8012D114) # $a3, 0x8013
|
|
/* B30534 800B9394 24E7D114 */ addiu $a3, %lo(D_8012D114) # addiu $a3, $a3, -0x2eec
|
|
/* B30538 800B9398 2404000F */ li $a0, 15
|
|
/* B3053C 800B939C 24050016 */ li $a1, 22
|
|
/* B30540 800B93A0 0C018DDB */ jal func_8006376C
|
|
/* B30544 800B93A4 24060003 */ li $a2, 3
|
|
/* B30548 800B93A8 3C058013 */ lui $a1, %hi(D_8012D132) # $a1, 0x8013
|
|
/* B3054C 800B93AC 24A5D132 */ addiu $a1, %lo(D_8012D132) # addiu $a1, $a1, -0x2ece
|
|
/* B30550 800B93B0 8624000C */ lh $a0, 0xc($s1)
|
|
/* B30554 800B93B4 0C02CF7E */ jal func_800B3DF8
|
|
/* B30558 800B93B8 24060004 */ li $a2, 4
|
|
/* B3055C 800B93BC 3C078013 */ lui $a3, %hi(D_8012D128) # $a3, 0x8013
|
|
/* B30560 800B93C0 24E7D128 */ addiu $a3, %lo(D_8012D128) # addiu $a3, $a3, -0x2ed8
|
|
/* B30564 800B93C4 2404000F */ li $a0, 15
|
|
/* B30568 800B93C8 24050017 */ li $a1, 23
|
|
/* B3056C 800B93CC 0C018DDB */ jal func_8006376C
|
|
/* B30570 800B93D0 24060003 */ li $a2, 3
|
|
/* B30574 800B93D4 3C078013 */ lui $a3, %hi(D_8012D13C)
|
|
/* B30578 800B93D8 24E7D13C */ addiu $a3, %lo(D_8012D13C) # addiu $a3, $a3, -0x2ec4
|
|
/* B3057C 800B93DC 2404000F */ li $a0, 15
|
|
/* B30580 800B93E0 24050018 */ li $a1, 24
|
|
/* B30584 800B93E4 0C018DDB */ jal func_8006376C
|
|
/* B30588 800B93E8 24060003 */ li $a2, 3
|
|
/* B3058C 800B93EC 3C078013 */ lui $a3, %hi(D_8012CEF0)
|
|
/* B30590 800B93F0 8CE7CEF0 */ lw $a3, %lo(D_8012CEF0)($a3)
|
|
/* B30594 800B93F4 24040010 */ li $a0, 16
|
|
/* B30598 800B93F8 2405001A */ li $a1, 26
|
|
/* B3059C 800B93FC 0C018DDB */ jal func_8006376C
|
|
/* B305A0 800B9400 24060001 */ li $a2, 1
|
|
/* B305A4 800B9404 86030000 */ lh $v1, ($s0)
|
|
/* B305A8 800B9408 3C013F80 */ li $at, 0x3F800000 # 0.000000
|
|
/* B305AC 800B940C 44819000 */ mtc1 $at, $f18
|
|
/* B305B0 800B9410 C6300004 */ lwc1 $f16, 4($s1)
|
|
/* B305B4 800B9414 00035900 */ sll $t3, $v1, 4
|
|
/* B305B8 800B9418 8629000C */ lh $t1, 0xc($s1)
|
|
/* B305BC 800B941C 024B1021 */ addu $v0, $s2, $t3
|
|
/* B305C0 800B9420 46128100 */ add.s $f4, $f16, $f18
|
|
/* B305C4 800B9424 8444000C */ lh $a0, 0xc($v0)
|
|
/* B305C8 800B9428 252A0001 */ addiu $t2, $t1, 1
|
|
/* B305CC 800B942C A62A000C */ sh $t2, 0xc($s1)
|
|
/* B305D0 800B9430 18800012 */ blez $a0, .L800B947C
|
|
/* B305D4 800B9434 E6240004 */ swc1 $f4, 4($s1)
|
|
/* B305D8 800B9438 44843000 */ mtc1 $a0, $f6
|
|
/* B305DC 800B943C C62A0004 */ lwc1 $f10, 4($s1)
|
|
/* B305E0 800B9440 246C0001 */ addiu $t4, $v1, 1
|
|
/* B305E4 800B9444 46803220 */ cvt.s.w $f8, $f6
|
|
/* B305E8 800B9448 460A403C */ c.lt.s $f8, $f10
|
|
/* B305EC 800B944C 00000000 */ nop
|
|
/* B305F0 800B9450 4502000B */ bc1fl .L800B9480
|
|
/* B305F4 800B9454 844D0002 */ lh $t5, 2($v0)
|
|
/* B305F8 800B9458 A60C0000 */ sh $t4, ($s0)
|
|
/* B305FC 800B945C 44808000 */ mtc1 $zero, $f16
|
|
/* B30600 800B9460 44809000 */ mtc1 $zero, $f18
|
|
/* B30604 800B9464 86020000 */ lh $v0, ($s0)
|
|
/* B30608 800B9468 A6200008 */ sh $zero, 8($s1)
|
|
/* B3060C 800B946C E6300000 */ swc1 $f16, ($s1)
|
|
/* B30610 800B9470 E6320004 */ swc1 $f18, 4($s1)
|
|
/* B30614 800B9474 1000003F */ b .L800B9574
|
|
/* B30618 800B9478 34428000 */ ori $v0, $v0, 0x8000
|
|
.L800B947C:
|
|
/* B3061C 800B947C 844D0002 */ lh $t5, 2($v0)
|
|
.L800B9480:
|
|
/* B30620 800B9480 24010001 */ li $at, 1
|
|
/* B30624 800B9484 51A1000E */ beql $t5, $at, .L800B94C0
|
|
/* B30628 800B9488 8FB00030 */ lw $s0, 0x30($sp)
|
|
/* B3062C 800B948C 8FA50034 */ lw $a1, 0x34($sp)
|
|
/* B30630 800B9490 3C048016 */ lui $a0, %hi(D_80161120) # $a0, 0x8016
|
|
/* B30634 800B9494 24841120 */ addiu $a0, %lo(D_80161120) # addiu $a0, $a0, 0x1120
|
|
/* B30638 800B9498 0C02CFCE */ jal func_800B3F38
|
|
/* B3063C 800B949C 24A50010 */ addiu $a1, $a1, 0x10
|
|
/* B30640 800B94A0 8FA50034 */ lw $a1, 0x34($sp)
|
|
/* B30644 800B94A4 3C048016 */ lui $a0, %hi(D_8016112C) # $a0, 0x8016
|
|
/* B30648 800B94A8 2484112C */ addiu $a0, %lo(D_8016112C) # addiu $a0, $a0, 0x112c
|
|
/* B3064C 800B94AC 0C02CFCE */ jal func_800B3F38
|
|
/* B30650 800B94B0 24A50004 */ addiu $a1, $a1, 4
|
|
/* B30654 800B94B4 10000010 */ b .L800B94F8
|
|
/* B30658 800B94B8 8FA20034 */ lw $v0, 0x34($sp)
|
|
/* B3065C 800B94BC 8FB00030 */ lw $s0, 0x30($sp)
|
|
.L800B94C0:
|
|
/* B30660 800B94C0 8FA60034 */ lw $a2, 0x34($sp)
|
|
/* B30664 800B94C4 3C058016 */ lui $a1, %hi(D_8016112C) # $a1, 0x8016
|
|
/* B30668 800B94C8 26100094 */ addiu $s0, $s0, 0x94
|
|
/* B3066C 800B94CC 02002025 */ move $a0, $s0
|
|
/* B30670 800B94D0 24A5112C */ addiu $a1, %lo(D_8016112C) # addiu $a1, $a1, 0x112c
|
|
/* B30674 800B94D4 0C02CFFD */ jal func_800B3FF4
|
|
/* B30678 800B94D8 24C60004 */ addiu $a2, $a2, 4
|
|
/* B3067C 800B94DC 8FA60034 */ lw $a2, 0x34($sp)
|
|
/* B30680 800B94E0 3C058016 */ lui $a1, %hi(D_80161120)
|
|
/* B30684 800B94E4 24A51120 */ addiu $a1, %lo(D_80161120) # addiu $a1, $a1, 0x1120
|
|
/* B30688 800B94E8 02002025 */ move $a0, $s0
|
|
/* B3068C 800B94EC 0C02CFFD */ jal func_800B3FF4
|
|
/* B30690 800B94F0 24C60010 */ addiu $a2, $a2, 0x10
|
|
/* B30694 800B94F4 8FA20034 */ lw $v0, 0x34($sp)
|
|
.L800B94F8:
|
|
/* B30698 800B94F8 C624002C */ lwc1 $f4, 0x2c($s1)
|
|
/* B3069C 800B94FC 3C013FB4 */ li $at, 0x3FB40000 # 0.000000
|
|
/* B306A0 800B9500 44818000 */ mtc1 $at, $f16
|
|
/* B306A4 800B9504 E4440048 */ swc1 $f4, 0x48($v0)
|
|
/* B306A8 800B9508 C6260028 */ lwc1 $f6, 0x28($s1)
|
|
/* B306AC 800B950C 3C038016 */ lui $v1, %hi(D_8016110C)
|
|
/* B306B0 800B9510 4600320D */ trunc.w.s $f8, $f6
|
|
/* B306B4 800B9514 440F4000 */ mfc1 $t7, $f8
|
|
/* B306B8 800B9518 00000000 */ nop
|
|
/* B306BC 800B951C A44F004C */ sh $t7, 0x4c($v0)
|
|
/* B306C0 800B9520 C62A0028 */ lwc1 $f10, 0x28($s1)
|
|
/* B306C4 800B9524 46105482 */ mul.s $f18, $f10, $f16
|
|
/* B306C8 800B9528 E4520050 */ swc1 $f18, 0x50($v0)
|
|
/* B306CC 800B952C 10000010 */ b .L800B9570
|
|
/* B306D0 800B9530 8463110C */ lh $v1, %lo(D_8016110C)($v1)
|
|
.L800B9534:
|
|
/* B306D4 800B9534 86180000 */ lh $t8, ($s0)
|
|
/* B306D8 800B9538 44802000 */ mtc1 $zero, $f4
|
|
/* B306DC 800B953C 44803000 */ mtc1 $zero, $f6
|
|
/* B306E0 800B9540 27190001 */ addiu $t9, $t8, 1
|
|
/* B306E4 800B9544 A6190000 */ sh $t9, ($s0)
|
|
/* B306E8 800B9548 86030000 */ lh $v1, ($s0)
|
|
/* B306EC 800B954C 2401000F */ li $at, 15
|
|
/* B306F0 800B9550 A6200008 */ sh $zero, 8($s1)
|
|
/* B306F4 800B9554 E6240000 */ swc1 $f4, ($s1)
|
|
/* B306F8 800B9558 14610005 */ bne $v1, $at, .L800B9570
|
|
/* B306FC 800B955C E6260004 */ swc1 $f6, 4($s1)
|
|
/* B30700 800B9560 A6000000 */ sh $zero, ($s0)
|
|
/* B30704 800B9564 A620000A */ sh $zero, 0xa($s1)
|
|
/* B30708 800B9568 10000002 */ b .L800B9574
|
|
/* B3070C 800B956C 2402FFFF */ li $v0, -1
|
|
.L800B9570:
|
|
/* B30710 800B9570 34628000 */ ori $v0, $v1, 0x8000
|
|
.L800B9574:
|
|
/* B30714 800B9574 8FBF002C */ lw $ra, 0x2c($sp)
|
|
/* B30718 800B9578 8FB00020 */ lw $s0, 0x20($sp)
|
|
/* B3071C 800B957C 8FB10024 */ lw $s1, 0x24($sp)
|
|
/* B30720 800B9580 8FB20028 */ lw $s2, 0x28($sp)
|
|
/* B30724 800B9584 03E00008 */ jr $ra
|
|
/* B30728 800B9588 27BD0030 */ addiu $sp, $sp, 0x30
|
|
|