papermario/asm/nonmatchings/code_33CDF0/func_E0028248.s
2021-01-13 00:42:27 +09:00

180 lines
9.1 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E0028248
/* 33D038 E0028248 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 33D03C E002824C AFB3001C */ sw $s3, 0x1c($sp)
/* 33D040 E0028250 0080982D */ daddu $s3, $a0, $zero
/* 33D044 E0028254 AFBF0024 */ sw $ra, 0x24($sp)
/* 33D048 E0028258 AFB40020 */ sw $s4, 0x20($sp)
/* 33D04C E002825C AFB20018 */ sw $s2, 0x18($sp)
/* 33D050 E0028260 AFB10014 */ sw $s1, 0x14($sp)
/* 33D054 E0028264 AFB00010 */ sw $s0, 0x10($sp)
/* 33D058 E0028268 F7B60030 */ sdc1 $f22, 0x30($sp)
/* 33D05C E002826C F7B40028 */ sdc1 $f20, 0x28($sp)
/* 33D060 E0028270 8E64000C */ lw $a0, 0xc($s3)
/* 33D064 E0028274 8C820028 */ lw $v0, 0x28($a0)
/* 33D068 E0028278 8C85002C */ lw $a1, 0x2c($a0)
/* 33D06C E002827C 2442FFFF */ addiu $v0, $v0, -1
/* 33D070 E0028280 AC820028 */ sw $v0, 0x28($a0)
/* 33D074 E0028284 0040302D */ daddu $a2, $v0, $zero
/* 33D078 E0028288 24A20001 */ addiu $v0, $a1, 1
/* 33D07C E002828C 04C10005 */ bgez $a2, .LE00282A4
/* 33D080 E0028290 AC82002C */ sw $v0, 0x2c($a0)
/* 33D084 E0028294 0C080128 */ jal func_E02004A0
/* 33D088 E0028298 0260202D */ daddu $a0, $s3, $zero
/* 33D08C E002829C 0800A130 */ j .LE00284C0
/* 33D090 E00282A0 00000000 */ nop
.LE00282A4:
/* 33D094 E00282A4 8C940000 */ lw $s4, ($a0)
/* 33D098 E00282A8 2842000A */ slti $v0, $v0, 0xa
/* 33D09C E00282AC 10400010 */ beqz $v0, .LE00282F0
/* 33D0A0 E00282B0 240200FF */ addiu $v0, $zero, 0xff
/* 33D0A4 E00282B4 8C830024 */ lw $v1, 0x24($a0)
/* 33D0A8 E00282B8 3C01E003 */ lui $at, %hi(D_E00287E0)
/* 33D0AC E00282BC D42087E0 */ ldc1 $f0, %lo(D_E00287E0)($at)
/* 33D0B0 E00282C0 00431023 */ subu $v0, $v0, $v1
/* 33D0B4 E00282C4 44821000 */ mtc1 $v0, $f2
/* 33D0B8 E00282C8 00000000 */ nop
/* 33D0BC E00282CC 468010A1 */ cvt.d.w $f2, $f2
/* 33D0C0 E00282D0 46201082 */ mul.d $f2, $f2, $f0
/* 33D0C4 E00282D4 00000000 */ nop
/* 33D0C8 E00282D8 44830000 */ mtc1 $v1, $f0
/* 33D0CC E00282DC 00000000 */ nop
/* 33D0D0 E00282E0 46800021 */ cvt.d.w $f0, $f0
/* 33D0D4 E00282E4 46220000 */ add.d $f0, $f0, $f2
/* 33D0D8 E00282E8 4620020D */ trunc.w.d $f8, $f0
/* 33D0DC E00282EC E4880024 */ swc1 $f8, 0x24($a0)
.LE00282F0:
/* 33D0E0 E00282F0 28C2000A */ slti $v0, $a2, 0xa
/* 33D0E4 E00282F4 10400009 */ beqz $v0, .LE002831C
/* 33D0E8 E00282F8 00000000 */ nop
/* 33D0EC E00282FC 3C01E003 */ lui $at, %hi(D_E00287E8)
/* 33D0F0 E0028300 D42287E8 */ ldc1 $f2, %lo(D_E00287E8)($at)
/* 33D0F4 E0028304 C4800024 */ lwc1 $f0, 0x24($a0)
/* 33D0F8 E0028308 46800021 */ cvt.d.w $f0, $f0
/* 33D0FC E002830C 46220002 */ mul.d $f0, $f0, $f2
/* 33D100 E0028310 00000000 */ nop
/* 33D104 E0028314 4620020D */ trunc.w.d $f8, $f0
/* 33D108 E0028318 E4880024 */ swc1 $f8, 0x24($a0)
.LE002831C:
/* 33D10C E002831C 8E620008 */ lw $v0, 8($s3)
/* 33D110 E0028320 24110001 */ addiu $s1, $zero, 1
/* 33D114 E0028324 0222102A */ slt $v0, $s1, $v0
/* 33D118 E0028328 10400065 */ beqz $v0, .LE00284C0
/* 33D11C E002832C 24840030 */ addiu $a0, $a0, 0x30
/* 33D120 E0028330 24900008 */ addiu $s0, $a0, 8
/* 33D124 E0028334 24B20015 */ addiu $s2, $a1, 0x15
/* 33D128 E0028338 3C01BD4C */ lui $at, 0xbd4c
/* 33D12C E002833C 3421CCCD */ ori $at, $at, 0xcccd
/* 33D130 E0028340 4481B000 */ mtc1 $at, $f22
/* 33D134 E0028344 3C014120 */ lui $at, 0x4120
/* 33D138 E0028348 4481A000 */ mtc1 $at, $f20
.LE002834C:
/* 33D13C E002834C C60C0010 */ lwc1 $f12, 0x10($s0)
/* 33D140 E0028350 0C080140 */ jal func_E0200500
/* 33D144 E0028354 460C6300 */ add.s $f12, $f12, $f12
/* 33D148 E0028358 3C01E003 */ lui $at, %hi(D_E00287F0)
/* 33D14C E002835C D42287F0 */ ldc1 $f2, %lo(D_E00287F0)($at)
/* 33D150 E0028360 46000021 */ cvt.d.s $f0, $f0
/* 33D154 E0028364 46220002 */ mul.d $f0, $f0, $f2
/* 33D158 E0028368 00000000 */ nop
/* 33D15C E002836C C602000C */ lwc1 $f2, 0xc($s0)
/* 33D160 E0028370 46161080 */ add.s $f2, $f2, $f22
/* 33D164 E0028374 C6040008 */ lwc1 $f4, 8($s0)
/* 33D168 E0028378 46200020 */ cvt.s.d $f0, $f0
/* 33D16C E002837C 46002000 */ add.s $f0, $f4, $f0
/* 33D170 E0028380 E602000C */ swc1 $f2, 0xc($s0)
/* 33D174 E0028384 16800019 */ bnez $s4, .LE00283EC
/* 33D178 E0028388 E6000008 */ swc1 $f0, 8($s0)
/* 33D17C E002838C 3C01E003 */ lui $at, %hi(D_E00287F8)
/* 33D180 E0028390 D42287F8 */ ldc1 $f2, %lo(D_E00287F8)($at)
/* 33D184 E0028394 46000021 */ cvt.d.s $f0, $f0
/* 33D188 E0028398 46220002 */ mul.d $f0, $f0, $f2
/* 33D18C E002839C 00000000 */ nop
/* 33D190 E00283A0 C60C0010 */ lwc1 $f12, 0x10($s0)
/* 33D194 E00283A4 46200020 */ cvt.s.d $f0, $f0
/* 33D198 E00283A8 0C080140 */ jal func_E0200500
/* 33D19C E00283AC E6000008 */ swc1 $f0, 8($s0)
/* 33D1A0 E00283B0 3C01E003 */ lui $at, %hi(D_E0028800)
/* 33D1A4 E00283B4 D4228800 */ ldc1 $f2, %lo(D_E0028800)($at)
/* 33D1A8 E00283B8 46000021 */ cvt.d.s $f0, $f0
/* 33D1AC E00283BC 46220002 */ mul.d $f0, $f0, $f2
/* 33D1B0 E00283C0 00000000 */ nop
/* 33D1B4 E00283C4 3C01E003 */ lui $at, %hi(D_E0028808)
/* 33D1B8 E00283C8 D4248808 */ ldc1 $f4, %lo(D_E0028808)($at)
/* 33D1BC E00283CC C602000C */ lwc1 $f2, 0xc($s0)
/* 33D1C0 E00283D0 46240000 */ add.d $f0, $f0, $f4
/* 33D1C4 E00283D4 460010A1 */ cvt.d.s $f2, $f2
/* 33D1C8 E00283D8 46201082 */ mul.d $f2, $f2, $f0
/* 33D1CC E00283DC 00000000 */ nop
/* 33D1D0 E00283E0 462010A0 */ cvt.s.d $f2, $f2
/* 33D1D4 E00283E4 0800A106 */ j .LE0028418
/* 33D1D8 E00283E8 E602000C */ swc1 $f2, 0xc($s0)
.LE00283EC:
/* 33D1DC E00283EC C6000008 */ lwc1 $f0, 8($s0)
/* 33D1E0 E00283F0 3C01E003 */ lui $at, %hi(D_E0028810)
/* 33D1E4 E00283F4 D4228810 */ ldc1 $f2, %lo(D_E0028810)($at)
/* 33D1E8 E00283F8 46000021 */ cvt.d.s $f0, $f0
/* 33D1EC E00283FC 46220002 */ mul.d $f0, $f0, $f2
/* 33D1F0 E0028400 00000000 */ nop
/* 33D1F4 E0028404 C602000C */ lwc1 $f2, 0xc($s0)
/* 33D1F8 E0028408 46161080 */ add.s $f2, $f2, $f22
/* 33D1FC E002840C E602000C */ swc1 $f2, 0xc($s0)
/* 33D200 E0028410 46200020 */ cvt.s.d $f0, $f0
/* 33D204 E0028414 E6000008 */ swc1 $f0, 8($s0)
.LE0028418:
/* 33D208 E0028418 24040032 */ addiu $a0, $zero, 0x32
/* 33D20C E002841C 0C080011 */ jal func_E0200044
/* 33D210 E0028420 0240282D */ daddu $a1, $s2, $zero
/* 33D214 E0028424 2442FFE7 */ addiu $v0, $v0, -0x19
/* 33D218 E0028428 C60C0014 */ lwc1 $f12, 0x14($s0)
/* 33D21C E002842C 44820000 */ mtc1 $v0, $f0
/* 33D220 E0028430 00000000 */ nop
/* 33D224 E0028434 46800020 */ cvt.s.w $f0, $f0
/* 33D228 E0028438 46006300 */ add.s $f12, $f12, $f0
/* 33D22C E002843C 0C080140 */ jal func_E0200500
/* 33D230 E0028440 E60C0014 */ swc1 $f12, 0x14($s0)
/* 33D234 E0028444 46140002 */ mul.s $f0, $f0, $f20
/* 33D238 E0028448 00000000 */ nop
/* 33D23C E002844C C6020014 */ lwc1 $f2, 0x14($s0)
/* 33D240 E0028450 3C013F00 */ lui $at, 0x3f00
/* 33D244 E0028454 44816000 */ mtc1 $at, $f12
/* 33D248 E0028458 00000000 */ nop
/* 33D24C E002845C 460C1302 */ mul.s $f12, $f2, $f12
/* 33D250 E0028460 00000000 */ nop
/* 33D254 E0028464 C6020010 */ lwc1 $f2, 0x10($s0)
/* 33D258 E0028468 46001080 */ add.s $f2, $f2, $f0
/* 33D25C E002846C 0C080144 */ jal func_E0200510
/* 33D260 E0028470 E6020010 */ swc1 $f2, 0x10($s0)
/* 33D264 E0028474 46140002 */ mul.s $f0, $f0, $f20
/* 33D268 E0028478 00000000 */ nop
/* 33D26C E002847C C606FFFC */ lwc1 $f6, -4($s0)
/* 33D270 E0028480 C6020008 */ lwc1 $f2, 8($s0)
/* 33D274 E0028484 C6040000 */ lwc1 $f4, ($s0)
/* 33D278 E0028488 46023180 */ add.s $f6, $f6, $f2
/* 33D27C E002848C C602000C */ lwc1 $f2, 0xc($s0)
/* 33D280 E0028490 26520014 */ addiu $s2, $s2, 0x14
/* 33D284 E0028494 46022100 */ add.s $f4, $f4, $f2
/* 33D288 E0028498 C6020018 */ lwc1 $f2, 0x18($s0)
/* 33D28C E002849C 26310001 */ addiu $s1, $s1, 1
/* 33D290 E00284A0 46001080 */ add.s $f2, $f2, $f0
/* 33D294 E00284A4 E606FFFC */ swc1 $f6, -4($s0)
/* 33D298 E00284A8 E6040000 */ swc1 $f4, ($s0)
/* 33D29C E00284AC E6020018 */ swc1 $f2, 0x18($s0)
/* 33D2A0 E00284B0 8E620008 */ lw $v0, 8($s3)
/* 33D2A4 E00284B4 0222102A */ slt $v0, $s1, $v0
/* 33D2A8 E00284B8 1440FFA4 */ bnez $v0, .LE002834C
/* 33D2AC E00284BC 26100030 */ addiu $s0, $s0, 0x30
.LE00284C0:
/* 33D2B0 E00284C0 8FBF0024 */ lw $ra, 0x24($sp)
/* 33D2B4 E00284C4 8FB40020 */ lw $s4, 0x20($sp)
/* 33D2B8 E00284C8 8FB3001C */ lw $s3, 0x1c($sp)
/* 33D2BC E00284CC 8FB20018 */ lw $s2, 0x18($sp)
/* 33D2C0 E00284D0 8FB10014 */ lw $s1, 0x14($sp)
/* 33D2C4 E00284D4 8FB00010 */ lw $s0, 0x10($sp)
/* 33D2C8 E00284D8 D7B60030 */ ldc1 $f22, 0x30($sp)
/* 33D2CC E00284DC D7B40028 */ ldc1 $f20, 0x28($sp)
/* 33D2D0 E00284E0 03E00008 */ jr $ra
/* 33D2D4 E00284E4 27BD0038 */ addiu $sp, $sp, 0x38