### RAW ASSEMBLY INSTRUCTIONS:

glabel entity_WoodenCrate_update_fragments
/* 109820 802E7FA0 27BDFF78 */  addiu     $sp, $sp, -0x88
/* 109824 802E7FA4 F7B80068 */  sdc1      $f24, 0x68($sp)
/* 109828 802E7FA8 4480C000 */  mtc1      $zero, $f24
/* 10982C 802E7FAC F7BC0078 */  sdc1      $f28, 0x78($sp)
/* 109830 802E7FB0 3C014100 */  lui       $at, (0x41000000 >> 16)
/* 109834 802E7FB4 4481E000 */  mtc1      $at, $f28
/* 109838 802E7FB8 AFBE0050 */  sw        $fp, 0x50($sp)
/* 10983C 802E7FBC 0080F02D */  daddu     $fp, $a0, $zero
/* 109840 802E7FC0 AFB3003C */  sw        $s3, 0x3C($sp)
/* 109844 802E7FC4 0000982D */  daddu     $s3, $zero, $zero
/* 109848 802E7FC8 AFB60048 */  sw        $s6, 0x48($sp)
/* 10984C 802E7FCC 27B60020 */  addiu     $s6, $sp, 0x20
/* 109850 802E7FD0 AFB50044 */  sw        $s5, 0x44($sp)
/* 109854 802E7FD4 27B50024 */  addiu     $s5, $sp, 0x24
/* 109858 802E7FD8 AFB40040 */  sw        $s4, 0x40($sp)
/* 10985C 802E7FDC 27B40028 */  addiu     $s4, $sp, 0x28
/* 109860 802E7FE0 AFB7004C */  sw        $s7, 0x4C($sp)
/* 109864 802E7FE4 3C178000 */  lui       $s7, (0x80000000 >> 16)
/* 109868 802E7FE8 AFBF0054 */  sw        $ra, 0x54($sp)
/* 10986C 802E7FEC AFB20038 */  sw        $s2, 0x38($sp)
/* 109870 802E7FF0 AFB10034 */  sw        $s1, 0x34($sp)
/* 109874 802E7FF4 AFB00030 */  sw        $s0, 0x30($sp)
/* 109878 802E7FF8 F7BE0080 */  sdc1      $f30, 0x80($sp)
/* 10987C 802E7FFC F7BA0070 */  sdc1      $f26, 0x70($sp)
/* 109880 802E8000 F7B60060 */  sdc1      $f22, 0x60($sp)
/* 109884 802E8004 F7B40058 */  sdc1      $f20, 0x58($sp)
/* 109888 802E8008 8FD20040 */  lw        $s2, 0x40($fp)
/* 10988C 802E800C 4600C786 */  mov.s     $f30, $f24
/* 109890 802E8010 4600C686 */  mov.s     $f26, $f24
/* 109894 802E8014 0240882D */  daddu     $s1, $s2, $zero
/* 109898 802E8018 0240802D */  daddu     $s0, $s2, $zero
.L802E801C:
/* 10989C 802E801C 82230010 */  lb        $v1, 0x10($s1)
/* 1098A0 802E8020 24020001 */  addiu     $v0, $zero, 0x1
/* 1098A4 802E8024 10620028 */  beq       $v1, $v0, .L802E80C8
/* 1098A8 802E8028 28620002 */   slti     $v0, $v1, 0x2
/* 1098AC 802E802C 10400005 */  beqz      $v0, .L802E8044
/* 1098B0 802E8030 24020002 */   addiu    $v0, $zero, 0x2
/* 1098B4 802E8034 10600009 */  beqz      $v1, .L802E805C
/* 1098B8 802E8038 00000000 */   nop
/* 1098BC 802E803C 080BA05A */  j         .L802E8168
/* 1098C0 802E8040 00000000 */   nop
.L802E8044:
/* 1098C4 802E8044 10620029 */  beq       $v1, $v0, .L802E80EC
/* 1098C8 802E8048 24020003 */   addiu    $v0, $zero, 0x3
/* 1098CC 802E804C 50620046 */  beql      $v1, $v0, .L802E8168
/* 1098D0 802E8050 26730001 */   addiu    $s3, $s3, 0x1
/* 1098D4 802E8054 080BA05A */  j         .L802E8168
/* 1098D8 802E8058 00000000 */   nop
.L802E805C:
/* 1098DC 802E805C 3C014000 */  lui       $at, (0x40000000 >> 16)
/* 1098E0 802E8060 4481F000 */  mtc1      $at, $f30
/* 1098E4 802E8064 922200A0 */  lbu       $v0, 0xA0($s1)
/* 1098E8 802E8068 C61800C4 */  lwc1      $f24, 0xC4($s0)
/* 1098EC 802E806C 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 1098F0 802E8070 44810000 */  mtc1      $at, $f0
/* 1098F4 802E8074 44801000 */  mtc1      $zero, $f2
/* 1098F8 802E8078 44822000 */  mtc1      $v0, $f4
/* 1098FC 802E807C 00000000 */  nop
/* 109900 802E8080 46802120 */  cvt.s.w   $f4, $f4
/* 109904 802E8084 4618103E */  c.le.s    $f2, $f24
/* 109908 802E8088 00000000 */  nop
/* 10990C 802E808C 45000006 */  bc1f      .L802E80A8
/* 109910 802E8090 46002683 */   div.s    $f26, $f4, $f0
/* 109914 802E8094 3C01802F */  lui       $at, %hi(D_802EB350)
/* 109918 802E8098 D422B350 */  ldc1      $f2, %lo(D_802EB350)($at)
/* 10991C 802E809C 4600C021 */  cvt.d.s   $f0, $f24
/* 109920 802E80A0 080BA02F */  j         .L802E80BC
/* 109924 802E80A4 46220001 */   sub.d    $f0, $f0, $f2
.L802E80A8:
/* 109928 802E80A8 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 10992C 802E80AC 44811800 */  mtc1      $at, $f3
/* 109930 802E80B0 44801000 */  mtc1      $zero, $f2
/* 109934 802E80B4 4600C021 */  cvt.d.s   $f0, $f24
/* 109938 802E80B8 46220000 */  add.d     $f0, $f0, $f2
.L802E80BC:
/* 10993C 802E80BC 46200020 */  cvt.s.d   $f0, $f0
/* 109940 802E80C0 080BA05A */  j         .L802E8168
/* 109944 802E80C4 E60000C4 */   swc1     $f0, 0xC4($s0)
.L802E80C8:
/* 109948 802E80C8 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 10994C 802E80CC 4481D000 */  mtc1      $at, $f26
/* 109950 802E80D0 C60200C4 */  lwc1      $f2, 0xC4($s0)
/* 109954 802E80D4 3C013E80 */  lui       $at, (0x3E800000 >> 16)
/* 109958 802E80D8 44810000 */  mtc1      $at, $f0
/* 10995C 802E80DC 4480F000 */  mtc1      $zero, $f30
/* 109960 802E80E0 46001602 */  mul.s     $f24, $f2, $f0
/* 109964 802E80E4 080BA05A */  j         .L802E8168
/* 109968 802E80E8 00000000 */   nop
.L802E80EC:
/* 10996C 802E80EC C60200C4 */  lwc1      $f2, 0xC4($s0)
/* 109970 802E80F0 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 109974 802E80F4 44810000 */  mtc1      $at, $f0
/* 109978 802E80F8 00000000 */  nop
/* 10997C 802E80FC 46001080 */  add.s     $f2, $f2, $f0
/* 109980 802E8100 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* 109984 802E8104 44810000 */  mtc1      $at, $f0
/* 109988 802E8108 00000000 */  nop
/* 10998C 802E810C 4602003C */  c.lt.s    $f0, $f2
/* 109990 802E8110 00000000 */  nop
/* 109994 802E8114 45000002 */  bc1f      .L802E8120
/* 109998 802E8118 E60200C4 */   swc1     $f2, 0xC4($s0)
/* 10999C 802E811C E60000C4 */  swc1      $f0, 0xC4($s0)
.L802E8120:
/* 1099A0 802E8120 C60200C4 */  lwc1      $f2, 0xC4($s0)
/* 1099A4 802E8124 3C01428C */  lui       $at, (0x428C0000 >> 16)
/* 1099A8 802E8128 44812000 */  mtc1      $at, $f4
/* 1099AC 802E812C C60001E4 */  lwc1      $f0, 0x1E4($s0)
/* 1099B0 802E8130 46041083 */  div.s     $f2, $f2, $f4
/* 1099B4 802E8134 46020001 */  sub.s     $f0, $f0, $f2
/* 1099B8 802E8138 E60001E4 */  swc1      $f0, 0x1E4($s0)
/* 1099BC 802E813C 92220034 */  lbu       $v0, 0x34($s1)
/* 1099C0 802E8140 2442FFFB */  addiu     $v0, $v0, -0x5
/* 1099C4 802E8144 A2220034 */  sb        $v0, 0x34($s1)
/* 1099C8 802E8148 304200FF */  andi      $v0, $v0, 0xFF
/* 1099CC 802E814C 2C420006 */  sltiu     $v0, $v0, 0x6
/* 1099D0 802E8150 10400005 */  beqz      $v0, .L802E8168
/* 1099D4 802E8154 00000000 */   nop
/* 1099D8 802E8158 92220010 */  lbu       $v0, 0x10($s1)
/* 1099DC 802E815C A2200034 */  sb        $zero, 0x34($s1)
/* 1099E0 802E8160 24420001 */  addiu     $v0, $v0, 0x1
/* 1099E4 802E8164 A2220010 */  sb        $v0, 0x10($s1)
.L802E8168:
/* 1099E8 802E8168 82220010 */  lb        $v0, 0x10($s1)
/* 1099EC 802E816C 28420002 */  slti      $v0, $v0, 0x2
/* 1099F0 802E8170 504000DB */  beql      $v0, $zero, .L802E84E0
/* 1099F4 802E8174 26310001 */   addiu    $s1, $s1, 0x1
/* 1099F8 802E8178 C6020304 */  lwc1      $f2, 0x304($s0)
/* 1099FC 802E817C 44800000 */  mtc1      $zero, $f0
/* 109A00 802E8180 00000000 */  nop
/* 109A04 802E8184 4602003E */  c.le.s    $f0, $f2
/* 109A08 802E8188 3C01802F */  lui       $at, %hi(D_802EB358)
/* 109A0C 802E818C D420B358 */  ldc1      $f0, %lo(D_802EB358)($at)
/* 109A10 802E8190 45000003 */  bc1f      .L802E81A0
/* 109A14 802E8194 460010A1 */   cvt.d.s  $f2, $f2
/* 109A18 802E8198 3C01802F */  lui       $at, %hi(D_802EB360)
/* 109A1C 802E819C D420B360 */  ldc1      $f0, %lo(D_802EB360)($at)
.L802E81A0:
/* 109A20 802E81A0 46201081 */  sub.d     $f2, $f2, $f0
/* 109A24 802E81A4 3C01802F */  lui       $at, %hi(D_802EB368)
/* 109A28 802E81A8 D424B368 */  ldc1      $f4, %lo(D_802EB368)($at)
/* 109A2C 802E81AC 462010A0 */  cvt.s.d   $f2, $f2
/* 109A30 802E81B0 46001021 */  cvt.d.s   $f0, $f2
/* 109A34 802E81B4 4624003C */  c.lt.d    $f0, $f4
/* 109A38 802E81B8 00000000 */  nop
/* 109A3C 802E81BC 45000006 */  bc1f      .L802E81D8
/* 109A40 802E81C0 E6020304 */   swc1     $f2, 0x304($s0)
/* 109A44 802E81C4 3C01C123 */  lui       $at, (0xC1233333 >> 16)
/* 109A48 802E81C8 34213333 */  ori       $at, $at, (0xC1233333 & 0xFFFF)
/* 109A4C 802E81CC 44810000 */  mtc1      $at, $f0
/* 109A50 802E81D0 00000000 */  nop
/* 109A54 802E81D4 E6000304 */  swc1      $f0, 0x304($s0)
.L802E81D8:
/* 109A58 802E81D8 C60001E4 */  lwc1      $f0, 0x1E4($s0)
/* 109A5C 802E81DC C6020304 */  lwc1      $f2, 0x304($s0)
/* 109A60 802E81E0 46020000 */  add.s     $f0, $f0, $f2
/* 109A64 802E81E4 E60001E4 */  swc1      $f0, 0x1E4($s0)
/* 109A68 802E81E8 92220034 */  lbu       $v0, 0x34($s1)
/* 109A6C 802E81EC 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 109A70 802E81F0 44814000 */  mtc1      $at, $f8
/* 109A74 802E81F4 4482A000 */  mtc1      $v0, $f20
/* 109A78 802E81F8 00000000 */  nop
/* 109A7C 802E81FC 4680A520 */  cvt.s.w   $f20, $f20
/* 109A80 802E8200 4608A502 */  mul.s     $f20, $f20, $f8
/* 109A84 802E8204 00000000 */  nop
/* 109A88 802E8208 3C013B80 */  lui       $at, (0x3B800000 >> 16)
/* 109A8C 802E820C 44814000 */  mtc1      $at, $f8
/* 109A90 802E8210 00000000 */  nop
/* 109A94 802E8214 4608A502 */  mul.s     $f20, $f20, $f8
/* 109A98 802E8218 00000000 */  nop
/* 109A9C 802E821C 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* 109AA0 802E8220 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* 109AA4 802E8224 44814000 */  mtc1      $at, $f8
/* 109AA8 802E8228 00000000 */  nop
/* 109AAC 802E822C 4608A002 */  mul.s     $f0, $f20, $f8
/* 109AB0 802E8230 00000000 */  nop
/* 109AB4 802E8234 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 109AB8 802E8238 44814000 */  mtc1      $at, $f8
/* 109ABC 802E823C 00000000 */  nop
/* 109AC0 802E8240 46080583 */  div.s     $f22, $f0, $f8
/* 109AC4 802E8244 0C00A85B */  jal       sin_rad
/* 109AC8 802E8248 4600B306 */   mov.s    $f12, $f22
/* 109ACC 802E824C 4600D002 */  mul.s     $f0, $f26, $f0
/* 109AD0 802E8250 00000000 */  nop
/* 109AD4 802E8254 C6020154 */  lwc1      $f2, 0x154($s0)
/* 109AD8 802E8258 46001080 */  add.s     $f2, $f2, $f0
/* 109ADC 802E825C 4600B306 */  mov.s     $f12, $f22
/* 109AE0 802E8260 0C00A874 */  jal       cos_rad
/* 109AE4 802E8264 E6020154 */   swc1     $f2, 0x154($s0)
/* 109AE8 802E8268 4600D002 */  mul.s     $f0, $f26, $f0
/* 109AEC 802E826C 00000000 */  nop
/* 109AF0 802E8270 3C040004 */  lui       $a0, (0x40000 >> 16)
/* 109AF4 802E8274 C6020274 */  lwc1      $f2, 0x274($s0)
/* 109AF8 802E8278 02C0282D */  daddu     $a1, $s6, $zero
/* 109AFC 802E827C 46001080 */  add.s     $f2, $f2, $f0
/* 109B00 802E8280 C6000154 */  lwc1      $f0, 0x154($s0)
/* 109B04 802E8284 02A0302D */  daddu     $a2, $s5, $zero
/* 109B08 802E8288 E6020274 */  swc1      $f2, 0x274($s0)
/* 109B0C 802E828C C60201E4 */  lwc1      $f2, 0x1E4($s0)
/* 109B10 802E8290 C6040274 */  lwc1      $f4, 0x274($s0)
/* 109B14 802E8294 0280382D */  daddu     $a3, $s4, $zero
/* 109B18 802E8298 E7A00020 */  swc1      $f0, 0x20($sp)
/* 109B1C 802E829C E7A20024 */  swc1      $f2, 0x24($sp)
/* 109B20 802E82A0 E7A40028 */  swc1      $f4, 0x28($sp)
/* 109B24 802E82A4 E7BA0010 */  swc1      $f26, 0x10($sp)
/* 109B28 802E82A8 E7B40014 */  swc1      $f20, 0x14($sp)
/* 109B2C 802E82AC E7BC0018 */  swc1      $f28, 0x18($sp)
/* 109B30 802E82B0 0C0376B9 */  jal       npc_test_move_taller_with_slipping
/* 109B34 802E82B4 E7BC001C */   swc1     $f28, 0x1C($sp)
/* 109B38 802E82B8 10400031 */  beqz      $v0, .L802E8380
/* 109B3C 802E82BC 3C040004 */   lui      $a0, (0x40000 >> 16)
/* 109B40 802E82C0 C7A00020 */  lwc1      $f0, 0x20($sp)
/* 109B44 802E82C4 C7A20024 */  lwc1      $f2, 0x24($sp)
/* 109B48 802E82C8 C7A40028 */  lwc1      $f4, 0x28($sp)
/* 109B4C 802E82CC E6000154 */  swc1      $f0, 0x154($s0)
/* 109B50 802E82D0 E60201E4 */  swc1      $f2, 0x1E4($s0)
/* 109B54 802E82D4 E6040274 */  swc1      $f4, 0x274($s0)
/* 109B58 802E82D8 92220034 */  lbu       $v0, 0x34($s1)
/* 109B5C 802E82DC 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 109B60 802E82E0 44814000 */  mtc1      $at, $f8
/* 109B64 802E82E4 24420080 */  addiu     $v0, $v0, 0x80
/* 109B68 802E82E8 A2220034 */  sb        $v0, 0x34($s1)
/* 109B6C 802E82EC 304200FF */  andi      $v0, $v0, 0xFF
/* 109B70 802E82F0 44820000 */  mtc1      $v0, $f0
/* 109B74 802E82F4 00000000 */  nop
/* 109B78 802E82F8 46800020 */  cvt.s.w   $f0, $f0
/* 109B7C 802E82FC 46080002 */  mul.s     $f0, $f0, $f8
/* 109B80 802E8300 00000000 */  nop
/* 109B84 802E8304 3C013B80 */  lui       $at, (0x3B800000 >> 16)
/* 109B88 802E8308 44814000 */  mtc1      $at, $f8
/* 109B8C 802E830C 00000000 */  nop
/* 109B90 802E8310 46080002 */  mul.s     $f0, $f0, $f8
/* 109B94 802E8314 00000000 */  nop
/* 109B98 802E8318 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* 109B9C 802E831C 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* 109BA0 802E8320 44814000 */  mtc1      $at, $f8
/* 109BA4 802E8324 00000000 */  nop
/* 109BA8 802E8328 46080002 */  mul.s     $f0, $f0, $f8
/* 109BAC 802E832C 00000000 */  nop
/* 109BB0 802E8330 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 109BB4 802E8334 44814000 */  mtc1      $at, $f8
/* 109BB8 802E8338 00000000 */  nop
/* 109BBC 802E833C 46080583 */  div.s     $f22, $f0, $f8
/* 109BC0 802E8340 0C00A85B */  jal       sin_rad
/* 109BC4 802E8344 4600B306 */   mov.s    $f12, $f22
/* 109BC8 802E8348 461C0002 */  mul.s     $f0, $f0, $f28
/* 109BCC 802E834C 00000000 */  nop
/* 109BD0 802E8350 C6020154 */  lwc1      $f2, 0x154($s0)
/* 109BD4 802E8354 46001080 */  add.s     $f2, $f2, $f0
/* 109BD8 802E8358 4600B306 */  mov.s     $f12, $f22
/* 109BDC 802E835C 0C00A874 */  jal       cos_rad
/* 109BE0 802E8360 E6020154 */   swc1     $f2, 0x154($s0)
/* 109BE4 802E8364 461C0002 */  mul.s     $f0, $f0, $f28
/* 109BE8 802E8368 00000000 */  nop
/* 109BEC 802E836C C6020274 */  lwc1      $f2, 0x274($s0)
/* 109BF0 802E8370 46001080 */  add.s     $f2, $f2, $f0
/* 109BF4 802E8374 4600E686 */  mov.s     $f26, $f28
/* 109BF8 802E8378 E6020274 */  swc1      $f2, 0x274($s0)
/* 109BFC 802E837C 3C040004 */  lui       $a0, (0x40000 >> 16)
.L802E8380:
/* 109C00 802E8380 02C0282D */  daddu     $a1, $s6, $zero
/* 109C04 802E8384 02A0302D */  daddu     $a2, $s5, $zero
/* 109C08 802E8388 0280382D */  daddu     $a3, $s4, $zero
/* 109C0C 802E838C 27A2002C */  addiu     $v0, $sp, 0x2C
/* 109C10 802E8390 C60201E4 */  lwc1      $f2, 0x1E4($s0)
/* 109C14 802E8394 C6060154 */  lwc1      $f6, 0x154($s0)
/* 109C18 802E8398 461C1080 */  add.s     $f2, $f2, $f28
/* 109C1C 802E839C C6000304 */  lwc1      $f0, 0x304($s0)
/* 109C20 802E83A0 C6040274 */  lwc1      $f4, 0x274($s0)
/* 109C24 802E83A4 46000005 */  abs.s     $f0, $f0
/* 109C28 802E83A8 E7A60020 */  swc1      $f6, 0x20($sp)
/* 109C2C 802E83AC E7A40028 */  swc1      $f4, 0x28($sp)
/* 109C30 802E83B0 E7A0002C */  swc1      $f0, 0x2C($sp)
/* 109C34 802E83B4 E7A20024 */  swc1      $f2, 0x24($sp)
/* 109C38 802E83B8 0C0372DF */  jal       npc_raycast_down_sides
/* 109C3C 802E83BC AFA20010 */   sw       $v0, 0x10($sp)
/* 109C40 802E83C0 1440000B */  bnez      $v0, .L802E83F0
/* 109C44 802E83C4 00000000 */   nop
/* 109C48 802E83C8 C640000C */  lwc1      $f0, 0xC($s2)
/* 109C4C 802E83CC 3C014348 */  lui       $at, (0x43480000 >> 16)
/* 109C50 802E83D0 44811000 */  mtc1      $at, $f2
/* 109C54 802E83D4 00000000 */  nop
/* 109C58 802E83D8 46020001 */  sub.s     $f0, $f0, $f2
/* 109C5C 802E83DC C7A20024 */  lwc1      $f2, 0x24($sp)
/* 109C60 802E83E0 4600103C */  c.lt.s    $f2, $f0
/* 109C64 802E83E4 00000000 */  nop
/* 109C68 802E83E8 45000010 */  bc1f      .L802E842C
/* 109C6C 802E83EC 00000000 */   nop
.L802E83F0:
/* 109C70 802E83F0 92220010 */  lbu       $v0, 0x10($s1)
/* 109C74 802E83F4 24420001 */  addiu     $v0, $v0, 0x1
/* 109C78 802E83F8 A2220010 */  sb        $v0, 0x10($s1)
/* 109C7C 802E83FC C6000304 */  lwc1      $f0, 0x304($s0)
/* 109C80 802E8400 C7A20024 */  lwc1      $f2, 0x24($sp)
/* 109C84 802E8404 46000005 */  abs.s     $f0, $f0
/* 109C88 802E8408 46001080 */  add.s     $f2, $f2, $f0
/* 109C8C 802E840C E61E0304 */  swc1      $f30, 0x304($s0)
/* 109C90 802E8410 E60201E4 */  swc1      $f2, 0x1E4($s0)
/* 109C94 802E8414 82230010 */  lb        $v1, 0x10($s1)
/* 109C98 802E8418 24020002 */  addiu     $v0, $zero, 0x2
/* 109C9C 802E841C 14620003 */  bne       $v1, $v0, .L802E842C
/* 109CA0 802E8420 240200FE */   addiu    $v0, $zero, 0xFE
/* 109CA4 802E8424 A2220034 */  sb        $v0, 0x34($s1)
/* 109CA8 802E8428 AE0000C4 */  sw        $zero, 0xC4($s0)
.L802E842C:
/* 109CAC 802E842C 92220058 */  lbu       $v0, 0x58($s1)
/* 109CB0 802E8430 44820000 */  mtc1      $v0, $f0
/* 109CB4 802E8434 00000000 */  nop
/* 109CB8 802E8438 46800020 */  cvt.s.w   $f0, $f0
/* 109CBC 802E843C 46180000 */  add.s     $f0, $f0, $f24
/* 109CC0 802E8440 3C014F00 */  lui       $at, (0x4F000000 >> 16)
/* 109CC4 802E8444 44814000 */  mtc1      $at, $f8
/* 109CC8 802E8448 00000000 */  nop
/* 109CCC 802E844C 4600403E */  c.le.s    $f8, $f0
/* 109CD0 802E8450 00000000 */  nop
/* 109CD4 802E8454 45010005 */  bc1t      .L802E846C
/* 109CD8 802E8458 26230058 */   addiu    $v1, $s1, 0x58
/* 109CDC 802E845C 4600020D */  trunc.w.s $f8, $f0
/* 109CE0 802E8460 44024000 */  mfc1      $v0, $f8
/* 109CE4 802E8464 080BA121 */  j         .L802E8484
/* 109CE8 802E8468 A0620000 */   sb       $v0, 0x0($v1)
.L802E846C:
/* 109CEC 802E846C 46080001 */  sub.s     $f0, $f0, $f8
/* 109CF0 802E8470 4600020D */  trunc.w.s $f8, $f0
/* 109CF4 802E8474 44024000 */  mfc1      $v0, $f8
/* 109CF8 802E8478 00000000 */  nop
/* 109CFC 802E847C 00571025 */  or        $v0, $v0, $s7
/* 109D00 802E8480 A0620000 */  sb        $v0, 0x0($v1)
.L802E8484:
/* 109D04 802E8484 9222007C */  lbu       $v0, 0x7C($s1)
/* 109D08 802E8488 44820000 */  mtc1      $v0, $f0
/* 109D0C 802E848C 00000000 */  nop
/* 109D10 802E8490 46800020 */  cvt.s.w   $f0, $f0
/* 109D14 802E8494 46180001 */  sub.s     $f0, $f0, $f24
/* 109D18 802E8498 3C014F00 */  lui       $at, (0x4F000000 >> 16)
/* 109D1C 802E849C 44814000 */  mtc1      $at, $f8
/* 109D20 802E84A0 00000000 */  nop
/* 109D24 802E84A4 4600403E */  c.le.s    $f8, $f0
/* 109D28 802E84A8 00000000 */  nop
/* 109D2C 802E84AC 45010005 */  bc1t      .L802E84C4
/* 109D30 802E84B0 2623007C */   addiu    $v1, $s1, 0x7C
/* 109D34 802E84B4 4600020D */  trunc.w.s $f8, $f0
/* 109D38 802E84B8 44024000 */  mfc1      $v0, $f8
/* 109D3C 802E84BC 080BA137 */  j         .L802E84DC
/* 109D40 802E84C0 A0620000 */   sb       $v0, 0x0($v1)
.L802E84C4:
/* 109D44 802E84C4 46080001 */  sub.s     $f0, $f0, $f8
/* 109D48 802E84C8 4600020D */  trunc.w.s $f8, $f0
/* 109D4C 802E84CC 44024000 */  mfc1      $v0, $f8
/* 109D50 802E84D0 00000000 */  nop
/* 109D54 802E84D4 00571025 */  or        $v0, $v0, $s7
/* 109D58 802E84D8 A0620000 */  sb        $v0, 0x0($v1)
.L802E84DC:
/* 109D5C 802E84DC 26310001 */  addiu     $s1, $s1, 0x1
.L802E84E0:
/* 109D60 802E84E0 26420023 */  addiu     $v0, $s2, 0x23
/* 109D64 802E84E4 0222102A */  slt       $v0, $s1, $v0
/* 109D68 802E84E8 1440FECC */  bnez      $v0, .L802E801C
/* 109D6C 802E84EC 26100004 */   addiu    $s0, $s0, 0x4
/* 109D70 802E84F0 2A620023 */  slti      $v0, $s3, 0x23
/* 109D74 802E84F4 14400003 */  bnez      $v0, .L802E8504
/* 109D78 802E84F8 00000000 */   nop
/* 109D7C 802E84FC 0C043F5A */  jal       exec_entity_commandlist
/* 109D80 802E8500 03C0202D */   daddu    $a0, $fp, $zero
.L802E8504:
/* 109D84 802E8504 8FBF0054 */  lw        $ra, 0x54($sp)
/* 109D88 802E8508 8FBE0050 */  lw        $fp, 0x50($sp)
/* 109D8C 802E850C 8FB7004C */  lw        $s7, 0x4C($sp)
/* 109D90 802E8510 8FB60048 */  lw        $s6, 0x48($sp)
/* 109D94 802E8514 8FB50044 */  lw        $s5, 0x44($sp)
/* 109D98 802E8518 8FB40040 */  lw        $s4, 0x40($sp)
/* 109D9C 802E851C 8FB3003C */  lw        $s3, 0x3C($sp)
/* 109DA0 802E8520 8FB20038 */  lw        $s2, 0x38($sp)
/* 109DA4 802E8524 8FB10034 */  lw        $s1, 0x34($sp)
/* 109DA8 802E8528 8FB00030 */  lw        $s0, 0x30($sp)
/* 109DAC 802E852C D7BE0080 */  ldc1      $f30, 0x80($sp)
/* 109DB0 802E8530 D7BC0078 */  ldc1      $f28, 0x78($sp)
/* 109DB4 802E8534 D7BA0070 */  ldc1      $f26, 0x70($sp)
/* 109DB8 802E8538 D7B80068 */  ldc1      $f24, 0x68($sp)
/* 109DBC 802E853C D7B60060 */  ldc1      $f22, 0x60($sp)
/* 109DC0 802E8540 D7B40058 */  ldc1      $f20, 0x58($sp)
/* 109DC4 802E8544 03E00008 */  jr        $ra
/* 109DC8 802E8548 27BD0088 */   addiu    $sp, $sp, 0x88

