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.

791 lines
38 KiB

6 years ago
  1. # Super Mario 64 (J) disassembly and split file
  2. # generated by n64split v0.4a - N64 ROM splitter
  3. # assembler directives
  4. .set noat # allow manual use of $at
  5. .set noreorder # don't insert nops after branches
  6. .set gp=64
  7. .include "macros.inc"
  8. .section .text, "ax"
  9. /* 000040 00000000 40806800 */ mtc0 $zero, $13
  10. /* 000044 00000004 40804800 */ mtc0 $zero, $9
  11. /* 000048 00000008 40805800 */ mtc0 $zero, $11
  12. /* 00004C 0000000C 3C08A470 */ lui $t0, 0xa470
  13. /* 000050 00000010 25080000 */ addiu $t0, $t0, 0
  14. /* 000054 00000014 8D09000C */ lw $t1, 0xc($t0)
  15. /* 000058 00000018 152000ED */ bnez $t1, .L000003D0
  16. /* 00005C 0000001C 00000000 */ nop
  17. /* 000060 00000020 27BDFFE8 */ addiu $sp, $sp, -0x18
  18. /* 000064 00000024 AFB30000 */ sw $s3, ($sp)
  19. /* 000068 00000028 AFB40004 */ sw $s4, 4($sp)
  20. /* 00006C 0000002C AFB50008 */ sw $s5, 8($sp)
  21. /* 000070 00000030 AFB6000C */ sw $s6, 0xc($sp)
  22. /* 000074 00000034 AFB70010 */ sw $s7, 0x10($sp)
  23. /* 000078 00000038 3C08A470 */ lui $t0, 0xa470
  24. /* 00007C 0000003C 25080000 */ addiu $t0, $t0, 0
  25. /* 000080 00000040 3C0AA3F8 */ lui $t2, %hi(D_A3F80004) # $t2, 0xa3f8
  26. /* 000084 00000044 3C0BA3F0 */ lui $t3, 0xa3f0
  27. /* 000088 00000048 3C0CA430 */ lui $t4, 0xa430
  28. /* 00008C 0000004C 258C0000 */ addiu $t4, $t4, 0
  29. /* 000090 00000050 34090040 */ ori $t1, $zero, 64
  30. /* 000094 00000054 AD090004 */ sw $t1, 4($t0)
  31. /* 000098 00000058 24111F40 */ li $s1, 8000
  32. .L0000005C:
  33. /* 00009C 0000005C 00000000 */ nop
  34. /* 0000A0 00000060 2231FFFF */ addi $s1, $s1, -1
  35. /* 0000A4 00000064 1620FFFD */ bnez $s1, .L0000005C
  36. /* 0000A8 00000068 00000000 */ nop
  37. /* 0000AC 0000006C AD000008 */ sw $zero, 8($t0)
  38. /* 0000B0 00000070 24090014 */ ori $t1, $zero, 20
  39. /* 0000B4 00000074 AD09000C */ sw $t1, 0xc($t0)
  40. /* 0000B8 00000078 AD000000 */ sw $zero, ($t0)
  41. /* 0000BC 0000007C 24110004 */ li $s1, 4
  42. .L00000080:
  43. /* 0000C0 00000080 00000000 */ nop
  44. /* 0000C4 00000084 2231FFFF */ addi $s1, $s1, -1
  45. /* 0000C8 00000088 1620FFFD */ bnez $s1, .L00000080
  46. /* 0000CC 0000008C 00000000 */ nop
  47. /* 0000D0 00000090 3209000E */ ori $t1, $zero, 14
  48. /* 0000D4 00000094 AD090000 */ sw $t1, ($t0)
  49. /* 0000D8 00000098 24110020 */ li $s1, 32
  50. .L0000009C:
  51. /* 0000DC 0000009C 2231FFFF */ addi $s1, $s1, -1
  52. /* 0000E0 000000A0 1620FFFE */ bnez $s1, .L0000009C
  53. /* 0000E4 000000A4 3409010F */ ori $t1, $zero, 271
  54. /* 0000E8 000000A8 AD890000 */ sw $t1, ($t4)
  55. /* 0000EC 000000AC 3C091808 */ lui $t1, (0x18082838 >> 16) # lui $t1, 0x1808
  56. /* 0000F0 000000B0 35292838 */ ori $t1, (0x18082838 & 0xFFFF) # ori $t1, $t1, 0x2838
  57. /* 0000F4 000000B4 AD490008 */ sw $t1, %lo(D_A3F80008)($t2)
  58. /* 0000F8 000000B8 AD400014 */ sw $zero, %lo(D_A3F80014)($t2)
  59. /* 0000FC 000000BC 3C098000 */ lui $t1, 0x8000
  60. /* 000100 000000C0 AD490004 */ sw $t1, %lo(D_A3F80004)($t2)
  61. /* 000104 000000C4 00006825 */ move $t5, $zero
  62. /* 000108 000000C8 00007025 */ move $t6, $zero
  63. /* 00010C 000000CC 3C0FA3F0 */ lui $t7, %hi(D_A3F00018) # $t7, 0xa3f0
  64. /* 000110 000000D0 0000C025 */ move $t8, $zero
  65. /* 000114 000000D4 3C19A3F0 */ lui $t9, 0xa3f0
  66. /* 000118 000000D8 3C16A000 */ lui $s6, 0xa000
  67. /* 00011C 000000DC 0000B825 */ move $s7, $zero
  68. /* 000120 000000E0 3C06A3F0 */ lui $a2, 0xa3f0
  69. /* 000124 000000E4 3C07A000 */ lui $a3, 0xa000
  70. /* 000128 000000E8 00009025 */ move $s2, $zero
  71. /* 00012C 000000EC 3C14A000 */ lui $s4, 0xa000
  72. /* 000130 000000F0 27BDFFB8 */ addiu $sp, $sp, -0x48
  73. /* 000134 000000F4 03A0F025 */ move $fp, $sp
  74. /* 000138 000000F8 3C10A430 */ lui $s0, %hi(D_A4300004) # $s0, 0xa430
  75. /* 00013C 000000FC 8E100004 */ lw $s0, %lo(D_A4300004)($s0)
  76. /* 000140 00000100 3C110101 */ lui $s1, 0x0101 # $s1, 0x101
  77. /* 000144 00000104 26310101 */ addiu $s1, 0x0101 # addiu $s1, $s1, 0x101
  78. /* 000148 00000108 16110005 */ bne $s0, $s1, .L00000120
  79. /* 00014C 0000010C 00000000 */ nop
  80. /* 000150 00000110 24100200 */ li $s0, 512
  81. /* 000154 00000114 35714000 */ ori $s1, $t3, 0x4000
  82. /* 000158 00000118 10000003 */ b .L00000128
  83. /* 00015C 0000011C 00000000 */ nop
  84. .L00000120:
  85. /* 000160 00000120 24100400 */ li $s0, 1024
  86. /* 000164 00000124 35718000 */ ori $s1, $t3, 0x8000
  87. .L00000128:
  88. /* 000168 00000128 AE2E0004 */ sw $t6, 4($s1)
  89. /* 00016C 0000012C 25F5000C */ addiu $s5, $t7, 0xc
  90. /* 000170 00000130 0D0001DE */ jal func_04000778
  91. /* 000174 00000134 00000000 */ nop
  92. /* 000178 00000138 10400038 */ beqz $v0, .L0000021C
  93. /* 00017C 0000013C 00000000 */ nop
  94. /* 000180 00000140 AFA20000 */ sw $v0, ($sp)
  95. /* 000184 00000144 24092000 */ li $t1, 8192
  96. /* 000188 00000148 AD890000 */ sw $t1, ($t4)
  97. /* 00018C 0000014C 8DEB0000 */ lw $t3, ($t7)
  98. /* 000190 00000150 3C08F0FF */ lui $t0, 0xf0ff
  99. /* 000194 00000154 01685824 */ and $t3, $t3, $t0
  100. /* 000198 00000158 AFAB0004 */ sw $t3, 4($sp)
  101. /* 00019C 0000015C 23BD0008 */ addi $sp, $sp, 8
  102. /* 0001A0 00000160 24091000 */ li $t1, 4096
  103. /* 0001A4 00000164 AD890000 */ sw $t1, ($t4)
  104. /* 0001A8 00000168 3C08B019 */ lui $t0, 0xb019
  105. /* 0001AC 0000016C 1568000C */ bne $t3, $t0, .L000001A0
  106. /* 0001B0 00000170 00000000 */ nop
  107. /* 0001B4 00000174 3C080800 */ lui $t0, 0x800
  108. /* 0001B8 00000178 0308C020 */ add $t8, $t8, $t0
  109. /* 0001BC 0000017C 0330C820 */ add $t9, $t9, $s0
  110. /* 0001C0 00000180 0330C820 */ add $t9, $t9, $s0
  111. /* 0001C4 00000184 3C080020 */ lui $t0, 0x20
  112. /* 0001C8 00000188 02C8B020 */ add $s6, $s6, $t0
  113. /* 0001CC 0000018C 0288A020 */ add $s4, $s4, $t0
  114. /* 0001D0 00000190 00129040 */ sll $s2, $s2, 1
  115. /* 0001D4 00000194 22520001 */ addi $s2, $s2, 1
  116. /* 0001D8 00000198 10000003 */ b .L000001A8
  117. /* 0001DC 0000019C 00000000 */ nop
  118. .L000001A0:
  119. /* 0001E0 000001A0 3C080010 */ lui $t0, 0x10
  120. /* 0001E4 000001A4 0288A020 */ add $s4, $s4, $t0
  121. .L000001A8:
  122. /* 0001E8 000001A8 24082000 */ li $t0, 8192
  123. /* 0001EC 000001AC AD880000 */ sw $t0, ($t4)
  124. /* 0001F0 000001B0 8DE90024 */ lw $t1, %lo(D_A3F00024)($t7)
  125. /* 0001F4 000001B4 8DFA0000 */ lw $k0, ($t7)
  126. /* 0001F8 000001B8 24081000 */ li $t0, 4096
  127. /* 0001FC 000001BC AD880000 */ sw $t0, ($t4)
  128. /* 000200 000001C0 3129FFFF */ andi $t1, $t1, 0xffff
  129. /* 000204 000001C4 24080500 */ li $t0, 1280
  130. /* 000208 000001C8 15280009 */ bne $t1, $t0, .L000001F0
  131. /* 00020C 000001CC 00000000 */ nop
  132. /* 000210 000001D0 3C1B0100 */ lui $k1, 0x100
  133. /* 000214 000001D4 035BD024 */ and $k0, $k0, $k1
  134. /* 000218 000001D8 17400005 */ bnez $k0, .L000001F0
  135. /* 00021C 000001DC 00000000 */ nop
  136. /* 000220 000001E0 3C08101C */ lui $t0, (0x101C0A04 >> 16) # lui $t0, 0x101c
  137. /* 000224 000001E4 35080A04 */ ori $t0, (0x101C0A04 & 0xFFFF) # ori $t0, $t0, 0xa04
  138. /* 000228 000001E8 ADE80018 */ sw $t0, %lo(D_A3F00018)($t7)
  139. /* 00022C 000001EC 10000003 */ b .L000001FC
  140. .L000001F0:
  141. /* 000230 000001F0 3C08080C */ lui $t0, (0x080C1204 >> 16) # lui $t0, 0x80c
  142. /* 000234 000001F4 35081204 */ ori $t0, (0x080C1204 & 0xFFFF) # ori $t0, $t0, 0x1204
  143. /* 000238 000001F8 ADE80018 */ sw $t0, %lo(D_A3F00018)($t7)
  144. .L000001FC:
  145. /* 00023C 000001FC 3C080800 */ lui $t0, 0x800
  146. /* 000240 00000200 01C87020 */ add $t6, $t6, $t0
  147. /* 000244 00000204 01F07820 */ add $t7, $t7, $s0
  148. /* 000248 00000208 01F07820 */ add $t7, $t7, $s0
  149. /* 00024C 0000020C 25AD0001 */ addiu $t5, $t5, 1
  150. /* 000250 00000210 2DA80008 */ sltiu $t0, $t5, 8
  151. /* 000254 00000214 1500FFC4 */ bnez $t0, .L00000128
  152. /* 000258 00000218 00000000 */ nop
  153. .L0000021C:
  154. /* 00025C 0000021C 3C08C400 */ lui $t0, 0xc400
  155. /* 000260 00000220 AD48000C */ sw $t0, %lo(D_A3F8000C)($t2)
  156. /* 000264 00000224 3C088000 */ lui $t0, 0x8000
  157. /* 000268 00000228 AD480004 */ sw $t0, %lo(D_A3F80004)($t2)
  158. /* 00026C 0000022C 03C0E825 */ move $sp, $fp
  159. /* 000270 00000230 00001825 */ move $v1, $zero
  160. .L00000234:
  161. /* 000274 00000234 8FA90004 */ lw $t1, 4($sp)
  162. /* 000278 00000238 3C08B009 */ lui $t0, 0xb009
  163. /* 00027C 0000023C 15280016 */ bne $t1, $t0, .L00000298
  164. /* 000280 00000240 00000000 */ nop
  165. /* 000284 00000244 AE380004 */ sw $t8, 4($s1)
  166. /* 000288 00000248 2735000C */ addiu $s5, $t9, 0xc
  167. /* 00028C 0000024C 8FA40000 */ lw $a0, ($sp)
  168. /* 000290 00000250 23BD0008 */ addi $sp, $sp, 8
  169. /* 000294 00000254 24050001 */ li $a1, 1
  170. /* 000298 00000258 0D000290 */ jal func_04000A40
  171. /* 00029C 0000025C 00000000 */ nop
  172. /* 0002A0 00000260 8EC80000 */ lw $t0, ($s6)
  173. /* 0002A4 00000264 3C080008 */ lui $t0, 8
  174. /* 0002A8 00000268 01164020 */ add $t0, $t0, $s6
  175. /* 0002AC 0000026C 8D090000 */ lw $t1, ($t0)
  176. /* 0002B0 00000270 8EC80000 */ lw $t0, ($s6)
  177. /* 0002B4 00000274 3C080008 */ lui $t0, 8
  178. /* 0002B8 00000278 01164020 */ add $t0, $t0, $s6
  179. /* 0002BC 0000027C 8D090000 */ lw $t1, ($t0)
  180. /* 0002C0 00000280 3C080400 */ lui $t0, 0x400
  181. /* 0002C4 00000284 01C87020 */ add $t6, $t6, $t0
  182. /* 0002C8 00000288 0330C820 */ add $t9, $t9, $s0
  183. /* 0002CC 0000028C 3C080010 */ lui $t0, 0x10
  184. /* 0002D0 00000290 02C8B020 */ add $s6, $s6, $t0
  185. /* 0002D4 00000294 10000021 */ b .L0000031C
  186. .L00000298:
  187. /* 0002D8 00000298 AE370004 */ sw $s7, 4($s1)
  188. /* 0002DC 0000029C 24D5000C */ addiu $s5, $a2, 0xc
  189. /* 0002E0 000002A0 8FA40000 */ lw $a0, ($sp)
  190. /* 0002E4 000002A4 23BD0008 */ addi $sp, $sp, 8
  191. /* 0002E8 000002A8 24050001 */ li $a1, 1
  192. /* 0002EC 000002AC 0D000290 */ jal func_04000A40
  193. /* 0002F0 000002B0 00000000 */ nop
  194. /* 0002F4 000002B4 8CE80000 */ lw $t0, ($a3)
  195. /* 0002F8 000002B8 3C080008 */ lui $t0, 8
  196. /* 0002FC 000002BC 01074020 */ add $t0, $t0, $a3
  197. /* 000300 000002C0 8D090000 */ lw $t1, ($t0)
  198. /* 000304 000002C4 3C080010 */ lui $t0, 0x10
  199. /* 000308 000002C8 01074020 */ add $t0, $t0, $a3
  200. /* 00030C 000002CC 8D090000 */ lw $t1, ($t0)
  201. /* 000310 000002D0 3C080018 */ lui $t0, 0x18
  202. /* 000314 000002D4 01074020 */ add $t0, $t0, $a3
  203. /* 000318 000002D8 8D090000 */ lw $t1, ($t0)
  204. /* 00031C 000002DC 8CE80000 */ lw $t0, ($a3)
  205. /* 000320 000002E0 3C080008 */ lui $t0, 8
  206. /* 000324 000002E4 01074020 */ add $t0, $t0, $a3
  207. /* 000328 000002E8 8D090000 */ lw $t1, ($t0)
  208. /* 00032C 000002EC 3C080010 */ lui $t0, 0x10
  209. /* 000330 000002F0 01074020 */ add $t0, $t0, $a3
  210. /* 000334 000002F4 8D090000 */ lw $t1, ($t0)
  211. /* 000338 000002F8 3C080018 */ lui $t0, 0x18
  212. /* 00033C 000002FC 01074020 */ add $t0, $t0, $a3
  213. /* 000340 00000300 8D090000 */ lw $t1, ($t0)
  214. /* 000344 00000304 3C080800 */ lui $t0, 0x800
  215. /* 000348 00000308 02E8B820 */ add $s7, $s7, $t0
  216. /* 00034C 0000030C 00D03020 */ add $a2, $a2, $s0
  217. /* 000350 00000310 00D03020 */ add $a2, $a2, $s0
  218. /* 000354 00000314 3C080020 */ lui $t0, 0x20
  219. /* 000358 00000318 00E83820 */ add $a3, $a3, $t0
  220. .L0000031C:
  221. /* 00035C 0000031C 24630001 */ addiu $v1, $v1, 1
  222. /* 000360 00000320 006D402A */ slt $t0, $v1, $t5
  223. /* 000364 00000324 1500FFC3 */ bnez $t0, .L00000234
  224. /* 000368 00000328 00000000 */ nop
  225. /* 00036C 0000032C 3C0AA470 */ lui $t2, %hi(D_A4700010) # $t2, 0xa470
  226. /* 000370 00000330 001294C0 */ sll $s2, $s2, 0x13
  227. /* 000374 00000334 3C090006 */ lui $t1, (0x00063634 >> 16) # lui $t1, 6
  228. /* 000378 00000338 35293634 */ ori $t1, (0x00063634 & 0xFFFF) # ori $t1, $t1, 0x3634
  229. /* 00037C 0000033C 01324825 */ or $t1, $t1, $s2
  230. /* 000380 00000340 AD490010 */ sw $t1, %lo(D_A4700010)($t2)
  231. /* 000384 00000344 8D490010 */ lw $t1, %lo(D_A4700010)($t2)
  232. /* 000388 00000348 3C08A000 */ lui $t0, %hi(D_A0000018) # $t0, 0xa000
  233. /* 00038C 0000034C 35080300 */ ori $t0, (0xA0000300 & 0xFFFF) # ori $t0, $t0, 0x300
  234. /* 000390 00000350 3C090FFF */ lui $t1, (0x0FFFFFFF >> 16) # lui $t1, 0xfff
  235. /* 000394 00000354 3529FFFF */ ori $t1, (0x0FFFFFFF & 0xFFFF) # ori $t1, $t1, 0xffff
  236. /* 000398 00000358 02C9B024 */ and $s6, $s6, $t1
  237. /* 00039C 0000035C AD160018 */ sw $s6, %lo(D_A0000018)($t0)
  238. /* 0003A0 00000360 03C0E825 */ move $sp, $fp
  239. /* 0003A4 00000364 27BD0048 */ addiu $sp, $sp, 0x48
  240. /* 0003A8 00000368 8FB30000 */ lw $s3, ($sp)
  241. /* 0003AC 0000036C 8FB40004 */ lw $s4, 4($sp)
  242. /* 0003B0 00000370 8FB50008 */ lw $s5, 8($sp)
  243. /* 0003B4 00000374 8FB6000C */ lw $s6, 0xc($sp)
  244. /* 0003B8 00000378 8FB70010 */ lw $s7, 0x10($sp)
  245. /* 0003BC 0000037C 27BD0018 */ addiu $sp, $sp, 0x18
  246. /* 0003C0 00000380 3C088000 */ lui $t0, 0x8000
  247. /* 0003C4 00000384 25080000 */ addiu $t0, $t0, 0
  248. /* 0003C8 00000388 25094000 */ addiu $t1, $t0, 0x4000
  249. /* 0003CC 0000038C 2529FFE0 */ addiu $t1, $t1, -0x20
  250. /* 0003D0 00000390 4080E000 */ mtc0 $zero, $28
  251. /* 0003D4 00000394 4080E800 */ mtc0 $zero, $29
  252. .L00000398:
  253. /* 0003D8 00000398 BD080000 */ cache 8, ($t0)
  254. /* 0003DC 0000039C 0109082B */ sltu $at, $t0, $t1
  255. /* 0003E0 000003A0 1420FFFD */ bnez $at, .L00000398
  256. /* 0003E4 000003A4 25080020 */ addiu $t0, $t0, 0x20
  257. /* 0003E8 000003A8 3C088000 */ lui $t0, 0x8000
  258. /* 0003EC 000003AC 25080000 */ addiu $t0, $t0, 0
  259. /* 0003F0 000003B0 25092000 */ addiu $t1, $t0, 0x2000
  260. /* 0003F4 000003B4 2529FFF0 */ addiu $t1, $t1, -0x10
  261. .L000003B8:
  262. /* 0003F8 000003B8 BD090000 */ cache 9, ($t0)
  263. /* 0003FC 000003BC 0109082B */ sltu $at, $t0, $t1
  264. /* 000400 000003C0 1420FFFD */ bnez $at, .L000003B8
  265. /* 000404 000003C4 25080010 */ addiu $t0, $t0, 0x10
  266. /* 000408 000003C8 10000013 */ b .L00000418
  267. /* 00040C 000003CC 00000000 */ nop
  268. .L000003D0:
  269. /* 000410 000003D0 3C088000 */ lui $t0, 0x8000
  270. /* 000414 000003D4 25080000 */ addiu $t0, $t0, 0
  271. /* 000418 000003D8 25094000 */ addiu $t1, $t0, 0x4000
  272. /* 00041C 000003DC 2529FFE0 */ addiu $t1, $t1, -0x20
  273. /* 000420 000003E0 4080E000 */ mtc0 $zero, $28
  274. /* 000424 000003E4 4080E800 */ mtc0 $zero, $29
  275. .L000003E8:
  276. /* 000428 000003E8 BD080000 */ cache 8, ($t0)
  277. /* 00042C 000003EC 0109082B */ sltu $at, $t0, $t1
  278. /* 000430 000003F0 1420FFFD */ bnez $at, .L000003E8
  279. /* 000434 000003F4 25080020 */ addiu $t0, $t0, 0x20
  280. /* 000438 000003F8 3C088000 */ lui $t0, 0x8000
  281. /* 00043C 000003FC 25080000 */ addiu $t0, $t0, 0
  282. /* 000440 00000400 25092000 */ addiu $t1, $t0, 0x2000
  283. /* 000444 00000404 2529FFF0 */ addiu $t1, $t1, -0x10
  284. .L00000408:
  285. /* 000448 00000408 BD010000 */ cache 1, ($t0)
  286. /* 00044C 0000040C 0109082B */ sltu $at, $t0, $t1
  287. /* 000450 00000410 1420FFFD */ bnez $at, .L00000408
  288. /* 000454 00000414 25080010 */ addiu $t0, $t0, 0x10
  289. .L00000418:
  290. /* 000458 00000418 3C0AA400 */ lui $t2, 0xa400
  291. /* 00045C 0000041C 254A0000 */ addiu $t2, $t2, 0
  292. /* 000460 00000420 3C0BFFF0 */ lui $t3, 0xfff0
  293. /* 000464 00000424 3C090010 */ lui $t1, 0x0010 # $t1, 0x10
  294. /* 000468 00000428 014B5024 */ and $t2, $t2, $t3
  295. /* 00046C 0000042C 3C08A400 */ lui $t0, %hi(D_A40004C0) # $t0, 0xa400
  296. /* 000470 00000430 2529FFFF */ addiu $t1, -1 # addiu $t1, $t1, -1
  297. /* 000474 00000434 3C0BA400 */ lui $t3, %hi(D_A4000774) # $t3, 0xa400
  298. /* 000478 00000438 250804C0 */ addiu $t0, %lo(D_A40004C0) # addiu $t0, $t0, 0x4c0
  299. /* 00047C 0000043C 256B0774 */ addiu $t3, %lo(D_A4000774) # addiu $t3, $t3, 0x774
  300. /* 000480 00000440 01094024 */ and $t0, $t0, $t1
  301. /* 000484 00000444 01695824 */ and $t3, $t3, $t1
  302. /* 000488 00000448 3C09A000 */ lui $t1, 0xa000
  303. /* 00048C 0000044C 010A4025 */ or $t0, $t0, $t2
  304. /* 000490 00000450 016A5825 */ or $t3, $t3, $t2
  305. /* 000494 00000454 25290000 */ addiu $t1, $t1, 0
  306. .L00000458:
  307. /* 000498 00000458 8D0D0000 */ lw $t5, ($t0)
  308. /* 00049C 0000045C 25080004 */ addiu $t0, $t0, 4
  309. /* 0004A0 00000460 010B082B */ sltu $at, $t0, $t3
  310. /* 0004A4 00000464 25290004 */ addiu $t1, $t1, 4
  311. /* 0004A8 00000468 1420FFFB */ bnez $at, .L00000458
  312. /* 0004AC 0000046C AD2DFFFC */ sw $t5, -4($t1)
  313. /* 0004B0 00000470 3C0C8000 */ lui $t4, 0x8000
  314. /* 0004B4 00000474 258C0000 */ addiu $t4, $t4, 0
  315. /* 0004B8 00000478 01800008 */ jr $t4
  316. /* 0004BC 0000047C 00000000 */ nop
  317. /* 0004C0 00000480 3C0BB000 */ lui $t3, %hi(D_B0000008) # $t3, 0xb000
  318. /* 0004C4 00000484 8D690008 */ lw $t1, %lo(D_B0000008)($t3)
  319. /* 0004C8 00000488 3C0A1FFF */ lui $t2, (0x1FFFFFFF >> 16) # lui $t2, 0x1fff
  320. /* 0004CC 0000048C 354AFFFF */ ori $t2, (0x1FFFFFFF & 0xFFFF) # ori $t2, $t2, 0xffff
  321. /* 0004D0 00000490 3C01A460 */ lui $at, 0xa460
  322. /* 0004D4 00000494 012A4824 */ and $t1, $t1, $t2
  323. /* 0004D8 00000498 AC290000 */ sw $t1, ($at)
  324. /* 0004DC 0000049C 3C08A460 */ lui $t0, %hi(D_A4600010) # $t0, 0xa460
  325. .L000004A0:
  326. /* 0004E0 000004A0 8D080010 */ lw $t0, %lo(D_A4600010)($t0)
  327. /* 0004E4 000004A4 31080002 */ andi $t0, $t0, 2
  328. /* 0004E8 000004A8 5500FFFD */ bnezl $t0, .L000004A0
  329. /* 0004EC 000004AC 3C08A460 */ lui $t0, 0xa460
  330. /* 0004F0 000004B0 24081000 */ li $t0, 4096
  331. /* 0004F4 000004B4 010B4020 */ add $t0, $t0, $t3
  332. /* 0004F8 000004B8 010A4024 */ and $t0, $t0, $t2
  333. /* 0004FC 000004BC 3C01A460 */ lui $at, %hi(D_A4600004) # $at, 0xa460
  334. /* 000500 000004C0 AC280004 */ sw $t0, %lo(D_A4600004)($at)
  335. /* 000504 000004C4 3C0A0010 */ lui $t2, 0x0010 # $t2, 0x10
  336. /* 000508 000004C8 254AFFFF */ addiu $t2, 0xFFFF # addiu $t2, $t2, -1
  337. /* 00050C 000004CC 3C01A460 */ lui $at, %hi(D_A460000C) # $at, 0xa460
  338. /* 000510 000004D0 AC2A000C */ sw $t2, %lo(D_A460000C)($at)
  339. .L000004D4:
  340. /* 000514 000004D4 00000000 */ nop
  341. /* 000518 000004D8 00000000 */ nop
  342. /* 00051C 000004DC 00000000 */ nop
  343. /* 000520 000004E0 00000000 */ nop
  344. /* 000524 000004E4 00000000 */ nop
  345. /* 000528 000004E8 00000000 */ nop
  346. /* 00052C 000004EC 00000000 */ nop
  347. /* 000530 000004F0 00000000 */ nop
  348. /* 000534 000004F4 00000000 */ nop
  349. /* 000538 000004F8 00000000 */ nop
  350. /* 00053C 000004FC 00000000 */ nop
  351. /* 000540 00000500 00000000 */ nop
  352. /* 000544 00000504 00000000 */ nop
  353. /* 000548 00000508 00000000 */ nop
  354. /* 00054C 0000050C 00000000 */ nop
  355. /* 000550 00000510 00000000 */ nop
  356. /* 000554 00000514 00000000 */ nop
  357. /* 000558 00000518 00000000 */ nop
  358. /* 00055C 0000051C 00000000 */ nop
  359. /* 000560 00000520 00000000 */ nop
  360. /* 000564 00000524 00000000 */ nop
  361. /* 000568 00000528 00000000 */ nop
  362. /* 00056C 0000052C 00000000 */ nop
  363. /* 000570 00000530 00000000 */ nop
  364. /* 000574 00000534 00000000 */ nop
  365. /* 000578 00000538 00000000 */ nop
  366. /* 00057C 0000053C 00000000 */ nop
  367. /* 000580 00000540 00000000 */ nop
  368. /* 000584 00000544 3C0BA460 */ lui $t3, %hi(D_A4600010) # $t3, 0xa460
  369. /* 000588 00000548 8D6B0010 */ lw $t3, %lo(D_A4600010)($t3)
  370. /* 00058C 0000054C 316B0001 */ andi $t3, $t3, 1
  371. /* 000590 00000550 1560FFE0 */ bnez $t3, .L000004D4
  372. /* 000594 00000554 00000000 */ nop
  373. /* 000598 00000558 3C0BB000 */ lui $t3, %hi(D_B0000008) # $t3, 0xb000
  374. /* 00059C 0000055C 8D640008 */ lw $a0, %lo(D_B0000008)($t3)
  375. /* 0005A0 00000560 02C02825 */ move $a1, $s6
  376. /* 0005A4 00000564 3C015D58 */ lui $at, (0x5D588B65 >> 16) # lui $at, 0x5d58
  377. /* 0005A8 00000568 34218B65 */ ori $at, (0x5D588B65 & 0xFFFF) # ori $at, $at, 0x8b65
  378. /* 0005AC 0000056C 00A10019 */ multu $a1, $at
  379. /* 0005B0 00000570 27BDFFE0 */ addiu $sp, $sp, -0x20
  380. /* 0005B4 00000574 AFBF001C */ sw $ra, 0x1c($sp)
  381. /* 0005B8 00000578 AFB00014 */ sw $s0, 0x14($sp)
  382. /* 0005BC 0000057C 3C1F0010 */ lui $ra, 0x10
  383. /* 0005C0 00000580 00001825 */ move $v1, $zero
  384. /* 0005C4 00000584 00004025 */ move $t0, $zero
  385. /* 0005C8 00000588 00804825 */ move $t1, $a0
  386. /* 0005CC 0000058C 240D0020 */ li $t5, 32
  387. /* 0005D0 00000590 00001012 */ mflo $v0
  388. /* 0005D4 00000594 24420001 */ addiu $v0, $v0, 1
  389. /* 0005D8 00000598 00403825 */ move $a3, $v0
  390. /* 0005DC 0000059C 00405025 */ move $t2, $v0
  391. /* 0005E0 000005A0 00405825 */ move $t3, $v0
  392. /* 0005E4 000005A4 00408025 */ move $s0, $v0
  393. /* 0005E8 000005A8 00403025 */ move $a2, $v0
  394. /* 0005EC 000005AC 00406025 */ move $t4, $v0
  395. .L000005B0:
  396. /* 0005F0 000005B0 8D220000 */ lw $v0, ($t1)
  397. /* 0005F4 000005B4 00E21821 */ addu $v1, $a3, $v0
  398. /* 0005F8 000005B8 0067082B */ sltu $at, $v1, $a3
  399. /* 0005FC 000005BC 10200002 */ beqz $at, .L000005C8
  400. /* 000600 000005C0 00602825 */ move $a1, $v1
  401. /* 000604 000005C4 254A0001 */ addiu $t2, $t2, 1
  402. .L000005C8:
  403. /* 000608 000005C8 3043001F */ andi $v1, $v0, 0x1f
  404. /* 00060C 000005CC 01A37823 */ subu $t7, $t5, $v1
  405. /* 000610 000005D0 01E2C006 */ srlv $t8, $v0, $t7
  406. /* 000614 000005D4 00627004 */ sllv $t6, $v0, $v1
  407. /* 000618 000005D8 01D82025 */ or $a0, $t6, $t8
  408. /* 00061C 000005DC 00C2082B */ sltu $at, $a2, $v0
  409. /* 000620 000005E0 00A03825 */ move $a3, $a1
  410. /* 000624 000005E4 01625826 */ xor $t3, $t3, $v0
  411. /* 000628 000005E8 10200004 */ beqz $at, .L000005FC
  412. /* 00062C 000005EC 02048021 */ addu $s0, $s0, $a0
  413. /* 000630 000005F0 00E2C826 */ xor $t9, $a3, $v0
  414. /* 000634 000005F4 10000002 */ b .L00000600
  415. /* 000638 000005F8 03263026 */ xor $a2, $t9, $a2
  416. .L000005FC:
  417. /* 00063C 000005FC 00C43026 */ xor $a2, $a2, $a0
  418. .L00000600:
  419. /* 000640 00000600 25080004 */ addiu $t0, $t0, 4
  420. /* 000644 00000604 00507826 */ xor $t7, $v0, $s0
  421. /* 000648 00000608 25290004 */ addiu $t1, $t1, 4
  422. /* 00064C 0000060C 151FFFE8 */ bne $t0, $ra, .L000005B0
  423. /* 000650 00000610 01EC6021 */ addu $t4, $t7, $t4
  424. /* 000654 00000614 00EA7026 */ xor $t6, $a3, $t2
  425. /* 000658 00000618 01CB3826 */ xor $a3, $t6, $t3
  426. /* 00065C 0000061C 0206C026 */ xor $t8, $s0, $a2
  427. /* 000660 00000620 030C8026 */ xor $s0, $t8, $t4
  428. /* 000664 00000624 3C0BB000 */ lui $t3, %hi(D_B0000014) # $t3, 0xb000
  429. /* 000668 00000628 8D680010 */ lw $t0, %lo(D_B0000010)($t3)
  430. /* 00066C 0000062C 14E80006 */ bne $a3, $t0, .L00000648
  431. /* 000670 00000630 00000000 */ nop
  432. /* 000674 00000634 8D680014 */ lw $t0, %lo(D_B0000014)($t3)
  433. /* 000678 00000638 16080003 */ bne $s0, $t0, .L00000648
  434. /* 00067C 0000063C 00000000 */ nop
  435. /* 000680 00000640 04110003 */ bal func_00000650
  436. /* 000684 00000644 00000000 */ nop
  437. func_00000648:
  438. .L00000648:
  439. /* 000688 00000648 0411FFFF */ bal func_00000648
  440. /* 00068C 0000064C 00000000 */ nop
  441. func_00000650:
  442. /* 000690 00000650 3C09A408 */ lui $t1, 0xa408
  443. /* 000694 00000654 8D290000 */ lw $t1, ($t1)
  444. /* 000698 00000658 8FB00014 */ lw $s0, 0x14($sp)
  445. /* 00069C 0000065C 8FBF001C */ lw $ra, 0x1c($sp)
  446. /* 0006A0 00000660 11200006 */ beqz $t1, .L0000067C
  447. /* 0006A4 00000664 27BD0020 */ addiu $sp, $sp, 0x20
  448. /* 0006A8 00000668 240A0041 */ li $t2, 65
  449. /* 0006AC 0000066C 3C01A404 */ lui $at, %hi(D_A4040010) # $at, 0xa404
  450. /* 0006B0 00000670 AC2A0010 */ sw $t2, %lo(D_A4040010)($at)
  451. /* 0006B4 00000674 3C01A408 */ lui $at, 0xa408
  452. /* 0006B8 00000678 AC200000 */ sw $zero, ($at)
  453. .L0000067C:
  454. /* 0006BC 0000067C 3C0B00AA */ lui $t3, (0x00AAAAAE >> 16) # lui $t3, 0xaa
  455. /* 0006C0 00000680 356BAAAE */ ori $t3, (0x00AAAAAE & 0xFFFF) # ori $t3, $t3, 0xaaae
  456. /* 0006C4 00000684 3C01A404 */ lui $at, %hi(D_A4040010) # $at, 0xa404
  457. /* 0006C8 00000688 AC2B0010 */ sw $t3, %lo(D_A4040010)($at)
  458. /* 0006CC 0000068C 3C01A430 */ lui $at, %hi(D_A430000C) # $at, 0xa430
  459. /* 0006D0 00000690 24080555 */ li $t0, 1365
  460. /* 0006D4 00000694 AC28000C */ sw $t0, %lo(D_A430000C)($at)
  461. /* 0006D8 00000698 3C01A480 */ lui $at, %hi(D_A4800018) # $at, 0xa480
  462. /* 0006DC 0000069C AC200018 */ sw $zero, %lo(D_A4800018)($at)
  463. /* 0006E0 000006A0 3C01A450 */ lui $at, %hi(D_A450000C) # $at, 0xa450
  464. /* 0006E4 000006A4 AC20000C */ sw $zero, %lo(D_A450000C)($at)
  465. /* 0006E8 000006A8 3C01A430 */ lui $at, 0xa430
  466. /* 0006EC 000006AC 24090800 */ li $t1, 2048
  467. /* 0006F0 000006B0 AC290000 */ sw $t1, ($at)
  468. /* 0006F4 000006B4 24090002 */ li $t1, 2
  469. /* 0006F8 000006B8 3C01A460 */ lui $at, %hi(D_A4600010) # $at, 0xa460
  470. /* 0006FC 000006BC 3C08A000 */ lui $t0, %hi(D_A0000008) # $t0, 0xa000
  471. /* 000700 000006C0 35080300 */ ori $t0, (0xA0000300 & 0xFFFF) # ori $t0, $t0, 0x300
  472. /* 000704 000006C4 AC290010 */ sw $t1, %lo(D_A4600010)($at)
  473. /* 000708 000006C8 AD170014 */ sw $s7, %lo(D_A0000014)($t0)
  474. /* 00070C 000006CC AD15000C */ sw $s5, %lo(D_A000000C)($t0)
  475. /* 000710 000006D0 AD130004 */ sw $s3, %lo(D_A0000004)($t0)
  476. /* 000714 000006D4 12600004 */ beqz $s3, .L000006E8
  477. /* 000718 000006D8 AD140000 */ sw $s4, ($t0)
  478. /* 00071C 000006DC 3C09A600 */ lui $t1, 0xa600
  479. /* 000720 000006E0 10000003 */ b .L000006F0
  480. /* 000724 000006E4 25290000 */ addiu $t1, $t1, 0
  481. .L000006E8:
  482. /* 000728 000006E8 3C09B000 */ lui $t1, 0xb000
  483. /* 00072C 000006EC 25290000 */ addiu $t1, $t1, 0
  484. .L000006F0:
  485. /* 000730 000006F0 AD090008 */ sw $t1, %lo(D_A0000008)($t0)
  486. /* 000734 000006F4 3C08A400 */ lui $t0, 0xa400
  487. /* 000738 000006F8 25080000 */ addiu $t0, $t0, 0
  488. /* 00073C 000006FC 21091000 */ addi $t1, $t0, 0x1000
  489. .L00000700:
  490. /* 000740 00000700 25080004 */ addiu $t0, $t0, 4
  491. /* 000744 00000704 1509FFFE */ bne $t0, $t1, .L00000700
  492. /* 000748 00000708 AD00FFFC */ sw $zero, -4($t0)
  493. /* 00074C 0000070C 3C08A400 */ lui $t0, %hi(D_A4001000) # $t0, 0xa400
  494. /* 000750 00000710 25081000 */ addiu $t0, %lo(D_A4001000) # addiu $t0, $t0, 0x1000
  495. /* 000754 00000714 21091000 */ addi $t1, $t0, 0x1000
  496. .L00000718:
  497. /* 000758 00000718 25080004 */ addiu $t0, $t0, 4
  498. /* 00075C 0000071C 1509FFFE */ bne $t0, $t1, .L00000718
  499. /* 000760 00000720 AD00FFFC */ sw $zero, -4($t0)
  500. /* 000764 00000724 3C0BB000 */ lui $t3, %hi(D_B0000008) # $t3, 0xb000
  501. /* 000768 00000728 8D690008 */ lw $t1, %lo(D_B0000008)($t3)
  502. /* 00076C 0000072C 01200008 */ jr $t1
  503. /* 000770 00000730 00000000 */ nop
  504. /* 000774 00000734 00000000 */ nop
  505. func_04000778:
  506. /* 000778 00000738 27BDFF60 */ addiu $sp, $sp, -0xa0
  507. /* 00077C 0000073C AFB00040 */ sw $s0, 0x40($sp)
  508. /* 000780 00000740 AFB10044 */ sw $s1, 0x44($sp)
  509. /* 000784 00000744 00008825 */ move $s1, $zero
  510. /* 000788 00000748 00008025 */ move $s0, $zero
  511. /* 00078C 0000074C AFA20000 */ sw $v0, ($sp)
  512. /* 000790 00000750 AFA30004 */ sw $v1, 4($sp)
  513. /* 000794 00000754 AFA40008 */ sw $a0, 8($sp)
  514. /* 000798 00000758 AFA5000C */ sw $a1, 0xc($sp)
  515. /* 00079C 0000075C AFA60010 */ sw $a2, 0x10($sp)
  516. /* 0007A0 00000760 AFA70014 */ sw $a3, 0x14($sp)
  517. /* 0007A4 00000764 AFA80018 */ sw $t0, 0x18($sp)
  518. /* 0007A8 00000768 AFA9001C */ sw $t1, 0x1c($sp)
  519. /* 0007AC 0000076C AFAA0020 */ sw $t2, 0x20($sp)
  520. /* 0007B0 00000770 AFAB0024 */ sw $t3, 0x24($sp)
  521. /* 0007B4 00000774 AFAC0028 */ sw $t4, 0x28($sp)
  522. /* 0007B8 00000778 AFAD002C */ sw $t5, 0x2c($sp)
  523. /* 0007BC 0000077C AFAE0030 */ sw $t6, 0x30($sp)
  524. /* 0007C0 00000780 AFAF0034 */ sw $t7, 0x34($sp)
  525. /* 0007C4 00000784 AFB80038 */ sw $t8, 0x38($sp)
  526. /* 0007C8 00000788 AFB9003C */ sw $t9, 0x3c($sp)
  527. /* 0007CC 0000078C AFB20048 */ sw $s2, 0x48($sp)
  528. /* 0007D0 00000790 AFB3004C */ sw $s3, 0x4c($sp)
  529. /* 0007D4 00000794 AFB40050 */ sw $s4, 0x50($sp)
  530. /* 0007D8 00000798 AFB50054 */ sw $s5, 0x54($sp)
  531. /* 0007DC 0000079C AFB60058 */ sw $s6, 0x58($sp)
  532. /* 0007E0 000007A0 AFB7005C */ sw $s7, 0x5c($sp)
  533. /* 0007E4 000007A4 AFBE0060 */ sw $fp, 0x60($sp)
  534. /* 0007E8 000007A8 AFBF0064 */ sw $ra, 0x64($sp)
  535. .L000007AC:
  536. /* 0007EC 000007AC 0D000220 */ jal func_04000880
  537. /* 0007F0 000007B0 00000000 */ nop
  538. /* 0007F4 000007B4 26100001 */ addiu $s0, $s0, 1
  539. /* 0007F8 000007B8 2A090004 */ slti $t1, $s0, 4
  540. /* 0007FC 000007BC 1520FFFB */ bnez $t1, .L000007AC
  541. /* 000800 000007C0 02228821 */ addu $s1, $s1, $v0
  542. /* 000804 000007C4 00112082 */ srl $a0, $s1, 2
  543. /* 000808 000007C8 0D000290 */ jal func_04000A40
  544. /* 00080C 000007CC 24050001 */ li $a1, 1
  545. /* 000810 000007D0 8FBF0064 */ lw $ra, 0x64($sp)
  546. /* 000814 000007D4 00111082 */ srl $v0, $s1, 2
  547. /* 000818 000007D8 8FB10044 */ lw $s1, 0x44($sp)
  548. /* 00081C 000007DC 8FA30004 */ lw $v1, 4($sp)
  549. /* 000820 000007E0 8FA40008 */ lw $a0, 8($sp)
  550. /* 000824 000007E4 8FA5000C */ lw $a1, 0xc($sp)
  551. /* 000828 000007E8 8FA60010 */ lw $a2, 0x10($sp)
  552. /* 00082C 000007EC 8FA70014 */ lw $a3, 0x14($sp)
  553. /* 000830 000007F0 8FA80018 */ lw $t0, 0x18($sp)
  554. /* 000834 000007F4 8FA9001C */ lw $t1, 0x1c($sp)
  555. /* 000838 000007F8 8FAA0020 */ lw $t2, 0x20($sp)
  556. /* 00083C 000007FC 8FAB0024 */ lw $t3, 0x24($sp)
  557. /* 000840 00000800 8FAC0028 */ lw $t4, 0x28($sp)
  558. /* 000844 00000804 8FAD002C */ lw $t5, 0x2c($sp)
  559. /* 000848 00000808 8FAE0030 */ lw $t6, 0x30($sp)
  560. /* 00084C 0000080C 8FAF0034 */ lw $t7, 0x34($sp)
  561. /* 000850 00000810 8FB80038 */ lw $t8, 0x38($sp)
  562. /* 000854 00000814 8FB9003C */ lw $t9, 0x3c($sp)
  563. /* 000858 00000818 8FB00040 */ lw $s0, 0x40($sp)
  564. /* 00085C 0000081C 8FB20048 */ lw $s2, 0x48($sp)
  565. /* 000860 00000820 8FB3004C */ lw $s3, 0x4c($sp)
  566. /* 000864 00000824 8FB40050 */ lw $s4, 0x50($sp)
  567. /* 000868 00000828 8FB50054 */ lw $s5, 0x54($sp)
  568. /* 00086C 0000082C 8FB60058 */ lw $s6, 0x58($sp)
  569. /* 000870 00000830 8FB7005C */ lw $s7, 0x5c($sp)
  570. /* 000874 00000834 8FBE0060 */ lw $fp, 0x60($sp)
  571. /* 000878 00000838 03E00008 */ jr $ra
  572. /* 00087C 0000083C 27BD00A0 */ addiu $sp, $sp, 0xa0
  573. func_04000880:
  574. /* 000880 00000840 27BDFFE0 */ addiu $sp, $sp, -0x20
  575. /* 000884 00000844 AFBF001C */ sw $ra, 0x1c($sp)
  576. /* 000888 00000848 00004825 */ move $t1, $zero
  577. /* 00088C 0000084C 00005825 */ move $t3, $zero
  578. /* 000890 00000850 00006025 */ move $t4, $zero
  579. .L00000854:
  580. /* 000894 00000854 299A0040 */ slti $k0, $t4, 0x40
  581. /* 000898 00000858 53400018 */ beql $k0, $zero, .L000008BC
  582. /* 00089C 0000085C 00001025 */ move $v0, $zero
  583. /* 0008A0 00000860 0D000243 */ jal func_0400090C
  584. /* 0008A4 00000864 01802025 */ move $a0, $t4
  585. /* 0008A8 00000868 58400008 */ blezl $v0, .L0000088C
  586. /* 0008AC 0000086C 293A0050 */ slti $k0, $t1, 0x50
  587. /* 0008B0 00000870 0049D023 */ subu $k0, $v0, $t1
  588. /* 0008B4 00000874 034C0019 */ multu $k0, $t4
  589. /* 0008B8 00000878 00404825 */ move $t1, $v0
  590. /* 0008BC 0000087C 0000D012 */ mflo $k0
  591. /* 0008C0 00000880 017A5821 */ addu $t3, $t3, $k0
  592. /* 0008C4 00000884 00000000 */ nop
  593. /* 0008C8 00000888 293A0050 */ slti $k0, $t1, 0x50
  594. .L0000088C:
  595. /* 0008CC 0000088C 1740FFF1 */ bnez $k0, .L00000854
  596. /* 0008D0 00000890 258C0001 */ addiu $t4, $t4, 1
  597. /* 0008D4 00000894 000B2080 */ sll $a0, $t3, 2
  598. /* 0008D8 00000898 008B2023 */ subu $a0, $a0, $t3
  599. /* 0008DC 0000089C 00042080 */ sll $a0, $a0, 2
  600. /* 0008E0 000008A0 008B2023 */ subu $a0, $a0, $t3
  601. /* 0008E4 000008A4 00042040 */ sll $a0, $a0, 1
  602. /* 0008E8 000008A8 0D000260 */ jal func_04000980
  603. /* 0008EC 000008AC 2484FC90 */ addiu $a0, $a0, -0x370
  604. /* 0008F0 000008B0 10000003 */ b .L000008C0
  605. /* 0008F4 000008B4 8FBF001C */ lw $ra, 0x1c($sp)
  606. /* 0008F8 000008B8 00001025 */ move $v0, $zero
  607. .L000008BC:
  608. /* 0008FC 000008BC 8FBF001C */ lw $ra, 0x1c($sp)
  609. .L000008C0:
  610. /* 000900 000008C0 27BD0020 */ addiu $sp, $sp, 0x20
  611. /* 000904 000008C4 03E00008 */ jr $ra
  612. /* 000908 000008C8 00000000 */ nop
  613. func_0400090C:
  614. /* 00090C 000008CC 27BDFFD8 */ addiu $sp, $sp, -0x28
  615. /* 000910 000008D0 AFBF001C */ sw $ra, 0x1c($sp)
  616. /* 000914 000008D4 00001025 */ move $v0, $zero
  617. /* 000918 000008D8 0D000290 */ jal func_04000A40
  618. /* 00091C 000008DC 24050002 */ li $a1, 2
  619. /* 000920 000008E0 0000F025 */ move $fp, $zero
  620. /* 000924 000008E4 241AFFFF */ li $k0, -1
  621. .L000008E8:
  622. /* 000928 000008E8 AE9A0004 */ sw $k0, 4($s4)
  623. /* 00092C 000008EC 8E830004 */ lw $v1, 4($s4)
  624. /* 000930 000008F0 AE9A0000 */ sw $k0, ($s4)
  625. /* 000934 000008F4 AE9A0000 */ sw $k0, ($s4)
  626. /* 000938 000008F8 0000E025 */ move $gp, $zero
  627. /* 00093C 000008FC 00031C02 */ srl $v1, $v1, 0x10
  628. .L00000900:
  629. /* 000940 00000900 307A0001 */ andi $k0, $v1, 1
  630. /* 000944 00000904 53400003 */ beql $k0, $zero, .L00000914
  631. /* 000948 00000908 279C0001 */ addiu $gp, $gp, 1
  632. /* 00094C 0000090C 24420001 */ addiu $v0, $v0, 1
  633. /* 000950 00000910 279C0001 */ addiu $gp, $gp, 1
  634. .L00000914:
  635. /* 000954 00000914 2B9A0008 */ slti $k0, $gp, 8
  636. /* 000958 00000918 1740FFF9 */ bnez $k0, .L00000900
  637. /* 00095C 0000091C 00031842 */ srl $v1, $v1, 1
  638. /* 000960 00000920 27DE0001 */ addiu $fp, $fp, 1
  639. /* 000964 00000924 2BDA000A */ slti $k0, $fp, 0xa
  640. /* 000968 00000928 5740FFEF */ bnezl $k0, .L000008E8
  641. /* 00096C 0000092C 241AFFFF */ li $k0, -1
  642. /* 000970 00000930 8FBF001C */ lw $ra, 0x1c($sp)
  643. /* 000974 00000934 27BD0028 */ addiu $sp, $sp, 0x28
  644. /* 000978 00000938 03E00008 */ jr $ra
  645. /* 00097C 0000093C 00000000 */ nop
  646. func_04000980:
  647. /* 000980 00000940 27BDFFD8 */ addiu $sp, $sp, -0x28
  648. /* 000984 00000944 AFBF001C */ sw $ra, 0x1c($sp)
  649. /* 000988 00000948 AFA40020 */ sw $a0, 0x20($sp)
  650. /* 00098C 0000094C A3A00027 */ sb $zero, 0x27($sp)
  651. /* 000990 00000950 00004025 */ move $t0, $zero
  652. /* 000994 00000954 00005025 */ move $t2, $zero
  653. /* 000998 00000958 340DC800 */ li $t5, 51200
  654. /* 00099C 0000095C 00007025 */ move $t6, $zero
  655. /* 0009A0 00000960 29DA0040 */ slti $k0, $t6, 0x40
  656. .L00000964:
  657. /* 0009A4 00000964 57400004 */ bnezl $k0, .L00000978
  658. /* 0009A8 00000968 01C02025 */ move $a0, $t6
  659. /* 0009AC 0000096C 10000020 */ b .L000009F0
  660. /* 0009B0 00000970 00001025 */ move $v0, $zero
  661. /* 0009B4 00000974 01C02025 */ move $a0, $t6
  662. .L00000978:
  663. /* 0009B8 00000978 0D000290 */ jal func_04000A40
  664. /* 0009BC 0000097C 24050001 */ li $a1, 1
  665. /* 0009C0 00000980 0D0002B4 */ jal func_04000AD0
  666. /* 0009C4 00000984 27A40027 */ addiu $a0, $sp, 0x27
  667. /* 0009C8 00000988 0D0002B4 */ jal func_04000AD0
  668. /* 0009CC 0000098C 27A40027 */ addiu $a0, $sp, 0x27
  669. /* 0009D0 00000990 93BA0027 */ lbu $k0, 0x27($sp)
  670. /* 0009D4 00000994 241B0320 */ li $k1, 800
  671. /* 0009D8 00000998 8FA40020 */ lw $a0, 0x20($sp)
  672. /* 0009DC 0000099C 035B0019 */ multu $k0, $k1
  673. /* 0009E0 000009A0 00004012 */ mflo $t0
  674. /* 0009E4 000009A4 0104D023 */ subu $k0, $t0, $a0
  675. /* 0009E8 000009A8 07430003 */ bgezl $k0, .L000009B8
  676. /* 0009EC 000009AC 034DD82A */ slt $k1, $k0, $t5
  677. /* 0009F0 000009B0 0088D023 */ subu $k0, $a0, $t0
  678. /* 0009F4 000009B4 034DD82A */ slt $k1, $k0, $t5
  679. .L000009B8:
  680. /* 0009F8 000009B8 53600004 */ beql $k1, $zero, .L000009CC
  681. /* 0009FC 000009BC 8FA40020 */ lw $a0, 0x20($sp)
  682. /* 000A00 000009C0 03406825 */ move $t5, $k0
  683. /* 000A04 000009C4 01C05025 */ move $t2, $t6
  684. /* 000A08 000009C8 8FA40020 */ lw $a0, 0x20($sp)
  685. .L000009CC:
  686. /* 000A0C 000009CC 0104D82A */ slt $k1, $t0, $a0
  687. /* 000A10 000009D0 53600006 */ beql $k1, $zero, .L000009EC
  688. /* 000A14 000009D4 014E1021 */ addu $v0, $t2, $t6
  689. /* 000A18 000009D8 25CE0001 */ addiu $t6, $t6, 1
  690. /* 000A1C 000009DC 29DB0041 */ slti $k1, $t6, 0x41
  691. /* 000A20 000009E0 5760FFE0 */ bnezl $k1, .L00000964
  692. /* 000A24 000009E4 29DA0040 */ slti $k0, $t6, 0x40
  693. /* 000A28 000009E8 014E1021 */ addu $v0, $t2, $t6
  694. .L000009EC:
  695. /* 000A2C 000009EC 00021042 */ srl $v0, $v0, 1
  696. .L000009F0:
  697. /* 000A30 000009F0 8FBF001C */ lw $ra, 0x1c($sp)
  698. /* 000A34 000009F4 27BD0028 */ addiu $sp, $sp, 0x28
  699. /* 000A38 000009F8 03E00008 */ jr $ra
  700. /* 000A3C 000009FC 00000000 */ nop
  701. func_04000A40:
  702. /* 000A40 00000A00 27BDFFD8 */ addiu $sp, $sp, -0x28
  703. /* 000A44 00000A04 308400FF */ andi $a0, $a0, 0xff
  704. /* 000A48 00000A08 241B0001 */ li $k1, 1
  705. /* 000A4C 00000A0C 3884003F */ xori $a0, $a0, 0x3f
  706. /* 000A50 00000A10 AFBF001C */ sw $ra, 0x1c($sp)
  707. /* 000A54 00000A14 14BB0003 */ bne $a1, $k1, .L00000A24
  708. /* 000A58 00000A18 3C0F4600 */ lui $t7, 0x4600
  709. /* 000A5C 00000A1C 3C1A8000 */ lui $k0, 0x8000
  710. /* 000A60 00000A20 01FA7825 */ or $t7, $t7, $k0
  711. .L00000A24:
  712. /* 000A64 00000A24 309A0001 */ andi $k0, $a0, 1
  713. /* 000A68 00000A28 001AD180 */ sll $k0, $k0, 6
  714. /* 000A6C 00000A2C 01FA7825 */ or $t7, $t7, $k0
  715. /* 000A70 00000A30 309A0002 */ andi $k0, $a0, 2
  716. /* 000A74 00000A34 001AD340 */ sll $k0, $k0, 0xd
  717. /* 000A78 00000A38 01FA7825 */ or $t7, $t7, $k0
  718. /* 000A7C 00000A3C 309A0004 */ andi $k0, $a0, 4
  719. /* 000A80 00000A40 001AD500 */ sll $k0, $k0, 0x14
  720. /* 000A84 00000A44 01FA7825 */ or $t7, $t7, $k0
  721. /* 000A88 00000A48 309A0008 */ andi $k0, $a0, 8
  722. /* 000A8C 00000A4C 001AD100 */ sll $k0, $k0, 4
  723. /* 000A90 00000A50 01FA7825 */ or $t7, $t7, $k0
  724. /* 000A94 00000A54 309A0010 */ andi $k0, $a0, 0x10
  725. /* 000A98 00000A58 001AD2C0 */ sll $k0, $k0, 0xb
  726. /* 000A9C 00000A5C 01FA7825 */ or $t7, $t7, $k0
  727. /* 000AA0 00000A60 309A0020 */ andi $k0, $a0, 0x20
  728. /* 000AA4 00000A64 001AD480 */ sll $k0, $k0, 0x12
  729. /* 000AA8 00000A68 01FA7825 */ or $t7, $t7, $k0
  730. /* 000AAC 00000A6C 241B0001 */ li $k1, 1
  731. /* 000AB0 00000A70 14BB0003 */ bne $a1, $k1, .L00000A80
  732. /* 000AB4 00000A74 AEAF0000 */ sw $t7, ($s5)
  733. /* 000AB8 00000A78 3C1AA430 */ lui $k0, 0xa430
  734. /* 000ABC 00000A7C AF400000 */ sw $zero, ($k0)
  735. .L00000A80:
  736. /* 000AC0 00000A80 8FBF001C */ lw $ra, 0x1c($sp)
  737. /* 000AC4 00000A84 27BD0028 */ addiu $sp, $sp, 0x28
  738. /* 000AC8 00000A88 03E00008 */ jr $ra
  739. /* 000ACC 00000A8C 00000000 */ nop
  740. func_04000AD0:
  741. /* 000AD0 00000A90 27BDFFD8 */ addiu $sp, $sp, -0x28
  742. /* 000AD4 00000A94 AFBF001C */ sw $ra, 0x1c($sp)
  743. /* 000AD8 00000A98 241A2000 */ li $k0, 8192
  744. /* 000ADC 00000A9C 3C1BA430 */ lui $k1, 0xa430
  745. /* 000AE0 00000AA0 AF7A0000 */ sw $k0, ($k1)
  746. /* 000AE4 00000AA4 0000F025 */ move $fp, $zero
  747. /* 000AE8 00000AA8 8EBE0000 */ lw $fp, ($s5)
  748. /* 000AEC 00000AAC 241A1000 */ li $k0, 4096
  749. /* 000AF0 00000AB0 AF7A0000 */ sw $k0, ($k1)
  750. /* 000AF4 00000AB4 241B0040 */ li $k1, 64
  751. /* 000AF8 00000AB8 037ED824 */ and $k1, $k1, $fp
  752. /* 000AFC 00000ABC 001BD982 */ srl $k1, $k1, 6
  753. /* 000B00 00000AC0 0000D025 */ move $k0, $zero
  754. /* 000B04 00000AC4 035BD025 */ or $k0, $k0, $k1
  755. /* 000B08 00000AC8 241B4000 */ li $k1, 16384
  756. /* 000B0C 00000ACC 037ED824 */ and $k1, $k1, $fp
  757. /* 000B10 00000AD0 001BDB42 */ srl $k1, $k1, 0xd
  758. /* 000B14 00000AD4 035BD025 */ or $k0, $k0, $k1
  759. /* 000B18 00000AD8 3C1B0040 */ lui $k1, 0x40
  760. /* 000B1C 00000ADC 037ED824 */ and $k1, $k1, $fp
  761. /* 000B20 00000AE0 001BDD02 */ srl $k1, $k1, 0x14
  762. /* 000B24 00000AE4 035BD025 */ or $k0, $k0, $k1
  763. /* 000B28 00000AE8 241B0080 */ li $k1, 128
  764. /* 000B2C 00000AEC 037ED824 */ and $k1, $k1, $fp
  765. /* 000B30 00000AF0 001BD902 */ srl $k1, $k1, 4
  766. /* 000B34 00000AF4 035BD025 */ or $k0, $k0, $k1
  767. /* 000B38 00000AF8 341B8000 */ li $k1, 32768
  768. /* 000B3C 00000AFC 037ED824 */ and $k1, $k1, $fp
  769. /* 000B40 00000B00 001BDAC2 */ srl $k1, $k1, 0xb
  770. /* 000B44 00000B04 035BD025 */ or $k0, $k0, $k1
  771. /* 000B48 00000B08 3C1B0080 */ lui $k1, 0x80
  772. /* 000B4C 00000B0C 037ED824 */ and $k1, $k1, $fp
  773. /* 000B50 00000B10 001BDC82 */ srl $k1, $k1, 0x12
  774. /* 000B54 00000B14 035BD025 */ or $k0, $k0, $k1
  775. /* 000B58 00000B18 A09A0000 */ sb $k0, ($a0)
  776. /* 000B5C 00000B1C 8FBF001C */ lw $ra, 0x1c($sp)
  777. /* 000B60 00000B20 27BD0028 */ addiu $sp, $sp, 0x28
  778. /* 000B64 00000B24 03E00008 */ jr $ra
  779. /* 000B68 00000B28 00000000 */ nop
  780. /* 000B6C 00000B2C 00000000 */ nop
  781. .incbin "lib/bin/ipl3_font.bin"