papermario/asm/nonmatchings/code_E307C0/func_802BC2BC_E30C0C.s
2021-01-21 00:45:03 +09:00

138 lines
7.1 KiB
ArmAsm
Generated

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802BC2BC_E30C0C
/* E30C0C 802BC2BC 3C058016 */ lui $a1, %hi(gCollisionStatus+0x2)
/* E30C10 802BC2C0 94A5A552 */ lhu $a1, %lo(gCollisionStatus+0x2)($a1)
/* E30C14 802BC2C4 27BDFFA8 */ addiu $sp, $sp, -0x58
/* E30C18 802BC2C8 AFB20038 */ sw $s2, 0x38($sp)
/* E30C1C 802BC2CC 0080902D */ daddu $s2, $a0, $zero
/* E30C20 802BC2D0 AFB3003C */ sw $s3, 0x3c($sp)
/* E30C24 802BC2D4 AFB50044 */ sw $s5, 0x44($sp)
/* E30C28 802BC2D8 3C158011 */ lui $s5, %hi(gPlayerStatus)
/* E30C2C 802BC2DC 26B5EFC8 */ addiu $s5, $s5, %lo(gPlayerStatus)
/* E30C30 802BC2E0 AFBF0048 */ sw $ra, 0x48($sp)
/* E30C34 802BC2E4 AFB40040 */ sw $s4, 0x40($sp)
/* E30C38 802BC2E8 AFB10034 */ sw $s1, 0x34($sp)
/* E30C3C 802BC2EC AFB00030 */ sw $s0, 0x30($sp)
/* E30C40 802BC2F0 F7B40050 */ sdc1 $f20, 0x50($sp)
/* E30C44 802BC2F4 8E540040 */ lw $s4, 0x40($s2)
/* E30C48 802BC2F8 82A400B4 */ lb $a0, 0xb4($s5)
/* E30C4C 802BC2FC 30A24000 */ andi $v0, $a1, 0x4000
/* E30C50 802BC300 1040002E */ beqz $v0, .L802BC3BC
/* E30C54 802BC304 0000982D */ daddu $s3, $zero, $zero
/* E30C58 802BC308 92430004 */ lbu $v1, 4($s2)
/* E30C5C 802BC30C 30A200FF */ andi $v0, $a1, 0xff
/* E30C60 802BC310 1443002A */ bne $v0, $v1, .L802BC3BC
/* E30C64 802BC314 24020012 */ addiu $v0, $zero, 0x12
/* E30C68 802BC318 14820028 */ bne $a0, $v0, .L802BC3BC
/* E30C6C 802BC31C 00000000 */ nop
/* E30C70 802BC320 C6A00028 */ lwc1 $f0, 0x28($s5)
/* E30C74 802BC324 3C0140A0 */ lui $at, 0x40a0
/* E30C78 802BC328 44811000 */ mtc1 $at, $f2
/* E30C7C 802BC32C 3C014120 */ lui $at, 0x4120
/* E30C80 802BC330 4481A000 */ mtc1 $at, $f20
/* E30C84 802BC334 E7A00020 */ swc1 $f0, 0x20($sp)
/* E30C88 802BC338 C6A0002C */ lwc1 $f0, 0x2c($s5)
/* E30C8C 802BC33C C6A40030 */ lwc1 $f4, 0x30($s5)
/* E30C90 802BC340 46020000 */ add.s $f0, $f0, $f2
/* E30C94 802BC344 E7B4002C */ swc1 $f20, 0x2c($sp)
/* E30C98 802BC348 E7A40024 */ swc1 $f4, 0x24($sp)
/* E30C9C 802BC34C 0C0394D2 */ jal func_800E5348
/* E30CA0 802BC350 E7A00028 */ swc1 $f0, 0x28($sp)
/* E30CA4 802BC354 27B10020 */ addiu $s1, $sp, 0x20
/* E30CA8 802BC358 0220202D */ daddu $a0, $s1, $zero
/* E30CAC 802BC35C 27B00024 */ addiu $s0, $sp, 0x24
/* E30CB0 802BC360 4406A000 */ mfc1 $a2, $f20
/* E30CB4 802BC364 44070000 */ mfc1 $a3, $f0
/* E30CB8 802BC368 0C00A7E7 */ jal add_vec2D_polar
/* E30CBC 802BC36C 0200282D */ daddu $a1, $s0, $zero
/* E30CC0 802BC370 3C040001 */ lui $a0, 1
/* E30CC4 802BC374 0220282D */ daddu $a1, $s1, $zero
/* E30CC8 802BC378 27A60028 */ addiu $a2, $sp, 0x28
/* E30CCC 802BC37C 0200382D */ daddu $a3, $s0, $zero
/* E30CD0 802BC380 27A2002C */ addiu $v0, $sp, 0x2c
/* E30CD4 802BC384 0C0372DF */ jal func_800DCB7C
/* E30CD8 802BC388 AFA20010 */ sw $v0, 0x10($sp)
/* E30CDC 802BC38C 10400019 */ beqz $v0, .L802BC3F4
/* E30CE0 802BC390 00000000 */ nop
/* E30CE4 802BC394 3C048011 */ lui $a0, %hi(D_8010C978)
/* E30CE8 802BC398 8C84C978 */ lw $a0, %lo(D_8010C978)($a0)
/* E30CEC 802BC39C 30824000 */ andi $v0, $a0, 0x4000
/* E30CF0 802BC3A0 10400014 */ beqz $v0, .L802BC3F4
/* E30CF4 802BC3A4 00000000 */ nop
/* E30CF8 802BC3A8 0C0441A9 */ jal get_entity_type
/* E30CFC 802BC3AC 00000000 */ nop
/* E30D00 802BC3B0 38420031 */ xori $v0, $v0, 0x31
/* E30D04 802BC3B4 080AF0FD */ j .L802BC3F4
/* E30D08 802BC3B8 2C530001 */ sltiu $s3, $v0, 1
.L802BC3BC:
/* E30D0C 802BC3BC 92420006 */ lbu $v0, 6($s2)
/* E30D10 802BC3C0 30420001 */ andi $v0, $v0, 1
/* E30D14 802BC3C4 10400007 */ beqz $v0, .L802BC3E4
/* E30D18 802BC3C8 2402000E */ addiu $v0, $zero, 0xe
/* E30D1C 802BC3CC 10820003 */ beq $a0, $v0, .L802BC3DC
/* E30D20 802BC3D0 24020010 */ addiu $v0, $zero, 0x10
/* E30D24 802BC3D4 14820003 */ bne $a0, $v0, .L802BC3E4
/* E30D28 802BC3D8 00000000 */ nop
.L802BC3DC:
/* E30D2C 802BC3DC 080AF0FD */ j .L802BC3F4
/* E30D30 802BC3E0 24130001 */ addiu $s3, $zero, 1
.L802BC3E4:
/* E30D34 802BC3E4 92420006 */ lbu $v0, 6($s2)
/* E30D38 802BC3E8 30420040 */ andi $v0, $v0, 0x40
/* E30D3C 802BC3EC 54400001 */ bnel $v0, $zero, .L802BC3F4
/* E30D40 802BC3F0 2413FFFF */ addiu $s3, $zero, -1
.L802BC3F4:
/* E30D44 802BC3F4 12600026 */ beqz $s3, .L802BC490
/* E30D48 802BC3F8 00000000 */ nop
/* E30D4C 802BC3FC 92820002 */ lbu $v0, 2($s4)
/* E30D50 802BC400 3C01BF80 */ lui $at, 0xbf80
/* E30D54 802BC404 44810000 */ mtc1 $at, $f0
/* E30D58 802BC408 304200FE */ andi $v0, $v0, 0xfe
/* E30D5C 802BC40C A2820002 */ sb $v0, 2($s4)
/* E30D60 802BC410 C642004C */ lwc1 $f2, 0x4c($s2)
/* E30D64 802BC414 E7A00014 */ swc1 $f0, 0x14($sp)
/* E30D68 802BC418 3C01420C */ lui $at, 0x420c
/* E30D6C 802BC41C 44810000 */ mtc1 $at, $f0
/* E30D70 802BC420 24020003 */ addiu $v0, $zero, 3
/* E30D74 802BC424 AFA00010 */ sw $zero, 0x10($sp)
/* E30D78 802BC428 AFA00018 */ sw $zero, 0x18($sp)
/* E30D7C 802BC42C AFA2001C */ sw $v0, 0x1c($sp)
/* E30D80 802BC430 46001080 */ add.s $f2, $f2, $f0
/* E30D84 802BC434 8E450048 */ lw $a1, 0x48($s2)
/* E30D88 802BC438 8E470050 */ lw $a3, 0x50($s2)
/* E30D8C 802BC43C 44061000 */ mfc1 $a2, $f2
/* E30D90 802BC440 0C01C064 */ jal func_80070190
/* E30D94 802BC444 0040202D */ daddu $a0, $v0, $zero
/* E30D98 802BC448 1A600004 */ blez $s3, .L802BC45C
/* E30D9C 802BC44C 00000000 */ nop
/* E30DA0 802BC450 92820002 */ lbu $v0, 2($s4)
/* E30DA4 802BC454 34420001 */ ori $v0, $v0, 1
/* E30DA8 802BC458 A2820002 */ sb $v0, 2($s4)
.L802BC45C:
/* E30DAC 802BC45C C640004C */ lwc1 $f0, 0x4c($s2)
/* E30DB0 802BC460 3C014000 */ lui $at, 0x4000
/* E30DB4 802BC464 44811000 */ mtc1 $at, $f2
/* E30DB8 802BC468 00000000 */ nop
/* E30DBC 802BC46C 46020001 */ sub.s $f0, $f0, $f2
/* E30DC0 802BC470 0240202D */ daddu $a0, $s2, $zero
/* E30DC4 802BC474 0C043F5A */ jal exec_entity_updatecmd
/* E30DC8 802BC478 E480004C */ swc1 $f0, 0x4c($a0)
/* E30DCC 802BC47C 24020004 */ addiu $v0, $zero, 4
/* E30DD0 802BC480 0C038045 */ jal disable_player_static_collisions
/* E30DD4 802BC484 A2820001 */ sb $v0, 1($s4)
/* E30DD8 802BC488 24020005 */ addiu $v0, $zero, 5
/* E30DDC 802BC48C A2A200C5 */ sb $v0, 0xc5($s5)
.L802BC490:
/* E30DE0 802BC490 8FBF0048 */ lw $ra, 0x48($sp)
/* E30DE4 802BC494 8FB50044 */ lw $s5, 0x44($sp)
/* E30DE8 802BC498 8FB40040 */ lw $s4, 0x40($sp)
/* E30DEC 802BC49C 8FB3003C */ lw $s3, 0x3c($sp)
/* E30DF0 802BC4A0 8FB20038 */ lw $s2, 0x38($sp)
/* E30DF4 802BC4A4 8FB10034 */ lw $s1, 0x34($sp)
/* E30DF8 802BC4A8 8FB00030 */ lw $s0, 0x30($sp)
/* E30DFC 802BC4AC D7B40050 */ ldc1 $f20, 0x50($sp)
/* E30E00 802BC4B0 03E00008 */ jr $ra
/* E30E04 802BC4B4 27BD0058 */ addiu $sp, $sp, 0x58