### DECOMPILED C INSTRUCTIONS:

void entity_WoodenCrate_update_fragments(Entity* entity) {
    WoodenCrateData* data = entity->dataBuf.crate;
    f32 rotSpeed, lateralSpeed, reboundSpeed;
    f32 moveAngle, yawRad;
    s32 i;
    s32 numFragmentsDisappeared;
    f32 hitX, hitY, hitZ, hitDepth;

    numFragmentsDisappeared = 0;
    rotSpeed = 0.0f;
    reboundSpeed = 0.0f;
    lateralSpeed = 0.0f;

    for (i = 0; i < 35; i++) {
        switch (data->fragmentRebounds[i]) {
            case 0:
                reboundSpeed = 2.0f;
                rotSpeed = data->fragmentRotationSpeed[i];
                lateralSpeed = data->fragmentLateralSpeed[i] / 10.0f;
                if (rotSpeed >= 0.0f) {
                    data->fragmentRotationSpeed[i] = rotSpeed - 0.4;
                } else {
                    data->fragmentRotationSpeed[i] = rotSpeed + 0.5;
                }
                break;
            case 1:
                lateralSpeed = 1.0f;
                reboundSpeed = 0.0f;
                rotSpeed = data->fragmentRotationSpeed[i] * 0.25f;
                break;
            case 2:
                data->fragmentRotationSpeed[i] += 1.0f;
                if (data->fragmentRotationSpeed[i] > 20.0f) {
                    data->fragmentRotationSpeed[i] = 20.0f;
                }

                data->fragmentPosY[i] -= data->fragmentRotationSpeed[i] / 70.0f;

                data->fragmentMoveAngle[i] -= 5;
                if (data->fragmentMoveAngle[i] <= 5) {
                    data->fragmentMoveAngle[i] = 0;
                    data->fragmentRebounds[i]++;
                }
                break;
            case 3:
                numFragmentsDisappeared++;
                break;
        }

        if (data->fragmentRebounds[i] < 2) {
            if (data->fragmentFallSpeed[i] >= 0.0f) {
                data->fragmentFallSpeed[i] -= 0.8;
                if (data->fragmentFallSpeed[i] < -10.2) {
                    data->fragmentFallSpeed[i] = -10.2f;
                }
            } else {
                data->fragmentFallSpeed[i] -= 1.6;
                if (data->fragmentFallSpeed[i] < -10.2) {
                    data->fragmentFallSpeed[i] = -10.2f;
                }
            }

            data->fragmentPosY[i] += data->fragmentFallSpeed[i];
            yawRad = data->fragmentMoveAngle[i] * 360.0f / 256;
            moveAngle = DEG_TO_RAD(yawRad);
            data->fragmentPosX[i] += lateralSpeed * sin_rad(moveAngle);
            data->fragmentPosZ[i] += lateralSpeed * cos_rad(moveAngle);

            hitX = data->fragmentPosX[i];
            hitY = data->fragmentPosY[i];
            hitZ = data->fragmentPosZ[i];
            if (npc_test_move_taller_with_slipping(COLLISION_IGNORE_ENTITIES, &hitX, &hitY, &hitZ, lateralSpeed, yawRad, 8.0f, 8.0f)) {
                data->fragmentPosX[i] = hitX;
                data->fragmentPosY[i] = hitY;
                data->fragmentPosZ[i] = hitZ;
                data->fragmentMoveAngle[i] += 0x80; // inverse yaw

                moveAngle = DEG_TO_RAD(data->fragmentMoveAngle[i] * 360.0f / 256);
                lateralSpeed = 8.0f;
                data->fragmentPosX[i] += lateralSpeed * sin_rad(moveAngle);
                data->fragmentPosZ[i] += lateralSpeed * cos_rad(moveAngle);

            }

            hitX = data->fragmentPosX[i];
            hitY = data->fragmentPosY[i] + 8.0f;
            hitZ = data->fragmentPosZ[i];
            hitDepth = fabsf(data->fragmentFallSpeed[i]);
            if (npc_raycast_down_sides(COLLISION_IGNORE_ENTITIES, &hitX, &hitY, &hitZ, &hitDepth) || hitY < data->basePosY - 200.0f) {
                data->fragmentRebounds[i]++;
                data->fragmentPosY[i] = hitY + fabsf(data->fragmentFallSpeed[i]);
                data->fragmentFallSpeed[i] = reboundSpeed;
                if (data->fragmentRebounds[i] == 2) {
                    data->fragmentMoveAngle[i] = 254;
                    data->fragmentRotationSpeed[i] = 0.0f;
                }
            }

            data->fragmentRotX[i] += rotSpeed;
            data->fragmentRotY[i] -= rotSpeed;
        }
    }

    if (numFragmentsDisappeared >= 35) {
        exec_entity_commandlist(entity);
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel bombette_breaking_main
/* 388A54 E0084084 27BDFF48 */  addiu     $sp, $sp, -0xB8
/* 388A58 E0084088 AFB5007C */  sw        $s5, 0x7C($sp)
/* 388A5C E008408C 0080A82D */  daddu     $s5, $a0, $zero
/* 388A60 E0084090 30A4FFFF */  andi      $a0, $a1, 0xFFFF
/* 388A64 E0084094 27A20044 */  addiu     $v0, $sp, 0x44
/* 388A68 E0084098 AFA20010 */  sw        $v0, 0x10($sp)
/* 388A6C E008409C 27A20048 */  addiu     $v0, $sp, 0x48
/* 388A70 E00840A0 AFA20014 */  sw        $v0, 0x14($sp)
/* 388A74 E00840A4 27A2004C */  addiu     $v0, $sp, 0x4C
/* 388A78 E00840A8 AFB60080 */  sw        $s6, 0x80($sp)
/* 388A7C E00840AC 00C0B02D */  daddu     $s6, $a2, $zero
/* 388A80 E00840B0 27A50038 */  addiu     $a1, $sp, 0x38
/* 388A84 E00840B4 27A6003C */  addiu     $a2, $sp, 0x3C
/* 388A88 E00840B8 F7B60090 */  sdc1      $f22, 0x90($sp)
/* 388A8C E00840BC 4487B000 */  mtc1      $a3, $f22
/* 388A90 E00840C0 27A70040 */  addiu     $a3, $sp, 0x40
/* 388A94 E00840C4 AFBF0084 */  sw        $ra, 0x84($sp)
/* 388A98 E00840C8 AFB40078 */  sw        $s4, 0x78($sp)
/* 388A9C E00840CC AFB30074 */  sw        $s3, 0x74($sp)
/* 388AA0 E00840D0 AFB20070 */  sw        $s2, 0x70($sp)
/* 388AA4 E00840D4 AFB1006C */  sw        $s1, 0x6C($sp)
/* 388AA8 E00840D8 AFB00068 */  sw        $s0, 0x68($sp)
/* 388AAC E00840DC F7BE00B0 */  sdc1      $f30, 0xB0($sp)
/* 388AB0 E00840E0 F7BC00A8 */  sdc1      $f28, 0xA8($sp)
/* 388AB4 E00840E4 F7BA00A0 */  sdc1      $f26, 0xA0($sp)
/* 388AB8 E00840E8 F7B80098 */  sdc1      $f24, 0x98($sp)
/* 388ABC E00840EC F7B40088 */  sdc1      $f20, 0x88($sp)
/* 388AC0 E00840F0 0C021000 */  jal       bombette_breaking_get_model_center_and_size
/* 388AC4 E00840F4 AFA20018 */   sw       $v0, 0x18($sp)
/* 388AC8 E00840F8 C7A80044 */  lwc1      $f8, 0x44($sp)
/* 388ACC E00840FC 3C013D80 */  lui       $at, (0x3D800000 >> 16)
/* 388AD0 E0084100 44810000 */  mtc1      $at, $f0
/* 388AD4 E0084104 00000000 */  nop
/* 388AD8 E0084108 46004182 */  mul.s     $f6, $f8, $f0
/* 388ADC E008410C 00000000 */  nop
/* 388AE0 E0084110 C7AA0048 */  lwc1      $f10, 0x48($sp)
/* 388AE4 E0084114 46005102 */  mul.s     $f4, $f10, $f0
/* 388AE8 E0084118 00000000 */  nop
/* 388AEC E008411C C7AC004C */  lwc1      $f12, 0x4C($sp)
/* 388AF0 E0084120 46006002 */  mul.s     $f0, $f12, $f0
/* 388AF4 E0084124 00000000 */  nop
/* 388AF8 E0084128 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 388AFC E008412C 44811000 */  mtc1      $at, $f2
/* 388B00 E0084130 00000000 */  nop
/* 388B04 E0084134 46023180 */  add.s     $f6, $f6, $f2
/* 388B08 E0084138 27B00020 */  addiu     $s0, $sp, 0x20
/* 388B0C E008413C 46022100 */  add.s     $f4, $f4, $f2
/* 388B10 E0084140 4600470D */  trunc.w.s $f28, $f8
/* 388B14 E0084144 4403E000 */  mfc1      $v1, $f28
/* 388B18 E0084148 46020000 */  add.s     $f0, $f0, $f2
/* 388B1C E008414C 4600370D */  trunc.w.s $f28, $f6
/* 388B20 E0084150 4412E000 */  mfc1      $s2, $f28
/* 388B24 E0084154 4600270D */  trunc.w.s $f28, $f4
/* 388B28 E0084158 4413E000 */  mfc1      $s3, $f28
/* 388B2C E008415C 4600070D */  trunc.w.s $f28, $f0
/* 388B30 E0084160 4411E000 */  mfc1      $s1, $f28
/* 388B34 E0084164 04610002 */  bgez      $v1, .LE0084170
/* 388B38 E0084168 0060102D */   daddu    $v0, $v1, $zero
/* 388B3C E008416C 2462000F */  addiu     $v0, $v1, 0xF
.LE0084170:
/* 388B40 E0084170 00021103 */  sra       $v0, $v0, 4
/* 388B44 E0084174 00021100 */  sll       $v0, $v0, 4
/* 388B48 E0084178 00621023 */  subu      $v0, $v1, $v0
/* 388B4C E008417C 4482A000 */  mtc1      $v0, $f20
/* 388B50 E0084180 00000000 */  nop
/* 388B54 E0084184 4680A520 */  cvt.s.w   $f20, $f20
/* 388B58 E0084188 4600570D */  trunc.w.s $f28, $f10
/* 388B5C E008418C 4403E000 */  mfc1      $v1, $f28
/* 388B60 E0084190 00000000 */  nop
/* 388B64 E0084194 04610002 */  bgez      $v1, .LE00841A0
/* 388B68 E0084198 0060102D */   daddu    $v0, $v1, $zero
/* 388B6C E008419C 2462000F */  addiu     $v0, $v1, 0xF
.LE00841A0:
/* 388B70 E00841A0 00021103 */  sra       $v0, $v0, 4
/* 388B74 E00841A4 00021100 */  sll       $v0, $v0, 4
/* 388B78 E00841A8 00621023 */  subu      $v0, $v1, $v0
/* 388B7C E00841AC 4482F000 */  mtc1      $v0, $f30
/* 388B80 E00841B0 00000000 */  nop
/* 388B84 E00841B4 4680F7A0 */  cvt.s.w   $f30, $f30
/* 388B88 E00841B8 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 388B8C E00841BC 44810800 */  mtc1      $at, $f1
/* 388B90 E00841C0 44800000 */  mtc1      $zero, $f0
/* 388B94 E00841C4 4600A121 */  cvt.d.s   $f4, $f20
/* 388B98 E00841C8 46202102 */  mul.d     $f4, $f4, $f0
/* 388B9C E00841CC 00000000 */  nop
/* 388BA0 E00841D0 4600F0A1 */  cvt.d.s   $f2, $f30
/* 388BA4 E00841D4 46201082 */  mul.d     $f2, $f2, $f0
/* 388BA8 E00841D8 00000000 */  nop
/* 388BAC E00841DC 0200202D */  daddu     $a0, $s0, $zero
/* 388BB0 E00841E0 3C02E008 */  lui       $v0, %hi(bombette_breaking_init)
/* 388BB4 E00841E4 24424658 */  addiu     $v0, $v0, %lo(bombette_breaking_init)
/* 388BB8 E00841E8 AFA20028 */  sw        $v0, 0x28($sp)
/* 388BBC E00841EC 02530018 */  mult      $s2, $s3
/* 388BC0 E00841F0 3C02E008 */  lui       $v0, %hi(bombette_breaking_update)
/* 388BC4 E00841F4 24424660 */  addiu     $v0, $v0, %lo(bombette_breaking_update)
/* 388BC8 E00841F8 AFA2002C */  sw        $v0, 0x2C($sp)
/* 388BCC E00841FC 3C02E008 */  lui       $v0, %hi(bombette_breaking_render)
/* 388BD0 E0084200 244248E4 */  addiu     $v0, $v0, %lo(bombette_breaking_render)
/* 388BD4 E0084204 AFA20030 */  sw        $v0, 0x30($sp)
/* 388BD8 E0084208 00004012 */  mflo      $t0
/* 388BDC E008420C 24020042 */  addiu     $v0, $zero, 0x42
/* 388BE0 E0084210 AFA00020 */  sw        $zero, 0x20($sp)
/* 388BE4 E0084214 01110018 */  mult      $t0, $s1
/* 388BE8 E0084218 AFA00034 */  sw        $zero, 0x34($sp)
/* 388BEC E008421C AFA20024 */  sw        $v0, 0x24($sp)
/* 388BF0 E0084220 46202520 */  cvt.s.d   $f20, $f4
/* 388BF4 E0084224 462017A0 */  cvt.s.d   $f30, $f2
/* 388BF8 E0084228 00004012 */  mflo      $t0
/* 388BFC E008422C 0C080124 */  jal       shim_create_effect_instance
/* 388C00 E0084230 25100001 */   addiu    $s0, $t0, 0x1
/* 388C04 E0084234 00102080 */  sll       $a0, $s0, 2
/* 388C08 E0084238 00902021 */  addu      $a0, $a0, $s0
/* 388C0C E008423C 00042100 */  sll       $a0, $a0, 4
/* 388C10 E0084240 0040A02D */  daddu     $s4, $v0, $zero
/* 388C14 E0084244 0C08012C */  jal       shim_general_heap_malloc
/* 388C18 E0084248 AE900008 */   sw       $s0, 0x8($s4)
/* 388C1C E008424C 0040202D */  daddu     $a0, $v0, $zero
/* 388C20 E0084250 14800003 */  bnez      $a0, .LE0084260
/* 388C24 E0084254 AE84000C */   sw       $a0, 0xC($s4)
.LE0084258:
/* 388C28 E0084258 08021096 */  j         .LE0084258
/* 388C2C E008425C 00000000 */   nop
.LE0084260:
/* 388C30 E0084260 C7A00048 */  lwc1      $f0, 0x48($sp)
/* 388C34 E0084264 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 388C38 E0084268 44815800 */  mtc1      $at, $f11
/* 388C3C E008426C 44805000 */  mtc1      $zero, $f10
/* 388C40 E0084270 46000107 */  neg.s     $f4, $f0
/* 388C44 E0084274 46002121 */  cvt.d.s   $f4, $f4
/* 388C48 E0084278 462A2102 */  mul.d     $f4, $f4, $f10
/* 388C4C E008427C 00000000 */  nop
/* 388C50 E0084280 8FA200CC */  lw        $v0, 0xCC($sp)
/* 388C54 E0084284 3C01E008 */  lui       $at, (0xE0084E40 >> 16)
/* 388C58 E0084288 D4224E40 */  ldc1      $f2, (0xE0084E40 & 0xFFFF)($at)
/* 388C5C E008428C AC800048 */  sw        $zero, 0x48($a0)
/* 388C60 E0084290 A4950000 */  sh        $s5, 0x0($a0)
/* 388C64 E0084294 E4960038 */  swc1      $f22, 0x38($a0)
/* 388C68 E0084298 46000021 */  cvt.d.s   $f0, $f0
/* 388C6C E008429C 46220002 */  mul.d     $f0, $f0, $f2
/* 388C70 E00842A0 00000000 */  nop
/* 388C74 E00842A4 AC820044 */  sw        $v0, 0x44($a0)
/* 388C78 E00842A8 C7A20038 */  lwc1      $f2, 0x38($sp)
/* 388C7C E00842AC 240200FF */  addiu     $v0, $zero, 0xFF
/* 388C80 E00842B0 AC82004C */  sw        $v0, 0x4C($a0)
/* 388C84 E00842B4 A4960002 */  sh        $s6, 0x2($a0)
/* 388C88 E00842B8 E4820008 */  swc1      $f2, 0x8($a0)
/* 388C8C E00842BC C7A2003C */  lwc1      $f2, 0x3C($sp)
/* 388C90 E00842C0 C7A60040 */  lwc1      $f6, 0x40($sp)
/* 388C94 E00842C4 4616B200 */  add.s     $f8, $f22, $f22
/* 388C98 E00842C8 E482000C */  swc1      $f2, 0xC($a0)
/* 388C9C E00842CC 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 388CA0 E00842D0 44811000 */  mtc1      $at, $f2
/* 388CA4 E00842D4 E488003C */  swc1      $f8, 0x3C($a0)
/* 388CA8 E00842D8 E4860010 */  swc1      $f6, 0x10($a0)
/* 388CAC E00842DC 46200020 */  cvt.s.d   $f0, $f0
/* 388CB0 E00842E0 46202120 */  cvt.s.d   $f4, $f4
/* 388CB4 E00842E4 4602003C */  c.lt.s    $f0, $f2
/* 388CB8 E00842E8 E4840004 */  swc1      $f4, 0x4($a0)
/* 388CBC E00842EC 45000002 */  bc1f      .LE00842F8
/* 388CC0 E00842F0 E4800040 */   swc1     $f0, 0x40($a0)
/* 388CC4 E00842F4 E4820040 */  swc1      $f2, 0x40($a0)
.LE00842F8:
/* 388CC8 E00842F8 24840050 */  addiu     $a0, $a0, 0x50
/* 388CCC E00842FC 1A4000C5 */  blez      $s2, .LE0084614
/* 388CD0 E0084300 0000382D */   daddu    $a3, $zero, $zero
/* 388CD4 E0084304 C7BA0044 */  lwc1      $f26, 0x44($sp)
/* 388CD8 E0084308 46205486 */  mov.d     $f18, $f10
/* 388CDC E008430C 4600D0A1 */  cvt.d.s   $f2, $f26
/* 388CE0 E0084310 46321082 */  mul.d     $f2, $f2, $f18
/* 388CE4 E0084314 00000000 */  nop
/* 388CE8 E0084318 C7BC0048 */  lwc1      $f28, 0x48($sp)
/* 388CEC E008431C C7B6004C */  lwc1      $f22, 0x4C($sp)
/* 388CF0 E0084320 3C01E008 */  lui       $at, (0xE0084E48 >> 16)
/* 388CF4 E0084324 D42C4E48 */  ldc1      $f12, (0xE0084E48 & 0xFFFF)($at)
/* 388CF8 E0084328 4480C000 */  mtc1      $zero, $f24
/* 388CFC E008432C 4600A021 */  cvt.d.s   $f0, $f20
/* 388D00 E0084330 E7BC0058 */  swc1      $f28, 0x58($sp)
/* 388D04 E0084334 46220001 */  sub.d     $f0, $f0, $f2
/* 388D08 E0084338 F7A00050 */  sdc1      $f0, 0x50($sp)
.LE008433C:
/* 388D0C E008433C 3C014180 */  lui       $at, (0x41800000 >> 16)
/* 388D10 E0084340 4481E000 */  mtc1      $at, $f28
/* 388D14 E0084344 44870000 */  mtc1      $a3, $f0
/* 388D18 E0084348 00000000 */  nop
/* 388D1C E008434C 46800020 */  cvt.s.w   $f0, $f0
/* 388D20 E0084350 461C0002 */  mul.s     $f0, $f0, $f28
/* 388D24 E0084354 00000000 */  nop
/* 388D28 E0084358 D7BC0050 */  ldc1      $f28, 0x50($sp)
/* 388D2C E008435C 46000021 */  cvt.d.s   $f0, $f0
/* 388D30 E0084360 4620E000 */  add.d     $f0, $f28, $f0
/* 388D34 E0084364 0000302D */  daddu     $a2, $zero, $zero
/* 388D38 E0084368 46200020 */  cvt.s.d   $f0, $f0
/* 388D3C E008436C 1A6000A5 */  blez      $s3, .LE0084604
/* 388D40 E0084370 E7A00038 */   swc1     $f0, 0x38($sp)
/* 388D44 E0084374 C7BC0058 */  lwc1      $f28, 0x58($sp)
/* 388D48 E0084378 4600E0A1 */  cvt.d.s   $f2, $f28
/* 388D4C E008437C 46321082 */  mul.d     $f2, $f2, $f18
/* 388D50 E0084380 00000000 */  nop
/* 388D54 E0084384 46000186 */  mov.s     $f6, $f0
/* 388D58 E0084388 4600F021 */  cvt.d.s   $f0, $f30
/* 388D5C E008438C 46220001 */  sub.d     $f0, $f0, $f2
/* 388D60 E0084390 F7A00060 */  sdc1      $f0, 0x60($sp)
.LE0084394:
/* 388D64 E0084394 3C014180 */  lui       $at, (0x41800000 >> 16)
/* 388D68 E0084398 4481E000 */  mtc1      $at, $f28
/* 388D6C E008439C 44860000 */  mtc1      $a2, $f0
/* 388D70 E00843A0 00000000 */  nop
/* 388D74 E00843A4 46800020 */  cvt.s.w   $f0, $f0
/* 388D78 E00843A8 461C0002 */  mul.s     $f0, $f0, $f28
/* 388D7C E00843AC 00000000 */  nop
/* 388D80 E00843B0 D7BC0060 */  ldc1      $f28, 0x60($sp)
/* 388D84 E00843B4 46000021 */  cvt.d.s   $f0, $f0
/* 388D88 E00843B8 4620E000 */  add.d     $f0, $f28, $f0
/* 388D8C E00843BC 0000282D */  daddu     $a1, $zero, $zero
/* 388D90 E00843C0 46200020 */  cvt.s.d   $f0, $f0
/* 388D94 E00843C4 1A20008B */  blez      $s1, .LE00845F4
/* 388D98 E00843C8 E7A0003C */   swc1     $f0, 0x3C($sp)
/* 388D9C E00843CC 4600B0A1 */  cvt.d.s   $f2, $f22
/* 388DA0 E00843D0 46321082 */  mul.d     $f2, $f2, $f18
/* 388DA4 E00843D4 00000000 */  nop
/* 388DA8 E00843D8 46000286 */  mov.s     $f10, $f0
/* 388DAC E00843DC 2483004C */  addiu     $v1, $a0, 0x4C
/* 388DB0 E00843E0 4600F021 */  cvt.d.s   $f0, $f30
/* 388DB4 E00843E4 3C01BFF0 */  lui       $at, (0xBFF00000 >> 16)
/* 388DB8 E00843E8 44818800 */  mtc1      $at, $f17
/* 388DBC E00843EC 44808000 */  mtc1      $zero, $f16
/* 388DC0 E00843F0 3C013FF0 */  lui       $at, (0x3FF00000 >> 16)
/* 388DC4 E00843F4 44817800 */  mtc1      $at, $f15
/* 388DC8 E00843F8 44807000 */  mtc1      $zero, $f14
/* 388DCC E00843FC 44804000 */  mtc1      $zero, $f8
/* 388DD0 E0084400 44804800 */  mtc1      $zero, $f9
/* 388DD4 E0084404 46220501 */  sub.d     $f20, $f0, $f2
.LE0084408:
/* 388DD8 E0084408 3C014180 */  lui       $at, (0x41800000 >> 16)
/* 388DDC E008440C 4481E000 */  mtc1      $at, $f28
/* 388DE0 E0084410 44850000 */  mtc1      $a1, $f0
/* 388DE4 E0084414 00000000 */  nop
/* 388DE8 E0084418 46800020 */  cvt.s.w   $f0, $f0
/* 388DEC E008441C 461C0002 */  mul.s     $f0, $f0, $f28
/* 388DF0 E0084420 00000000 */  nop
/* 388DF4 E0084424 4616D03C */  c.lt.s    $f26, $f22
/* 388DF8 E0084428 E466FFC8 */  swc1      $f6, -0x38($v1)
/* 388DFC E008442C E466FFBC */  swc1      $f6, -0x44($v1)
/* 388E00 E0084430 46000021 */  cvt.d.s   $f0, $f0
/* 388E04 E0084434 4620A000 */  add.d     $f0, $f20, $f0
/* 388E08 E0084438 E46AFFCC */  swc1      $f10, -0x34($v1)
/* 388E0C E008443C E46AFFC0 */  swc1      $f10, -0x40($v1)
/* 388E10 E0084440 46200020 */  cvt.s.d   $f0, $f0
/* 388E14 E0084444 E7A00040 */  swc1      $f0, 0x40($sp)
/* 388E18 E0084448 E460FFD0 */  swc1      $f0, -0x30($v1)
/* 388E1C E008444C 45000017 */  bc1f      .LE00844AC
/* 388E20 E0084450 E460FFC4 */   swc1     $f0, -0x3C($v1)
/* 388E24 E0084454 2A420002 */  slti      $v0, $s2, 0x2
/* 388E28 E0084458 5440000A */  bnel      $v0, $zero, .LE0084484
/* 388E2C E008445C 30A20001 */   andi     $v0, $a1, 0x1
/* 388E30 E0084460 4600D0A1 */  cvt.d.s   $f2, $f26
/* 388E34 E0084464 46321082 */  mul.d     $f2, $f2, $f18
/* 388E38 E0084468 00000000 */  nop
/* 388E3C E008446C 46003021 */  cvt.d.s   $f0, $f6
/* 388E40 E0084470 46220003 */  div.d     $f0, $f0, $f2
/* 388E44 E0084474 46200000 */  add.d     $f0, $f0, $f0
/* 388E48 E0084478 46200020 */  cvt.s.d   $f0, $f0
/* 388E4C E008447C 08021129 */  j         .LE00844A4
/* 388E50 E0084480 E460FFD4 */   swc1     $f0, -0x2C($v1)
.LE0084484:
/* 388E54 E0084484 3C01C000 */  lui       $at, (0xC0000000 >> 16)
/* 388E58 E0084488 4481E000 */  mtc1      $at, $f28
/* 388E5C E008448C 50400005 */  beql      $v0, $zero, .LE00844A4
/* 388E60 E0084490 E47CFFD4 */   swc1     $f28, -0x2C($v1)
/* 388E64 E0084494 3C014000 */  lui       $at, (0x40000000 >> 16)
/* 388E68 E0084498 4481E000 */  mtc1      $at, $f28
/* 388E6C E008449C 00000000 */  nop
/* 388E70 E00844A0 E47CFFD4 */  swc1      $f28, -0x2C($v1)
.LE00844A4:
/* 388E74 E00844A4 08021140 */  j         .LE0084500
/* 388E78 E00844A8 AC60FFDC */   sw       $zero, -0x24($v1)
.LE00844AC:
/* 388E7C E00844AC 2A220002 */  slti      $v0, $s1, 0x2
/* 388E80 E00844B0 1440000A */  bnez      $v0, .LE00844DC
/* 388E84 E00844B4 AC60FFD4 */   sw       $zero, -0x2C($v1)
/* 388E88 E00844B8 4600B0A1 */  cvt.d.s   $f2, $f22
/* 388E8C E00844BC 46321082 */  mul.d     $f2, $f2, $f18
/* 388E90 E00844C0 00000000 */  nop
/* 388E94 E00844C4 46000021 */  cvt.d.s   $f0, $f0
/* 388E98 E00844C8 46220003 */  div.d     $f0, $f0, $f2
/* 388E9C E00844CC 46200000 */  add.d     $f0, $f0, $f0
/* 388EA0 E00844D0 46200020 */  cvt.s.d   $f0, $f0
/* 388EA4 E00844D4 08021140 */  j         .LE0084500
/* 388EA8 E00844D8 E460FFDC */   swc1     $f0, -0x24($v1)
.LE00844DC:
/* 388EAC E00844DC 30E20001 */  andi      $v0, $a3, 0x1
/* 388EB0 E00844E0 3C01C000 */  lui       $at, (0xC0000000 >> 16)
/* 388EB4 E00844E4 4481E000 */  mtc1      $at, $f28
/* 388EB8 E00844E8 50400005 */  beql      $v0, $zero, .LE0084500
/* 388EBC E00844EC E47CFFDC */   swc1     $f28, -0x24($v1)
/* 388EC0 E00844F0 3C014000 */  lui       $at, (0x40000000 >> 16)
/* 388EC4 E00844F4 4481E000 */  mtc1      $at, $f28
/* 388EC8 E00844F8 00000000 */  nop
/* 388ECC E00844FC E47CFFDC */  swc1      $f28, -0x24($v1)
.LE0084500:
/* 388ED0 E0084500 46005021 */  cvt.d.s   $f0, $f10
/* 388ED4 E0084504 462C0002 */  mul.d     $f0, $f0, $f12
/* 388ED8 E0084508 00000000 */  nop
/* 388EDC E008450C C7A20040 */  lwc1      $f2, 0x40($sp)
/* 388EE0 E0084510 4602303C */  c.lt.s    $f6, $f2
/* 388EE4 E0084514 46200020 */  cvt.s.d   $f0, $f0
/* 388EE8 E0084518 E460FFD8 */  swc1      $f0, -0x28($v1)
/* 388EEC E008451C 46001021 */  cvt.d.s   $f0, $f2
/* 388EF0 E0084520 462C0002 */  mul.d     $f0, $f0, $f12
/* 388EF4 E0084524 00000000 */  nop
/* 388EF8 E0084528 4500000D */  bc1f      .LE0084560
/* 388EFC E008452C 2482002C */   addiu    $v0, $a0, 0x2C
/* 388F00 E0084530 4618103C */  c.lt.s    $f2, $f24
/* 388F04 E0084534 00000000 */  nop
/* 388F08 E0084538 45000003 */  bc1f      .LE0084548
/* 388F0C E008453C 00000000 */   nop
/* 388F10 E0084540 08021159 */  j         .LE0084564
/* 388F14 E0084544 46300080 */   add.d    $f2, $f0, $f16
.LE0084548:
/* 388F18 E0084548 4602C03C */  c.lt.s    $f24, $f2
/* 388F1C E008454C 00000000 */  nop
/* 388F20 E0084550 45020004 */  bc1fl     .LE0084564
/* 388F24 E0084554 46280080 */   add.d    $f2, $f0, $f8
/* 388F28 E0084558 08021159 */  j         .LE0084564
/* 388F2C E008455C 462E0080 */   add.d    $f2, $f0, $f14
.LE0084560:
/* 388F30 E0084560 46280080 */  add.d     $f2, $f0, $f8
.LE0084564:
/* 388F34 E0084564 46005021 */  cvt.d.s   $f0, $f10
/* 388F38 E0084568 462C0002 */  mul.d     $f0, $f0, $f12
/* 388F3C E008456C 00000000 */  nop
/* 388F40 E0084570 C7A40040 */  lwc1      $f4, 0x40($sp)
/* 388F44 E0084574 462010A0 */  cvt.s.d   $f2, $f2
/* 388F48 E0084578 E4420000 */  swc1      $f2, 0x0($v0)
/* 388F4C E008457C 4606203C */  c.lt.s    $f4, $f6
/* 388F50 E0084580 46200020 */  cvt.s.d   $f0, $f0
/* 388F54 E0084584 E460FFE4 */  swc1      $f0, -0x1C($v1)
/* 388F58 E0084588 46003021 */  cvt.d.s   $f0, $f6
/* 388F5C E008458C 462C0002 */  mul.d     $f0, $f0, $f12
/* 388F60 E0084590 00000000 */  nop
/* 388F64 E0084594 4500000D */  bc1f      .LE00845CC
/* 388F68 E0084598 24820034 */   addiu    $v0, $a0, 0x34
/* 388F6C E008459C 4618303C */  c.lt.s    $f6, $f24
/* 388F70 E00845A0 00000000 */  nop
/* 388F74 E00845A4 45000003 */  bc1f      .LE00845B4
/* 388F78 E00845A8 00000000 */   nop
/* 388F7C E00845AC 08021174 */  j         .LE00845D0
/* 388F80 E00845B0 46300000 */   add.d    $f0, $f0, $f16
.LE00845B4:
/* 388F84 E00845B4 4606C03C */  c.lt.s    $f24, $f6
/* 388F88 E00845B8 00000000 */  nop
/* 388F8C E00845BC 45020004 */  bc1fl     .LE00845D0
/* 388F90 E00845C0 46280000 */   add.d    $f0, $f0, $f8
/* 388F94 E00845C4 08021174 */  j         .LE00845D0
/* 388F98 E00845C8 462E0000 */   add.d    $f0, $f0, $f14
.LE00845CC:
/* 388F9C E00845CC 46280000 */  add.d     $f0, $f0, $f8
.LE00845D0:
/* 388FA0 E00845D0 46200020 */  cvt.s.d   $f0, $f0
/* 388FA4 E00845D4 E4400000 */  swc1      $f0, 0x0($v0)
/* 388FA8 E00845D8 240200FF */  addiu     $v0, $zero, 0xFF
/* 388FAC E00845DC AC620000 */  sw        $v0, 0x0($v1)
/* 388FB0 E00845E0 24630050 */  addiu     $v1, $v1, 0x50
/* 388FB4 E00845E4 24A50001 */  addiu     $a1, $a1, 0x1
/* 388FB8 E00845E8 00B1102A */  slt       $v0, $a1, $s1
/* 388FBC E00845EC 1440FF86 */  bnez      $v0, .LE0084408
/* 388FC0 E00845F0 24840050 */   addiu    $a0, $a0, 0x50
.LE00845F4:
/* 388FC4 E00845F4 24C60001 */  addiu     $a2, $a2, 0x1
/* 388FC8 E00845F8 00D3102A */  slt       $v0, $a2, $s3
/* 388FCC E00845FC 1440FF65 */  bnez      $v0, .LE0084394
/* 388FD0 E0084600 00000000 */   nop
.LE0084604:
/* 388FD4 E0084604 24E70001 */  addiu     $a3, $a3, 0x1
/* 388FD8 E0084608 00F2102A */  slt       $v0, $a3, $s2
/* 388FDC E008460C 1440FF4B */  bnez      $v0, .LE008433C
/* 388FE0 E0084610 00000000 */   nop
.LE0084614:
/* 388FE4 E0084614 0280102D */  daddu     $v0, $s4, $zero
/* 388FE8 E0084618 8FBF0084 */  lw        $ra, 0x84($sp)
/* 388FEC E008461C 8FB60080 */  lw        $s6, 0x80($sp)
/* 388FF0 E0084620 8FB5007C */  lw        $s5, 0x7C($sp)
/* 388FF4 E0084624 8FB40078 */  lw        $s4, 0x78($sp)
/* 388FF8 E0084628 8FB30074 */  lw        $s3, 0x74($sp)
/* 388FFC E008462C 8FB20070 */  lw        $s2, 0x70($sp)
/* 389000 E0084630 8FB1006C */  lw        $s1, 0x6C($sp)
/* 389004 E0084634 8FB00068 */  lw        $s0, 0x68($sp)
/* 389008 E0084638 D7BE00B0 */  ldc1      $f30, 0xB0($sp)
/* 38900C E008463C D7BC00A8 */  ldc1      $f28, 0xA8($sp)
/* 389010 E0084640 D7BA00A0 */  ldc1      $f26, 0xA0($sp)
/* 389014 E0084644 D7B80098 */  ldc1      $f24, 0x98($sp)
/* 389018 E0084648 D7B60090 */  ldc1      $f22, 0x90($sp)
/* 38901C E008464C D7B40088 */  ldc1      $f20, 0x88($sp)
/* 389020 E0084650 03E00008 */  jr        $ra
/* 389024 E0084654 27BD00B8 */   addiu    $sp, $sp, 0xB8

### DECOMPILED C INSTRUCTIONS:

EffectInstance* bombette_breaking_main(s32 type, s32 modelID, s32 treeIndex, f32 arg3, s32 arg4, s32 time) {
    EffectBlueprint bp;
    EffectBlueprint* bpPtr = &bp;
    EffectInstance* effect;
    s32 numParts;
    BombetteBreakingFXData* data;
    f32 centerX, centerY, centerZ;
    f32 sizeX, sizeY, sizeZ;
    s32 xParts, yParts, zParts;
    s32 iX, iY, iZ;
    f32 f20, f30, f40;

    bombette_breaking_get_model_center_and_size(modelID & 0xFFFF, &centerX, &centerY, &centerZ, &sizeX, &sizeY, &sizeZ);

    xParts = (sizeX * 0.0625f) + 1.0f;
    yParts = (sizeY * 0.0625f) + 1.0f;
    zParts = (sizeZ * 0.0625f) + 1.0f;

    f20 = (s32)sizeX % 16;
    f30 = (s32)sizeY % 16;
    f40 = (s32)sizeZ % 16;

    bp.unk_00 = 0;
    bp.init = bombette_breaking_init;
    bp.update = bombette_breaking_update;
    bp.renderWorld = bombette_breaking_render;
    bp.renderUI = NULL;
    bp.effectID = EFFECT_BOMBETTE_BREAKING;

    f20 *= 0.5;
    f30 *= 0.5;
    f40 *= 0.5;

    numParts = (xParts * yParts * zParts) + 1;
    effect = shim_create_effect_instance(bpPtr);
    effect->numParts = numParts;
    effect->data.bombetteBreaking = data = shim_general_heap_malloc(numParts * sizeof(*data));
    ASSERT(data != NULL);

    data->unk_04 = -sizeY * 0.5;
    data->timeLeft = time;
    data->unk_48 = 0;
    data->type = type;
    data->unk_38 = arg3;
    data->alpha = 255;
    data->treeIndex = treeIndex;
    data->unk_3C = 2.0f * arg3;
    data->center.x = centerX;
    data->center.y = centerY;
    data->center.z = centerZ;
    data->unk_40 = sizeY * 0.05;
    if (data->unk_40 < 1.0f) {
        data->unk_40 = 1.0f;
    }

    data++;
    for (iX = 0; iX < xParts; iX++) {
        centerX = f20 - (sizeX * 0.5) + (iX * 16.0f);
        for (iY = 0; iY < yParts; iY++) {
            centerY = f30 - (sizeY * 0.5) + (iY * 16.0f);
            for (iZ = 0; iZ < zParts; iZ++) {
                centerZ = f30 - (sizeZ * 0.5) + (iZ * 16.0f);

                data->center.x = data->unk_14.x = centerX;
                data->center.y = data->unk_14.y = centerY;
                data->center.z = data->unk_14.z = centerZ;

                if (sizeX < sizeZ) {
                    if (xParts >= 2) {
                        data->unk_20.x = 2.0 * (centerX / (sizeX * 0.5));
                    } else {
                        if (iZ & 1) {
                            data->unk_20.x = 2.0f;
                        } else {
                            data->unk_20.x = -2.0f;
                        }
                    }
                    data->unk_20.z = 0.0f;
                } else {
                    data->unk_20.x = 0.0f;
                    if (zParts >= 2) {
                        data->unk_20.z = 2.0 * (centerZ / (sizeZ * 0.5));
                    } else {
                        if (iX & 1) {
                            data->unk_20.z = 2.0f;
                        } else {
                            data->unk_20.z = -2.0f;
                        }
                    }
                }

                data->unk_20.y = centerY * 0.2;
                data->unk_2C.x = centerZ * 0.2 + (centerX < centerZ ? (centerZ < 0 ? -1.0 : (centerZ > 0 ? 1.0 : 0.0)) : 0.0);
                data->unk_2C.y = centerY * 0.2;
                data->unk_2C.z = centerX * 0.2 + (centerZ < centerX ? (centerX < 0 ? -1.0 : (centerX > 0 ? 1.0 : 0.0)) : 0.0);

                data->alpha = 255;
                data++;
            }
        }
    }
    return effect;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel func_80219188_59F868
/* 465618 80219188 27BDFFB8 */  addiu     $sp, $sp, -0x48
.L8021918C_59F86C:
/* 46561C 8021918C AFBF002C */  sw        $ra, 0x2C($sp)
glabel func_80219190_5CF820
/* 465620 80219190 AFB20028 */  sw        $s2, 0x28($sp)
.L80219194:
/* 465624 80219194 AFB10024 */  sw        $s1, 0x24($sp)
glabel func_80219198
/* 465628 80219198 AFB00020 */  sw        $s0, 0x20($sp)
/* 46562C 8021919C F7B80040 */  sdc1      $f24, 0x40($sp)
D_802191A0:
/* 465630 802191A0 F7B60038 */  sdc1      $f22, 0x38($sp)
/* 465634 802191A4 F7B40030 */  sdc1      $f20, 0x30($sp)
/* 465638 802191A8 8C840148 */  lw        $a0, 0x148($a0)
D_802191AC:
/* 46563C 802191AC 0C09A75B */  jal       get_actor
.L802191B0:
/* 465640 802191B0 00A0802D */   daddu    $s0, $a1, $zero
.L802191B4_59F894:
/* 465644 802191B4 0040882D */  daddu     $s1, $v0, $zero
/* 465648 802191B8 1200003D */  beqz      $s0, .L802192B0_59F990
.L802191BC:
/* 46564C 802191BC 2632000C */   addiu    $s2, $s1, 0xC
glabel b_area_sam2_sam_02b_UnkModelStuff_func1
/* 465650 802191C0 0C00AB39 */  jal       heap_malloc
/* 465654 802191C4 24040020 */   addiu    $a0, $zero, 0x20
/* 465658 802191C8 0040802D */  daddu     $s0, $v0, $zero
.L802191CC_59F8AC:
/* 46565C 802191CC 24020001 */  addiu     $v0, $zero, 0x1
D_802191D0_59F8B0:
/* 465660 802191D0 26250144 */  addiu     $a1, $s1, 0x144
.L802191D4:
/* 465664 802191D4 26260148 */  addiu     $a2, $s1, 0x148
.L802191D8:
/* 465668 802191D8 AE300094 */  sw        $s0, 0x94($s1)
/* 46566C 802191DC AE020004 */  sw        $v0, 0x4($s0)
D_802191E0:
/* 465670 802191E0 AE000008 */  sw        $zero, 0x8($s0)
D_802191E4_59F8C4:
/* 465674 802191E4 AE02000C */  sw        $v0, 0xC($s0)
glabel func_802191E8
/* 465678 802191E8 AE000010 */  sw        $zero, 0x10($s0)
/* 46567C 802191EC 82230210 */  lb        $v1, 0x210($s1)
.L802191F0:
/* 465680 802191F0 2402000A */  addiu     $v0, $zero, 0xA
D_802191F4_59F8D4:
/* 465684 802191F4 10620005 */  beq       $v1, $v0, .L8021920C
/* 465688 802191F8 2627014C */   addiu    $a3, $s1, 0x14C
D_802191FC:
/* 46568C 802191FC 3C013F80 */  lui       $at, (0x3F800000 >> 16)
.L80219200:
/* 465690 80219200 44810000 */  mtc1      $at, $f0
D_80219204_59F8E4:
/* 465694 80219204 08086488 */  j         .L80219220_59F900
glabel dup3_b_area_flo_GetSelectedMoveID
/* 465698 80219208 E7A00010 */   swc1     $f0, 0x10($sp)
.L8021920C:
/* 46569C 8021920C 3C013ECC */  lui       $at, (0x3ECCCCCD >> 16)
D_80219210:
/* 4656A0 80219210 3421CCCD */  ori       $at, $at, (0x3ECCCCCD & 0xFFFF)
.L80219214:
/* 4656A4 80219214 44810000 */  mtc1      $at, $f0
glabel dup_b_area_pra_GetSelectedMoveID
/* 4656A8 80219218 00000000 */  nop
.L8021921C:
/* 4656AC 8021921C E7A00010 */  swc1      $f0, 0x10($sp)
.L80219220_59F900:
/* 4656B0 80219220 24020005 */  addiu     $v0, $zero, 0x5
D_80219224:
/* 4656B4 80219224 AFA20014 */  sw        $v0, 0x14($sp)
/* 4656B8 80219228 AFA00018 */  sw        $zero, 0x18($sp)
/* 4656BC 8021922C 8CA50000 */  lw        $a1, 0x0($a1)
glabel func_80219230_59F910
/* 4656C0 80219230 8CC60000 */  lw        $a2, 0x0($a2)
glabel func_80219234
/* 4656C4 80219234 8CE70000 */  lw        $a3, 0x0($a3)
D_80219238_59F918:
/* 4656C8 80219238 0C01C8EC */  jal       fx_static_status
.L8021923C:
/* 4656CC 8021923C 0000202D */   daddu    $a0, $zero, $zero
/* 4656D0 80219240 26250144 */  addiu     $a1, $s1, 0x144
glabel dup5_b_area_pra_SetAbsoluteStatusOffsets
/* 4656D4 80219244 AE020014 */  sw        $v0, 0x14($s0)
D_80219248:
/* 4656D8 80219248 82220210 */  lb        $v0, 0x210($s1)
/* 4656DC 8021924C 2403000A */  addiu     $v1, $zero, 0xA
glabel func_80219250
/* 4656E0 80219250 10430005 */  beq       $v0, $v1, .L80219268_59F948
.L80219254_59F934:
/* 4656E4 80219254 2627014C */   addiu    $a3, $s1, 0x14C
/* 4656E8 80219258 3C013F80 */  lui       $at, (0x3F800000 >> 16)
.L8021925C:
/* 4656EC 8021925C 44810000 */  mtc1      $at, $f0
/* 4656F0 80219260 0808649F */  j         .L8021927C
.L80219264:
/* 4656F4 80219264 E7A00010 */   swc1     $f0, 0x10($sp)
.L80219268_59F948:
/* 4656F8 80219268 3C013ECC */  lui       $at, (0x3ECCCCCD >> 16)
.L8021926C:
/* 4656FC 8021926C 3421CCCD */  ori       $at, $at, (0x3ECCCCCD & 0xFFFF)
D_80219270:
/* 465700 80219270 44810000 */  mtc1      $at, $f0
.L80219274:
/* 465704 80219274 00000000 */  nop
/* 465708 80219278 E7A00010 */  swc1      $f0, 0x10($sp)
.L8021927C:
/* 46570C 8021927C 24020005 */  addiu     $v0, $zero, 0x5
.L80219280:
/* 465710 80219280 AFA20014 */  sw        $v0, 0x14($sp)
/* 465714 80219284 AFA00018 */  sw        $zero, 0x18($sp)
D_80219288_59F968:
/* 465718 80219288 8CA50000 */  lw        $a1, 0x0($a1)
.L8021928C:
/* 46571C 8021928C 3C06C47A */  lui       $a2, (0xC47A0000 >> 16)
/* 465720 80219290 8CE70000 */  lw        $a3, 0x0($a3)
/* 465724 80219294 0C01C8EC */  jal       fx_static_status
.L80219298:
/* 465728 80219298 24040001 */   addiu    $a0, $zero, 0x1
D_8021929C:
/* 46572C 8021929C AE020018 */  sw        $v0, 0x18($s0)
/* 465730 802192A0 24020001 */  addiu     $v0, $zero, 0x1
/* 465734 802192A4 AE020000 */  sw        $v0, 0x0($s0)
/* 465738 802192A8 82220210 */  lb        $v0, 0x210($s1)
/* 46573C 802192AC AE02001C */  sw        $v0, 0x1C($s0)
.L802192B0_59F990:
/* 465740 802192B0 8E500088 */  lw        $s0, 0x88($s2)
/* 465744 802192B4 8E020000 */  lw        $v0, 0x0($s0)
.L802192B8:
/* 465748 802192B8 104000C9 */  beqz      $v0, .L802195E0_59FCC0
/* 46574C 802192BC 24020002 */   addiu    $v0, $zero, 0x2
D_802192C0:
/* 465750 802192C0 8E020004 */  lw        $v0, 0x4($s0)
.L802192C4:
/* 465754 802192C4 1040000D */  beqz      $v0, dup3_b_area_kpa2_FadeBackgroundToBlack
/* 465758 802192C8 24020008 */   addiu    $v0, $zero, 0x8
.L802192CC:
/* 46575C 802192CC 82230210 */  lb        $v1, 0x210($s1)
D_802192D0_59F9B0:
/* 465760 802192D0 1062000A */  beq       $v1, $v0, dup3_b_area_kpa2_FadeBackgroundToBlack
.L802192D4:
/* 465764 802192D4 00000000 */   nop
.L802192D8_59F9B8:
/* 465768 802192D8 8E020008 */  lw        $v0, 0x8($s0)
.L802192DC:
/* 46576C 802192DC 2442000F */  addiu     $v0, $v0, 0xF
D_802192E0:
/* 465770 802192E0 44826000 */  mtc1      $v0, $f12
/* 465774 802192E4 00000000 */  nop
/* 465778 802192E8 46806320 */  cvt.s.w   $f12, $f12
.L802192EC_59F9CC:
/* 46577C 802192EC 0C00A6C9 */  jal       clamp_angle
/* 465780 802192F0 AE020008 */   sw       $v0, 0x8($s0)
D_802192F4:
/* 465784 802192F4 4600018D */  trunc.w.s $f6, $f0
.L802192F8:
/* 465788 802192F8 E6060008 */  swc1      $f6, 0x8($s0)
glabel dup3_b_area_kpa2_FadeBackgroundToBlack
/* 46578C 802192FC 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
glabel dup3_b_area_flo_StartRumbleWithParams
/* 465790 80219300 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
glabel b_area_pra3_duplighost_UnkWattEffectFunc2
/* 465794 80219304 44810000 */  mtc1      $at, $f0
glabel func_80219308_59F9E8
/* 465798 80219308 C60C0008 */  lwc1      $f12, 0x8($s0)
D_8021930C:
/* 46579C 8021930C 46806320 */  cvt.s.w   $f12, $f12
glabel dup4_b_area_pra_StartRumbleWithParams
/* 4657A0 80219310 46006302 */  mul.s     $f12, $f12, $f0
/* 4657A4 80219314 00000000 */  nop
.L80219318:
/* 4657A8 80219318 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
D_8021931C_59F9FC:
/* 4657AC 8021931C 44810000 */  mtc1      $at, $f0
.L80219320:
/* 4657B0 80219320 0C00A85B */  jal       sin_rad
/* 4657B4 80219324 46006303 */   div.s    $f12, $f12, $f0
/* 4657B8 80219328 3C014040 */  lui       $at, (0x40400000 >> 16)
/* 4657BC 8021932C 44811000 */  mtc1      $at, $f2
D_80219330:
/* 4657C0 80219330 00000000 */  nop
.L80219334:
/* 4657C4 80219334 46020002 */  mul.s     $f0, $f0, $f2
D_80219338_59FA18:
/* 4657C8 80219338 00000000 */  nop
/* 4657CC 8021933C 86220152 */  lh        $v0, 0x152($s1)
/* 4657D0 80219340 44821000 */  mtc1      $v0, $f2
D_80219344:
/* 4657D4 80219344 00000000 */  nop
.L80219348:
/* 4657D8 80219348 468010A0 */  cvt.s.w   $f2, $f2
/* 4657DC 8021934C 4600018D */  trunc.w.s $f6, $f0
.L80219350:
/* 4657E0 80219350 44033000 */  mfc1      $v1, $f6
/* 4657E4 80219354 00000000 */  nop
glabel b_area_pra3_duplighost_UnkWattEffectFunc3
/* 4657E8 80219358 00031600 */  sll       $v0, $v1, 24
/* 4657EC 8021935C C6200148 */  lwc1      $f0, 0x148($s1)
glabel func_80219360_59FA40
/* 4657F0 80219360 00021603 */  sra       $v0, $v0, 24
/* 4657F4 80219364 A223019A */  sb        $v1, 0x19A($s1)
glabel dup4_b_area_pra_UnkFunc52
/* 4657F8 80219368 46020000 */  add.s     $f0, $f0, $f2
.L8021936C:
/* 4657FC 8021936C 44821000 */  mtc1      $v0, $f2
/* 465800 80219370 00000000 */  nop
/* 465804 80219374 468010A0 */  cvt.s.w   $f2, $f2
.L80219378:
/* 465808 80219378 86220150 */  lh        $v0, 0x150($s1)
D_8021937C_59FA5C:
/* 46580C 8021937C 46020000 */  add.s     $f0, $f0, $f2
D_80219380:
/* 465810 80219380 2403000A */  addiu     $v1, $zero, 0xA
.L80219384:
/* 465814 80219384 44821000 */  mtc1      $v0, $f2
.L80219388:
/* 465818 80219388 00000000 */  nop
.L8021938C:
/* 46581C 8021938C 468010A0 */  cvt.s.w   $f2, $f2
D_80219390:
/* 465820 80219390 46000121 */  cvt.d.s   $f4, $f0
glabel dup3_b_area_kpa2_UnfadeBackgroundToBlack
/* 465824 80219394 C6200144 */  lwc1      $f0, 0x144($s1)
/* 465828 80219398 82220210 */  lb        $v0, 0x210($s1)
/* 46582C 8021939C 46020580 */  add.s     $f22, $f0, $f2
.L802193A0:
/* 465830 802193A0 3C018023 */  lui       $at, %hi(D_80232B38_6848B8)
glabel func_802193A4
/* 465834 802193A4 D4202B38 */  ldc1      $f0, %lo(D_80232B38_6848B8)($at)
/* 465838 802193A8 50430006 */  beql      $v0, $v1, .L802193C4_59FAA4
.L802193AC:
/* 46583C 802193AC 46202000 */   add.d    $f0, $f4, $f0
.L802193B0:
/* 465840 802193B0 3C014028 */  lui       $at, (0x40280000 >> 16)
D_802193B4_59FA94:
/* 465844 802193B4 44810800 */  mtc1      $at, $f1
glabel b_area_sam2_sam_02b_Set80071270_0_16
/* 465848 802193B8 44800000 */  mtc1      $zero, $f0
/* 46584C 802193BC 00000000 */  nop
.L802193C0_59FAA0:
/* 465850 802193C0 46202000 */  add.d     $f0, $f4, $f0
.L802193C4_59FAA4:
/* 465854 802193C4 46200520 */  cvt.s.d   $f20, $f0
/* 465858 802193C8 86220154 */  lh        $v0, 0x154($s1)
/* 46585C 802193CC C620014C */  lwc1      $f0, 0x14C($s1)
D_802193D0_59FAB0:
/* 465860 802193D0 44821000 */  mtc1      $v0, $f2
glabel func_802193D4_6BCF64
/* 465864 802193D4 00000000 */  nop
D_802193D8:
/* 465868 802193D8 468010A0 */  cvt.s.w   $f2, $f2
glabel b_area_sam2_sam_02b_UnkFloatFunc2
/* 46586C 802193DC 8E02000C */  lw        $v0, 0xC($s0)
.L802193E0_59FAC0:
/* 465870 802193E0 10400059 */  beqz      $v0, .L80219548_59FC28
.L802193E4:
/* 465874 802193E4 46020600 */   add.s    $f24, $f0, $f2
D_802193E8_59FAC8:
/* 465878 802193E8 8E030010 */  lw        $v1, 0x10($s0)
.L802193EC:
/* 46587C 802193EC 10600005 */  beqz      $v1, .L80219404
glabel b_area_pra3_duplighost_UnkWattEffectFunc5
/* 465880 802193F0 24020001 */   addiu    $v0, $zero, 0x1
D_802193F4:
/* 465884 802193F4 1062002A */  beq       $v1, $v0, dup3_b_area_flo2_CosInterpMinMax
/* 465888 802193F8 00000000 */   nop
.L802193FC:
/* 46588C 802193FC 08086560 */  j         .L80219580
.L80219400:
/* 465890 80219400 00000000 */   nop
.L80219404:
/* 465894 80219404 8E020014 */  lw        $v0, 0x14($s0)
.L80219408:
/* 465898 80219408 14400016 */  bnez      $v0, D_80219464_59FB44
.L8021940C:
/* 46589C 8021940C 2402000A */   addiu    $v0, $zero, 0xA
/* 4658A0 80219410 82230210 */  lb        $v1, 0x210($s1)
glabel dup3_b_area_kpa2_RemoveChillOut
/* 4658A4 80219414 10620005 */  beq       $v1, $v0, b_area_pra_GetBootsHammerLevel
.L80219418:
/* 4658A8 80219418 00000000 */   nop
glabel func_8021941C
/* 4658AC 8021941C 3C013F80 */  lui       $at, (0x3F800000 >> 16)
glabel func_80219420_5B28D0
/* 4658B0 80219420 44810000 */  mtc1      $at, $f0
/* 4658B4 80219424 08086510 */  j         D_80219440_59FB20
glabel func_80219428_6BCFB8
/* 4658B8 80219428 E7A00010 */   swc1     $f0, 0x10($sp)
glabel b_area_pra_GetBootsHammerLevel
/* 4658BC 8021942C 3C013ECC */  lui       $at, (0x3ECCCCCD >> 16)
/* 4658C0 80219430 3421CCCD */  ori       $at, $at, (0x3ECCCCCD & 0xFFFF)
/* 4658C4 80219434 44810000 */  mtc1      $at, $f0
/* 4658C8 80219438 00000000 */  nop
glabel b_area_pra3_duplighost_UnkBackgroundFunc3
/* 4658CC 8021943C E7A00010 */  swc1      $f0, 0x10($sp)
D_80219440_59FB20:
/* 4658D0 80219440 0000202D */  daddu     $a0, $zero, $zero
glabel func_80219444_6A0644
/* 4658D4 80219444 4405B000 */  mfc1      $a1, $f22
/* 4658D8 80219448 4406A000 */  mfc1      $a2, $f20
/* 4658DC 8021944C 4407C000 */  mfc1      $a3, $f24
.L80219450:
/* 4658E0 80219450 24020005 */  addiu     $v0, $zero, 0x5
.L80219454_59FB34:
/* 4658E4 80219454 AFA20014 */  sw        $v0, 0x14($sp)
/* 4658E8 80219458 0C01C8EC */  jal       fx_static_status
D_8021945C_59FB3C:
/* 4658EC 8021945C AFA00018 */   sw       $zero, 0x18($sp)
.L80219460:
/* 4658F0 80219460 AE020014 */  sw        $v0, 0x14($s0)
D_80219464_59FB44:
/* 4658F4 80219464 8E030018 */  lw        $v1, 0x18($s0)
.L80219468:
/* 4658F8 80219468 10600005 */  beqz      $v1, b_area_pra3_duplighost_SetBackgroundAlpha
/* 4658FC 8021946C 00000000 */   nop
.L80219470:
/* 465900 80219470 8C620000 */  lw        $v0, 0x0($v1)
glabel func_80219474_6BD004
/* 465904 80219474 34420010 */  ori       $v0, $v0, 0x10
/* 465908 80219478 AC620000 */  sw        $v0, 0x0($v1)
.L8021947C:
/* 46590C 8021947C AE000018 */  sw        $zero, 0x18($s0)
glabel b_area_pra3_duplighost_SetBackgroundAlpha
/* 465910 80219480 8E020014 */  lw        $v0, 0x14($s0)
/* 465914 80219484 8C42000C */  lw        $v0, 0xC($v0)
/* 465918 80219488 E4560004 */  swc1      $f22, 0x4($v0)
glabel b_area_pra_UnkBattleFunc5
/* 46591C 8021948C 8E020014 */  lw        $v0, 0x14($s0)
glabel func_80219490
/* 465920 80219490 8C42000C */  lw        $v0, 0xC($v0)
D_80219494_59FB74:
/* 465924 80219494 E4540008 */  swc1      $f20, 0x8($v0)
/* 465928 80219498 0808654F */  j         .L8021953C_59FC1C
D_8021949C:
/* 46592C 8021949C 8E020014 */   lw       $v0, 0x14($s0)
glabel dup3_b_area_flo2_CosInterpMinMax
/* 465930 802194A0 8E030014 */  lw        $v1, 0x14($s0)
/* 465934 802194A4 10600005 */  beqz      $v1, .L802194BC_59FB9C
/* 465938 802194A8 00000000 */   nop
/* 46593C 802194AC 8C620000 */  lw        $v0, 0x0($v1)
/* 465940 802194B0 34420010 */  ori       $v0, $v0, 0x10
/* 465944 802194B4 AC620000 */  sw        $v0, 0x0($v1)
glabel b_area_pra3_duplighost_GetPartnerAndLevel
/* 465948 802194B8 AE000014 */  sw        $zero, 0x14($s0)
.L802194BC_59FB9C:
/* 46594C 802194BC 8E020018 */  lw        $v0, 0x18($s0)
glabel func_802194C0_6BD050
/* 465950 802194C0 14400018 */  bnez      $v0, b_area_pra3_duplighost_CopyPriority
D_802194C4_59FBA4:
/* 465954 802194C4 00000000 */   nop
/* 465958 802194C8 82230210 */  lb        $v1, 0x210($s1)
/* 46595C 802194CC 2402000A */  addiu     $v0, $zero, 0xA
.L802194D0:
/* 465960 802194D0 10620005 */  beq       $v1, $v0, .L802194E8_59FBC8
D_802194D4_59FBB4:
/* 465964 802194D4 00000000 */   nop
/* 465968 802194D8 3C013F80 */  lui       $at, (0x3F800000 >> 16)
.L802194DC:
/* 46596C 802194DC 44810000 */  mtc1      $at, $f0
glabel func_802194E0
/* 465970 802194E0 0808653F */  j         .L802194FC_59FBDC
/* 465974 802194E4 E7A00010 */   swc1     $f0, 0x10($sp)
.L802194E8_59FBC8:
/* 465978 802194E8 3C013ECC */  lui       $at, (0x3ECCCCCD >> 16)
/* 46597C 802194EC 3421CCCD */  ori       $at, $at, (0x3ECCCCCD & 0xFFFF)
.L802194F0:
/* 465980 802194F0 44810000 */  mtc1      $at, $f0
/* 465984 802194F4 00000000 */  nop
/* 465988 802194F8 E7A00010 */  swc1      $f0, 0x10($sp)
.L802194FC_59FBDC:
/* 46598C 802194FC 24040001 */  addiu     $a0, $zero, 0x1
D_80219500_59FBE0:
/* 465990 80219500 4405B000 */  mfc1      $a1, $f22
D_80219504_59FBE4:
/* 465994 80219504 4406A000 */  mfc1      $a2, $f20
/* 465998 80219508 4407C000 */  mfc1      $a3, $f24
glabel b_area_kpa3_UnkBackgroundFunc3
/* 46599C 8021950C 24020005 */  addiu     $v0, $zero, 0x5
.L80219510:
/* 4659A0 80219510 AFA20014 */  sw        $v0, 0x14($sp)
/* 4659A4 80219514 0C01C8EC */  jal       fx_static_status
/* 4659A8 80219518 AFA00018 */   sw       $zero, 0x18($sp)
/* 4659AC 8021951C AE020018 */  sw        $v0, 0x18($s0)
glabel dup2_b_area_tik2_UnkFunc56
/* 4659B0 80219520 8E020018 */  lw        $v0, 0x18($s0)
glabel b_area_pra3_duplighost_CopyPriority
/* 4659B4 80219524 8C42000C */  lw        $v0, 0xC($v0)
D_80219528_59FC08:
/* 4659B8 80219528 E4560004 */  swc1      $f22, 0x4($v0)
D_8021952C_59FC0C:
/* 4659BC 8021952C 8E020018 */  lw        $v0, 0x18($s0)
glabel func_80219530
/* 4659C0 80219530 8C42000C */  lw        $v0, 0xC($v0)
.L80219534:
/* 4659C4 80219534 E4540008 */  swc1      $f20, 0x8($v0)
/* 4659C8 80219538 8E020018 */  lw        $v0, 0x18($s0)
.L8021953C_59FC1C:
/* 4659CC 8021953C 8C42000C */  lw        $v0, 0xC($v0)
glabel b_area_tik3_UpdateTexturePanSmooth
/* 4659D0 80219540 08086560 */  j         .L80219580
.L80219544:
/* 4659D4 80219544 E458000C */   swc1     $f24, 0xC($v0)
.L80219548_59FC28:
/* 4659D8 80219548 8E030014 */  lw        $v1, 0x14($s0)
/* 4659DC 8021954C 10600005 */  beqz      $v1, .L80219564_59FC44
glabel b_area_kpa3_SetBackgroundAlpha
/* 4659E0 80219550 00000000 */   nop
/* 4659E4 80219554 8C620000 */  lw        $v0, 0x0($v1)
/* 4659E8 80219558 34420010 */  ori       $v0, $v0, 0x10
.L8021955C:
/* 4659EC 8021955C AC620000 */  sw        $v0, 0x0($v1)
/* 4659F0 80219560 AE000014 */  sw        $zero, 0x14($s0)
.L80219564_59FC44:
/* 4659F4 80219564 8E030018 */  lw        $v1, 0x18($s0)
/* 4659F8 80219568 10600005 */  beqz      $v1, .L80219580
/* 4659FC 8021956C 00000000 */   nop
.L80219570:
/* 465A00 80219570 8C620000 */  lw        $v0, 0x0($v1)
/* 465A04 80219574 34420010 */  ori       $v0, $v0, 0x10
glabel .L80219578
/* 465A08 80219578 AC620000 */  sw        $v0, 0x0($v1)
.L8021957C_59FC5C:
/* 465A0C 8021957C AE000018 */  sw        $zero, 0x18($s0)
.L80219580:
/* 465A10 80219580 82230210 */  lb        $v1, 0x210($s1)
glabel .L80219584
/* 465A14 80219584 8E02001C */  lw        $v0, 0x1C($s0)
glabel func_80219588_6BD118
/* 465A18 80219588 10430014 */  beq       $v0, $v1, .L802195DC_59FCBC
/* 465A1C 8021958C 0000102D */   daddu    $v0, $zero, $zero
glabel .L80219590_59FC70
/* 465A20 80219590 8E02000C */  lw        $v0, 0xC($s0)
/* 465A24 80219594 10400011 */  beqz      $v0, .L802195DC_59FCBC
/* 465A28 80219598 0000102D */   daddu    $v0, $zero, $zero
glabel .L8021959C
/* 465A2C 8021959C 8E030014 */  lw        $v1, 0x14($s0)
glabel func_802195A0_5B2A50
/* 465A30 802195A0 10600005 */  beqz      $v1, .L802195B8
.L802195A4:
/* 465A34 802195A4 00000000 */   nop
glabel .L802195A8
/* 465A38 802195A8 8C620000 */  lw        $v0, 0x0($v1)
/* 465A3C 802195AC 34420010 */  ori       $v0, $v0, 0x10
/* 465A40 802195B0 AC620000 */  sw        $v0, 0x0($v1)
glabel .L802195B4
/* 465A44 802195B4 AE000014 */  sw        $zero, 0x14($s0)
.L802195B8:
/* 465A48 802195B8 8E030018 */  lw        $v1, 0x18($s0)
.L802195BC:
/* 465A4C 802195BC 10600005 */  beqz      $v1, .L802195D4
glabel .L802195C0
/* 465A50 802195C0 00000000 */   nop
/* 465A54 802195C4 8C620000 */  lw        $v0, 0x0($v1)
/* 465A58 802195C8 34420010 */  ori       $v0, $v0, 0x10
glabel .L802195CC
/* 465A5C 802195CC AC620000 */  sw        $v0, 0x0($v1)
.L802195D0:
/* 465A60 802195D0 AE000018 */  sw        $zero, 0x18($s0)
glabel .L802195D4
/* 465A64 802195D4 82230210 */  lb        $v1, 0x210($s1)
D_802195D8:
/* 465A68 802195D8 0000102D */  daddu     $v0, $zero, $zero
.L802195DC_59FCBC:
/* 465A6C 802195DC AE03001C */  sw        $v1, 0x1C($s0)
.L802195E0_59FCC0:
/* 465A70 802195E0 8FBF002C */  lw        $ra, 0x2C($sp)
/* 465A74 802195E4 8FB20028 */  lw        $s2, 0x28($sp)
.L802195E8:
/* 465A78 802195E8 8FB10024 */  lw        $s1, 0x24($sp)
.L802195EC:
/* 465A7C 802195EC 8FB00020 */  lw        $s0, 0x20($sp)
glabel b_area_pra3_swoopula_SetAbsoluteStatusOffsets
/* 465A80 802195F0 D7B80040 */  ldc1      $f24, 0x40($sp)
glabel func_802195F4_6BD184
/* 465A84 802195F4 D7B60038 */  ldc1      $f22, 0x38($sp)
/* 465A88 802195F8 D7B40030 */  ldc1      $f20, 0x30($sp)
/* 465A8C 802195FC 03E00008 */  jr        $ra
/* 465A90 80219600 27BD0048 */   addiu    $sp, $sp, 0x48

### DECOMPILED C INSTRUCTIONS:

API_CALLABLE(func_80219188_465618) {
    WattEffectData* wattEffectData;
    f32 x, y, z;
    Actor* actor = get_actor(script->owner1.enemyID);
    ActorState* state = &actor->state;

    if (isInitialCall) {
        wattEffectData = heap_malloc(sizeof(*wattEffectData));
        actor->state.varTablePtr[3] = wattEffectData;
        wattEffectData->unk_04 = TRUE;
        wattEffectData->angle = 0;
        wattEffectData->unk_0C = TRUE;
        wattEffectData->unk_10 = 0;
        wattEffectData->effect1 = fx_static_status(0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z, (actor->debuff != STATUS_KEY_SHRINK) ? 1.0f : 0.4f, 5, 0);
        wattEffectData->effect2 = fx_static_status(1, actor->currentPos.x, NPC_DISPOSE_POS_Y, actor->currentPos.z, (actor->debuff != STATUS_KEY_SHRINK) ? 1.0f : 0.4f, 5, 0);
        wattEffectData->flags = TRUE;
        wattEffectData->debuff = actor->debuff;
    }

    wattEffectData = state->varTablePtr[3];
    if (wattEffectData->flags) {
        if (wattEffectData->unk_04 && actor->debuff != STATUS_KEY_STOP) {
            wattEffectData->angle += 15;
            wattEffectData->angle = clamp_angle(wattEffectData->angle);
        }
        actor->verticalRenderOffset = sin_rad(DEG_TO_RAD(wattEffectData->angle)) * 3.0f;

        x = actor->currentPos.x + actor->headOffset.x;
        y = actor->currentPos.y + actor->headOffset.y + actor->verticalRenderOffset + (actor->debuff != STATUS_KEY_SHRINK ? 12.0 : 4.800000000000001); // 4.8 doesn't match
        z = actor->currentPos.z + actor->headOffset.z;
        if (wattEffectData->unk_0C) {
            switch (wattEffectData->unk_10) {
                case 0:
                    if (wattEffectData->effect1 == NULL) {
                        wattEffectData->effect1 = fx_static_status(0, x, y, z, (actor->debuff != STATUS_KEY_SHRINK) ? 1.0f : 0.4f, 5, 0);
                    }

                    if (wattEffectData->effect2 != NULL) {
                        wattEffectData->effect2->flags |= FX_INSTANCE_FLAG_DISMISS;
                        wattEffectData->effect2 = NULL;
                    }
                    wattEffectData->effect1->data.staticStatus->pos.x = x;
                    wattEffectData->effect1->data.staticStatus->pos.y = y;
                    wattEffectData->effect1->data.staticStatus->pos.z = z;
                    break;
                case 1:
                    if (wattEffectData->effect1 != NULL) {
                        wattEffectData->effect1->flags |= FX_INSTANCE_FLAG_DISMISS;
                        wattEffectData->effect1 = NULL;
                    }
                    if (wattEffectData->effect2 == NULL) {
                        wattEffectData->effect2 = fx_static_status(1, x, y, z, (actor->debuff != STATUS_KEY_SHRINK) ? 1.0f : 0.4f, 5, 0);

                    }
                    wattEffectData->effect2->data.staticStatus->pos.x = x;
                    wattEffectData->effect2->data.staticStatus->pos.y = y;
                    wattEffectData->effect2->data.staticStatus->pos.z = z;
                    break;
            }
        } else {
            if (wattEffectData->effect1 != NULL) {
                wattEffectData->effect1->flags |= FX_INSTANCE_FLAG_DISMISS;
                wattEffectData->effect1 = NULL;
            }
            if (wattEffectData->effect2 != NULL) {
                wattEffectData->effect2->flags |= FX_INSTANCE_FLAG_DISMISS;
                wattEffectData->effect2 = NULL;
            }
        }
        if (wattEffectData->debuff != actor->debuff && wattEffectData->unk_0C) {
            if (wattEffectData->effect1 != NULL) {
                wattEffectData->effect1->flags |= FX_INSTANCE_FLAG_DISMISS;
                wattEffectData->effect1 = NULL;
            }
            if (wattEffectData->effect2 != NULL) {
                wattEffectData->effect2->flags |= FX_INSTANCE_FLAG_DISMISS;
                wattEffectData->effect2 = NULL;
            }
        }
        wattEffectData->debuff = actor->debuff;
        return ApiStatus_BLOCK;
    }
    return ApiStatus_DONE2;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel load_hit_data
/* 3663C 8005B23C 27BDFF90 */  addiu     $sp, $sp, -0x70
/* 36640 8005B240 AFB60038 */  sw        $s6, 0x38($sp)
/* 36644 8005B244 0000B02D */  daddu     $s6, $zero, $zero
/* 36648 8005B248 AFBE0040 */  sw        $fp, 0x40($sp)
/* 3664C 8005B24C 02C0F02D */  daddu     $fp, $s6, $zero
/* 36650 8005B250 AFBF0044 */  sw        $ra, 0x44($sp)
/* 36654 8005B254 AFB7003C */  sw        $s7, 0x3C($sp)
/* 36658 8005B258 AFB50034 */  sw        $s5, 0x34($sp)
/* 3665C 8005B25C AFB40030 */  sw        $s4, 0x30($sp)
/* 36660 8005B260 AFB3002C */  sw        $s3, 0x2C($sp)
/* 36664 8005B264 AFB20028 */  sw        $s2, 0x28($sp)
/* 36668 8005B268 AFB10024 */  sw        $s1, 0x24($sp)
/* 3666C 8005B26C AFB00020 */  sw        $s0, 0x20($sp)
/* 36670 8005B270 F7BC0068 */  sdc1      $f28, 0x68($sp)
/* 36674 8005B274 F7BA0060 */  sdc1      $f26, 0x60($sp)
/* 36678 8005B278 F7B80058 */  sdc1      $f24, 0x58($sp)
/* 3667C 8005B27C F7B60050 */  sdc1      $f22, 0x50($sp)
/* 36680 8005B280 F7B40048 */  sdc1      $f20, 0x48($sp)
/* 36684 8005B284 AFA40070 */  sw        $a0, 0x70($sp)
/* 36688 8005B288 0C016AFA */  jal       get_current_map_settings
/* 3668C 8005B28C AFA50074 */   sw       $a1, 0x74($sp)
/* 36690 8005B290 8FA80070 */  lw        $t0, 0x70($sp)
/* 36694 8005B294 11000006 */  beqz      $t0, .L8005B2B0
/* 36698 8005B298 0040182D */   daddu    $v1, $v0, $zero
/* 3669C 8005B29C 24020001 */  addiu     $v0, $zero, 0x1
/* 366A0 8005B2A0 1102000B */  beq       $t0, $v0, .L8005B2D0
/* 366A4 8005B2A4 0000A02D */   daddu    $s4, $zero, $zero
/* 366A8 8005B2A8 08016CBC */  j         .L8005B2F0
/* 366AC 8005B2AC 00000000 */   nop
.L8005B2B0:
/* 366B0 8005B2B0 8C620004 */  lw        $v0, 0x4($v1)
/* 366B4 8005B2B4 10400121 */  beqz      $v0, .L8005B73C
/* 366B8 8005B2B8 00000000 */   nop
/* 366BC 8005B2BC 8FA80074 */  lw        $t0, 0x74($sp)
/* 366C0 8005B2C0 3C1E800B */  lui       $fp, %hi(gCollisionData)
/* 366C4 8005B2C4 27DE42E0 */  addiu     $fp, $fp, %lo(gCollisionData)
/* 366C8 8005B2C8 08016CBB */  j         .L8005B2EC
/* 366CC 8005B2CC 0102B021 */   addu     $s6, $t0, $v0
.L8005B2D0:
/* 366D0 8005B2D0 8C620008 */  lw        $v0, 0x8($v1)
/* 366D4 8005B2D4 10400119 */  beqz      $v0, .L8005B73C
/* 366D8 8005B2D8 00000000 */   nop
/* 366DC 8005B2DC 8FA80074 */  lw        $t0, 0x74($sp)
/* 366E0 8005B2E0 0102B021 */  addu      $s6, $t0, $v0
/* 366E4 8005B2E4 3C1E800E */  lui       $fp, %hi(gZoneCollisionData)
/* 366E8 8005B2E8 27DE91D0 */  addiu     $fp, $fp, %lo(gZoneCollisionData)
.L8005B2EC:
/* 366EC 8005B2EC 0000A02D */  daddu     $s4, $zero, $zero
.L8005B2F0:
/* 366F0 8005B2F0 8EC20014 */  lw        $v0, 0x14($s6)
/* 366F4 8005B2F4 8FA80074 */  lw        $t0, 0x74($sp)
/* 366F8 8005B2F8 86C40010 */  lh        $a0, 0x10($s6)
/* 366FC 8005B2FC 01028021 */  addu      $s0, $t0, $v0
/* 36700 8005B300 0C00AB6C */  jal       collision_heap_malloc
/* 36704 8005B304 00042080 */   sll      $a0, $a0, 2
/* 36708 8005B308 AFC20008 */  sw        $v0, 0x8($fp)
/* 3670C 8005B30C 86C30010 */  lh        $v1, 0x10($s6)
/* 36710 8005B310 18600009 */  blez      $v1, .L8005B338
/* 36714 8005B314 0040202D */   daddu    $a0, $v0, $zero
.L8005B318:
/* 36718 8005B318 8E020000 */  lw        $v0, 0x0($s0)
/* 3671C 8005B31C 26100004 */  addiu     $s0, $s0, 0x4
/* 36720 8005B320 26940001 */  addiu     $s4, $s4, 0x1
/* 36724 8005B324 AC820000 */  sw        $v0, 0x0($a0)
/* 36728 8005B328 86C20010 */  lh        $v0, 0x10($s6)
/* 3672C 8005B32C 0282102A */  slt       $v0, $s4, $v0
/* 36730 8005B330 1440FFF9 */  bnez      $v0, .L8005B318
/* 36734 8005B334 24840004 */   addiu    $a0, $a0, 0x4
.L8005B338:
/* 36738 8005B338 0000A02D */  daddu     $s4, $zero, $zero
/* 3673C 8005B33C 8EC2000C */  lw        $v0, 0xC($s6)
/* 36740 8005B340 8FA80074 */  lw        $t0, 0x74($sp)
/* 36744 8005B344 86C30008 */  lh        $v1, 0x8($s6)
/* 36748 8005B348 01028021 */  addu      $s0, $t0, $v0
/* 3674C 8005B34C 00032040 */  sll       $a0, $v1, 1
/* 36750 8005B350 00832021 */  addu      $a0, $a0, $v1
/* 36754 8005B354 0C00AB6C */  jal       collision_heap_malloc
/* 36758 8005B358 00042080 */   sll      $a0, $a0, 2
/* 3675C 8005B35C AFC20000 */  sw        $v0, 0x0($fp)
/* 36760 8005B360 86C30008 */  lh        $v1, 0x8($s6)
/* 36764 8005B364 1860001A */  blez      $v1, .L8005B3D0
/* 36768 8005B368 0040282D */   daddu    $a1, $v0, $zero
/* 3676C 8005B36C 26040004 */  addiu     $a0, $s0, 0x4
/* 36770 8005B370 24A30008 */  addiu     $v1, $a1, 0x8
.L8005B374:
/* 36774 8005B374 86020000 */  lh        $v0, 0x0($s0)
/* 36778 8005B378 26100006 */  addiu     $s0, $s0, 0x6
/* 3677C 8005B37C 26940001 */  addiu     $s4, $s4, 0x1
/* 36780 8005B380 44820000 */  mtc1      $v0, $f0
/* 36784 8005B384 00000000 */  nop
/* 36788 8005B388 46800020 */  cvt.s.w   $f0, $f0
/* 3678C 8005B38C E4A00000 */  swc1      $f0, 0x0($a1)
/* 36790 8005B390 8482FFFE */  lh        $v0, -0x2($a0)
/* 36794 8005B394 24A5000C */  addiu     $a1, $a1, 0xC
/* 36798 8005B398 44820000 */  mtc1      $v0, $f0
/* 3679C 8005B39C 00000000 */  nop
/* 367A0 8005B3A0 46800020 */  cvt.s.w   $f0, $f0
/* 367A4 8005B3A4 E460FFFC */  swc1      $f0, -0x4($v1)
/* 367A8 8005B3A8 84820000 */  lh        $v0, 0x0($a0)
/* 367AC 8005B3AC 24840006 */  addiu     $a0, $a0, 0x6
/* 367B0 8005B3B0 44820000 */  mtc1      $v0, $f0
/* 367B4 8005B3B4 00000000 */  nop
/* 367B8 8005B3B8 46800020 */  cvt.s.w   $f0, $f0
/* 367BC 8005B3BC E4600000 */  swc1      $f0, 0x0($v1)
/* 367C0 8005B3C0 86C20008 */  lh        $v0, 0x8($s6)
/* 367C4 8005B3C4 0282102A */  slt       $v0, $s4, $v0
/* 367C8 8005B3C8 1440FFEA */  bnez      $v0, .L8005B374
/* 367CC 8005B3CC 2463000C */   addiu    $v1, $v1, 0xC
.L8005B3D0:
/* 367D0 8005B3D0 8EC20004 */  lw        $v0, 0x4($s6)
/* 367D4 8005B3D4 8FA80074 */  lw        $t0, 0x74($sp)
/* 367D8 8005B3D8 86C30000 */  lh        $v1, 0x0($s6)
/* 367DC 8005B3DC 01021021 */  addu      $v0, $t0, $v0
/* 367E0 8005B3E0 000320C0 */  sll       $a0, $v1, 3
/* 367E4 8005B3E4 00832023 */  subu      $a0, $a0, $v1
/* 367E8 8005B3E8 00042080 */  sll       $a0, $a0, 2
/* 367EC 8005B3EC 0C00AB6C */  jal       collision_heap_malloc
/* 367F0 8005B3F0 AFA20010 */   sw       $v0, 0x10($sp)
/* 367F4 8005B3F4 AFC20004 */  sw        $v0, 0x4($fp)
/* 367F8 8005B3F8 96C30000 */  lhu       $v1, 0x0($s6)
/* 367FC 8005B3FC 0000A02D */  daddu     $s4, $zero, $zero
/* 36800 8005B400 A7C3000C */  sh        $v1, 0xC($fp)
/* 36804 8005B404 86C30000 */  lh        $v1, 0x0($s6)
/* 36808 8005B408 186000CC */  blez      $v1, .L8005B73C
/* 3680C 8005B40C 0040382D */   daddu    $a3, $v0, $zero
/* 36810 8005B410 24F20010 */  addiu     $s2, $a3, 0x10
/* 36814 8005B414 8FA80010 */  lw        $t0, 0x10($sp)
/* 36818 8005B418 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 3681C 8005B41C 4481D000 */  mtc1      $at, $f26
/* 36820 8005B420 4480E000 */  mtc1      $zero, $f28
/* 36824 8005B424 25130006 */  addiu     $s3, $t0, 0x6
.L8005B428:
/* 36828 8005B428 ACE00000 */  sw        $zero, 0x0($a3)
/* 3682C 8005B42C 9662FFFC */  lhu       $v0, -0x4($s3)
/* 36830 8005B430 A642FFF4 */  sh        $v0, -0xC($s2)
/* 36834 8005B434 9662FFFE */  lhu       $v0, -0x2($s3)
/* 36838 8005B438 A642FFF6 */  sh        $v0, -0xA($s2)
/* 3683C 8005B43C 96620000 */  lhu       $v0, 0x0($s3)
/* 36840 8005B440 A642FFFA */  sh        $v0, -0x6($s2)
/* 36844 8005B444 00021400 */  sll       $v0, $v0, 16
/* 36848 8005B448 504000B3 */  beql      $v0, $zero, .L8005B718
/* 3684C 8005B44C 2673000C */   addiu    $s3, $s3, 0xC
/* 36850 8005B450 86640000 */  lh        $a0, 0x0($s3)
/* 36854 8005B454 AFA70018 */  sw        $a3, 0x18($sp)
/* 36858 8005B458 0C00AB6C */  jal       collision_heap_malloc
/* 3685C 8005B45C 00042180 */   sll      $a0, $a0, 6
/* 36860 8005B460 0040B82D */  daddu     $s7, $v0, $zero
/* 36864 8005B464 AE57FFFC */  sw        $s7, -0x4($s2)
/* 36868 8005B468 8FA80010 */  lw        $t0, 0x10($sp)
/* 3686C 8005B46C 85020000 */  lh        $v0, 0x0($t0)
/* 36870 8005B470 8FA70018 */  lw        $a3, 0x18($sp)
/* 36874 8005B474 04410003 */  bgez      $v0, .L8005B484
/* 36878 8005B478 00021080 */   sll      $v0, $v0, 2
/* 3687C 8005B47C 08016D41 */  j         .L8005B504
/* 36880 8005B480 AE400000 */   sw       $zero, 0x0($s2)
.L8005B484:
/* 36884 8005B484 8FC30008 */  lw        $v1, 0x8($fp)
/* 36888 8005B488 00621821 */  addu      $v1, $v1, $v0
/* 3688C 8005B48C AE430000 */  sw        $v1, 0x0($s2)
/* 36890 8005B490 8FA80070 */  lw        $t0, 0x70($sp)
/* 36894 8005B494 1500001C */  bnez      $t0, .L8005B508
/* 36898 8005B498 0000A82D */   daddu    $s5, $zero, $zero
/* 3689C 8005B49C C4600000 */  lwc1      $f0, 0x0($v1)
/* 368A0 8005B4A0 461A0001 */  sub.s     $f0, $f0, $f26
/* 368A4 8005B4A4 E4600000 */  swc1      $f0, 0x0($v1)
/* 368A8 8005B4A8 8E420000 */  lw        $v0, 0x0($s2)
/* 368AC 8005B4AC C4400004 */  lwc1      $f0, 0x4($v0)
/* 368B0 8005B4B0 461A0001 */  sub.s     $f0, $f0, $f26
/* 368B4 8005B4B4 E4400004 */  swc1      $f0, 0x4($v0)
/* 368B8 8005B4B8 8E420000 */  lw        $v0, 0x0($s2)
/* 368BC 8005B4BC C4400008 */  lwc1      $f0, 0x8($v0)
/* 368C0 8005B4C0 461A0001 */  sub.s     $f0, $f0, $f26
/* 368C4 8005B4C4 E4400008 */  swc1      $f0, 0x8($v0)
/* 368C8 8005B4C8 8E420000 */  lw        $v0, 0x0($s2)
/* 368CC 8005B4CC C440000C */  lwc1      $f0, 0xC($v0)
/* 368D0 8005B4D0 461A0000 */  add.s     $f0, $f0, $f26
/* 368D4 8005B4D4 E440000C */  swc1      $f0, 0xC($v0)
/* 368D8 8005B4D8 8E420000 */  lw        $v0, 0x0($s2)
/* 368DC 8005B4DC C4400010 */  lwc1      $f0, 0x10($v0)
/* 368E0 8005B4E0 461A0000 */  add.s     $f0, $f0, $f26
/* 368E4 8005B4E4 E4400010 */  swc1      $f0, 0x10($v0)
/* 368E8 8005B4E8 8E420000 */  lw        $v0, 0x0($s2)
/* 368EC 8005B4EC C4400014 */  lwc1      $f0, 0x14($v0)
/* 368F0 8005B4F0 461A0000 */  add.s     $f0, $f0, $f26
/* 368F4 8005B4F4 E4400014 */  swc1      $f0, 0x14($v0)
/* 368F8 8005B4F8 8E420000 */  lw        $v0, 0x0($s2)
/* 368FC 8005B4FC 8C420018 */  lw        $v0, 0x18($v0)
/* 36900 8005B500 ACE20000 */  sw        $v0, 0x0($a3)
.L8005B504:
/* 36904 8005B504 0000A82D */  daddu     $s5, $zero, $zero
.L8005B508:
/* 36908 8005B508 8E620002 */  lw        $v0, 0x2($s3)
/* 3690C 8005B50C 8FA80074 */  lw        $t0, 0x74($sp)
/* 36910 8005B510 86630000 */  lh        $v1, 0x0($s3)
/* 36914 8005B514 1860007F */  blez      $v1, .L8005B714
/* 36918 8005B518 01028821 */   addu     $s1, $t0, $v0
/* 3691C 8005B51C 26F00038 */  addiu     $s0, $s7, 0x38
.L8005B520:
/* 36920 8005B520 8E230000 */  lw        $v1, 0x0($s1)
/* 36924 8005B524 8FC40000 */  lw        $a0, 0x0($fp)
/* 36928 8005B528 306303FF */  andi      $v1, $v1, 0x3FF
/* 3692C 8005B52C 00031040 */  sll       $v0, $v1, 1
/* 36930 8005B530 00431021 */  addu      $v0, $v0, $v1
/* 36934 8005B534 00021080 */  sll       $v0, $v0, 2
/* 36938 8005B538 00822021 */  addu      $a0, $a0, $v0
/* 3693C 8005B53C AEE40000 */  sw        $a0, 0x0($s7)
/* 36940 8005B540 8E220000 */  lw        $v0, 0x0($s1)
/* 36944 8005B544 8FC60000 */  lw        $a2, 0x0($fp)
/* 36948 8005B548 00021283 */  sra       $v0, $v0, 10
/* 3694C 8005B54C 304203FF */  andi      $v0, $v0, 0x3FF
/* 36950 8005B550 00021840 */  sll       $v1, $v0, 1
/* 36954 8005B554 00621821 */  addu      $v1, $v1, $v0
/* 36958 8005B558 00031880 */  sll       $v1, $v1, 2
/* 3695C 8005B55C 00C33021 */  addu      $a2, $a2, $v1
/* 36960 8005B560 AE06FFCC */  sw        $a2, -0x34($s0)
/* 36964 8005B564 8E220000 */  lw        $v0, 0x0($s1)
/* 36968 8005B568 8FC50000 */  lw        $a1, 0x0($fp)
/* 3696C 8005B56C 00021503 */  sra       $v0, $v0, 20
/* 36970 8005B570 304203FF */  andi      $v0, $v0, 0x3FF
/* 36974 8005B574 00021840 */  sll       $v1, $v0, 1
/* 36978 8005B578 00621821 */  addu      $v1, $v1, $v0
/* 3697C 8005B57C 00031880 */  sll       $v1, $v1, 2
/* 36980 8005B580 00A32821 */  addu      $a1, $a1, $v1
/* 36984 8005B584 AE05FFD0 */  sw        $a1, -0x30($s0)
/* 36988 8005B588 8E220000 */  lw        $v0, 0x0($s1)
/* 3698C 8005B58C 00021783 */  sra       $v0, $v0, 30
/* 36990 8005B590 30420001 */  andi      $v0, $v0, 0x1
/* 36994 8005B594 A6020004 */  sh        $v0, 0x4($s0)
/* 36998 8005B598 C4A00000 */  lwc1      $f0, 0x0($a1)
/* 3699C 8005B59C C4820000 */  lwc1      $f2, 0x0($a0)
/* 369A0 8005B5A0 46020001 */  sub.s     $f0, $f0, $f2
/* 369A4 8005B5A4 E600FFD4 */  swc1      $f0, -0x2C($s0)
/* 369A8 8005B5A8 C4A00004 */  lwc1      $f0, 0x4($a1)
/* 369AC 8005B5AC C4820004 */  lwc1      $f2, 0x4($a0)
/* 369B0 8005B5B0 46020001 */  sub.s     $f0, $f0, $f2
/* 369B4 8005B5B4 E600FFD8 */  swc1      $f0, -0x28($s0)
/* 369B8 8005B5B8 C4A00008 */  lwc1      $f0, 0x8($a1)
/* 369BC 8005B5BC C4820008 */  lwc1      $f2, 0x8($a0)
/* 369C0 8005B5C0 46020001 */  sub.s     $f0, $f0, $f2
/* 369C4 8005B5C4 E600FFDC */  swc1      $f0, -0x24($s0)
/* 369C8 8005B5C8 C4800000 */  lwc1      $f0, 0x0($a0)
/* 369CC 8005B5CC C4C20000 */  lwc1      $f2, 0x0($a2)
/* 369D0 8005B5D0 46020001 */  sub.s     $f0, $f0, $f2
/* 369D4 8005B5D4 E600FFE0 */  swc1      $f0, -0x20($s0)
/* 369D8 8005B5D8 C4800004 */  lwc1      $f0, 0x4($a0)
/* 369DC 8005B5DC C4C20004 */  lwc1      $f2, 0x4($a2)
/* 369E0 8005B5E0 46020001 */  sub.s     $f0, $f0, $f2
/* 369E4 8005B5E4 E600FFE4 */  swc1      $f0, -0x1C($s0)
/* 369E8 8005B5E8 C4800008 */  lwc1      $f0, 0x8($a0)
/* 369EC 8005B5EC C4C20008 */  lwc1      $f2, 0x8($a2)
/* 369F0 8005B5F0 46020001 */  sub.s     $f0, $f0, $f2
/* 369F4 8005B5F4 E600FFE8 */  swc1      $f0, -0x18($s0)
/* 369F8 8005B5F8 C4C00000 */  lwc1      $f0, 0x0($a2)
/* 369FC 8005B5FC C4A20000 */  lwc1      $f2, 0x0($a1)
/* 36A00 8005B600 46020001 */  sub.s     $f0, $f0, $f2
/* 36A04 8005B604 E600FFEC */  swc1      $f0, -0x14($s0)
/* 36A08 8005B608 C4C00004 */  lwc1      $f0, 0x4($a2)
/* 36A0C 8005B60C C4A20004 */  lwc1      $f2, 0x4($a1)
/* 36A10 8005B610 46020001 */  sub.s     $f0, $f0, $f2
/* 36A14 8005B614 E600FFF0 */  swc1      $f0, -0x10($s0)
/* 36A18 8005B618 C60AFFD8 */  lwc1      $f10, -0x28($s0)
/* 36A1C 8005B61C C608FFE8 */  lwc1      $f8, -0x18($s0)
/* 36A20 8005B620 46085382 */  mul.s     $f14, $f10, $f8
/* 36A24 8005B624 00000000 */  nop
/* 36A28 8005B628 C606FFDC */  lwc1      $f6, -0x24($s0)
/* 36A2C 8005B62C C604FFE4 */  lwc1      $f4, -0x1C($s0)
/* 36A30 8005B630 46043302 */  mul.s     $f12, $f6, $f4
/* 36A34 8005B634 00000000 */  nop
/* 36A38 8005B638 C602FFE0 */  lwc1      $f2, -0x20($s0)
/* 36A3C 8005B63C 46023182 */  mul.s     $f6, $f6, $f2
/* 36A40 8005B640 00000000 */  nop
/* 36A44 8005B644 C600FFD4 */  lwc1      $f0, -0x2C($s0)
/* 36A48 8005B648 46080202 */  mul.s     $f8, $f0, $f8
/* 36A4C 8005B64C 00000000 */  nop
/* 36A50 8005B650 46040002 */  mul.s     $f0, $f0, $f4
/* 36A54 8005B654 00000000 */  nop
/* 36A58 8005B658 46025282 */  mul.s     $f10, $f10, $f2
/* 36A5C 8005B65C 00000000 */  nop
/* 36A60 8005B660 460C7601 */  sub.s     $f24, $f14, $f12
/* 36A64 8005B664 4618C102 */  mul.s     $f4, $f24, $f24
/* 36A68 8005B668 00000000 */  nop
/* 36A6C 8005B66C 46083501 */  sub.s     $f20, $f6, $f8
/* 36A70 8005B670 4614A182 */  mul.s     $f6, $f20, $f20
/* 36A74 8005B674 00000000 */  nop
/* 36A78 8005B678 460A0581 */  sub.s     $f22, $f0, $f10
/* 36A7C 8005B67C 4616B202 */  mul.s     $f8, $f22, $f22
/* 36A80 8005B680 00000000 */  nop
/* 36A84 8005B684 C4C20008 */  lwc1      $f2, 0x8($a2)
/* 36A88 8005B688 C4A00008 */  lwc1      $f0, 0x8($a1)
/* 36A8C 8005B68C 46001081 */  sub.s     $f2, $f2, $f0
/* 36A90 8005B690 46062100 */  add.s     $f4, $f4, $f6
/* 36A94 8005B694 46082300 */  add.s     $f12, $f4, $f8
/* 36A98 8005B698 461C6032 */  c.eq.s    $f12, $f28
/* 36A9C 8005B69C 00000000 */  nop
/* 36AA0 8005B6A0 4501000B */  bc1t      .L8005B6D0
/* 36AA4 8005B6A4 E602FFF4 */   swc1     $f2, -0xC($s0)
/* 36AA8 8005B6A8 46006004 */  sqrt.s    $f0, $f12
/* 36AAC 8005B6AC 46000032 */  c.eq.s    $f0, $f0
/* 36AB0 8005B6B0 00000000 */  nop
/* 36AB4 8005B6B4 45030007 */  bc1tl     .L8005B6D4
/* 36AB8 8005B6B8 4600D303 */   div.s    $f12, $f26, $f0
/* 36ABC 8005B6BC 0C0187BC */  jal       sqrtf
/* 36AC0 8005B6C0 AFA70018 */   sw       $a3, 0x18($sp)
/* 36AC4 8005B6C4 8FA70018 */  lw        $a3, 0x18($sp)
/* 36AC8 8005B6C8 08016DB5 */  j         .L8005B6D4
/* 36ACC 8005B6CC 4600D303 */   div.s    $f12, $f26, $f0
.L8005B6D0:
/* 36AD0 8005B6D0 4600E306 */  mov.s     $f12, $f28
.L8005B6D4:
/* 36AD4 8005B6D4 460CC082 */  mul.s     $f2, $f24, $f12
/* 36AD8 8005B6D8 00000000 */  nop
/* 36ADC 8005B6DC 460CA102 */  mul.s     $f4, $f20, $f12
/* 36AE0 8005B6E0 00000000 */  nop
/* 36AE4 8005B6E4 26310004 */  addiu     $s1, $s1, 0x4
/* 36AE8 8005B6E8 460CB002 */  mul.s     $f0, $f22, $f12
/* 36AEC 8005B6EC 00000000 */  nop
/* 36AF0 8005B6F0 26F70040 */  addiu     $s7, $s7, 0x40
/* 36AF4 8005B6F4 26B50001 */  addiu     $s5, $s5, 0x1
/* 36AF8 8005B6F8 E602FFF8 */  swc1      $f2, -0x8($s0)
/* 36AFC 8005B6FC E604FFFC */  swc1      $f4, -0x4($s0)
/* 36B00 8005B700 E6000000 */  swc1      $f0, 0x0($s0)
/* 36B04 8005B704 86620000 */  lh        $v0, 0x0($s3)
/* 36B08 8005B708 02A2102A */  slt       $v0, $s5, $v0
/* 36B0C 8005B70C 1440FF84 */  bnez      $v0, .L8005B520
/* 36B10 8005B710 26100040 */   addiu    $s0, $s0, 0x40
.L8005B714:
/* 36B14 8005B714 2673000C */  addiu     $s3, $s3, 0xC
.L8005B718:
/* 36B18 8005B718 2652001C */  addiu     $s2, $s2, 0x1C
/* 36B1C 8005B71C 8FA80010 */  lw        $t0, 0x10($sp)
/* 36B20 8005B720 2508000C */  addiu     $t0, $t0, 0xC
/* 36B24 8005B724 AFA80010 */  sw        $t0, 0x10($sp)
/* 36B28 8005B728 86C20000 */  lh        $v0, 0x0($s6)
/* 36B2C 8005B72C 26940001 */  addiu     $s4, $s4, 0x1
/* 36B30 8005B730 0282102A */  slt       $v0, $s4, $v0
/* 36B34 8005B734 1440FF3C */  bnez      $v0, .L8005B428
/* 36B38 8005B738 24E7001C */   addiu    $a3, $a3, 0x1C
.L8005B73C:
/* 36B3C 8005B73C 8FBF0044 */  lw        $ra, 0x44($sp)
/* 36B40 8005B740 8FBE0040 */  lw        $fp, 0x40($sp)
/* 36B44 8005B744 8FB7003C */  lw        $s7, 0x3C($sp)
/* 36B48 8005B748 8FB60038 */  lw        $s6, 0x38($sp)
/* 36B4C 8005B74C 8FB50034 */  lw        $s5, 0x34($sp)
/* 36B50 8005B750 8FB40030 */  lw        $s4, 0x30($sp)
/* 36B54 8005B754 8FB3002C */  lw        $s3, 0x2C($sp)
/* 36B58 8005B758 8FB20028 */  lw        $s2, 0x28($sp)
/* 36B5C 8005B75C 8FB10024 */  lw        $s1, 0x24($sp)
/* 36B60 8005B760 8FB00020 */  lw        $s0, 0x20($sp)
/* 36B64 8005B764 D7BC0068 */  ldc1      $f28, 0x68($sp)
/* 36B68 8005B768 D7BA0060 */  ldc1      $f26, 0x60($sp)
/* 36B6C 8005B76C D7B80058 */  ldc1      $f24, 0x58($sp)
/* 36B70 8005B770 D7B60050 */  ldc1      $f22, 0x50($sp)
/* 36B74 8005B774 D7B40048 */  ldc1      $f20, 0x48($sp)
/* 36B78 8005B778 03E00008 */  jr        $ra
/* 36B7C 8005B77C 27BD0070 */   addiu    $sp, $sp, 0x70

### DECOMPILED C INSTRUCTIONS:

void load_hit_data(s32 idx, HitFile* hit) {
    s32 collisionOffset;
    MapSettings* map;
    CollisionData* collisionData;
    HitFileHeader* assetCollisionData;
    Vec3f* vertices;
    Vec3s* assetVertices;
    u32* boundingBox;
    u32* assetBoundingBox;
    Collider* collider;
    HitAssetCollider* assetCollider;
    ColliderTriangle* triangle;
    s32* trianglePacked;
    s16 numTriangles;
    s32 i,j;
    f32 e13_y, e21_z, e13_z, e21_y, e21_x, e13_x, normalX, normalY, normalZ, coeff;

    assetCollisionData = NULL;
    collisionData = NULL;

    map = get_current_map_settings();

    switch (idx) {
        case 0: // Colliders
            collisionOffset = map->hitAssetCollisionOffset;
            if (collisionOffset == 0) {
                return;
            }

            assetCollisionData = (HitFileHeader*)((void*)hit + collisionOffset);
            collisionData = &gCollisionData;
            break;
        case 1: // Zones
            collisionOffset = map->hitAssetZoneOffset;
            if (collisionOffset == 0) {
                return;
            }

            assetCollisionData = (HitFileHeader*)((void*)hit + collisionOffset);
            collisionData = &gZoneCollisionData;
            break;
    }

    assetBoundingBox = (u32*)((void*)hit + assetCollisionData->boundingBoxesOffset);
    collisionData->aabbs = collision_heap_malloc(assetCollisionData->boundingBoxesDataSize * 4);
    for (i = 0, boundingBox = (u32*)(collisionData->aabbs); i < assetCollisionData->boundingBoxesDataSize;
        assetBoundingBox++, boundingBox++, i++) {
        *boundingBox = *assetBoundingBox;
    }

    assetVertices = (Vec3s*)((void*)hit + assetCollisionData->verticesOffset);
    collisionData->vertices = collision_heap_malloc(assetCollisionData->numVertices * sizeof(Vec3f));
    for (i = 0, vertices = collisionData->vertices; i < assetCollisionData->numVertices;
        vertices++, assetVertices++, i++) {
        vertices->x = assetVertices->x;
        vertices->y = assetVertices->y;
        vertices->z = assetVertices->z;
    }

    assetCollider = (HitAssetCollider*)((void*)hit + assetCollisionData->collidersOffset);
    collider = collisionData->colliderList = collision_heap_malloc(assetCollisionData->numColliders * sizeof(Collider));
    collisionData->numColliders = assetCollisionData->numColliders;
    for (i = 0; i < assetCollisionData->numColliders; assetCollider++, collider++, i++) {
        collider->flags = 0;
        collider->nextSibling = assetCollider->nextSibling;
        collider->firstChild = assetCollider->firstChild;
        collider->numTriangles = assetCollider->numTriangles;

        numTriangles = collider->numTriangles;

        if (numTriangles) {
            collider->triangleTable = triangle = collision_heap_malloc(assetCollider->numTriangles * sizeof(ColliderTriangle));

            if (assetCollider->boundingBoxOffset < 0) {
                collider->aabb = NULL;
            } else {
                collider->aabb = (ColliderBoundingBox*)((u32*)(collisionData->aabbs) + assetCollider->boundingBoxOffset);

                if (idx == 0) {
                    collider->aabb->min.x -= 1;
                    collider->aabb->min.y -= 1;
                    collider->aabb->min.z -= 1;
                    collider->aabb->max.x += 1;
                    collider->aabb->max.y += 1;
                    collider->aabb->max.z += 1;
                    collider->flags = collider->aabb->flagsForCollider;
                }
            }

            trianglePacked = (s32*)((void*)hit + assetCollider->trianglesOffset);

            for (j = 0; j < assetCollider->numTriangles; trianglePacked++, triangle++, j++) {
                Vec3f* v1 = triangle->v1 = &collisionData->vertices[(*trianglePacked) & 0x3FF];
                Vec3f* v2 = triangle->v2 = &collisionData->vertices[(*trianglePacked >> 10) & 0x3FF];
                Vec3f* v3 = triangle->v3 = &collisionData->vertices[(*trianglePacked >> 20) & 0x3FF];
                triangle->oneSided = (*trianglePacked >> 30) & 1;

                triangle->e13.x = v3->x - v1->x;
                triangle->e13.y = v3->y - v1->y;
                triangle->e13.z = v3->z - v1->z;
                triangle->e21.x = v1->x - v2->x;
                triangle->e21.y = v1->y - v2->y;
                triangle->e21.z = v1->z - v2->z;
                triangle->e32.x = v2->x - v3->x;
                triangle->e32.y = v2->y - v3->y;
                triangle->e32.z = v2->z - v3->z;

                e13_x = triangle->e13.x;
                e13_y = triangle->e13.y;
                e13_z = triangle->e13.z;
                e21_x = triangle->e21.x;
                e21_y = triangle->e21.y;
                e21_z = triangle->e21.z;

                // cross product
                normalX = e13_y * e21_z - e13_z * e21_y;
                normalY = e13_z * e21_x - e13_x * e21_z;
                normalZ = e13_x * e21_y - e13_y * e21_x;
                coeff = SQ(normalX) + SQ(normalY) + SQ(normalZ);

                if (coeff != 0) {
                    coeff = 1.0f / sqrtf(coeff);
                } else {
                    coeff = 0.0f;
                }

                triangle->normal.x = normalX * coeff;
                triangle->normal.y = normalY * coeff;
                triangle->normal.z = normalZ * coeff;
            }
        }
    }
}