Super Mario 64s source code (from a leak on 4chan so be careful)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1040 lines
47 KiB

6 years ago
  1. .late_rodata
  2. glabel jtbl_80337C90
  3. .word L8031B2C0
  4. .word L8031B27C
  5. .word L8031B690
  6. .word L8031B690
  7. .word L8031B30C
  8. .word L8031B220
  9. .word L8031B690
  10. .word L8031B690
  11. .word L8031B1E4
  12. glabel jtbl_80337CB4
  13. .word L8031B350
  14. .word L8031B3A8
  15. .word L8031B444
  16. .word L8031B3D4
  17. .word L8031B3D4
  18. .word L8031B494
  19. .word L8031B5B8
  20. .word L8031B688
  21. .word L8031B3A8
  22. .word L8031B350
  23. glabel jtbl_80337CDC
  24. .word L8031BBE8
  25. .word L8031BBF4
  26. .word L8031BBE8
  27. .word L8031BBF4
  28. .word L8031BBE8
  29. glabel D_80337CF0
  30. .double 32512.0
  31. glabel D_80337CF8
  32. .double 127.0
  33. .text
  34. glabel func_8031B0A4
  35. /* 0D60A4 8031B0A4 27BDFFA0 */ addiu $sp, $sp, -0x60
  36. /* 0D60A8 8031B0A8 240E0001 */ li $t6, 1
  37. /* 0D60AC 8031B0AC AFBF001C */ sw $ra, 0x1c($sp)
  38. /* 0D60B0 8031B0B0 AFB00018 */ sw $s0, 0x18($sp)
  39. /* 0D60B4 8031B0B4 A3AE003F */ sb $t6, 0x3f($sp)
  40. /* 0D60B8 8031B0B8 8C820000 */ lw $v0, ($a0)
  41. /* 0D60BC 8031B0BC 00808025 */ move $s0, $a0
  42. /* 0D60C0 8031B0C0 00027FC2 */ srl $t7, $v0, 0x1f
  43. /* 0D60C4 8031B0C4 51E00376 */ beql $t7, $zero, .L8031BEA0
  44. /* 0D60C8 8031B0C8 8FBF001C */ lw $ra, 0x1c($sp)
  45. /* 0D60CC 8031B0CC 8483003C */ lh $v1, 0x3c($a0)
  46. /* 0D60D0 8031B0D0 00027080 */ sll $t6, $v0, 2
  47. /* 0D60D4 8031B0D4 0002C8C0 */ sll $t9, $v0, 3
  48. /* 0D60D8 8031B0D8 28610002 */ slti $at, $v1, 2
  49. /* 0D60DC 8031B0DC 1420000E */ bnez $at, .L8031B118
  50. /* 0D60E0 8031B0E0 2478FFFF */ addiu $t8, $v1, -1
  51. /* 0D60E4 8031B0E4 05C0036D */ bltz $t6, .L8031BE9C
  52. /* 0D60E8 8031B0E8 A498003C */ sh $t8, 0x3c($a0)
  53. /* 0D60EC 8031B0EC 848F003E */ lh $t7, 0x3e($a0)
  54. /* 0D60F0 8031B0F0 8498003C */ lh $t8, 0x3c($a0)
  55. /* 0D60F4 8031B0F4 01F8082A */ slt $at, $t7, $t8
  56. /* 0D60F8 8031B0F8 54200369 */ bnezl $at, .L8031BEA0
  57. /* 0D60FC 8031B0FC 8FBF001C */ lw $ra, 0x1c($sp)
  58. /* 0D6100 8031B100 0C0C63B1 */ jal func_80318EC4
  59. /* 0D6104 8031B104 00000000 */ nop
  60. /* 0D6108 8031B108 920E0000 */ lbu $t6, ($s0)
  61. /* 0D610C 8031B10C 35CF0020 */ ori $t7, $t6, 0x20
  62. /* 0D6110 8031B110 10000362 */ b .L8031BE9C
  63. /* 0D6114 8031B114 A20F0000 */ sb $t7, ($s0)
  64. .L8031B118:
  65. /* 0D6118 8031B118 07220004 */ bltzl $t9, .L8031B12C
  66. /* 0D611C 8031B11C 92020004 */ lbu $v0, 4($s0)
  67. /* 0D6120 8031B120 0C0C63B1 */ jal func_80318EC4
  68. /* 0D6124 8031B124 02002025 */ move $a0, $s0
  69. /* 0D6128 8031B128 92020004 */ lbu $v0, 4($s0)
  70. .L8031B12C:
  71. /* 0D612C 8031B12C 2401FF7F */ li $at, -129
  72. /* 0D6130 8031B130 44800000 */ mtc1 $zero, $f0
  73. /* 0D6134 8031B134 00417024 */ and $t6, $v0, $at
  74. /* 0D6138 8031B138 24010001 */ li $at, 1
  75. /* 0D613C 8031B13C 11C10004 */ beq $t6, $at, .L8031B150
  76. /* 0D6140 8031B140 3C1F8022 */ lui $ra, %hi(D_80226D60) # $ra, 0x8022
  77. /* 0D6144 8031B144 24010002 */ li $at, 2
  78. /* 0D6148 8031B148 55C10003 */ bnel $t6, $at, .L8031B158
  79. /* 0D614C 8031B14C 8E0D0050 */ lw $t5, 0x50($s0)
  80. .L8031B150:
  81. /* 0D6150 8031B150 A2000004 */ sb $zero, 4($s0)
  82. /* 0D6154 8031B154 8E0D0050 */ lw $t5, 0x50($s0)
  83. .L8031B158:
  84. /* 0D6158 8031B158 3C013F80 */ lui $at, 0x3f80
  85. /* 0D615C 8031B15C 3C0B8022 */ lui $t3, %hi(D_802214F8)
  86. /* 0D6160 8031B160 44810800 */ mtc1 $at, $f1
  87. /* 0D6164 8031B164 256B14F8 */ addiu $t3, $t3, %lo(D_802214F8)
  88. /* 0D6168 8031B168 27FF6D60 */ addiu $ra, %lo(D_80226D60) # addiu $ra, $ra, 0x6d60
  89. /* 0D616C 8031B16C 97AA003A */ lhu $t2, 0x3a($sp)
  90. /* 0D6170 8031B170 240900FF */ li $t1, 255
  91. /* 0D6174 8031B174 8DAC0040 */ lw $t4, 0x40($t5)
  92. .L8031B178:
  93. /* 0D6178 8031B178 8E020054 */ lw $v0, 0x54($s0)
  94. .L8031B17C:
  95. /* 0D617C 8031B17C 244F0001 */ addiu $t7, $v0, 1
  96. /* 0D6180 8031B180 AE0F0054 */ sw $t7, 0x54($s0)
  97. /* 0D6184 8031B184 90440000 */ lbu $a0, ($v0)
  98. /* 0D6188 8031B188 288100C1 */ slti $at, $a0, 0xc1
  99. /* 0D618C 8031B18C 14200159 */ bnez $at, .L8031B6F4
  100. /* 0D6190 8031B190 00802825 */ move $a1, $a0
  101. /* 0D6194 8031B194 288100CB */ slti $at, $a0, 0xcb
  102. /* 0D6198 8031B198 1420000A */ bnez $at, .L8031B1C4
  103. /* 0D619C 8031B19C 24B9FF3F */ addiu $t9, $a1, -0xc1
  104. /* 0D61A0 8031B1A0 2498FF09 */ addiu $t8, $a0, -0xf7
  105. /* 0D61A4 8031B1A4 2F010009 */ sltiu $at, $t8, 9
  106. /* 0D61A8 8031B1A8 10200139 */ beqz $at, .L8031B690
  107. /* 0D61AC 8031B1AC 0018C080 */ sll $t8, $t8, 2
  108. /* 0D61B0 8031B1B0 3C018033 */ lui $at, %hi(jtbl_80337C90)
  109. /* 0D61B4 8031B1B4 00380821 */ addu $at, $at, $t8
  110. /* 0D61B8 8031B1B8 8C387C90 */ lw $t8, %lo(jtbl_80337C90)($at)
  111. /* 0D61BC 8031B1BC 03000008 */ jr $t8
  112. /* 0D61C0 8031B1C0 00000000 */ nop
  113. .L8031B1C4:
  114. /* 0D61C4 8031B1C4 2F21000A */ sltiu $at, $t9, 0xa
  115. /* 0D61C8 8031B1C8 10200131 */ beqz $at, .L8031B690
  116. /* 0D61CC 8031B1CC 0019C880 */ sll $t9, $t9, 2
  117. /* 0D61D0 8031B1D0 3C018033 */ lui $at, %hi(jtbl_80337CB4)
  118. /* 0D61D4 8031B1D4 00390821 */ addu $at, $at, $t9
  119. /* 0D61D8 8031B1D8 8C397CB4 */ lw $t9, %lo(jtbl_80337CB4)($at)
  120. /* 0D61DC 8031B1DC 03200008 */ jr $t9
  121. /* 0D61E0 8031B1E0 00000000 */ nop
  122. glabel L8031B1E4
  123. /* 0D61E4 8031B1E4 26020054 */ addiu $v0, $s0, 0x54
  124. /* 0D61E8 8031B1E8 90430018 */ lbu $v1, 0x18($v0)
  125. /* 0D61EC 8031B1EC 14600005 */ bnez $v1, .L8031B204
  126. /* 0D61F0 8031B1F0 246EFFFF */ addiu $t6, $v1, -1
  127. /* 0D61F4 8031B1F4 0C0C6A84 */ jal func_8031AA10
  128. /* 0D61F8 8031B1F8 02002025 */ move $a0, $s0
  129. /* 0D61FC 8031B1FC 10000328 */ b .L8031BEA0
  130. /* 0D6200 8031B200 8FBF001C */ lw $ra, 0x1c($sp)
  131. .L8031B204:
  132. /* 0D6204 8031B204 31CF00FF */ andi $t7, $t6, 0xff
  133. /* 0D6208 8031B208 000FC080 */ sll $t8, $t7, 2
  134. /* 0D620C 8031B20C 0058C821 */ addu $t9, $v0, $t8
  135. /* 0D6210 8031B210 A04E0018 */ sb $t6, 0x18($v0)
  136. /* 0D6214 8031B214 8F2E0004 */ lw $t6, 4($t9)
  137. /* 0D6218 8031B218 1000FFD7 */ b .L8031B178
  138. /* 0D621C 8031B21C AC4E0000 */ sw $t6, ($v0)
  139. glabel L8031B220
  140. /* 0D6220 8031B220 26020054 */ addiu $v0, $s0, 0x54
  141. /* 0D6224 8031B224 8C430000 */ lw $v1, ($v0)
  142. /* 0D6228 8031B228 90640000 */ lbu $a0, ($v1)
  143. /* 0D622C 8031B22C 246E0001 */ addiu $t6, $v1, 1
  144. /* 0D6230 8031B230 AC4E0000 */ sw $t6, ($v0)
  145. /* 0D6234 8031B234 91CF0000 */ lbu $t7, ($t6)
  146. /* 0D6238 8031B238 0004CA00 */ sll $t9, $a0, 8
  147. /* 0D623C 8031B23C 01F92825 */ or $a1, $t7, $t9
  148. /* 0D6240 8031B240 904F0018 */ lbu $t7, 0x18($v0)
  149. /* 0D6244 8031B244 25D90001 */ addiu $t9, $t6, 1
  150. /* 0D6248 8031B248 AC590000 */ sw $t9, ($v0)
  151. /* 0D624C 8031B24C 25F80001 */ addiu $t8, $t7, 1
  152. /* 0D6250 8031B250 330E00FF */ andi $t6, $t8, 0xff
  153. /* 0D6254 8031B254 000E7880 */ sll $t7, $t6, 2
  154. /* 0D6258 8031B258 A0580018 */ sb $t8, 0x18($v0)
  155. /* 0D625C 8031B25C 004FC021 */ addu $t8, $v0, $t7
  156. /* 0D6260 8031B260 AF190000 */ sw $t9, ($t8)
  157. /* 0D6264 8031B264 8D8E0014 */ lw $t6, 0x14($t4)
  158. /* 0D6268 8031B268 30AFFFFF */ andi $t7, $a1, 0xffff
  159. /* 0D626C 8031B26C 30AAFFFF */ andi $t2, $a1, 0xffff
  160. /* 0D6270 8031B270 01CFC821 */ addu $t9, $t6, $t7
  161. /* 0D6274 8031B274 1000FFC0 */ b .L8031B178
  162. /* 0D6278 8031B278 AC590000 */ sw $t9, ($v0)
  163. glabel L8031B27C
  164. /* 0D627C 8031B27C 26020054 */ addiu $v0, $s0, 0x54
  165. /* 0D6280 8031B280 8C430000 */ lw $v1, ($v0)
  166. /* 0D6284 8031B284 904E0018 */ lbu $t6, 0x18($v0)
  167. /* 0D6288 8031B288 24780001 */ addiu $t8, $v1, 1
  168. /* 0D628C 8031B28C AC580000 */ sw $t8, ($v0)
  169. /* 0D6290 8031B290 90650000 */ lbu $a1, ($v1)
  170. /* 0D6294 8031B294 004E7821 */ addu $t7, $v0, $t6
  171. /* 0D6298 8031B298 A1E50014 */ sb $a1, 0x14($t7)
  172. /* 0D629C 8031B29C 90590018 */ lbu $t9, 0x18($v0)
  173. /* 0D62A0 8031B2A0 8C4E0000 */ lw $t6, ($v0)
  174. /* 0D62A4 8031B2A4 27380001 */ addiu $t8, $t9, 1
  175. /* 0D62A8 8031B2A8 330F00FF */ andi $t7, $t8, 0xff
  176. /* 0D62AC 8031B2AC 000FC880 */ sll $t9, $t7, 2
  177. /* 0D62B0 8031B2B0 A0580018 */ sb $t8, 0x18($v0)
  178. /* 0D62B4 8031B2B4 0059C021 */ addu $t8, $v0, $t9
  179. /* 0D62B8 8031B2B8 1000FFAF */ b .L8031B178
  180. /* 0D62BC 8031B2BC AF0E0000 */ sw $t6, ($t8)
  181. glabel L8031B2C0
  182. /* 0D62C0 8031B2C0 26020054 */ addiu $v0, $s0, 0x54
  183. /* 0D62C4 8031B2C4 904F0018 */ lbu $t7, 0x18($v0)
  184. /* 0D62C8 8031B2C8 004F2021 */ addu $a0, $v0, $t7
  185. /* 0D62CC 8031B2CC 90990013 */ lbu $t9, 0x13($a0)
  186. /* 0D62D0 8031B2D0 272EFFFF */ addiu $t6, $t9, -1
  187. /* 0D62D4 8031B2D4 A08E0013 */ sb $t6, 0x13($a0)
  188. /* 0D62D8 8031B2D8 90430018 */ lbu $v1, 0x18($v0)
  189. /* 0D62DC 8031B2DC 0043C021 */ addu $t8, $v0, $v1
  190. /* 0D62E0 8031B2E0 930F0013 */ lbu $t7, 0x13($t8)
  191. /* 0D62E4 8031B2E4 00602825 */ move $a1, $v1
  192. /* 0D62E8 8031B2E8 0005C880 */ sll $t9, $a1, 2
  193. /* 0D62EC 8031B2EC 11E00004 */ beqz $t7, .L8031B300
  194. /* 0D62F0 8031B2F0 00597021 */ addu $t6, $v0, $t9
  195. /* 0D62F4 8031B2F4 8DD80000 */ lw $t8, ($t6)
  196. /* 0D62F8 8031B2F8 1000FF9F */ b .L8031B178
  197. /* 0D62FC 8031B2FC AC580000 */ sw $t8, ($v0)
  198. .L8031B300:
  199. /* 0D6300 8031B300 246FFFFF */ addiu $t7, $v1, -1
  200. /* 0D6304 8031B304 1000FF9C */ b .L8031B178
  201. /* 0D6308 8031B308 A04F0018 */ sb $t7, 0x18($v0)
  202. glabel L8031B30C
  203. /* 0D630C 8031B30C 26020054 */ addiu $v0, $s0, 0x54
  204. /* 0D6310 8031B310 8C430000 */ lw $v1, ($v0)
  205. /* 0D6314 8031B314 90640000 */ lbu $a0, ($v1)
  206. /* 0D6318 8031B318 246F0001 */ addiu $t7, $v1, 1
  207. /* 0D631C 8031B31C AC4F0000 */ sw $t7, ($v0)
  208. /* 0D6320 8031B320 91F90000 */ lbu $t9, ($t7)
  209. /* 0D6324 8031B324 0004C200 */ sll $t8, $a0, 8
  210. /* 0D6328 8031B328 25EF0001 */ addiu $t7, $t7, 1
  211. /* 0D632C 8031B32C 03387025 */ or $t6, $t9, $t8
  212. /* 0D6330 8031B330 AC4F0000 */ sw $t7, ($v0)
  213. /* 0D6334 8031B334 8D990014 */ lw $t9, 0x14($t4)
  214. /* 0D6338 8031B338 01C0C025 */ move $t8, $t6
  215. /* 0D633C 8031B33C 330AFFFF */ andi $t2, $t8, 0xffff
  216. /* 0D6340 8031B340 330EFFFF */ andi $t6, $t8, 0xffff
  217. /* 0D6344 8031B344 032EC021 */ addu $t8, $t9, $t6
  218. /* 0D6348 8031B348 1000FF8B */ b .L8031B178
  219. /* 0D634C 8031B34C AC580000 */ sw $t8, ($v0)
  220. glabel L8031B350
  221. /* 0D6350 8031B350 26020054 */ addiu $v0, $s0, 0x54
  222. /* 0D6354 8031B354 8C430000 */ lw $v1, ($v0)
  223. /* 0D6358 8031B358 240100C1 */ li $at, 193
  224. /* 0D635C 8031B35C 90640000 */ lbu $a0, ($v1)
  225. /* 0D6360 8031B360 246F0001 */ addiu $t7, $v1, 1
  226. /* 0D6364 8031B364 14A10008 */ bne $a1, $at, .L8031B388
  227. /* 0D6368 8031B368 AC4F0000 */ sw $t7, ($v0)
  228. /* 0D636C 8031B36C 00840019 */ multu $a0, $a0
  229. /* 0D6370 8031B370 0000C812 */ mflo $t9
  230. /* 0D6374 8031B374 44992000 */ mtc1 $t9, $f4
  231. /* 0D6378 8031B378 00000000 */ nop
  232. /* 0D637C 8031B37C 468021A0 */ cvt.s.w $f6, $f4
  233. /* 0D6380 8031B380 1000FF7D */ b .L8031B178
  234. /* 0D6384 8031B384 E6060024 */ swc1 $f6, 0x24($s0)
  235. .L8031B388:
  236. /* 0D6388 8031B388 44844000 */ mtc1 $a0, $f8
  237. /* 0D638C 8031B38C 00000000 */ nop
  238. /* 0D6390 8031B390 468042A0 */ cvt.s.w $f10, $f8
  239. /* 0D6394 8031B394 46005421 */ cvt.d.s $f16, $f10
  240. /* 0D6398 8031B398 46208482 */ mul.d $f18, $f16, $f0
  241. /* 0D639C 8031B39C 46209120 */ cvt.s.d $f4, $f18
  242. /* 0D63A0 8031B3A0 1000FF75 */ b .L8031B178
  243. /* 0D63A4 8031B3A4 E6040028 */ swc1 $f4, 0x28($s0)
  244. glabel L8031B3A8
  245. /* 0D63A8 8031B3A8 26020054 */ addiu $v0, $s0, 0x54
  246. /* 0D63AC 8031B3AC 8C430000 */ lw $v1, ($v0)
  247. /* 0D63B0 8031B3B0 240100C9 */ li $at, 201
  248. /* 0D63B4 8031B3B4 90640000 */ lbu $a0, ($v1)
  249. /* 0D63B8 8031B3B8 246E0001 */ addiu $t6, $v1, 1
  250. /* 0D63BC 8031B3BC 14A10003 */ bne $a1, $at, .L8031B3CC
  251. /* 0D63C0 8031B3C0 AC4E0000 */ sw $t6, ($v0)
  252. /* 0D63C4 8031B3C4 1000FF6C */ b .L8031B178
  253. /* 0D63C8 8031B3C8 A2040002 */ sb $a0, 2($s0)
  254. .L8031B3CC:
  255. /* 0D63CC 8031B3CC 1000FF6A */ b .L8031B178
  256. /* 0D63D0 8031B3D0 A604001E */ sh $a0, 0x1e($s0)
  257. glabel L8031B3D4
  258. /* 0D63D4 8031B3D4 240100C4 */ li $at, 196
  259. /* 0D63D8 8031B3D8 14A10003 */ bne $a1, $at, .L8031B3E8
  260. /* 0D63DC 8031B3DC 02002025 */ move $a0, $s0
  261. /* 0D63E0 8031B3E0 10000002 */ b .L8031B3EC
  262. /* 0D63E4 8031B3E4 24020001 */ li $v0, 1
  263. .L8031B3E8:
  264. /* 0D63E8 8031B3E8 00001025 */ move $v0, $zero
  265. .L8031B3EC:
  266. /* 0D63EC 8031B3EC 920E0000 */ lbu $t6, ($s0)
  267. /* 0D63F0 8031B3F0 00027900 */ sll $t7, $v0, 4
  268. /* 0D63F4 8031B3F4 31F90010 */ andi $t9, $t7, 0x10
  269. /* 0D63F8 8031B3F8 31D8FFEF */ andi $t8, $t6, 0xffef
  270. /* 0D63FC 8031B3FC 03387825 */ or $t7, $t9, $t8
  271. /* 0D6400 8031B400 A20F0000 */ sb $t7, ($s0)
  272. /* 0D6404 8031B404 AFAD0058 */ sw $t5, 0x58($sp)
  273. /* 0D6408 8031B408 AFAC005C */ sw $t4, 0x5c($sp)
  274. /* 0D640C 8031B40C 0C0C63B1 */ jal func_80318EC4
  275. /* 0D6410 8031B410 A7AA003A */ sh $t2, 0x3a($sp)
  276. /* 0D6414 8031B414 3C013F80 */ li $at, 0x3F800000 # 1.000000
  277. /* 0D6418 8031B418 44810800 */ mtc1 $at, $f1
  278. /* 0D641C 8031B41C 3C0B8022 */ lui $t3, %hi(D_802214F8) # $t3, 0x8022
  279. /* 0D6420 8031B420 3C1F8022 */ lui $ra, %hi(D_80226D60)
  280. /* 0D6424 8031B424 44800000 */ mtc1 $zero, $f0
  281. /* 0D6428 8031B428 27FF6D60 */ addiu $ra, $ra, %lo(D_80226D60)
  282. /* 0D642C 8031B42C 256B14F8 */ addiu $t3, %lo(D_802214F8) # addiu $t3, $t3, 0x14f8
  283. /* 0D6430 8031B430 240900FF */ li $t1, 255
  284. /* 0D6434 8031B434 97AA003A */ lhu $t2, 0x3a($sp)
  285. /* 0D6438 8031B438 8FAC005C */ lw $t4, 0x5c($sp)
  286. /* 0D643C 8031B43C 1000FF4E */ b .L8031B178
  287. /* 0D6440 8031B440 8FAD0058 */ lw $t5, 0x58($sp)
  288. glabel L8031B444
  289. /* 0D6444 8031B444 26020054 */ addiu $v0, $s0, 0x54
  290. /* 0D6448 8031B448 8C430000 */ lw $v1, ($v0)
  291. /* 0D644C 8031B44C 90640000 */ lbu $a0, ($v1)
  292. /* 0D6450 8031B450 246E0001 */ addiu $t6, $v1, 1
  293. /* 0D6454 8031B454 AC4E0000 */ sw $t6, ($v0)
  294. /* 0D6458 8031B458 30990080 */ andi $t9, $a0, 0x80
  295. /* 0D645C 8031B45C 1320000A */ beqz $t9, .L8031B488
  296. /* 0D6460 8031B460 00802825 */ move $a1, $a0
  297. /* 0D6464 8031B464 01C01825 */ move $v1, $t6
  298. /* 0D6468 8031B468 91CE0000 */ lbu $t6, ($t6)
  299. /* 0D646C 8031B46C 00052200 */ sll $a0, $a1, 8
  300. /* 0D6470 8031B470 308F7F00 */ andi $t7, $a0, 0x7f00
  301. /* 0D6474 8031B474 01CF2025 */ or $a0, $t6, $t7
  302. /* 0D6478 8031B478 3085FFFF */ andi $a1, $a0, 0xffff
  303. /* 0D647C 8031B47C 24780001 */ addiu $t8, $v1, 1
  304. /* 0D6480 8031B480 AC580000 */ sw $t8, ($v0)
  305. /* 0D6484 8031B484 00A02025 */ move $a0, $a1
  306. .L8031B488:
  307. /* 0D6488 8031B488 308AFFFF */ andi $t2, $a0, 0xffff
  308. /* 0D648C 8031B48C 1000FF3A */ b .L8031B178
  309. /* 0D6490 8031B490 A6050038 */ sh $a1, 0x38($s0)
  310. glabel L8031B494
  311. /* 0D6494 8031B494 26020054 */ addiu $v0, $s0, 0x54
  312. /* 0D6498 8031B498 8C430000 */ lw $v1, ($v0)
  313. /* 0D649C 8031B49C 246F0001 */ addiu $t7, $v1, 1
  314. /* 0D64A0 8031B4A0 AC4F0000 */ sw $t7, ($v0)
  315. /* 0D64A4 8031B4A4 90650000 */ lbu $a1, ($v1)
  316. /* 0D64A8 8031B4A8 28A1007F */ slti $at, $a1, 0x7f
  317. /* 0D64AC 8031B4AC 5020FF33 */ beql $at, $zero, .L8031B17C
  318. /* 0D64B0 8031B4B0 8E020054 */ lw $v0, 0x54($s0)
  319. /* 0D64B4 8031B4B4 91B90005 */ lbu $t9, 5($t5)
  320. /* 0D64B8 8031B4B8 8FEE0000 */ lw $t6, ($ra)
  321. /* 0D64BC 8031B4BC 30A200FF */ andi $v0, $a1, 0xff
  322. /* 0D64C0 8031B4C0 0019C080 */ sll $t8, $t9, 2
  323. /* 0D64C4 8031B4C4 0319C023 */ subu $t8, $t8, $t9
  324. /* 0D64C8 8031B4C8 0018C080 */ sll $t8, $t8, 2
  325. /* 0D64CC 8031B4CC 01D83821 */ addu $a3, $t6, $t8
  326. /* 0D64D0 8031B4D0 90E30001 */ lbu $v1, 1($a3)
  327. /* 0D64D4 8031B4D4 00A3082A */ slt $at, $a1, $v1
  328. /* 0D64D8 8031B4D8 54200008 */ bnezl $at, .L8031B4FC
  329. /* 0D64DC 8031B4DC 8CE30004 */ lw $v1, 4($a3)
  330. /* 0D64E0 8031B4E0 306200FF */ andi $v0, $v1, 0xff
  331. /* 0D64E4 8031B4E4 5040FF25 */ beql $v0, $zero, .L8031B17C
  332. /* 0D64E8 8031B4E8 8E020054 */ lw $v0, 0x54($s0)
  333. /* 0D64EC 8031B4EC 2442FFFF */ addiu $v0, $v0, -1
  334. /* 0D64F0 8031B4F0 304F00FF */ andi $t7, $v0, 0xff
  335. /* 0D64F4 8031B4F4 01E01025 */ move $v0, $t7
  336. /* 0D64F8 8031B4F8 8CE30004 */ lw $v1, 4($a3)
  337. .L8031B4FC:
  338. /* 0D64FC 8031B4FC 0002C880 */ sll $t9, $v0, 2
  339. /* 0D6500 8031B500 26050048 */ addiu $a1, $s0, 0x48
  340. /* 0D6504 8031B504 00797021 */ addu $t6, $v1, $t9
  341. /* 0D6508 8031B508 8DC40000 */ lw $a0, ($t6)
  342. /* 0D650C 8031B50C 5480000C */ bnezl $a0, .L8031B540
  343. /* 0D6510 8031B510 8D630004 */ lw $v1, 4($t3)
  344. /* 0D6514 8031B514 11220009 */ beq $t1, $v0, .L8031B53C
  345. .L8031B518:
  346. /* 0D6518 8031B518 0002C080 */ sll $t8, $v0, 2
  347. /* 0D651C 8031B51C 00787821 */ addu $t7, $v1, $t8
  348. /* 0D6520 8031B520 8DE40000 */ lw $a0, ($t7)
  349. /* 0D6524 8031B524 54800006 */ bnezl $a0, .L8031B540
  350. /* 0D6528 8031B528 8D630004 */ lw $v1, 4($t3)
  351. /* 0D652C 8031B52C 2442FFFF */ addiu $v0, $v0, -1
  352. /* 0D6530 8031B530 305900FF */ andi $t9, $v0, 0xff
  353. /* 0D6534 8031B534 1539FFF8 */ bne $t1, $t9, .L8031B518
  354. /* 0D6538 8031B538 03201025 */ move $v0, $t9
  355. .L8031B53C:
  356. /* 0D653C 8031B53C 8D630004 */ lw $v1, 4($t3)
  357. .L8031B540:
  358. /* 0D6540 8031B540 0083082B */ sltu $at, $a0, $v1
  359. /* 0D6544 8031B544 54200007 */ bnezl $at, .L8031B564
  360. /* 0D6548 8031B548 8D630198 */ lw $v1, 0x198($t3)
  361. /* 0D654C 8031B54C 8D6E000C */ lw $t6, 0xc($t3)
  362. /* 0D6550 8031B550 006EC021 */ addu $t8, $v1, $t6
  363. /* 0D6554 8031B554 0304082B */ sltu $at, $t8, $a0
  364. /* 0D6558 8031B558 5020000B */ beql $at, $zero, .L8031B588
  365. /* 0D655C 8031B55C 8C8E0004 */ lw $t6, 4($a0)
  366. /* 0D6560 8031B560 8D630198 */ lw $v1, 0x198($t3)
  367. .L8031B564:
  368. /* 0D6564 8031B564 0083082B */ sltu $at, $a0, $v1
  369. /* 0D6568 8031B568 5420000E */ bnezl $at, .L8031B5A4
  370. /* 0D656C 8031B56C 3C010002 */ lui $at, 2
  371. /* 0D6570 8031B570 8D6F01A0 */ lw $t7, 0x1a0($t3)
  372. /* 0D6574 8031B574 006FC821 */ addu $t9, $v1, $t7
  373. /* 0D6578 8031B578 0324082B */ sltu $at, $t9, $a0
  374. /* 0D657C 8031B57C 54200009 */ bnezl $at, .L8031B5A4
  375. /* 0D6580 8031B580 3C010002 */ lui $at, 2
  376. /* 0D6584 8031B584 8C8E0004 */ lw $t6, 4($a0)
  377. .L8031B588:
  378. /* 0D6588 8031B588 26020014 */ addiu $v0, $s0, 0x14
  379. /* 0D658C 8031B58C AC4E0004 */ sw $t6, 4($v0)
  380. /* 0D6590 8031B590 90980003 */ lbu $t8, 3($a0)
  381. /* 0D6594 8031B594 A0580000 */ sb $t8, ($v0)
  382. /* 0D6598 8031B598 1000FEF7 */ b .L8031B178
  383. /* 0D659C 8031B59C ACA40000 */ sw $a0, ($a1)
  384. /* 0D65A0 8031B5A0 3C010002 */ lui $at, 2
  385. .L8031B5A4:
  386. /* 0D65A4 8031B5A4 00417821 */ addu $t7, $v0, $at
  387. /* 0D65A8 8031B5A8 3C018033 */ lui $at, %hi(D_80331D40) # $at, 0x8033
  388. /* 0D65AC 8031B5AC AC2F1D40 */ sw $t7, %lo(D_80331D40)($at)
  389. /* 0D65B0 8031B5B0 1000FEF1 */ b .L8031B178
  390. /* 0D65B4 8031B5B4 ACA00000 */ sw $zero, ($a1)
  391. glabel L8031B5B8
  392. /* 0D65B8 8031B5B8 26020054 */ addiu $v0, $s0, 0x54
  393. /* 0D65BC 8031B5BC 8C430000 */ lw $v1, ($v0)
  394. /* 0D65C0 8031B5C0 24790001 */ addiu $t9, $v1, 1
  395. /* 0D65C4 8031B5C4 AC590000 */ sw $t9, ($v0)
  396. /* 0D65C8 8031B5C8 90650000 */ lbu $a1, ($v1)
  397. /* 0D65CC 8031B5CC A2050004 */ sb $a1, 4($s0)
  398. /* 0D65D0 8031B5D0 8C430000 */ lw $v1, ($v0)
  399. /* 0D65D4 8031B5D4 246E0001 */ addiu $t6, $v1, 1
  400. /* 0D65D8 8031B5D8 AC4E0000 */ sw $t6, ($v0)
  401. /* 0D65DC 8031B5DC 85B8001A */ lh $t8, 0x1a($t5)
  402. /* 0D65E0 8031B5E0 90670000 */ lbu $a3, ($v1)
  403. /* 0D65E4 8031B5E4 8619001E */ lh $t9, 0x1e($s0)
  404. /* 0D65E8 8031B5E8 03077821 */ addu $t7, $t8, $a3
  405. /* 0D65EC 8031B5EC 85980010 */ lh $t8, 0x10($t4)
  406. /* 0D65F0 8031B5F0 01F97021 */ addu $t6, $t7, $t9
  407. /* 0D65F4 8031B5F4 01D84021 */ addu $t0, $t6, $t8
  408. /* 0D65F8 8031B5F8 310F00FF */ andi $t7, $t0, 0xff
  409. /* 0D65FC 8031B5FC 29E10080 */ slti $at, $t7, 0x80
  410. /* 0D6600 8031B600 14200002 */ bnez $at, .L8031B60C
  411. /* 0D6604 8031B604 01E04025 */ move $t0, $t7
  412. /* 0D6608 8031B608 00004025 */ move $t0, $zero
  413. .L8031B60C:
  414. /* 0D660C 8031B60C 92190004 */ lbu $t9, 4($s0)
  415. /* 0D6610 8031B610 A2080003 */ sb $t0, 3($s0)
  416. /* 0D6614 8031B614 332E0080 */ andi $t6, $t9, 0x80
  417. /* 0D6618 8031B618 51C00009 */ beql $t6, $zero, .L8031B640
  418. /* 0D661C 8031B61C 8C430000 */ lw $v1, ($v0)
  419. /* 0D6620 8031B620 8C580000 */ lw $t8, ($v0)
  420. /* 0D6624 8031B624 930F0000 */ lbu $t7, ($t8)
  421. /* 0D6628 8031B628 A60F001C */ sh $t7, 0x1c($s0)
  422. /* 0D662C 8031B62C 8C590000 */ lw $t9, ($v0)
  423. /* 0D6630 8031B630 272E0001 */ addiu $t6, $t9, 1
  424. /* 0D6634 8031B634 1000FED0 */ b .L8031B178
  425. /* 0D6638 8031B638 AC4E0000 */ sw $t6, ($v0)
  426. /* 0D663C 8031B63C 8C430000 */ lw $v1, ($v0)
  427. .L8031B640:
  428. /* 0D6640 8031B640 90640000 */ lbu $a0, ($v1)
  429. /* 0D6644 8031B644 24780001 */ addiu $t8, $v1, 1
  430. /* 0D6648 8031B648 AC580000 */ sw $t8, ($v0)
  431. /* 0D664C 8031B64C 308F0080 */ andi $t7, $a0, 0x80
  432. /* 0D6650 8031B650 11E0000A */ beqz $t7, .L8031B67C
  433. /* 0D6654 8031B654 00802825 */ move $a1, $a0
  434. /* 0D6658 8031B658 03001825 */ move $v1, $t8
  435. /* 0D665C 8031B65C 93180000 */ lbu $t8, ($t8)
  436. /* 0D6660 8031B660 00052200 */ sll $a0, $a1, 8
  437. /* 0D6664 8031B664 308E7F00 */ andi $t6, $a0, 0x7f00
  438. /* 0D6668 8031B668 030E2025 */ or $a0, $t8, $t6
  439. /* 0D666C 8031B66C 308FFFFF */ andi $t7, $a0, 0xffff
  440. /* 0D6670 8031B670 24790001 */ addiu $t9, $v1, 1
  441. /* 0D6674 8031B674 AC590000 */ sw $t9, ($v0)
  442. /* 0D6678 8031B678 01E02025 */ move $a0, $t7
  443. .L8031B67C:
  444. /* 0D667C 8031B67C 308AFFFF */ andi $t2, $a0, 0xffff
  445. /* 0D6680 8031B680 1000FEBD */ b .L8031B178
  446. /* 0D6684 8031B684 A604001C */ sh $a0, 0x1c($s0)
  447. glabel L8031B688
  448. /* 0D6688 8031B688 1000FEBB */ b .L8031B178
  449. /* 0D668C 8031B68C A2000004 */ sb $zero, 4($s0)
  450. .L8031B690:
  451. glabel L8031B690
  452. /* 0D6690 8031B690 30A200F0 */ andi $v0, $a1, 0xf0
  453. /* 0D6694 8031B694 240100D0 */ li $at, 208
  454. /* 0D6698 8031B698 10410005 */ beq $v0, $at, .L8031B6B0
  455. /* 0D669C 8031B69C 240100E0 */ li $at, 224
  456. /* 0D66A0 8031B6A0 5041000F */ beql $v0, $at, .L8031B6E0
  457. /* 0D66A4 8031B6A4 8D8E008C */ lw $t6, 0x8c($t4)
  458. /* 0D66A8 8031B6A8 1000FEB4 */ b .L8031B17C
  459. /* 0D66AC 8031B6AC 8E020054 */ lw $v0, 0x54($s0)
  460. .L8031B6B0:
  461. /* 0D66B0 8031B6B0 8D8E0088 */ lw $t6, 0x88($t4)
  462. /* 0D66B4 8031B6B4 30B8000F */ andi $t8, $a1, 0xf
  463. /* 0D66B8 8031B6B8 01D87821 */ addu $t7, $t6, $t8
  464. /* 0D66BC 8031B6BC 91EA0000 */ lbu $t2, ($t7)
  465. /* 0D66C0 8031B6C0 014A0019 */ multu $t2, $t2
  466. /* 0D66C4 8031B6C4 0000C812 */ mflo $t9
  467. /* 0D66C8 8031B6C8 44993000 */ mtc1 $t9, $f6
  468. /* 0D66CC 8031B6CC 00000000 */ nop
  469. /* 0D66D0 8031B6D0 46803220 */ cvt.s.w $f8, $f6
  470. /* 0D66D4 8031B6D4 1000FEA8 */ b .L8031B178
  471. /* 0D66D8 8031B6D8 E6080024 */ swc1 $f8, 0x24($s0)
  472. /* 0D66DC 8031B6DC 8D8E008C */ lw $t6, 0x8c($t4)
  473. .L8031B6E0:
  474. /* 0D66E0 8031B6E0 30B8000F */ andi $t8, $a1, 0xf
  475. /* 0D66E4 8031B6E4 01D87821 */ addu $t7, $t6, $t8
  476. /* 0D66E8 8031B6E8 91F90000 */ lbu $t9, ($t7)
  477. /* 0D66EC 8031B6EC 1000FEA2 */ b .L8031B178
  478. /* 0D66F0 8031B6F0 A2190002 */ sb $t9, 2($s0)
  479. .L8031B6F4:
  480. /* 0D66F4 8031B6F4 240100C0 */ li $at, 192
  481. /* 0D66F8 8031B6F8 14A10015 */ bne $a1, $at, .L8031B750
  482. /* 0D66FC 8031B6FC 26020054 */ addiu $v0, $s0, 0x54
  483. /* 0D6700 8031B700 8C430000 */ lw $v1, ($v0)
  484. /* 0D6704 8031B704 90640000 */ lbu $a0, ($v1)
  485. /* 0D6708 8031B708 246E0001 */ addiu $t6, $v1, 1
  486. /* 0D670C 8031B70C AC4E0000 */ sw $t6, ($v0)
  487. /* 0D6710 8031B710 30980080 */ andi $t8, $a0, 0x80
  488. /* 0D6714 8031B714 13000009 */ beqz $t8, .L8031B73C
  489. /* 0D6718 8031B718 00802825 */ move $a1, $a0
  490. /* 0D671C 8031B71C 01C01825 */ move $v1, $t6
  491. /* 0D6720 8031B720 91CE0000 */ lbu $t6, ($t6)
  492. /* 0D6724 8031B724 00042200 */ sll $a0, $a0, 8
  493. /* 0D6728 8031B728 30997F00 */ andi $t9, $a0, 0x7f00
  494. /* 0D672C 8031B72C 246F0001 */ addiu $t7, $v1, 1
  495. /* 0D6730 8031B730 01D92025 */ or $a0, $t6, $t9
  496. /* 0D6734 8031B734 3085FFFF */ andi $a1, $a0, 0xffff
  497. /* 0D6738 8031B738 AC4F0000 */ sw $t7, ($v0)
  498. .L8031B73C:
  499. /* 0D673C 8031B73C 920E0000 */ lbu $t6, ($s0)
  500. /* 0D6740 8031B740 A605003C */ sh $a1, 0x3c($s0)
  501. /* 0D6744 8031B744 35D80020 */ ori $t8, $t6, 0x20
  502. /* 0D6748 8031B748 1000019C */ b .L8031BDBC
  503. /* 0D674C 8031B74C A2180000 */ sb $t8, ($s0)
  504. .L8031B750:
  505. /* 0D6750 8031B750 920F0000 */ lbu $t7, ($s0)
  506. /* 0D6754 8031B754 24010001 */ li $at, 1
  507. /* 0D6758 8031B758 30A900C0 */ andi $t1, $a1, 0xc0
  508. /* 0D675C 8031B75C 31F9FFDF */ andi $t9, $t7, 0xffdf
  509. /* 0D6760 8031B760 A2190000 */ sb $t9, ($s0)
  510. /* 0D6764 8031B764 8DAE0000 */ lw $t6, ($t5)
  511. /* 0D6768 8031B768 000EC180 */ sll $t8, $t6, 6
  512. /* 0D676C 8031B76C 00187FC2 */ srl $t7, $t8, 0x1f
  513. /* 0D6770 8031B770 15E10057 */ bne $t7, $at, .L8031B8D0
  514. /* 0D6774 8031B774 00000000 */ nop
  515. /* 0D6778 8031B778 30A900C0 */ andi $t1, $a1, 0xc0
  516. /* 0D677C 8031B77C 11200009 */ beqz $t1, .L8031B7A4
  517. /* 0D6780 8031B780 26020054 */ addiu $v0, $s0, 0x54
  518. /* 0D6784 8031B784 24010040 */ li $at, 64
  519. /* 0D6788 8031B788 11210023 */ beq $t1, $at, .L8031B818
  520. /* 0D678C 8031B78C 26020054 */ addiu $v0, $s0, 0x54
  521. /* 0D6790 8031B790 24010080 */ li $at, 128
  522. /* 0D6794 8031B794 11210039 */ beq $t1, $at, .L8031B87C
  523. /* 0D6798 8031B798 26020054 */ addiu $v0, $s0, 0x54
  524. /* 0D679C 8031B79C 10000043 */ b .L8031B8AC
  525. /* 0D67A0 8031B7A0 01402025 */ move $a0, $t2
  526. .L8031B7A4:
  527. /* 0D67A4 8031B7A4 8C430000 */ lw $v1, ($v0)
  528. /* 0D67A8 8031B7A8 90660000 */ lbu $a2, ($v1)
  529. /* 0D67AC 8031B7AC 24790001 */ addiu $t9, $v1, 1
  530. /* 0D67B0 8031B7B0 AC590000 */ sw $t9, ($v0)
  531. /* 0D67B4 8031B7B4 30CE0080 */ andi $t6, $a2, 0x80
  532. /* 0D67B8 8031B7B8 11C0000A */ beqz $t6, .L8031B7E4
  533. /* 0D67BC 8031B7BC 00C03825 */ or $a3, $a2, $zero
  534. /* 0D67C0 8031B7C0 03201825 */ move $v1, $t9
  535. /* 0D67C4 8031B7C4 93390000 */ lbu $t9, ($t9)
  536. /* 0D67C8 8031B7C8 00073200 */ sll $a2, $a3, 8
  537. /* 0D67CC 8031B7CC 30CF7F00 */ andi $t7, $a2, 0x7f00
  538. /* 0D67D0 8031B7D0 032F3025 */ or $a2, $t9, $t7
  539. /* 0D67D4 8031B7D4 30C7FFFF */ andi $a3, $a2, 0xffff
  540. /* 0D67D8 8031B7D8 24780001 */ addiu $t8, $v1, 1
  541. /* 0D67DC 8031B7DC AC580000 */ sw $t8, ($v0)
  542. /* 0D67E0 8031B7E0 00E03025 */ move $a2, $a3
  543. .L8031B7E4:
  544. /* 0D67E4 8031B7E4 8C430000 */ lw $v1, ($v0)
  545. /* 0D67E8 8031B7E8 30CAFFFF */ andi $t2, $a2, 0xffff
  546. /* 0D67EC 8031B7EC 01402025 */ move $a0, $t2
  547. /* 0D67F0 8031B7F0 906B0000 */ lbu $t3, ($v1)
  548. /* 0D67F4 8031B7F4 246F0001 */ addiu $t7, $v1, 1
  549. /* 0D67F8 8031B7F8 AC4F0000 */ sw $t7, ($v0)
  550. /* 0D67FC 8031B7FC 91EE0000 */ lbu $t6, ($t7)
  551. /* 0D6800 8031B800 A20E0002 */ sb $t6, 2($s0)
  552. /* 0D6804 8031B804 8C580000 */ lw $t8, ($v0)
  553. /* 0D6808 8031B808 270F0001 */ addiu $t7, $t8, 1
  554. /* 0D680C 8031B80C AC4F0000 */ sw $t7, ($v0)
  555. /* 0D6810 8031B810 10000027 */ b .L8031B8B0
  556. /* 0D6814 8031B814 A607003A */ sh $a3, 0x3a($s0)
  557. .L8031B818:
  558. /* 0D6818 8031B818 8C430000 */ lw $v1, ($v0)
  559. /* 0D681C 8031B81C 90660000 */ lbu $a2, ($v1)
  560. /* 0D6820 8031B820 24790001 */ addiu $t9, $v1, 1
  561. /* 0D6824 8031B824 AC590000 */ sw $t9, ($v0)
  562. /* 0D6828 8031B828 30CE0080 */ andi $t6, $a2, 0x80
  563. /* 0D682C 8031B82C 11C0000A */ beqz $t6, .L8031B858
  564. /* 0D6830 8031B830 00C03825 */ or $a3, $a2, $zero
  565. /* 0D6834 8031B834 03201825 */ move $v1, $t9
  566. /* 0D6838 8031B838 93390000 */ lbu $t9, ($t9)
  567. /* 0D683C 8031B83C 00073200 */ sll $a2, $a3, 8
  568. /* 0D6840 8031B840 30CF7F00 */ andi $t7, $a2, 0x7f00
  569. /* 0D6844 8031B844 032F3025 */ or $a2, $t9, $t7
  570. /* 0D6848 8031B848 30C7FFFF */ andi $a3, $a2, 0xffff
  571. /* 0D684C 8031B84C 24780001 */ addiu $t8, $v1, 1
  572. /* 0D6850 8031B850 AC580000 */ sw $t8, ($v0)
  573. /* 0D6854 8031B854 00E03025 */ move $a2, $a3
  574. .L8031B858:
  575. /* 0D6858 8031B858 8C430000 */ lw $v1, ($v0)
  576. /* 0D685C 8031B85C 30CAFFFF */ andi $t2, $a2, 0xffff
  577. /* 0D6860 8031B860 01402025 */ move $a0, $t2
  578. /* 0D6864 8031B864 906B0000 */ lbu $t3, ($v1)
  579. /* 0D6868 8031B868 246F0001 */ addiu $t7, $v1, 1
  580. /* 0D686C 8031B86C AC4F0000 */ sw $t7, ($v0)
  581. /* 0D6870 8031B870 A2000002 */ sb $zero, 2($s0)
  582. /* 0D6874 8031B874 1000000E */ b .L8031B8B0
  583. /* 0D6878 8031B878 A607003A */ sh $a3, 0x3a($s0)
  584. .L8031B87C:
  585. /* 0D687C 8031B87C 8C430000 */ lw $v1, ($v0)
  586. /* 0D6880 8031B880 960A003A */ lhu $t2, 0x3a($s0)
  587. /* 0D6884 8031B884 906B0000 */ lbu $t3, ($v1)
  588. /* 0D6888 8031B888 24790001 */ addiu $t9, $v1, 1
  589. /* 0D688C 8031B88C AC590000 */ sw $t9, ($v0)
  590. /* 0D6890 8031B890 93380000 */ lbu $t8, ($t9)
  591. /* 0D6894 8031B894 01402025 */ move $a0, $t2
  592. /* 0D6898 8031B898 A2180002 */ sb $t8, 2($s0)
  593. /* 0D689C 8031B89C 8C4F0000 */ lw $t7, ($v0)
  594. /* 0D68A0 8031B8A0 25F90001 */ addiu $t9, $t7, 1
  595. /* 0D68A4 8031B8A4 10000002 */ b .L8031B8B0
  596. /* 0D68A8 8031B8A8 AC590000 */ sw $t9, ($v0)
  597. .L8031B8AC:
  598. /* 0D68AC 8031B8AC 8FAB0030 */ lw $t3, 0x30($sp)
  599. .L8031B8B0:
  600. /* 0D68B0 8031B8B0 016B0019 */ multu $t3, $t3
  601. /* 0D68B4 8031B8B4 00A91823 */ subu $v1, $a1, $t1
  602. /* 0D68B8 8031B8B8 00007012 */ mflo $t6
  603. /* 0D68BC 8031B8BC 448E5000 */ mtc1 $t6, $f10
  604. /* 0D68C0 8031B8C0 00000000 */ nop
  605. /* 0D68C4 8031B8C4 46805420 */ cvt.s.w $f16, $f10
  606. /* 0D68C8 8031B8C8 10000024 */ b .L8031B95C
  607. /* 0D68CC 8031B8CC E6100024 */ swc1 $f16, 0x24($s0)
  608. .L8031B8D0:
  609. /* 0D68D0 8031B8D0 11200008 */ beqz $t1, .L8031B8F4
  610. /* 0D68D4 8031B8D4 26020054 */ addiu $v0, $s0, 0x54
  611. /* 0D68D8 8031B8D8 24010040 */ li $at, 64
  612. /* 0D68DC 8031B8DC 11210019 */ beq $t1, $at, .L8031B944
  613. /* 0D68E0 8031B8E0 24010080 */ li $at, 128
  614. /* 0D68E4 8031B8E4 5121001B */ beql $t1, $at, .L8031B954
  615. /* 0D68E8 8031B8E8 960A003A */ lhu $t2, 0x3a($s0)
  616. /* 0D68EC 8031B8EC 1000001A */ b .L8031B958
  617. /* 0D68F0 8031B8F0 01402025 */ move $a0, $t2
  618. .L8031B8F4:
  619. /* 0D68F4 8031B8F4 8C430000 */ lw $v1, ($v0)
  620. /* 0D68F8 8031B8F8 90660000 */ lbu $a2, ($v1)
  621. /* 0D68FC 8031B8FC 24780001 */ addiu $t8, $v1, 1
  622. /* 0D6900 8031B900 AC580000 */ sw $t8, ($v0)
  623. /* 0D6904 8031B904 30CF0080 */ andi $t7, $a2, 0x80
  624. /* 0D6908 8031B908 11E0000A */ beqz $t7, .L8031B934
  625. /* 0D690C 8031B90C 00C03825 */ or $a3, $a2, $zero
  626. /* 0D6910 8031B910 03001825 */ move $v1, $t8
  627. /* 0D6914 8031B914 93180000 */ lbu $t8, ($t8)
  628. /* 0D6918 8031B918 00073200 */ sll $a2, $a3, 8
  629. /* 0D691C 8031B91C 30CE7F00 */ andi $t6, $a2, 0x7f00
  630. /* 0D6920 8031B920 030E3025 */ or $a2, $t8, $t6
  631. /* 0D6924 8031B924 30C7FFFF */ andi $a3, $a2, 0xffff
  632. /* 0D6928 8031B928 24790001 */ addiu $t9, $v1, 1
  633. /* 0D692C 8031B92C AC590000 */ sw $t9, ($v0)
  634. /* 0D6930 8031B930 00E03025 */ move $a2, $a3
  635. .L8031B934:
  636. /* 0D6934 8031B934 30CAFFFF */ andi $t2, $a2, 0xffff
  637. /* 0D6938 8031B938 A607003A */ sh $a3, 0x3a($s0)
  638. /* 0D693C 8031B93C 10000006 */ b .L8031B958
  639. /* 0D6940 8031B940 01402025 */ move $a0, $t2
  640. .L8031B944:
  641. /* 0D6944 8031B944 960A0038 */ lhu $t2, 0x38($s0)
  642. /* 0D6948 8031B948 10000003 */ b .L8031B958
  643. /* 0D694C 8031B94C 01402025 */ move $a0, $t2
  644. /* 0D6950 8031B950 960A003A */ lhu $t2, 0x3a($s0)
  645. .L8031B954:
  646. /* 0D6954 8031B954 01402025 */ move $a0, $t2
  647. .L8031B958:
  648. /* 0D6958 8031B958 00A91823 */ subu $v1, $a1, $t1
  649. .L8031B95C:
  650. /* 0D695C 8031B95C 920E0002 */ lbu $t6, 2($s0)
  651. /* 0D6960 8031B960 A604003C */ sh $a0, 0x3c($s0)
  652. /* 0D6964 8031B964 01C40019 */ multu $t6, $a0
  653. /* 0D6968 8031B968 0000C012 */ mflo $t8
  654. /* 0D696C 8031B96C 07010003 */ bgez $t8, .L8031B97C
  655. /* 0D6970 8031B970 00187A03 */ sra $t7, $t8, 8
  656. /* 0D6974 8031B974 270100FF */ addiu $at, $t8, 0xff
  657. /* 0D6978 8031B978 00017A03 */ sra $t7, $at, 8
  658. .L8031B97C:
  659. /* 0D697C 8031B97C A60F003E */ sh $t7, 0x3e($s0)
  660. /* 0D6980 8031B980 8D990000 */ lw $t9, ($t4)
  661. /* 0D6984 8031B984 0019C080 */ sll $t8, $t9, 2
  662. /* 0D6988 8031B988 07030006 */ bgezl $t8, .L8031B9A4
  663. /* 0D698C 8031B98C 8DA20000 */ lw $v0, ($t5)
  664. /* 0D6990 8031B990 91AF0002 */ lbu $t7, 2($t5)
  665. /* 0D6994 8031B994 31F90040 */ andi $t9, $t7, 0x40
  666. /* 0D6998 8031B998 57200008 */ bnezl $t9, .L8031B9BC
  667. /* 0D699C 8031B99C 92180000 */ lbu $t8, ($s0)
  668. /* 0D69A0 8031B9A0 8DA20000 */ lw $v0, ($t5)
  669. .L8031B9A4:
  670. /* 0D69A4 8031B9A4 0002C0C0 */ sll $t8, $v0, 3
  671. /* 0D69A8 8031B9A8 07000003 */ bltz $t8, .L8031B9B8
  672. /* 0D69AC 8031B9AC 0002C900 */ sll $t9, $v0, 4
  673. /* 0D69B0 8031B9B0 07220006 */ bltzl $t9, .L8031B9CC
  674. /* 0D69B4 8031B9B4 85B90018 */ lh $t9, 0x18($t5)
  675. .L8031B9B8:
  676. /* 0D69B8 8031B9B8 92180000 */ lbu $t8, ($s0)
  677. .L8031B9BC:
  678. /* 0D69BC 8031B9BC 370F0020 */ ori $t7, $t8, 0x20
  679. /* 0D69C0 8031B9C0 100000FE */ b .L8031BDBC
  680. /* 0D69C4 8031B9C4 A20F0000 */ sb $t7, ($s0)
  681. /* 0D69C8 8031B9C8 85B90018 */ lh $t9, 0x18($t5)
  682. .L8031B9CC:
  683. /* 0D69CC 8031B9CC 5720003B */ bnezl $t9, .L8031BABC
  684. /* 0D69D0 8031B9D0 85980010 */ lh $t8, 0x10($t4)
  685. /* 0D69D4 8031B9D4 85B8001A */ lh $t8, 0x1a($t5)
  686. /* 0D69D8 8031B9D8 8619001E */ lh $t9, 0x1e($s0)
  687. /* 0D69DC 8031B9DC 00787821 */ addu $t7, $v1, $t8
  688. /* 0D69E0 8031B9E0 01F94021 */ addu $t0, $t7, $t9
  689. /* 0D69E4 8031B9E4 91AF0005 */ lbu $t7, 5($t5)
  690. /* 0D69E8 8031B9E8 8FF80000 */ lw $t8, ($ra)
  691. /* 0D69EC 8031B9EC 310E00FF */ andi $t6, $t0, 0xff
  692. /* 0D69F0 8031B9F0 000FC880 */ sll $t9, $t7, 2
  693. /* 0D69F4 8031B9F4 032FC823 */ subu $t9, $t9, $t7
  694. /* 0D69F8 8031B9F8 0019C880 */ sll $t9, $t9, 2
  695. /* 0D69FC 8031B9FC 03193821 */ addu $a3, $t8, $t9
  696. /* 0D6A00 8031BA00 90E20002 */ lbu $v0, 2($a3)
  697. /* 0D6A04 8031BA04 01C04025 */ move $t0, $t6
  698. /* 0D6A08 8031BA08 01C2082A */ slt $at, $t6, $v0
  699. /* 0D6A0C 8031BA0C 5420000C */ bnezl $at, .L8031BA40
  700. /* 0D6A10 8031BA10 8CEE0008 */ lw $t6, 8($a3)
  701. /* 0D6A14 8031BA14 304800FF */ andi $t0, $v0, 0xff
  702. /* 0D6A18 8031BA18 55000006 */ bnezl $t0, .L8031BA34
  703. /* 0D6A1C 8031BA1C 2508FFFF */ addiu $t0, $t0, -1
  704. /* 0D6A20 8031BA20 920F0000 */ lbu $t7, ($s0)
  705. /* 0D6A24 8031BA24 35F80020 */ ori $t8, $t7, 0x20
  706. /* 0D6A28 8031BA28 100000E2 */ b .L8031BDB4
  707. /* 0D6A2C 8031BA2C A2180000 */ sb $t8, ($s0)
  708. /* 0D6A30 8031BA30 2508FFFF */ addiu $t0, $t0, -1
  709. .L8031BA34:
  710. /* 0D6A34 8031BA34 311900FF */ andi $t9, $t0, 0xff
  711. /* 0D6A38 8031BA38 03204025 */ move $t0, $t9
  712. /* 0D6A3C 8031BA3C 8CEE0008 */ lw $t6, 8($a3)
  713. .L8031BA40:
  714. /* 0D6A40 8031BA40 00087880 */ sll $t7, $t0, 2
  715. /* 0D6A44 8031BA44 01CFC021 */ addu $t8, $t6, $t7
  716. /* 0D6A48 8031BA48 8F020000 */ lw $v0, ($t8)
  717. /* 0D6A4C 8031BA4C 54400006 */ bnezl $v0, .L8031BA68
  718. /* 0D6A50 8031BA50 8C58000C */ lw $t8, 0xc($v0)
  719. /* 0D6A54 8031BA54 920E0000 */ lbu $t6, ($s0)
  720. /* 0D6A58 8031BA58 35CF0020 */ ori $t7, $t6, 0x20
  721. /* 0D6A5C 8031BA5C 100000D5 */ b .L8031BDB4
  722. /* 0D6A60 8031BA60 A20F0000 */ sb $t7, ($s0)
  723. /* 0D6A64 8031BA64 8C58000C */ lw $t8, 0xc($v0)
  724. .L8031BA68:
  725. /* 0D6A68 8031BA68 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  726. /* 0D6A6C 8031BA6C AE180018 */ sw $t8, 0x18($s0)
  727. /* 0D6A70 8031BA70 90590000 */ lbu $t9, ($v0)
  728. /* 0D6A74 8031BA74 A2190014 */ sb $t9, 0x14($s0)
  729. /* 0D6A78 8031BA78 904E0001 */ lbu $t6, 1($v0)
  730. /* 0D6A7C 8031BA7C 448E9000 */ mtc1 $t6, $f18
  731. /* 0D6A80 8031BA80 05C10004 */ bgez $t6, .L8031BA94
  732. /* 0D6A84 8031BA84 46809120 */ cvt.s.w $f4, $f18
  733. /* 0D6A88 8031BA88 44813000 */ mtc1 $at, $f6
  734. /* 0D6A8C 8031BA8C 00000000 */ nop
  735. /* 0D6A90 8031BA90 46062100 */ add.s $f4, $f4, $f6
  736. .L8031BA94:
  737. /* 0D6A94 8031BA94 46002221 */ cvt.d.s $f8, $f4
  738. /* 0D6A98 8031BA98 24430004 */ addiu $v1, $v0, 4
  739. /* 0D6A9C 8031BA9C 46204282 */ mul.d $f10, $f8, $f0
  740. /* 0D6AA0 8031BAA0 AE03004C */ sw $v1, 0x4c($s0)
  741. /* 0D6AA4 8031BAA4 46205420 */ cvt.s.d $f16, $f10
  742. /* 0D6AA8 8031BAA8 E6100028 */ swc1 $f16, 0x28($s0)
  743. /* 0D6AAC 8031BAAC C4720004 */ lwc1 $f18, 4($v1)
  744. /* 0D6AB0 8031BAB0 100000C0 */ b .L8031BDB4
  745. /* 0D6AB4 8031BAB4 E6120020 */ swc1 $f18, 0x20($s0)
  746. /* 0D6AB8 8031BAB8 85980010 */ lh $t8, 0x10($t4)
  747. .L8031BABC:
  748. /* 0D6ABC 8031BABC 85AE001A */ lh $t6, 0x1a($t5)
  749. /* 0D6AC0 8031BAC0 0078C821 */ addu $t9, $v1, $t8
  750. /* 0D6AC4 8031BAC4 8618001E */ lh $t8, 0x1e($s0)
  751. /* 0D6AC8 8031BAC8 032E7821 */ addu $t7, $t9, $t6
  752. /* 0D6ACC 8031BACC 01F84021 */ addu $t0, $t7, $t8
  753. /* 0D6AD0 8031BAD0 310200FF */ andi $v0, $t0, 0xff
  754. /* 0D6AD4 8031BAD4 28410080 */ slti $at, $v0, 0x80
  755. /* 0D6AD8 8031BAD8 14200005 */ bnez $at, .L8031BAF0
  756. /* 0D6ADC 8031BADC 00404025 */ move $t0, $v0
  757. /* 0D6AE0 8031BAE0 920F0000 */ lbu $t7, ($s0)
  758. /* 0D6AE4 8031BAE4 35F80020 */ ori $t8, $t7, 0x20
  759. /* 0D6AE8 8031BAE8 100000B2 */ b .L8031BDB4
  760. /* 0D6AEC 8031BAEC A2180000 */ sb $t8, ($s0)
  761. .L8031BAF0:
  762. /* 0D6AF0 8031BAF0 8E030048 */ lw $v1, 0x48($s0)
  763. /* 0D6AF4 8031BAF4 54600003 */ bnezl $v1, .L8031BB04
  764. /* 0D6AF8 8031BAF8 92190004 */ lbu $t9, 4($s0)
  765. /* 0D6AFC 8031BAFC 8DA3003C */ lw $v1, 0x3c($t5)
  766. /* 0D6B00 8031BB00 92190004 */ lbu $t9, 4($s0)
  767. .L8031BB04:
  768. /* 0D6B04 8031BB04 13200088 */ beqz $t9, .L8031BD28
  769. /* 0D6B08 8031BB08 00000000 */ nop
  770. /* 0D6B0C 8031BB0C 92040003 */ lbu $a0, 3($s0)
  771. /* 0D6B10 8031BB10 0082082A */ slt $at, $a0, $v0
  772. /* 0D6B14 8031BB14 10200003 */ beqz $at, .L8031BB24
  773. /* 0D6B18 8031BB18 00802825 */ move $a1, $a0
  774. /* 0D6B1C 8031BB1C 10000001 */ b .L8031BB24
  775. /* 0D6B20 8031BB20 00402825 */ move $a1, $v0
  776. .L8031BB24:
  777. /* 0D6B24 8031BB24 10600017 */ beqz $v1, .L8031BB84
  778. /* 0D6B28 8031BB28 3C013F80 */ li $at, 0x3F800000 # 1.000000
  779. /* 0D6B2C 8031BB2C 906E0001 */ lbu $t6, 1($v1)
  780. /* 0D6B30 8031BB30 30A200FF */ andi $v0, $a1, 0xff
  781. /* 0D6B34 8031BB34 004E082A */ slt $at, $v0, $t6
  782. /* 0D6B38 8031BB38 50200004 */ beql $at, $zero, .L8031BB4C
  783. /* 0D6B3C 8031BB3C 906F0002 */ lbu $t7, 2($v1)
  784. /* 0D6B40 8031BB40 10000009 */ b .L8031BB68
  785. /* 0D6B44 8031BB44 24620008 */ addiu $v0, $v1, 8
  786. /* 0D6B48 8031BB48 906F0002 */ lbu $t7, 2($v1)
  787. .L8031BB4C:
  788. /* 0D6B4C 8031BB4C 24640018 */ addiu $a0, $v1, 0x18
  789. /* 0D6B50 8031BB50 01E2082A */ slt $at, $t7, $v0
  790. /* 0D6B54 8031BB54 14200003 */ bnez $at, .L8031BB64
  791. /* 0D6B58 8031BB58 00000000 */ nop
  792. /* 0D6B5C 8031BB5C 10000001 */ b .L8031BB64
  793. /* 0D6B60 8031BB60 24640010 */ addiu $a0, $v1, 0x10
  794. .L8031BB64:
  795. /* 0D6B64 8031BB64 00801025 */ move $v0, $a0
  796. .L8031BB68:
  797. /* 0D6B68 8031BB68 8E18004C */ lw $t8, 0x4c($s0)
  798. /* 0D6B6C 8031BB6C 0058C826 */ xor $t9, $v0, $t8
  799. /* 0D6B70 8031BB70 2F390001 */ sltiu $t9, $t9, 1
  800. /* 0D6B74 8031BB74 A3B9003F */ sb $t9, 0x3f($sp)
  801. /* 0D6B78 8031BB78 AE02004C */ sw $v0, 0x4c($s0)
  802. /* 0D6B7C 8031BB7C 10000003 */ b .L8031BB8C
  803. /* 0D6B80 8031BB80 C4400004 */ lwc1 $f0, 4($v0)
  804. .L8031BB84:
  805. /* 0D6B84 8031BB84 44810000 */ mtc1 $at, $f0
  806. /* 0D6B88 8031BB88 AE00004C */ sw $zero, 0x4c($s0)
  807. .L8031BB8C:
  808. /* 0D6B8C 8031BB8C 3C038033 */ lui $v1, %hi(D_80332884)
  809. /* 0D6B90 8031BB90 24632884 */ addiu $v1, %lo(D_80332884) # addiu $v1, $v1, 0x2884
  810. /* 0D6B94 8031BB94 00087080 */ sll $t6, $t0, 2
  811. /* 0D6B98 8031BB98 92180003 */ lbu $t8, 3($s0)
  812. /* 0D6B9C 8031BB9C 006E7821 */ addu $t7, $v1, $t6
  813. /* 0D6BA0 8031BBA0 C5E60000 */ lwc1 $f6, ($t7)
  814. /* 0D6BA4 8031BBA4 920F0004 */ lbu $t7, 4($s0)
  815. /* 0D6BA8 8031BBA8 0018C880 */ sll $t9, $t8, 2
  816. /* 0D6BAC 8031BBAC 00797021 */ addu $t6, $v1, $t9
  817. /* 0D6BB0 8031BBB0 C5C40000 */ lwc1 $f4, ($t6)
  818. /* 0D6BB4 8031BBB4 46003082 */ mul.s $f2, $f6, $f0
  819. /* 0D6BB8 8031BBB8 2401FF7F */ li $at, -129
  820. /* 0D6BBC 8031BBBC 01E1C024 */ and $t8, $t7, $at
  821. /* 0D6BC0 8031BBC0 2719FFFF */ addiu $t9, $t8, -1
  822. /* 0D6BC4 8031BBC4 2F210005 */ sltiu $at, $t9, 5
  823. /* 0D6BC8 8031BBC8 46002302 */ mul.s $f12, $f4, $f0
  824. /* 0D6BCC 8031BBCC 1020000C */ beqz $at, .L8031BC00
  825. /* 0D6BD0 8031BBD0 0019C880 */ sll $t9, $t9, 2
  826. /* 0D6BD4 8031BBD4 3C018033 */ lui $at, %hi(jtbl_80337CDC)
  827. /* 0D6BD8 8031BBD8 00390821 */ addu $at, $at, $t9
  828. /* 0D6BDC 8031BBDC 8C397CDC */ lw $t9, %lo(jtbl_80337CDC)($at)
  829. /* 0D6BE0 8031BBE0 03200008 */ jr $t9
  830. /* 0D6BE4 8031BBE4 00000000 */ nop
  831. glabel L8031BBE8
  832. /* 0D6BE8 8031BBE8 E7A20024 */ swc1 $f2, 0x24($sp)
  833. /* 0D6BEC 8031BBEC 10000005 */ b .L8031BC04
  834. /* 0D6BF0 8031BBF0 46006006 */ mov.s $f0, $f12
  835. glabel L8031BBF4
  836. /* 0D6BF4 8031BBF4 46001006 */ mov.s $f0, $f2
  837. /* 0D6BF8 8031BBF8 10000002 */ b .L8031BC04
  838. /* 0D6BFC 8031BBFC E7AC0024 */ swc1 $f12, 0x24($sp)
  839. .L8031BC00:
  840. /* 0D6C00 8031BC00 C7A00028 */ lwc1 $f0, 0x28($sp)
  841. .L8031BC04:
  842. /* 0D6C04 8031BC04 C7A80024 */ lwc1 $f8, 0x24($sp)
  843. /* 0D6C08 8031BC08 3C013FF0 */ li $at, 0x3FF00000 # 1.875000
  844. /* 0D6C0C 8031BC0C 44819800 */ mtc1 $at, $f19
  845. /* 0D6C10 8031BC10 46004283 */ div.s $f10, $f8, $f0
  846. /* 0D6C14 8031BC14 44809000 */ mtc1 $zero, $f18
  847. /* 0D6C18 8031BC18 26020004 */ addiu $v0, $s0, 4
  848. /* 0D6C1C 8031BC1C 46005421 */ cvt.d.s $f16, $f10
  849. /* 0D6C20 8031BC20 46328181 */ sub.d $f6, $f16, $f18
  850. /* 0D6C24 8031BC24 46203120 */ cvt.s.d $f4, $f6
  851. /* 0D6C28 8031BC28 E444000C */ swc1 $f4, 0xc($v0)
  852. /* 0D6C2C 8031BC2C 920E0004 */ lbu $t6, 4($s0)
  853. /* 0D6C30 8031BC30 31CF0080 */ andi $t7, $t6, 0x80
  854. /* 0D6C34 8031BC34 11E00023 */ beqz $t7, .L8031BCC4
  855. /* 0D6C38 8031BC38 3C0E8022 */ lui $t6, %hi(D_80226D7C)
  856. /* 0D6C3C 8031BC3C 9598000A */ lhu $t8, 0xa($t4)
  857. /* 0D6C40 8031BC40 3C018033 */ lui $at, %hi(D_80337CF0)
  858. /* 0D6C44 8031BC44 D4287CF0 */ ldc1 $f8, %lo(D_80337CF0)($at)
  859. /* 0D6C48 8031BC48 44985000 */ mtc1 $t8, $f10
  860. /* 0D6C4C 8031BC4C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  861. /* 0D6C50 8031BC50 07010004 */ bgez $t8, .L8031BC64
  862. /* 0D6C54 8031BC54 46805420 */ cvt.s.w $f16, $f10
  863. /* 0D6C58 8031BC58 44819000 */ mtc1 $at, $f18
  864. /* 0D6C5C 8031BC5C 00000000 */ nop
  865. /* 0D6C60 8031BC60 46128400 */ add.s $f16, $f16, $f18
  866. .L8031BC64:
  867. /* 0D6C64 8031BC64 8619003C */ lh $t9, 0x3c($s0)
  868. /* 0D6C68 8031BC68 85CE6D7C */ lh $t6, %lo(D_80226D7C)($t6)
  869. /* 0D6C6C 8031BC6C 460081A1 */ cvt.d.s $f6, $f16
  870. /* 0D6C70 8031BC70 44995000 */ mtc1 $t9, $f10
  871. /* 0D6C74 8031BC74 448E8000 */ mtc1 $t6, $f16
  872. /* 0D6C78 8031BC78 46264102 */ mul.d $f4, $f8, $f6
  873. /* 0D6C7C 8031BC7C 960F001C */ lhu $t7, 0x1c($s0)
  874. /* 0D6C80 8031BC80 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  875. /* 0D6C84 8031BC84 468054A0 */ cvt.s.w $f18, $f10
  876. /* 0D6C88 8031BC88 448F5000 */ mtc1 $t7, $f10
  877. /* 0D6C8C 8031BC8C 46808220 */ cvt.s.w $f8, $f16
  878. /* 0D6C90 8031BC90 46805420 */ cvt.s.w $f16, $f10
  879. /* 0D6C94 8031BC94 46089182 */ mul.s $f6, $f18, $f8
  880. /* 0D6C98 8031BC98 05E10004 */ bgez $t7, .L8031BCAC
  881. /* 0D6C9C 8031BC9C 00000000 */ nop
  882. /* 0D6CA0 8031BCA0 44819000 */ mtc1 $at, $f18
  883. /* 0D6CA4 8031BCA4 00000000 */ nop
  884. /* 0D6CA8 8031BCA8 46128400 */ add.s $f16, $f16, $f18
  885. .L8031BCAC:
  886. /* 0D6CAC 8031BCAC 46068202 */ mul.s $f8, $f16, $f6
  887. /* 0D6CB0 8031BCB0 460042A1 */ cvt.d.s $f10, $f8
  888. /* 0D6CB4 8031BCB4 462A2483 */ div.d $f18, $f4, $f10
  889. /* 0D6CB8 8031BCB8 46209420 */ cvt.s.d $f16, $f18
  890. /* 0D6CBC 8031BCBC 1000000F */ b .L8031BCFC
  891. /* 0D6CC0 8031BCC0 E4500008 */ swc1 $f16, 8($v0)
  892. .L8031BCC4:
  893. /* 0D6CC4 8031BCC4 9618001C */ lhu $t8, 0x1c($s0)
  894. /* 0D6CC8 8031BCC8 3C018033 */ lui $at, %hi(D_80337CF8)
  895. /* 0D6CCC 8031BCCC D4267CF8 */ ldc1 $f6, %lo(D_80337CF8)($at)
  896. /* 0D6CD0 8031BCD0 44984000 */ mtc1 $t8, $f8
  897. /* 0D6CD4 8031BCD4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  898. /* 0D6CD8 8031BCD8 07010004 */ bgez $t8, .L8031BCEC
  899. /* 0D6CDC 8031BCDC 46804120 */ cvt.s.w $f4, $f8
  900. /* 0D6CE0 8031BCE0 44815000 */ mtc1 $at, $f10
  901. /* 0D6CE4 8031BCE4 00000000 */ nop
  902. /* 0D6CE8 8031BCE8 460A2100 */ add.s $f4, $f4, $f10
  903. .L8031BCEC:
  904. /* 0D6CEC 8031BCEC 460024A1 */ cvt.d.s $f18, $f4
  905. /* 0D6CF0 8031BCF0 46323403 */ div.d $f16, $f6, $f18
  906. /* 0D6CF4 8031BCF4 46208220 */ cvt.s.d $f8, $f16
  907. /* 0D6CF8 8031BCF8 E4480008 */ swc1 $f8, 8($v0)
  908. .L8031BCFC:
  909. /* 0D6CFC 8031BCFC 44805000 */ mtc1 $zero, $f10
  910. /* 0D6D00 8031BD00 2401FF7F */ li $at, -129
  911. /* 0D6D04 8031BD04 E44A0004 */ swc1 $f10, 4($v0)
  912. /* 0D6D08 8031BD08 92190004 */ lbu $t9, 4($s0)
  913. /* 0D6D0C 8031BD0C E6000020 */ swc1 $f0, 0x20($s0)
  914. /* 0D6D10 8031BD10 03217024 */ and $t6, $t9, $at
  915. /* 0D6D14 8031BD14 24010005 */ li $at, 5
  916. /* 0D6D18 8031BD18 55C10027 */ bnel $t6, $at, .L8031BDB8
  917. /* 0D6D1C 8031BD1C 860F003C */ lh $t7, 0x3c($s0)
  918. /* 0D6D20 8031BD20 10000024 */ b .L8031BDB4
  919. /* 0D6D24 8031BD24 A2080003 */ sb $t0, 3($s0)
  920. .L8031BD28:
  921. /* 0D6D28 8031BD28 1060001C */ beqz $v1, .L8031BD9C
  922. /* 0D6D2C 8031BD2C 0008C880 */ sll $t9, $t0, 2
  923. /* 0D6D30 8031BD30 906F0001 */ lbu $t7, 1($v1)
  924. /* 0D6D34 8031BD34 004F082A */ slt $at, $v0, $t7
  925. /* 0D6D38 8031BD38 10200003 */ beqz $at, .L8031BD48
  926. /* 0D6D3C 8031BD3C 00087880 */ sll $t7, $t0, 2
  927. /* 0D6D40 8031BD40 10000009 */ b .L8031BD68
  928. /* 0D6D44 8031BD44 24620008 */ addiu $v0, $v1, 8
  929. .L8031BD48:
  930. /* 0D6D48 8031BD48 90780002 */ lbu $t8, 2($v1)
  931. /* 0D6D4C 8031BD4C 24640018 */ addiu $a0, $v1, 0x18
  932. /* 0D6D50 8031BD50 0302082A */ slt $at, $t8, $v0
  933. /* 0D6D54 8031BD54 14200003 */ bnez $at, .L8031BD64
  934. /* 0D6D58 8031BD58 00000000 */ nop
  935. /* 0D6D5C 8031BD5C 10000001 */ b .L8031BD64
  936. /* 0D6D60 8031BD60 24640010 */ addiu $a0, $v1, 0x10
  937. .L8031BD64:
  938. /* 0D6D64 8031BD64 00801025 */ move $v0, $a0
  939. .L8031BD68:
  940. /* 0D6D68 8031BD68 8E19004C */ lw $t9, 0x4c($s0)
  941. /* 0D6D6C 8031BD6C 3C038033 */ lui $v1, %hi(D_80332884) # $v1, 0x8033
  942. /* 0D6D70 8031BD70 24632884 */ addiu $v1, %lo(D_80332884) # addiu $v1, $v1, 0x2884
  943. /* 0D6D74 8031BD74 00597026 */ xor $t6, $v0, $t9
  944. /* 0D6D78 8031BD78 2DCE0001 */ sltiu $t6, $t6, 1
  945. /* 0D6D7C 8031BD7C A3AE003F */ sb $t6, 0x3f($sp)
  946. /* 0D6D80 8031BD80 AE02004C */ sw $v0, 0x4c($s0)
  947. /* 0D6D84 8031BD84 006FC021 */ addu $t8, $v1, $t7
  948. /* 0D6D88 8031BD88 C7060000 */ lwc1 $f6, ($t8)
  949. /* 0D6D8C 8031BD8C C4440004 */ lwc1 $f4, 4($v0)
  950. /* 0D6D90 8031BD90 46062482 */ mul.s $f18, $f4, $f6
  951. /* 0D6D94 8031BD94 10000007 */ b .L8031BDB4
  952. /* 0D6D98 8031BD98 E6120020 */ swc1 $f18, 0x20($s0)
  953. .L8031BD9C:
  954. /* 0D6D9C 8031BD9C 3C038033 */ lui $v1, %hi(D_80332884) # $v1, 0x8033
  955. /* 0D6DA0 8031BDA0 24632884 */ addiu $v1, %lo(D_80332884) # addiu $v1, $v1, 0x2884
  956. /* 0D6DA4 8031BDA4 AE00004C */ sw $zero, 0x4c($s0)
  957. /* 0D6DA8 8031BDA8 00797021 */ addu $t6, $v1, $t9
  958. /* 0D6DAC 8031BDAC C5D00000 */ lwc1 $f16, ($t6)
  959. /* 0D6DB0 8031BDB0 E6100020 */ swc1 $f16, 0x20($s0)
  960. .L8031BDB4:
  961. /* 0D6DB4 8031BDB4 860F003C */ lh $t7, 0x3c($s0)
  962. .L8031BDB8:
  963. /* 0D6DB8 8031BDB8 A60F0040 */ sh $t7, 0x40($s0)
  964. .L8031BDBC:
  965. /* 0D6DBC 8031BDBC 8E020000 */ lw $v0, ($s0)
  966. /* 0D6DC0 8031BDC0 24010001 */ li $at, 1
  967. /* 0D6DC4 8031BDC4 0002C080 */ sll $t8, $v0, 2
  968. /* 0D6DC8 8031BDC8 0018CFC2 */ srl $t9, $t8, 0x1f
  969. /* 0D6DCC 8031BDCC 5721000C */ bnel $t9, $at, .L8031BE00
  970. /* 0D6DD0 8031BDD0 000270C0 */ sll $t6, $v0, 3
  971. /* 0D6DD4 8031BDD4 8E0E0044 */ lw $t6, 0x44($s0)
  972. /* 0D6DD8 8031BDD8 0002C0C0 */ sll $t8, $v0, 3
  973. /* 0D6DDC 8031BDDC 15C00003 */ bnez $t6, .L8031BDEC
  974. /* 0D6DE0 8031BDE0 00000000 */ nop
  975. /* 0D6DE4 8031BDE4 0703002E */ bgezl $t8, .L8031BEA0
  976. /* 0D6DE8 8031BDE8 8FBF001C */ lw $ra, 0x1c($sp)
  977. .L8031BDEC:
  978. /* 0D6DEC 8031BDEC 0C0C63B1 */ jal func_80318EC4
  979. /* 0D6DF0 8031BDF0 02002025 */ move $a0, $s0
  980. /* 0D6DF4 8031BDF4 1000002A */ b .L8031BEA0
  981. /* 0D6DF8 8031BDF8 8FBF001C */ lw $ra, 0x1c($sp)
  982. /* 0D6DFC 8031BDFC 000270C0 */ sll $t6, $v0, 3
  983. .L8031BE00:
  984. /* 0D6E00 8031BE00 05C00003 */ bltz $t6, .L8031BE10
  985. /* 0D6E04 8031BE04 00004025 */ move $t0, $zero
  986. /* 0D6E08 8031BE08 10000017 */ b .L8031BE68
  987. /* 0D6E0C 8031BE0C 24080001 */ li $t0, 1
  988. .L8031BE10:
  989. /* 0D6E10 8031BE10 8E040044 */ lw $a0, 0x44($s0)
  990. /* 0D6E14 8031BE14 10800005 */ beqz $a0, .L8031BE2C
  991. /* 0D6E18 8031BE18 00000000 */ nop
  992. /* 0D6E1C 8031BE1C 920F0001 */ lbu $t7, 1($s0)
  993. /* 0D6E20 8031BE20 93B8003F */ lbu $t8, 0x3f($sp)
  994. /* 0D6E24 8031BE24 15E00003 */ bnez $t7, .L8031BE34
  995. /* 0D6E28 8031BE28 00000000 */ nop
  996. .L8031BE2C:
  997. /* 0D6E2C 8031BE2C 1000000E */ b .L8031BE68
  998. /* 0D6E30 8031BE30 24080001 */ li $t0, 1
  999. .L8031BE34:
  1000. /* 0D6E34 8031BE34 57000006 */ bnezl $t8, .L8031BE50
  1001. /* 0D6E38 8031BE38 8E19004C */ lw $t9, 0x4c($s0)
  1002. /* 0D6E3C 8031BE3C 0C0C63B1 */ jal func_80318EC4
  1003. /* 0D6E40 8031BE40 02002025 */ move $a0, $s0
  1004. /* 0D6E44 8031BE44 10000008 */ b .L8031BE68
  1005. /* 0D6E48 8031BE48 24080001 */ li $t0, 1
  1006. /* 0D6E4C 8031BE4C 8E19004C */ lw $t9, 0x4c($s0)
  1007. .L8031BE50:
  1008. /* 0D6E50 8031BE50 02002825 */ move $a1, $s0
  1009. /* 0D6E54 8031BE54 17200004 */ bnez $t9, .L8031BE68
  1010. /* 0D6E58 8031BE58 00000000 */ nop
  1011. /* 0D6E5C 8031BE5C 0C0C6459 */ jal func_80319164
  1012. /* 0D6E60 8031BE60 A3A8003D */ sb $t0, 0x3d($sp)
  1013. /* 0D6E64 8031BE64 93A8003D */ lbu $t0, 0x3d($sp)
  1014. .L8031BE68:
  1015. /* 0D6E68 8031BE68 51000005 */ beql $t0, $zero, .L8031BE80
  1016. /* 0D6E6C 8031BE6C 8E040044 */ lw $a0, 0x44($s0)
  1017. /* 0D6E70 8031BE70 0C0C6638 */ jal func_803198E0
  1018. /* 0D6E74 8031BE74 02002025 */ move $a0, $s0
  1019. /* 0D6E78 8031BE78 AE020044 */ sw $v0, 0x44($s0)
  1020. /* 0D6E7C 8031BE7C 8E040044 */ lw $a0, 0x44($s0)
  1021. .L8031BE80:
  1022. /* 0D6E80 8031BE80 50800007 */ beql $a0, $zero, .L8031BEA0
  1023. /* 0D6E84 8031BE84 8FBF001C */ lw $ra, 0x1c($sp)
  1024. /* 0D6E88 8031BE88 8C8E002C */ lw $t6, 0x2c($a0)
  1025. /* 0D6E8C 8031BE8C 560E0004 */ bnel $s0, $t6, .L8031BEA0
  1026. /* 0D6E90 8031BE90 8FBF001C */ lw $ra, 0x1c($sp)
  1027. /* 0D6E94 8031BE94 0C0C691E */ jal func_8031A478
  1028. /* 0D6E98 8031BE98 00000000 */ nop
  1029. .L8031BE9C:
  1030. /* 0D6E9C 8031BE9C 8FBF001C */ lw $ra, 0x1c($sp)
  1031. .L8031BEA0:
  1032. /* 0D6EA0 8031BEA0 8FB00018 */ lw $s0, 0x18($sp)
  1033. /* 0D6EA4 8031BEA4 27BD0060 */ addiu $sp, $sp, 0x60
  1034. /* 0D6EA8 8031BEA8 03E00008 */ jr $ra
  1035. /* 0D6EAC 8031BEAC 00000000 */ nop