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.

954 lines
37 KiB

6 years ago
  1. .late_rodata
  2. .late_rodata_alignment 8
  3. glabel jtbl_80337D08 # US: 80338EC0
  4. .word L8031C430
  5. .word L8031C3DC
  6. .word L8031C44C
  7. .word L8031C45C
  8. .word L8031C3F8
  9. .word L8031C6C8
  10. .word L8031C724
  11. .word L8031C75C
  12. .word L8031C75C
  13. .word L8031C7A8
  14. .word L8031C7B8
  15. .word L8031C75C
  16. .word L8031C1CC
  17. .word L8031C1CC
  18. .word L8031C1CC
  19. .word L8031C7D8
  20. .word L8031C7FC
  21. .word L8031C80C
  22. .word L8031C508
  23. .word L8031C6B8
  24. .word L8031C1CC
  25. .word L8031C698
  26. .word L8031C600
  27. .word L8031C5E4
  28. .word L8031C5D4
  29. .word L8031C5B8
  30. .word L8031C5A0
  31. .word L8031C568
  32. .word L8031C530
  33. .word L8031C4C0
  34. .word L8031C46C
  35. .word L8031C488
  36. .word L8031C650
  37. .word L8031C61C
  38. .word L8031C684
  39. .word L8031C820
  40. .word L8031C1CC
  41. .word L8031C1CC
  42. .word L8031C1CC
  43. .word L8031C1CC
  44. .word L8031C1CC
  45. .word L8031C1CC
  46. .word L8031C1CC
  47. .word L8031C1CC
  48. .word L8031C1CC
  49. .word L8031C1CC
  50. .word L8031C1CC
  51. .word L8031C1CC
  52. .word L8031C3CC
  53. .word L8031C3A4
  54. .word L8031C1CC
  55. .word L8031C1CC
  56. .word L8031C34C
  57. .word L8031C33C
  58. .word L8031C2F4
  59. .word L8031C2BC
  60. .word L8031C34C
  61. .word L8031C34C
  62. .word L8031C34C
  63. .word L8031C280
  64. .word L8031C1CC
  65. .word L8031C1CC
  66. .word L8031C1CC
  67. glabel jtbl_80337E04 # US: 80338FBC
  68. .word L8031C89C
  69. .word L8031C1CC
  70. .word L8031C1CC
  71. .word L8031C1CC
  72. .word L8031C1CC
  73. .word L8031C1CC
  74. .word L8031C1CC
  75. .word L8031C1CC
  76. .word L8031C1CC
  77. .word L8031C1CC
  78. .word L8031C1CC
  79. .word L8031C1CC
  80. .word L8031C1CC
  81. .word L8031C1CC
  82. .word L8031C1CC
  83. .word L8031C1CC
  84. .word L8031C9E4
  85. .word L8031C1CC
  86. .word L8031C1CC
  87. .word L8031C1CC
  88. .word L8031C1CC
  89. .word L8031C1CC
  90. .word L8031C1CC
  91. .word L8031C1CC
  92. .word L8031C1CC
  93. .word L8031C1CC
  94. .word L8031C1CC
  95. .word L8031C1CC
  96. .word L8031C1CC
  97. .word L8031C1CC
  98. .word L8031C1CC
  99. .word L8031C1CC
  100. .word L8031CA14
  101. .word L8031C1CC
  102. .word L8031C1CC
  103. .word L8031C1CC
  104. .word L8031C1CC
  105. .word L8031C1CC
  106. .word L8031C1CC
  107. .word L8031C1CC
  108. .word L8031C1CC
  109. .word L8031C1CC
  110. .word L8031C1CC
  111. .word L8031C1CC
  112. .word L8031C1CC
  113. .word L8031C1CC
  114. .word L8031C1CC
  115. .word L8031C1CC
  116. .word L8031CA30
  117. .word L8031C1CC
  118. .word L8031C1CC
  119. .word L8031C1CC
  120. .word L8031C1CC
  121. .word L8031C1CC
  122. .word L8031C1CC
  123. .word L8031C1CC
  124. .word L8031C1CC
  125. .word L8031C1CC
  126. .word L8031C1CC
  127. .word L8031C1CC
  128. .word L8031C1CC
  129. .word L8031C1CC
  130. .word L8031C1CC
  131. .word L8031C1CC
  132. .word L8031CA58
  133. .word L8031C1CC
  134. .word L8031C1CC
  135. .word L8031C1CC
  136. .word L8031C1CC
  137. .word L8031C1CC
  138. .word L8031C1CC
  139. .word L8031C1CC
  140. .word L8031C1CC
  141. .word L8031C1CC
  142. .word L8031C1CC
  143. .word L8031C1CC
  144. .word L8031C1CC
  145. .word L8031C1CC
  146. .word L8031C1CC
  147. .word L8031C1CC
  148. .word L8031C8F8
  149. .word L8031C1CC
  150. .word L8031C1CC
  151. .word L8031C1CC
  152. .word L8031C1CC
  153. .word L8031C1CC
  154. .word L8031C1CC
  155. .word L8031C1CC
  156. .word L8031C1CC
  157. .word L8031C1CC
  158. .word L8031C1CC
  159. .word L8031C1CC
  160. .word L8031C1CC
  161. .word L8031C1CC
  162. .word L8031C1CC
  163. .word L8031C1CC
  164. .word L8031C9DC
  165. .word L8031C1CC
  166. .word L8031C1CC
  167. .word L8031C1CC
  168. .word L8031C1CC
  169. .word L8031C1CC
  170. .word L8031C1CC
  171. .word L8031C1CC
  172. .word L8031C1CC
  173. .word L8031C1CC
  174. .word L8031C1CC
  175. .word L8031C1CC
  176. .word L8031C1CC
  177. .word L8031C1CC
  178. .word L8031C1CC
  179. .word L8031C1CC
  180. .word L8031C8CC
  181. .word L8031C1CC
  182. .word L8031C1CC
  183. .word L8031C1CC
  184. .word L8031C1CC
  185. .word L8031C1CC
  186. .word L8031C1CC
  187. .word L8031C1CC
  188. .word L8031C1CC
  189. .word L8031C1CC
  190. .word L8031C1CC
  191. .word L8031C1CC
  192. .word L8031C1CC
  193. .word L8031C1CC
  194. .word L8031C1CC
  195. .word L8031C1CC
  196. .word L8031C8DC
  197. .word L8031C1CC
  198. .word L8031C1CC
  199. .word L8031C1CC
  200. .word L8031C1CC
  201. .word L8031C1CC
  202. .word L8031C1CC
  203. .word L8031C1CC
  204. .word L8031C1CC
  205. .word L8031C1CC
  206. .word L8031C1CC
  207. .word L8031C1CC
  208. .word L8031C1CC
  209. .word L8031C1CC
  210. .word L8031C1CC
  211. .word L8031C1CC
  212. .word L8031C914
  213. .word L8031C1CC
  214. .word L8031C1CC
  215. .word L8031C1CC
  216. .word L8031C1CC
  217. .word L8031C1CC
  218. .word L8031C1CC
  219. .word L8031C1CC
  220. .word L8031C1CC
  221. .word L8031C1CC
  222. .word L8031C1CC
  223. .word L8031C1CC
  224. .word L8031C1CC
  225. .word L8031C1CC
  226. .word L8031C1CC
  227. .word L8031C1CC
  228. .word L8031C960
  229. .word L8031C1CC
  230. .word L8031C1CC
  231. .word L8031C1CC
  232. .word L8031C1CC
  233. .word L8031C1CC
  234. .word L8031C1CC
  235. .word L8031C1CC
  236. .word L8031C1CC
  237. .word L8031C1CC
  238. .word L8031C1CC
  239. .word L8031C1CC
  240. .word L8031C1CC
  241. .word L8031C1CC
  242. .word L8031C1CC
  243. .word L8031C1CC
  244. .word L8031C97C
  245. .text
  246. glabel func_8031C104
  247. /* 0D7104 8031C104 27BDFF98 */ addiu $sp, $sp, -0x68
  248. /* 0D7108 8031C108 AFBF0034 */ sw $ra, 0x34($sp)
  249. /* 0D710C 8031C10C AFB50030 */ sw $s5, 0x30($sp)
  250. /* 0D7110 8031C110 AFB4002C */ sw $s4, 0x2c($sp)
  251. /* 0D7114 8031C114 AFB30028 */ sw $s3, 0x28($sp)
  252. /* 0D7118 8031C118 AFB20024 */ sw $s2, 0x24($sp)
  253. /* 0D711C 8031C11C AFB10020 */ sw $s1, 0x20($sp)
  254. /* 0D7120 8031C120 AFB0001C */ sw $s0, 0x1c($sp)
  255. /* 0D7124 8031C124 F7B40010 */ sdc1 $f20, 0x10($sp)
  256. /* 0D7128 8031C128 8C820000 */ lw $v0, ($a0)
  257. /* 0D712C 8031C12C 00809025 */ move $s2, $a0
  258. /* 0D7130 8031C130 000277C2 */ srl $t6, $v0, 0x1f
  259. /* 0D7134 8031C134 11C0025D */ beqz $t6, .L8031CAAC
  260. /* 0D7138 8031C138 0002C080 */ sll $t8, $v0, 2
  261. /* 0D713C 8031C13C 0701000D */ bgez $t8, .L8031C174
  262. /* 0D7140 8031C140 00008025 */ move $s0, $zero
  263. /* 0D7144 8031C144 00808825 */ move $s1, $a0
  264. /* 0D7148 8031C148 24120010 */ li $s2, 16
  265. .L8031C14C:
  266. /* 0D714C 8031C14C 8E240044 */ lw $a0, 0x44($s1)
  267. /* 0D7150 8031C150 50800004 */ beql $a0, $zero, .L8031C164
  268. /* 0D7154 8031C154 26100004 */ addiu $s0, $s0, 4
  269. /* 0D7158 8031C158 0C0C6C29 */ jal func_8031B0A4
  270. /* 0D715C 8031C15C 00000000 */ nop
  271. /* 0D7160 8031C160 26100004 */ addiu $s0, $s0, 4
  272. .L8031C164:
  273. /* 0D7164 8031C164 1612FFF9 */ bne $s0, $s2, .L8031C14C
  274. /* 0D7168 8031C168 26310004 */ addiu $s1, $s1, 4
  275. /* 0D716C 8031C16C 10000250 */ b .L8031CAB0
  276. /* 0D7170 8031C170 8FBF0034 */ lw $ra, 0x34($sp)
  277. .L8031C174:
  278. /* 0D7174 8031C174 8E540040 */ lw $s4, 0x40($s2)
  279. /* 0D7178 8031C178 8E990000 */ lw $t9, ($s4)
  280. /* 0D717C 8031C17C 00195080 */ sll $t2, $t9, 2
  281. /* 0D7180 8031C180 05430006 */ bgezl $t2, .L8031C19C
  282. /* 0D7184 8031C184 96430016 */ lhu $v1, 0x16($s2)
  283. /* 0D7188 8031C188 924B0002 */ lbu $t3, 2($s2)
  284. /* 0D718C 8031C18C 316C0080 */ andi $t4, $t3, 0x80
  285. /* 0D7190 8031C190 55800247 */ bnezl $t4, .L8031CAB0
  286. /* 0D7194 8031C194 8FBF0034 */ lw $ra, 0x34($sp)
  287. /* 0D7198 8031C198 96430016 */ lhu $v1, 0x16($s2)
  288. .L8031C19C:
  289. /* 0D719C 8031C19C 2650005C */ addiu $s0, $s2, 0x5c
  290. /* 0D71A0 8031C1A0 3C013F80 */ li $at, 0x3F800000 # 1.000000
  291. /* 0D71A4 8031C1A4 10600004 */ beqz $v1, .L8031C1B8
  292. /* 0D71A8 8031C1A8 00601025 */ move $v0, $v1
  293. /* 0D71AC 8031C1AC 246DFFFF */ addiu $t5, $v1, -1
  294. /* 0D71B0 8031C1B0 A64D0016 */ sh $t5, 0x16($s2)
  295. /* 0D71B4 8031C1B4 31A2FFFF */ andi $v0, $t5, 0xffff
  296. .L8031C1B8:
  297. /* 0D71B8 8031C1B8 14400231 */ bnez $v0, .L8031CA80
  298. /* 0D71BC 8031C1BC 2415FFFF */ li $s5, -1
  299. /* 0D71C0 8031C1C0 4481A800 */ mtc1 $at, $f21
  300. /* 0D71C4 8031C1C4 4480A000 */ mtc1 $zero, $f20
  301. /* 0D71C8 8031C1C8 83B30053 */ lb $s3, 0x53($sp)
  302. .L8031C1CC:
  303. glabel L8031C1CC
  304. /* 0D71CC 8031C1CC 0C0C6C07 */ jal func_8031B01C
  305. /* 0D71D0 8031C1D0 02002025 */ move $a0, $s0
  306. /* 0D71D4 8031C1D4 240100FF */ li $at, 255
  307. /* 0D71D8 8031C1D8 305100FF */ andi $s1, $v0, 0xff
  308. /* 0D71DC 8031C1DC 1441000E */ bne $v0, $at, .L8031C218
  309. /* 0D71E0 8031C1E0 00401825 */ move $v1, $v0
  310. /* 0D71E4 8031C1E4 92040018 */ lbu $a0, 0x18($s0)
  311. /* 0D71E8 8031C1E8 14800005 */ bnez $a0, .L8031C200
  312. /* 0D71EC 8031C1EC 248EFFFF */ addiu $t6, $a0, -1
  313. /* 0D71F0 8031C1F0 0C0C6AB4 */ jal func_8031AAD0
  314. /* 0D71F4 8031C1F4 02402025 */ move $a0, $s2
  315. /* 0D71F8 8031C1F8 10000222 */ b .L8031CA84
  316. /* 0D71FC 8031C1FC 02408825 */ move $s1, $s2
  317. .L8031C200:
  318. /* 0D7200 8031C200 31CF00FF */ andi $t7, $t6, 0xff
  319. /* 0D7204 8031C204 000FC080 */ sll $t8, $t7, 2
  320. /* 0D7208 8031C208 0218C821 */ addu $t9, $s0, $t8
  321. /* 0D720C 8031C20C A20E0018 */ sb $t6, 0x18($s0)
  322. /* 0D7210 8031C210 8F290004 */ lw $t1, 4($t9)
  323. /* 0D7214 8031C214 AE090000 */ sw $t1, ($s0)
  324. .L8031C218:
  325. /* 0D7218 8031C218 240100FE */ li $at, 254
  326. /* 0D721C 8031C21C 10610218 */ beq $v1, $at, .L8031CA80
  327. /* 0D7220 8031C220 240100FD */ li $at, 253
  328. /* 0D7224 8031C224 14610005 */ bne $v1, $at, .L8031C23C
  329. /* 0D7228 8031C228 307900F0 */ andi $t9, $v1, 0xf0
  330. /* 0D722C 8031C22C 0C0C6C18 */ jal func_8031B060
  331. /* 0D7230 8031C230 02002025 */ move $a0, $s0
  332. /* 0D7234 8031C234 10000212 */ b .L8031CA80
  333. /* 0D7238 8031C238 A6420016 */ sh $v0, 0x16($s2)
  334. .L8031C23C:
  335. /* 0D723C 8031C23C 240100F3 */ li $at, 243
  336. /* 0D7240 8031C240 14610005 */ bne $v1, $at, .L8031C258
  337. /* 0D7244 8031C244 246DFF3F */ addiu $t5, $v1, -0xc1
  338. /* 0D7248 8031C248 924B0000 */ lbu $t3, ($s2)
  339. /* 0D724C 8031C24C 356C0020 */ ori $t4, $t3, 0x20
  340. /* 0D7250 8031C250 1000020B */ b .L8031CA80
  341. /* 0D7254 8031C254 A24C0000 */ sb $t4, ($s2)
  342. .L8031C258:
  343. /* 0D7258 8031C258 286100C1 */ slti $at, $v1, 0xc1
  344. /* 0D725C 8031C25C 14200185 */ bnez $at, .L8031C874
  345. /* 0D7260 8031C260 2DA1003F */ sltiu $at, $t5, 0x3f
  346. /* 0D7264 8031C264 1020FFD9 */ beqz $at, .L8031C1CC
  347. /* 0D7268 8031C268 000D6880 */ sll $t5, $t5, 2
  348. /* 0D726C 8031C26C 3C018033 */ lui $at, %hi(jtbl_80337D08)
  349. /* 0D7270 8031C270 002D0821 */ addu $at, $at, $t5
  350. /* 0D7274 8031C274 8C2D7D08 */ lw $t5, %lo(jtbl_80337D08)($at)
  351. /* 0D7278 8031C278 01A00008 */ jr $t5
  352. /* 0D727C 8031C27C 00000000 */ nop
  353. glabel L8031C280
  354. /* 0D7280 8031C280 0C0C6C0C */ jal func_8031B030
  355. /* 0D7284 8031C284 02002025 */ move $a0, $s0
  356. /* 0D7288 8031C288 920E0018 */ lbu $t6, 0x18($s0)
  357. /* 0D728C 8031C28C 8E180000 */ lw $t8, ($s0)
  358. /* 0D7290 8031C290 304CFFFF */ andi $t4, $v0, 0xffff
  359. /* 0D7294 8031C294 25CF0001 */ addiu $t7, $t6, 1
  360. /* 0D7298 8031C298 31F900FF */ andi $t9, $t7, 0xff
  361. /* 0D729C 8031C29C 00194880 */ sll $t1, $t9, 2
  362. /* 0D72A0 8031C2A0 02095021 */ addu $t2, $s0, $t1
  363. /* 0D72A4 8031C2A4 A20F0018 */ sb $t7, 0x18($s0)
  364. /* 0D72A8 8031C2A8 AD580000 */ sw $t8, ($t2)
  365. /* 0D72AC 8031C2AC 8E8B0014 */ lw $t3, 0x14($s4)
  366. /* 0D72B0 8031C2B0 016C6821 */ addu $t5, $t3, $t4
  367. /* 0D72B4 8031C2B4 1000FFC5 */ b .L8031C1CC
  368. /* 0D72B8 8031C2B8 AE0D0000 */ sw $t5, ($s0)
  369. glabel L8031C2BC
  370. /* 0D72BC 8031C2BC 0C0C6C07 */ jal func_8031B01C
  371. /* 0D72C0 8031C2C0 02002025 */ move $a0, $s0
  372. /* 0D72C4 8031C2C4 920E0018 */ lbu $t6, 0x18($s0)
  373. /* 0D72C8 8031C2C8 020E7821 */ addu $t7, $s0, $t6
  374. /* 0D72CC 8031C2CC A1E20014 */ sb $v0, 0x14($t7)
  375. /* 0D72D0 8031C2D0 92190018 */ lbu $t9, 0x18($s0)
  376. /* 0D72D4 8031C2D4 8E180000 */ lw $t8, ($s0)
  377. /* 0D72D8 8031C2D8 27290001 */ addiu $t1, $t9, 1
  378. /* 0D72DC 8031C2DC 312A00FF */ andi $t2, $t1, 0xff
  379. /* 0D72E0 8031C2E0 000A5880 */ sll $t3, $t2, 2
  380. /* 0D72E4 8031C2E4 020B6021 */ addu $t4, $s0, $t3
  381. /* 0D72E8 8031C2E8 A2090018 */ sb $t1, 0x18($s0)
  382. /* 0D72EC 8031C2EC 1000FFB7 */ b .L8031C1CC
  383. /* 0D72F0 8031C2F0 AD980000 */ sw $t8, ($t4)
  384. glabel L8031C2F4
  385. /* 0D72F4 8031C2F4 920D0018 */ lbu $t5, 0x18($s0)
  386. /* 0D72F8 8031C2F8 020D1021 */ addu $v0, $s0, $t5
  387. /* 0D72FC 8031C2FC 904E0013 */ lbu $t6, 0x13($v0)
  388. /* 0D7300 8031C300 25CFFFFF */ addiu $t7, $t6, -1
  389. /* 0D7304 8031C304 A04F0013 */ sb $t7, 0x13($v0)
  390. /* 0D7308 8031C308 92040018 */ lbu $a0, 0x18($s0)
  391. /* 0D730C 8031C30C 0204C821 */ addu $t9, $s0, $a0
  392. /* 0D7310 8031C310 93290013 */ lbu $t1, 0x13($t9)
  393. /* 0D7314 8031C314 00801825 */ move $v1, $a0
  394. /* 0D7318 8031C318 00035080 */ sll $t2, $v1, 2
  395. /* 0D731C 8031C31C 11200005 */ beqz $t1, .L8031C334
  396. /* 0D7320 8031C320 248CFFFF */ addiu $t4, $a0, -1
  397. /* 0D7324 8031C324 020A5821 */ addu $t3, $s0, $t2
  398. /* 0D7328 8031C328 8D780000 */ lw $t8, ($t3)
  399. /* 0D732C 8031C32C 1000FFA7 */ b .L8031C1CC
  400. /* 0D7330 8031C330 AE180000 */ sw $t8, ($s0)
  401. .L8031C334:
  402. /* 0D7334 8031C334 1000FFA5 */ b .L8031C1CC
  403. /* 0D7338 8031C338 A20C0018 */ sb $t4, 0x18($s0)
  404. glabel L8031C33C
  405. /* 0D733C 8031C33C 920D0018 */ lbu $t5, 0x18($s0)
  406. /* 0D7340 8031C340 25AEFFFF */ addiu $t6, $t5, -1
  407. /* 0D7344 8031C344 1000FFA1 */ b .L8031C1CC
  408. /* 0D7348 8031C348 A20E0018 */ sb $t6, 0x18($s0)
  409. glabel L8031C34C
  410. /* 0D734C 8031C34C 0C0C6C0C */ jal func_8031B030
  411. /* 0D7350 8031C350 02002025 */ move $a0, $s0
  412. /* 0D7354 8031C354 240100FA */ li $at, 250
  413. /* 0D7358 8031C358 16210003 */ bne $s1, $at, .L8031C368
  414. /* 0D735C 8031C35C 02201825 */ move $v1, $s1
  415. /* 0D7360 8031C360 1660FF9A */ bnez $s3, .L8031C1CC
  416. /* 0D7364 8031C364 00000000 */ nop
  417. .L8031C368:
  418. /* 0D7368 8031C368 240100F9 */ li $at, 249
  419. /* 0D736C 8031C36C 54610004 */ bnel $v1, $at, .L8031C380
  420. /* 0D7370 8031C370 240100F5 */ li $at, 245
  421. /* 0D7374 8031C374 0661FF95 */ bgez $s3, .L8031C1CC
  422. /* 0D7378 8031C378 00000000 */ nop
  423. /* 0D737C 8031C37C 240100F5 */ li $at, 245
  424. .L8031C380:
  425. /* 0D7380 8031C380 54610004 */ bnel $v1, $at, .L8031C394
  426. /* 0D7384 8031C384 8E8F0014 */ lw $t7, 0x14($s4)
  427. /* 0D7388 8031C388 0660FF90 */ bltz $s3, .L8031C1CC
  428. /* 0D738C 8031C38C 00000000 */ nop
  429. /* 0D7390 8031C390 8E8F0014 */ lw $t7, 0x14($s4)
  430. .L8031C394:
  431. /* 0D7394 8031C394 3059FFFF */ andi $t9, $v0, 0xffff
  432. /* 0D7398 8031C398 01F94821 */ addu $t1, $t7, $t9
  433. /* 0D739C 8031C39C 1000FF8B */ b .L8031C1CC
  434. /* 0D73A0 8031C3A0 AE090000 */ sw $t1, ($s0)
  435. glabel L8031C3A4
  436. /* 0D73A4 8031C3A4 26510080 */ addiu $s1, $s2, 0x80
  437. /* 0D73A8 8031C3A8 0C0C64BF */ jal func_803192FC
  438. /* 0D73AC 8031C3AC 02202025 */ move $a0, $s1
  439. /* 0D73B0 8031C3B0 0C0C6C07 */ jal func_8031B01C
  440. /* 0D73B4 8031C3B4 02002025 */ move $a0, $s0
  441. /* 0D73B8 8031C3B8 02202025 */ move $a0, $s1
  442. /* 0D73BC 8031C3BC 0C0C650A */ jal func_80319428
  443. /* 0D73C0 8031C3C0 00402825 */ move $a1, $v0
  444. /* 0D73C4 8031C3C4 1000FF81 */ b .L8031C1CC
  445. /* 0D73C8 8031C3C8 00000000 */ nop
  446. glabel L8031C3CC
  447. /* 0D73CC 8031C3CC 0C0C64BF */ jal func_803192FC
  448. /* 0D73D0 8031C3D0 26440080 */ addiu $a0, $s2, 0x80
  449. /* 0D73D4 8031C3D4 1000FF7D */ b .L8031C1CC
  450. /* 0D73D8 8031C3D8 00000000 */ nop
  451. glabel L8031C3DC
  452. /* 0D73DC 8031C3DC 0C0C6C0C */ jal func_8031B030
  453. /* 0D73E0 8031C3E0 02002025 */ move $a0, $s0
  454. /* 0D73E4 8031C3E4 8E8A0014 */ lw $t2, 0x14($s4)
  455. /* 0D73E8 8031C3E8 304BFFFF */ andi $t3, $v0, 0xffff
  456. /* 0D73EC 8031C3EC 014BC021 */ addu $t8, $t2, $t3
  457. /* 0D73F0 8031C3F0 1000FF76 */ b .L8031C1CC
  458. /* 0D73F4 8031C3F4 AE580030 */ sw $t8, 0x30($s2)
  459. glabel L8031C3F8
  460. /* 0D73F8 8031C3F8 1275FF74 */ beq $s3, $s5, .L8031C1CC
  461. /* 0D73FC 8031C3FC 00000000 */ nop
  462. /* 0D7400 8031C400 8E4C0030 */ lw $t4, 0x30($s2)
  463. /* 0D7404 8031C404 00136840 */ sll $t5, $s3, 1
  464. /* 0D7408 8031C408 8E8A0014 */ lw $t2, 0x14($s4)
  465. /* 0D740C 8031C40C 018D1021 */ addu $v0, $t4, $t5
  466. /* 0D7410 8031C410 904F0000 */ lbu $t7, ($v0)
  467. /* 0D7414 8031C414 904E0001 */ lbu $t6, 1($v0)
  468. /* 0D7418 8031C418 000FCA00 */ sll $t9, $t7, 8
  469. /* 0D741C 8031C41C 01D93821 */ addu $a3, $t6, $t9
  470. /* 0D7420 8031C420 30E9FFFF */ andi $t1, $a3, 0xffff
  471. /* 0D7424 8031C424 01495821 */ addu $t3, $t2, $t1
  472. /* 0D7428 8031C428 1000FF68 */ b .L8031C1CC
  473. /* 0D742C 8031C42C AE4B0030 */ sw $t3, 0x30($s2)
  474. glabel L8031C430
  475. /* 0D7430 8031C430 0C0C6C07 */ jal func_8031B01C
  476. /* 0D7434 8031C434 02002025 */ move $a0, $s0
  477. /* 0D7438 8031C438 02402025 */ move $a0, $s2
  478. /* 0D743C 8031C43C 0C0C700C */ jal SetInstrument
  479. /* 0D7440 8031C440 304500FF */ andi $a1, $v0, 0xff
  480. /* 0D7444 8031C444 1000FF61 */ b .L8031C1CC
  481. /* 0D7448 8031C448 00000000 */ nop
  482. glabel L8031C44C
  483. /* 0D744C 8031C44C 92580000 */ lbu $t8, ($s2)
  484. /* 0D7450 8031C450 330CFFFD */ andi $t4, $t8, 0xfffd
  485. /* 0D7454 8031C454 1000FF5D */ b .L8031C1CC
  486. /* 0D7458 8031C458 A24C0000 */ sb $t4, ($s2)
  487. glabel L8031C45C
  488. /* 0D745C 8031C45C 924F0000 */ lbu $t7, ($s2)
  489. /* 0D7460 8031C460 35EE0002 */ ori $t6, $t7, 2
  490. /* 0D7464 8031C464 1000FF59 */ b .L8031C1CC
  491. /* 0D7468 8031C468 A24E0000 */ sb $t6, ($s2)
  492. glabel L8031C46C
  493. /* 0D746C 8031C46C 0C0C6C07 */ jal func_8031B01C
  494. /* 0D7470 8031C470 02002025 */ move $a0, $s0
  495. /* 0D7474 8031C474 02402025 */ move $a0, $s2
  496. /* 0D7478 8031C478 0C0C7031 */ jal func_8031C0C4
  497. /* 0D747C 8031C47C 304500FF */ andi $a1, $v0, 0xff
  498. /* 0D7480 8031C480 1000FF52 */ b .L8031C1CC
  499. /* 0D7484 8031C484 00000000 */ nop
  500. glabel L8031C488
  501. /* 0D7488 8031C488 0C0C6C07 */ jal func_8031B01C
  502. /* 0D748C 8031C48C 02002025 */ move $a0, $s0
  503. /* 0D7490 8031C490 44822000 */ mtc1 $v0, $f4
  504. /* 0D7494 8031C494 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  505. /* 0D7498 8031C498 04410004 */ bgez $v0, .L8031C4AC
  506. /* 0D749C 8031C49C 468021A0 */ cvt.s.w $f6, $f4
  507. /* 0D74A0 8031C4A0 44814000 */ mtc1 $at, $f8
  508. /* 0D74A4 8031C4A4 00000000 */ nop
  509. /* 0D74A8 8031C4A8 46083180 */ add.s $f6, $f6, $f8
  510. .L8031C4AC:
  511. /* 0D74AC 8031C4AC 460032A1 */ cvt.d.s $f10, $f6
  512. /* 0D74B0 8031C4B0 46345402 */ mul.d $f16, $f10, $f20
  513. /* 0D74B4 8031C4B4 462084A0 */ cvt.s.d $f18, $f16
  514. /* 0D74B8 8031C4B8 1000FF44 */ b .L8031C1CC
  515. /* 0D74BC 8031C4BC E652001C */ swc1 $f18, 0x1c($s2)
  516. glabel L8031C4C0
  517. /* 0D74C0 8031C4C0 0C0C6C0C */ jal func_8031B030
  518. /* 0D74C4 8031C4C4 02002025 */ move $a0, $s0
  519. /* 0D74C8 8031C4C8 3059FFFF */ andi $t9, $v0, 0xffff
  520. /* 0D74CC 8031C4CC 44992000 */ mtc1 $t9, $f4
  521. /* 0D74D0 8031C4D0 44808000 */ mtc1 $zero, $f16
  522. /* 0D74D4 8031C4D4 07210005 */ bgez $t9, .L8031C4EC
  523. /* 0D74D8 8031C4D8 46802220 */ cvt.s.w $f8, $f4
  524. /* 0D74DC 8031C4DC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  525. /* 0D74E0 8031C4E0 44813000 */ mtc1 $at, $f6
  526. /* 0D74E4 8031C4E4 00000000 */ nop
  527. /* 0D74E8 8031C4E8 46064200 */ add.s $f8, $f8, $f6
  528. .L8031C4EC:
  529. /* 0D74EC 8031C4EC 3C0140E0 */ li $at, 0x40E00000 # 7.000000
  530. /* 0D74F0 8031C4F0 44818800 */ mtc1 $at, $f17
  531. /* 0D74F4 8031C4F4 460042A1 */ cvt.d.s $f10, $f8
  532. /* 0D74F8 8031C4F8 46305483 */ div.d $f18, $f10, $f16
  533. /* 0D74FC 8031C4FC 46209120 */ cvt.s.d $f4, $f18
  534. /* 0D7500 8031C500 1000FF32 */ b .L8031C1CC
  535. /* 0D7504 8031C504 E644002C */ swc1 $f4, 0x2c($s2)
  536. glabel L8031C508
  537. /* 0D7508 8031C508 0C0C6C07 */ jal func_8031B01C
  538. /* 0D750C 8031C50C 02002025 */ move $a0, $s0
  539. /* 0D7510 8031C510 2449007F */ addiu $t1, $v0, 0x7f
  540. /* 0D7514 8031C514 312A00FF */ andi $t2, $t1, 0xff
  541. /* 0D7518 8031C518 000A5880 */ sll $t3, $t2, 2
  542. /* 0D751C 8031C51C 3C018033 */ lui $at, %hi(D_80332488)
  543. /* 0D7520 8031C520 002B0821 */ addu $at, $at, $t3
  544. /* 0D7524 8031C524 C4262488 */ lwc1 $f6, %lo(D_80332488)($at)
  545. /* 0D7528 8031C528 1000FF28 */ b .L8031C1CC
  546. /* 0D752C 8031C52C E646002C */ swc1 $f6, 0x2c($s2)
  547. glabel L8031C530
  548. /* 0D7530 8031C530 0C0C6C07 */ jal func_8031B01C
  549. /* 0D7534 8031C534 02002025 */ move $a0, $s0
  550. /* 0D7538 8031C538 44824000 */ mtc1 $v0, $f8
  551. /* 0D753C 8031C53C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  552. /* 0D7540 8031C540 04410004 */ bgez $v0, .L8031C554
  553. /* 0D7544 8031C544 468042A0 */ cvt.s.w $f10, $f8
  554. /* 0D7548 8031C548 44818000 */ mtc1 $at, $f16
  555. /* 0D754C 8031C54C 00000000 */ nop
  556. /* 0D7550 8031C550 46105280 */ add.s $f10, $f10, $f16
  557. .L8031C554:
  558. /* 0D7554 8031C554 460054A1 */ cvt.d.s $f18, $f10
  559. /* 0D7558 8031C558 46349102 */ mul.d $f4, $f18, $f20
  560. /* 0D755C 8031C55C 462021A0 */ cvt.s.d $f6, $f4
  561. /* 0D7560 8031C560 1000FF1A */ b .L8031C1CC
  562. /* 0D7564 8031C564 E6460024 */ swc1 $f6, 0x24($s2)
  563. glabel L8031C568
  564. /* 0D7568 8031C568 0C0C6C07 */ jal func_8031B01C
  565. /* 0D756C 8031C56C 02002025 */ move $a0, $s0
  566. /* 0D7570 8031C570 44824000 */ mtc1 $v0, $f8
  567. /* 0D7574 8031C574 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
  568. /* 0D7578 8031C578 04410004 */ bgez $v0, .L8031C58C
  569. /* 0D757C 8031C57C 46804420 */ cvt.s.w $f16, $f8
  570. /* 0D7580 8031C580 44815000 */ mtc1 $at, $f10
  571. /* 0D7584 8031C584 00000000 */ nop
  572. /* 0D7588 8031C588 460A8400 */ add.s $f16, $f16, $f10
  573. .L8031C58C:
  574. /* 0D758C 8031C58C 460084A1 */ cvt.d.s $f18, $f16
  575. /* 0D7590 8031C590 46349102 */ mul.d $f4, $f18, $f20
  576. /* 0D7594 8031C594 462021A0 */ cvt.s.d $f6, $f4
  577. /* 0D7598 8031C598 1000FF0C */ b .L8031C1CC
  578. /* 0D759C 8031C59C E6460028 */ swc1 $f6, 0x28($s2)
  579. glabel L8031C5A0
  580. /* 0D75A0 8031C5A0 8E020000 */ lw $v0, ($s0)
  581. /* 0D75A4 8031C5A4 80430000 */ lb $v1, ($v0)
  582. /* 0D75A8 8031C5A8 24580001 */ addiu $t8, $v0, 1
  583. /* 0D75AC 8031C5AC AE180000 */ sw $t8, ($s0)
  584. /* 0D75B0 8031C5B0 1000FF06 */ b .L8031C1CC
  585. /* 0D75B4 8031C5B4 A643001A */ sh $v1, 0x1a($s2)
  586. glabel L8031C5B8
  587. /* 0D75B8 8031C5B8 0C0C6C0C */ jal func_8031B030
  588. /* 0D75BC 8031C5BC 02002025 */ move $a0, $s0
  589. /* 0D75C0 8031C5C0 8E8C0014 */ lw $t4, 0x14($s4)
  590. /* 0D75C4 8031C5C4 304DFFFF */ andi $t5, $v0, 0xffff
  591. /* 0D75C8 8031C5C8 018D7821 */ addu $t7, $t4, $t5
  592. /* 0D75CC 8031C5CC 1000FEFF */ b .L8031C1CC
  593. /* 0D75D0 8031C5D0 AE4F007C */ sw $t7, 0x7c($s2)
  594. glabel L8031C5D4
  595. /* 0D75D4 8031C5D4 0C0C6C07 */ jal func_8031B01C
  596. /* 0D75D8 8031C5D8 02002025 */ move $a0, $s0
  597. /* 0D75DC 8031C5DC 1000FEFB */ b .L8031C1CC
  598. /* 0D75E0 8031C5E0 A2420078 */ sb $v0, 0x78($s2)
  599. glabel L8031C5E4
  600. /* 0D75E4 8031C5E4 0C0C6C07 */ jal func_8031B01C
  601. /* 0D75E8 8031C5E8 02002025 */ move $a0, $s0
  602. /* 0D75EC 8031C5EC 000270C0 */ sll $t6, $v0, 3
  603. /* 0D75F0 8031C5F0 A64E000E */ sh $t6, 0xe($s2)
  604. /* 0D75F4 8031C5F4 A640000A */ sh $zero, 0xa($s2)
  605. /* 0D75F8 8031C5F8 1000FEF4 */ b .L8031C1CC
  606. /* 0D75FC 8031C5FC A6400012 */ sh $zero, 0x12($s2)
  607. glabel L8031C600
  608. /* 0D7600 8031C600 0C0C6C07 */ jal func_8031B01C
  609. /* 0D7604 8031C604 02002025 */ move $a0, $s0
  610. /* 0D7608 8031C608 00021940 */ sll $v1, $v0, 5
  611. /* 0D760C 8031C60C A643000C */ sh $v1, 0xc($s2)
  612. /* 0D7610 8031C610 A6430008 */ sh $v1, 8($s2)
  613. /* 0D7614 8031C614 1000FEED */ b .L8031C1CC
  614. /* 0D7618 8031C618 A6400010 */ sh $zero, 0x10($s2)
  615. glabel L8031C61C
  616. /* 0D761C 8031C61C 0C0C6C07 */ jal func_8031B01C
  617. /* 0D7620 8031C620 02002025 */ move $a0, $s0
  618. /* 0D7624 8031C624 0002C8C0 */ sll $t9, $v0, 3
  619. /* 0D7628 8031C628 A659000A */ sh $t9, 0xa($s2)
  620. /* 0D762C 8031C62C 0C0C6C07 */ jal func_8031B01C
  621. /* 0D7630 8031C630 02002025 */ move $a0, $s0
  622. /* 0D7634 8031C634 000248C0 */ sll $t1, $v0, 3
  623. /* 0D7638 8031C638 A649000E */ sh $t1, 0xe($s2)
  624. /* 0D763C 8031C63C 0C0C6C07 */ jal func_8031B01C
  625. /* 0D7640 8031C640 02002025 */ move $a0, $s0
  626. /* 0D7644 8031C644 00025100 */ sll $t2, $v0, 4
  627. /* 0D7648 8031C648 1000FEE0 */ b .L8031C1CC
  628. /* 0D764C 8031C64C A64A0012 */ sh $t2, 0x12($s2)
  629. glabel L8031C650
  630. /* 0D7650 8031C650 0C0C6C07 */ jal func_8031B01C
  631. /* 0D7654 8031C654 02002025 */ move $a0, $s0
  632. /* 0D7658 8031C658 00025940 */ sll $t3, $v0, 5
  633. /* 0D765C 8031C65C A64B0008 */ sh $t3, 8($s2)
  634. /* 0D7660 8031C660 0C0C6C07 */ jal func_8031B01C
  635. /* 0D7664 8031C664 02002025 */ move $a0, $s0
  636. /* 0D7668 8031C668 0002C140 */ sll $t8, $v0, 5
  637. /* 0D766C 8031C66C A658000C */ sh $t8, 0xc($s2)
  638. /* 0D7670 8031C670 0C0C6C07 */ jal func_8031B01C
  639. /* 0D7674 8031C674 02002025 */ move $a0, $s0
  640. /* 0D7678 8031C678 00026100 */ sll $t4, $v0, 4
  641. /* 0D767C 8031C67C 1000FED3 */ b .L8031C1CC
  642. /* 0D7680 8031C680 A64C0010 */ sh $t4, 0x10($s2)
  643. glabel L8031C684
  644. /* 0D7684 8031C684 0C0C6C07 */ jal func_8031B01C
  645. /* 0D7688 8031C688 02002025 */ move $a0, $s0
  646. /* 0D768C 8031C68C 00026900 */ sll $t5, $v0, 4
  647. /* 0D7690 8031C690 1000FECE */ b .L8031C1CC
  648. /* 0D7694 8031C694 A64D0014 */ sh $t5, 0x14($s2)
  649. glabel L8031C698
  650. /* 0D7698 8031C698 0C0C6C07 */ jal func_8031B01C
  651. /* 0D769C 8031C69C 02002025 */ move $a0, $s0
  652. /* 0D76A0 8031C6A0 14400003 */ bnez $v0, .L8031C6B0
  653. /* 0D76A4 8031C6A4 305100FF */ andi $s1, $v0, 0xff
  654. /* 0D76A8 8031C6A8 3C118022 */ lui $s1, %hi(D_80226D7E) # $s1, 0x8022
  655. /* 0D76AC 8031C6AC 92316D7E */ lbu $s1, %lo(D_80226D7E)($s1)
  656. .L8031C6B0:
  657. /* 0D76B0 8031C6B0 1000FEC6 */ b .L8031C1CC
  658. /* 0D76B4 8031C6B4 A2510006 */ sb $s1, 6($s2)
  659. glabel L8031C6B8
  660. /* 0D76B8 8031C6B8 0C0C6C07 */ jal func_8031B01C
  661. /* 0D76BC 8031C6BC 02002025 */ move $a0, $s0
  662. /* 0D76C0 8031C6C0 1000FEC2 */ b .L8031C1CC
  663. /* 0D76C4 8031C6C4 A2420003 */ sb $v0, 3($s2)
  664. glabel L8031C6C8
  665. /* 0D76C8 8031C6C8 0C0C6C07 */ jal func_8031B01C
  666. /* 0D76CC 8031C6CC 02002025 */ move $a0, $s0
  667. /* 0D76D0 8031C6D0 928F0005 */ lbu $t7, 5($s4)
  668. /* 0D76D4 8031C6D4 3C038022 */ lui $v1, %hi(D_80226D58) # $v1, 0x8022
  669. /* 0D76D8 8031C6D8 8C636D58 */ lw $v1, %lo(D_80226D58)($v1)
  670. /* 0D76DC 8031C6DC 000F7040 */ sll $t6, $t7, 1
  671. /* 0D76E0 8031C6E0 3C048022 */ lui $a0, %hi(D_802214F8) # $a0, 0x8022
  672. /* 0D76E4 8031C6E4 006EC821 */ addu $t9, $v1, $t6
  673. /* 0D76E8 8031C6E8 97270000 */ lhu $a3, ($t9)
  674. /* 0D76EC 8031C6EC 248414F8 */ addiu $a0, %lo(D_802214F8) # addiu $a0, $a0, 0x14f8
  675. /* 0D76F0 8031C6F0 24050002 */ li $a1, 2
  676. /* 0D76F4 8031C6F4 00E34821 */ addu $t1, $a3, $v1
  677. /* 0D76F8 8031C6F8 91280000 */ lbu $t0, ($t1)
  678. /* 0D76FC 8031C6FC 00E85021 */ addu $t2, $a3, $t0
  679. /* 0D7700 8031C700 01425823 */ subu $t3, $t2, $v0
  680. /* 0D7704 8031C704 0163C021 */ addu $t8, $t3, $v1
  681. /* 0D7708 8031C708 93110000 */ lbu $s1, ($t8)
  682. /* 0D770C 8031C70C 0C0C5A03 */ jal func_8031680C
  683. /* 0D7710 8031C710 02203025 */ move $a2, $s1
  684. /* 0D7714 8031C714 1040FEAD */ beqz $v0, .L8031C1CC
  685. /* 0D7718 8031C718 00000000 */ nop
  686. /* 0D771C 8031C71C 1000FEAB */ b .L8031C1CC
  687. /* 0D7720 8031C720 A2510005 */ sb $s1, 5($s2)
  688. glabel L8031C724
  689. /* 0D7724 8031C724 326C00FF */ andi $t4, $s3, 0xff
  690. /* 0D7728 8031C728 AFAC0038 */ sw $t4, 0x38($sp)
  691. /* 0D772C 8031C72C 0C0C6C07 */ jal func_8031B01C
  692. /* 0D7730 8031C730 02002025 */ move $a0, $s0
  693. /* 0D7734 8031C734 305100FF */ andi $s1, $v0, 0xff
  694. /* 0D7738 8031C738 0C0C6C0C */ jal func_8031B030
  695. /* 0D773C 8031C73C 02002025 */ move $a0, $s0
  696. /* 0D7740 8031C740 8E8D0014 */ lw $t5, 0x14($s4)
  697. /* 0D7744 8031C744 8FAE0038 */ lw $t6, 0x38($sp)
  698. /* 0D7748 8031C748 304FFFFF */ andi $t7, $v0, 0xffff
  699. /* 0D774C 8031C74C 01AF1821 */ addu $v1, $t5, $t7
  700. /* 0D7750 8031C750 01D1C821 */ addu $t9, $t6, $s1
  701. /* 0D7754 8031C754 1000FE9D */ b .L8031C1CC
  702. /* 0D7758 8031C758 A0790000 */ sb $t9, ($v1)
  703. glabel L8031C75C
  704. /* 0D775C 8031C75C 0C0C6C07 */ jal func_8031B01C
  705. /* 0D7760 8031C760 02002025 */ move $a0, $s0
  706. /* 0D7764 8031C764 240100C8 */ li $at, 200
  707. /* 0D7768 8031C768 16210005 */ bne $s1, $at, .L8031C780
  708. /* 0D776C 8031C76C 02201825 */ move $v1, $s1
  709. /* 0D7770 8031C770 02629823 */ subu $s3, $s3, $v0
  710. /* 0D7774 8031C774 00135E00 */ sll $t3, $s3, 0x18
  711. /* 0D7778 8031C778 1000FE94 */ b .L8031C1CC
  712. /* 0D777C 8031C77C 000B9E03 */ sra $s3, $t3, 0x18
  713. .L8031C780:
  714. /* 0D7780 8031C780 240100CC */ li $at, 204
  715. /* 0D7784 8031C784 14610005 */ bne $v1, $at, .L8031C79C
  716. /* 0D7788 8031C788 02629824 */ and $s3, $s3, $v0
  717. /* 0D778C 8031C78C 00029E00 */ sll $s3, $v0, 0x18
  718. /* 0D7790 8031C790 00136603 */ sra $t4, $s3, 0x18
  719. /* 0D7794 8031C794 1000FE8D */ b .L8031C1CC
  720. /* 0D7798 8031C798 01809825 */ move $s3, $t4
  721. .L8031C79C:
  722. /* 0D779C 8031C79C 00137600 */ sll $t6, $s3, 0x18
  723. /* 0D77A0 8031C7A0 1000FE8A */ b .L8031C1CC
  724. /* 0D77A4 8031C7A4 000E9E03 */ sra $s3, $t6, 0x18
  725. glabel L8031C7A8
  726. /* 0D77A8 8031C7A8 0C0C6C07 */ jal func_8031B01C
  727. /* 0D77AC 8031C7AC 02002025 */ move $a0, $s0
  728. /* 0D77B0 8031C7B0 1000FE86 */ b .L8031C1CC
  729. /* 0D77B4 8031C7B4 A2420002 */ sb $v0, 2($s2)
  730. glabel L8031C7B8
  731. /* 0D77B8 8031C7B8 0C0C6C0C */ jal func_8031B030
  732. /* 0D77BC 8031C7BC 02002025 */ move $a0, $s0
  733. /* 0D77C0 8031C7C0 8E890014 */ lw $t1, 0x14($s4)
  734. /* 0D77C4 8031C7C4 304AFFFF */ andi $t2, $v0, 0xffff
  735. /* 0D77C8 8031C7C8 01535821 */ addu $t3, $t2, $s3
  736. /* 0D77CC 8031C7CC 012BC021 */ addu $t8, $t1, $t3
  737. /* 0D77D0 8031C7D0 1000FE7E */ b .L8031C1CC
  738. /* 0D77D4 8031C7D4 83130000 */ lb $s3, ($t8)
  739. glabel L8031C7D8
  740. /* 0D77D8 8031C7D8 0C0C6C07 */ jal func_8031B01C
  741. /* 0D77DC 8031C7DC 02002025 */ move $a0, $s0
  742. /* 0D77E0 8031C7E0 924E0000 */ lbu $t6, ($s2)
  743. /* 0D77E4 8031C7E4 00026880 */ sll $t5, $v0, 2
  744. /* 0D77E8 8031C7E8 31AF0004 */ andi $t7, $t5, 4
  745. /* 0D77EC 8031C7EC 31D9FFFB */ andi $t9, $t6, 0xfffb
  746. /* 0D77F0 8031C7F0 01F95025 */ or $t2, $t7, $t9
  747. /* 0D77F4 8031C7F4 1000FE75 */ b .L8031C1CC
  748. /* 0D77F8 8031C7F8 A24A0000 */ sb $t2, ($s2)
  749. glabel L8031C7FC
  750. /* 0D77FC 8031C7FC 0C0C6C07 */ jal func_8031B01C
  751. /* 0D7800 8031C800 02002025 */ move $a0, $s0
  752. /* 0D7804 8031C804 1000FE71 */ b .L8031C1CC
  753. /* 0D7808 8031C808 A2420001 */ sb $v0, 1($s2)
  754. glabel L8031C80C
  755. /* 0D780C 8031C80C 0C0C6C07 */ jal func_8031B01C
  756. /* 0D7810 8031C810 02002025 */ move $a0, $s0
  757. /* 0D7814 8031C814 00024A00 */ sll $t1, $v0, 8
  758. /* 0D7818 8031C818 1000FE6C */ b .L8031C1CC
  759. /* 0D781C 8031C81C A649007A */ sh $t1, 0x7a($s2)
  760. glabel L8031C820
  761. /* 0D7820 8031C820 1275FE6A */ beq $s3, $s5, .L8031C1CC
  762. /* 0D7824 8031C824 0013C040 */ sll $t8, $s3, 1
  763. /* 0D7828 8031C828 920C0018 */ lbu $t4, 0x18($s0)
  764. /* 0D782C 8031C82C 8E4B0030 */ lw $t3, 0x30($s2)
  765. /* 0D7830 8031C830 8E0E0000 */ lw $t6, ($s0)
  766. /* 0D7834 8031C834 258D0001 */ addiu $t5, $t4, 1
  767. /* 0D7838 8031C838 31AF00FF */ andi $t7, $t5, 0xff
  768. /* 0D783C 8031C83C 000FC880 */ sll $t9, $t7, 2
  769. /* 0D7840 8031C840 02195021 */ addu $t2, $s0, $t9
  770. /* 0D7844 8031C844 A20D0018 */ sb $t5, 0x18($s0)
  771. /* 0D7848 8031C848 01781021 */ addu $v0, $t3, $t8
  772. /* 0D784C 8031C84C AD4E0000 */ sw $t6, ($t2)
  773. /* 0D7850 8031C850 904B0000 */ lbu $t3, ($v0)
  774. /* 0D7854 8031C854 90490001 */ lbu $t1, 1($v0)
  775. /* 0D7858 8031C858 8E8D0014 */ lw $t5, 0x14($s4)
  776. /* 0D785C 8031C85C 000BC200 */ sll $t8, $t3, 8
  777. /* 0D7860 8031C860 01383821 */ addu $a3, $t1, $t8
  778. /* 0D7864 8031C864 30ECFFFF */ andi $t4, $a3, 0xffff
  779. /* 0D7868 8031C868 01AC7821 */ addu $t7, $t5, $t4
  780. /* 0D786C 8031C86C 1000FE57 */ b .L8031C1CC
  781. /* 0D7870 8031C870 AE0F0000 */ sw $t7, ($s0)
  782. .L8031C874:
  783. /* 0D7874 8031C874 3064000F */ andi $a0, $v1, 0xf
  784. /* 0D7878 8031C878 2F2100B1 */ sltiu $at, $t9, 0xb1
  785. /* 0D787C 8031C87C 1020FE53 */ beqz $at, .L8031C1CC
  786. /* 0D7880 8031C880 308800FF */ andi $t0, $a0, 0xff
  787. /* 0D7884 8031C884 0019C880 */ sll $t9, $t9, 2
  788. /* 0D7888 8031C888 3C018033 */ lui $at, %hi(jtbl_80337E04)
  789. /* 0D788C 8031C88C 00390821 */ addu $at, $at, $t9
  790. /* 0D7890 8031C890 8C397E04 */ lw $t9, %lo(jtbl_80337E04)($at)
  791. /* 0D7894 8031C894 03200008 */ jr $t9
  792. /* 0D7898 8031C898 00000000 */ nop
  793. glabel L8031C89C
  794. /* 0D789C 8031C89C 308E00FF */ andi $t6, $a0, 0xff
  795. /* 0D78A0 8031C8A0 000E5080 */ sll $t2, $t6, 2
  796. /* 0D78A4 8031C8A4 024A5821 */ addu $t3, $s2, $t2
  797. /* 0D78A8 8031C8A8 8D630044 */ lw $v1, 0x44($t3)
  798. /* 0D78AC 8031C8AC 1060FE47 */ beqz $v1, .L8031C1CC
  799. /* 0D78B0 8031C8B0 00000000 */ nop
  800. /* 0D78B4 8031C8B4 8C730000 */ lw $s3, ($v1)
  801. /* 0D78B8 8031C8B8 00134840 */ sll $t1, $s3, 1
  802. /* 0D78BC 8031C8BC 0009C7C2 */ srl $t8, $t1, 0x1f
  803. /* 0D78C0 8031C8C0 00186600 */ sll $t4, $t8, 0x18
  804. /* 0D78C4 8031C8C4 1000FE41 */ b .L8031C1CC
  805. /* 0D78C8 8031C8C8 000C9E03 */ sra $s3, $t4, 0x18
  806. glabel L8031C8CC
  807. /* 0D78CC 8031C8CC 308F00FF */ andi $t7, $a0, 0xff
  808. /* 0D78D0 8031C8D0 024FC821 */ addu $t9, $s2, $t7
  809. /* 0D78D4 8031C8D4 1000FE3D */ b .L8031C1CC
  810. /* 0D78D8 8031C8D8 A3330054 */ sb $s3, 0x54($t9)
  811. glabel L8031C8DC
  812. /* 0D78DC 8031C8DC 308300FF */ andi $v1, $a0, 0xff
  813. /* 0D78E0 8031C8E0 02432821 */ addu $a1, $s2, $v1
  814. /* 0D78E4 8031C8E4 28610004 */ slti $at, $v1, 4
  815. /* 0D78E8 8031C8E8 1020FE38 */ beqz $at, .L8031C1CC
  816. /* 0D78EC 8031C8EC 80B30054 */ lb $s3, 0x54($a1)
  817. /* 0D78F0 8031C8F0 1000FE36 */ b .L8031C1CC
  818. /* 0D78F4 8031C8F4 A0B50054 */ sb $s5, 0x54($a1)
  819. glabel L8031C8F8
  820. /* 0D78F8 8031C8F8 308E00FF */ andi $t6, $a0, 0xff
  821. /* 0D78FC 8031C8FC 024E5021 */ addu $t2, $s2, $t6
  822. /* 0D7900 8031C900 814B0054 */ lb $t3, 0x54($t2)
  823. /* 0D7904 8031C904 026B9823 */ subu $s3, $s3, $t3
  824. /* 0D7908 8031C908 00134E00 */ sll $t1, $s3, 0x18
  825. /* 0D790C 8031C90C 1000FE2F */ b .L8031C1CC
  826. /* 0D7910 8031C910 00099E03 */ sra $s3, $t1, 0x18
  827. glabel L8031C914
  828. /* 0D7914 8031C914 0C0C6C0C */ jal func_8031B030
  829. /* 0D7918 8031C918 02002025 */ move $a0, $s0
  830. /* 0D791C 8031C91C 02201825 */ move $v1, $s1
  831. /* 0D7920 8031C920 3065000F */ andi $a1, $v1, 0xf
  832. /* 0D7924 8031C924 00A01825 */ move $v1, $a1
  833. /* 0D7928 8031C928 AFA50038 */ sw $a1, 0x38($sp)
  834. /* 0D792C 8031C92C 02402025 */ move $a0, $s2
  835. /* 0D7930 8031C930 0C0C6A48 */ jal func_8031A920
  836. /* 0D7934 8031C934 A7A2005A */ sh $v0, 0x5a($sp)
  837. /* 0D7938 8031C938 8FA30038 */ lw $v1, 0x38($sp)
  838. /* 0D793C 8031C93C 1440FE23 */ bnez $v0, .L8031C1CC
  839. /* 0D7940 8031C940 97A7005A */ lhu $a3, 0x5a($sp)
  840. /* 0D7944 8031C944 8E8D0014 */ lw $t5, 0x14($s4)
  841. /* 0D7948 8031C948 0003C880 */ sll $t9, $v1, 2
  842. /* 0D794C 8031C94C 02597021 */ addu $t6, $s2, $t9
  843. /* 0D7950 8031C950 8DCA0044 */ lw $t2, 0x44($t6)
  844. /* 0D7954 8031C954 01A77821 */ addu $t7, $t5, $a3
  845. /* 0D7958 8031C958 1000FE1C */ b .L8031C1CC
  846. /* 0D795C 8031C95C AD4F0054 */ sw $t7, 0x54($t2)
  847. glabel L8031C960
  848. /* 0D7960 8031C960 02202825 */ move $a1, $s1
  849. /* 0D7964 8031C964 30AB000F */ andi $t3, $a1, 0xf
  850. /* 0D7968 8031C968 01602825 */ move $a1, $t3
  851. /* 0D796C 8031C96C 0C0C6A93 */ jal func_8031AA4C
  852. /* 0D7970 8031C970 02402025 */ move $a0, $s2
  853. /* 0D7974 8031C974 1000FE15 */ b .L8031C1CC
  854. /* 0D7978 8031C978 00000000 */ nop
  855. glabel L8031C97C
  856. /* 0D797C 8031C97C 1275FE13 */ beq $s3, $s5, .L8031C1CC
  857. /* 0D7980 8031C980 02402025 */ move $a0, $s2
  858. /* 0D7984 8031C984 02201825 */ move $v1, $s1
  859. /* 0D7988 8031C988 3065000F */ andi $a1, $v1, 0xf
  860. /* 0D798C 8031C98C 00A01825 */ move $v1, $a1
  861. /* 0D7990 8031C990 0C0C6A48 */ jal func_8031A920
  862. /* 0D7994 8031C994 AFA50038 */ sw $a1, 0x38($sp)
  863. /* 0D7998 8031C998 1055FE0C */ beq $v0, $s5, .L8031C1CC
  864. /* 0D799C 8031C99C 8FA30038 */ lw $v1, 0x38($sp)
  865. /* 0D79A0 8031C9A0 8E580030 */ lw $t8, 0x30($s2)
  866. /* 0D79A4 8031C9A4 00136040 */ sll $t4, $s3, 1
  867. /* 0D79A8 8031C9A8 8E8A0014 */ lw $t2, 0x14($s4)
  868. /* 0D79AC 8031C9AC 030C1021 */ addu $v0, $t8, $t4
  869. /* 0D79B0 8031C9B0 90590000 */ lbu $t9, ($v0)
  870. /* 0D79B4 8031C9B4 904D0001 */ lbu $t5, 1($v0)
  871. /* 0D79B8 8031C9B8 00034880 */ sll $t1, $v1, 2
  872. /* 0D79BC 8031C9BC 00197200 */ sll $t6, $t9, 8
  873. /* 0D79C0 8031C9C0 0249C021 */ addu $t8, $s2, $t1
  874. /* 0D79C4 8031C9C4 01AE3821 */ addu $a3, $t5, $t6
  875. /* 0D79C8 8031C9C8 8F0C0044 */ lw $t4, 0x44($t8)
  876. /* 0D79CC 8031C9CC 30EFFFFF */ andi $t7, $a3, 0xffff
  877. /* 0D79D0 8031C9D0 014F5821 */ addu $t3, $t2, $t7
  878. /* 0D79D4 8031C9D4 1000FDFD */ b .L8031C1CC
  879. /* 0D79D8 8031C9D8 AD8B0054 */ sw $t3, 0x54($t4)
  880. glabel L8031C9DC
  881. /* 0D79DC 8031C9DC 1000FDFB */ b .L8031C1CC
  882. /* 0D79E0 8031C9E0 A2440004 */ sb $a0, 4($s2)
  883. glabel L8031C9E4
  884. /* 0D79E4 8031C9E4 0C0C6C0C */ jal func_8031B030
  885. /* 0D79E8 8031C9E8 02002025 */ move $a0, $s0
  886. /* 0D79EC 8031C9EC 8E8D0014 */ lw $t5, 0x14($s4)
  887. /* 0D79F0 8031C9F0 02202825 */ move $a1, $s1
  888. /* 0D79F4 8031C9F4 30B9000F */ andi $t9, $a1, 0xf
  889. /* 0D79F8 8031C9F8 304EFFFF */ andi $t6, $v0, 0xffff
  890. /* 0D79FC 8031C9FC 03202825 */ move $a1, $t9
  891. /* 0D7A00 8031CA00 02802025 */ move $a0, $s4
  892. /* 0D7A04 8031CA04 0C0C6B60 */ jal func_8031AD80
  893. /* 0D7A08 8031CA08 01AE3021 */ addu $a2, $t5, $t6
  894. /* 0D7A0C 8031CA0C 1000FDEF */ b .L8031C1CC
  895. /* 0D7A10 8031CA10 00000000 */ nop
  896. glabel L8031CA14
  897. /* 0D7A14 8031CA14 322A000F */ andi $t2, $s1, 0xf
  898. /* 0D7A18 8031CA18 000A4880 */ sll $t1, $t2, 2
  899. /* 0D7A1C 8031CA1C 0289C021 */ addu $t8, $s4, $t1
  900. /* 0D7A20 8031CA20 0C0C6AB4 */ jal func_8031AAD0
  901. /* 0D7A24 8031CA24 8F04002C */ lw $a0, 0x2c($t8)
  902. /* 0D7A28 8031CA28 1000FDE8 */ b .L8031C1CC
  903. /* 0D7A2C 8031CA2C 00000000 */ nop
  904. glabel L8031CA30
  905. /* 0D7A30 8031CA30 02002025 */ move $a0, $s0
  906. /* 0D7A34 8031CA34 0C0C6C07 */ jal func_8031B01C
  907. /* 0D7A38 8031CA38 A3A8005D */ sb $t0, 0x5d($sp)
  908. /* 0D7A3C 8031CA3C 93A8005D */ lbu $t0, 0x5d($sp)
  909. /* 0D7A40 8031CA40 00085880 */ sll $t3, $t0, 2
  910. /* 0D7A44 8031CA44 028B6021 */ addu $t4, $s4, $t3
  911. /* 0D7A48 8031CA48 8D99002C */ lw $t9, 0x2c($t4)
  912. /* 0D7A4C 8031CA4C 03226821 */ addu $t5, $t9, $v0
  913. /* 0D7A50 8031CA50 1000FDDE */ b .L8031C1CC
  914. /* 0D7A54 8031CA54 A1B30054 */ sb $s3, 0x54($t5)
  915. glabel L8031CA58
  916. /* 0D7A58 8031CA58 02002025 */ move $a0, $s0
  917. /* 0D7A5C 8031CA5C 0C0C6C07 */ jal func_8031B01C
  918. /* 0D7A60 8031CA60 A3A8005D */ sb $t0, 0x5d($sp)
  919. /* 0D7A64 8031CA64 93A8005D */ lbu $t0, 0x5d($sp)
  920. /* 0D7A68 8031CA68 00087080 */ sll $t6, $t0, 2
  921. /* 0D7A6C 8031CA6C 028E7821 */ addu $t7, $s4, $t6
  922. /* 0D7A70 8031CA70 8DEA002C */ lw $t2, 0x2c($t7)
  923. /* 0D7A74 8031CA74 01424821 */ addu $t1, $t2, $v0
  924. /* 0D7A78 8031CA78 1000FDD4 */ b .L8031C1CC
  925. /* 0D7A7C 8031CA7C 81330054 */ lb $s3, 0x54($t1)
  926. .L8031CA80:
  927. /* 0D7A80 8031CA80 02408825 */ move $s1, $s2
  928. .L8031CA84:
  929. /* 0D7A84 8031CA84 24120010 */ li $s2, 16
  930. /* 0D7A88 8031CA88 00008025 */ move $s0, $zero
  931. .L8031CA8C:
  932. /* 0D7A8C 8031CA8C 8E240044 */ lw $a0, 0x44($s1)
  933. /* 0D7A90 8031CA90 50800004 */ beql $a0, $zero, .L8031CAA4
  934. /* 0D7A94 8031CA94 26100004 */ addiu $s0, $s0, 4
  935. /* 0D7A98 8031CA98 0C0C6C29 */ jal func_8031B0A4
  936. /* 0D7A9C 8031CA9C 00000000 */ nop
  937. /* 0D7AA0 8031CAA0 26100004 */ addiu $s0, $s0, 4
  938. .L8031CAA4:
  939. /* 0D7AA4 8031CAA4 1612FFF9 */ bne $s0, $s2, .L8031CA8C
  940. /* 0D7AA8 8031CAA8 26310004 */ addiu $s1, $s1, 4
  941. .L8031CAAC:
  942. /* 0D7AAC 8031CAAC 8FBF0034 */ lw $ra, 0x34($sp)
  943. .L8031CAB0:
  944. /* 0D7AB0 8031CAB0 D7B40010 */ ldc1 $f20, 0x10($sp)
  945. /* 0D7AB4 8031CAB4 8FB0001C */ lw $s0, 0x1c($sp)
  946. /* 0D7AB8 8031CAB8 8FB10020 */ lw $s1, 0x20($sp)
  947. /* 0D7ABC 8031CABC 8FB20024 */ lw $s2, 0x24($sp)
  948. /* 0D7AC0 8031CAC0 8FB30028 */ lw $s3, 0x28($sp)
  949. /* 0D7AC4 8031CAC4 8FB4002C */ lw $s4, 0x2c($sp)
  950. /* 0D7AC8 8031CAC8 8FB50030 */ lw $s5, 0x30($sp)
  951. /* 0D7ACC 8031CACC 03E00008 */ jr $ra
  952. /* 0D7AD0 8031CAD0 27BD0068 */ addiu $sp, $sp, 0x68