bcopy.s (8318B)
1 .set noat // allow manual use of $at 2 .set noreorder // don't insert nops after branches 3 4 #include "macros.inc" 5 6 7 .section .text, "ax" 8 9 //TODO There seem to be patterns in these iQue diffs. Can we figure out what's causing them? Could this have been written in C? 10 //also ifdef hell lol 11 12 glabel bcopy 13 beqz $a2, .L80323A4C 14 move $a3, $a1 15 #ifdef VERSION_CN 16 beq $a0, $a1, .L80323A4C 17 nop 18 slt $at, $a1, $a0 19 bnez $at, .L80323A14 20 nop 21 add $v0, $a0, $a2 22 slt $at, $a1, $v0 23 beqz $at, .L80323A14 24 nop 25 b .L80323B78 26 nop 27 .L80323A14: 28 slti $at, $a2, 0x10 29 #else 30 beq $a0, $a1, .L80323A4C 31 slt $at, $a1, $a0 32 bnezl $at, .L80323A14 33 slti $at, $a2, 0x10 34 add $v0, $a0, $a2 35 slt $at, $a1, $v0 36 beqzl $at, .L80323A14 37 slti $at, $a2, 0x10 38 b .L80323B78 39 slti $at, $a2, 0x10 40 slti $at, $a2, 0x10 41 .L80323A14: 42 #endif 43 bnez $at, .L80323A2C 44 nop 45 andi $v0, $a0, 3 46 andi $v1, $a1, 3 47 beq $v0, $v1, .L80323A54 48 nop 49 .L80323A2C: 50 beqz $a2, .L80323A4C 51 nop 52 addu $v1, $a0, $a2 53 .L80323A38: 54 lb $v0, ($a0) 55 addiu $a0, $a0, 1 56 #ifdef VERSION_CN 57 sb $v0, ($a1) 58 bne $a0, $v1, .L80323A38 59 addiu $a1, $a1, 1 60 #else 61 addiu $a1, $a1, 1 62 bne $a0, $v1, .L80323A38 63 sb $v0, -1($a1) 64 #endif 65 .L80323A4C: 66 jr $ra 67 move $v0, $a3 68 69 .L80323A54: 70 #ifdef VERSION_CN 71 beqz $v0, .L80323AB8 72 nop 73 li $at, 1 74 beq $v0, $at, .L80323A9C 75 nop 76 li $at, 2 77 beq $v0, $at, .L80323A88 78 nop 79 lb $v0, ($a0) 80 addiu $a0, $a0, 1 81 sb $v0, ($a1) 82 addiu $a1, $a1, 1 83 b .L80323AB8 84 addiu $a2, $a2, -1 85 .L80323A88: 86 lh $v0, ($a0) 87 #else 88 beqz $v0, .L80323AB8 89 li $at, 1 90 beq $v0, $at, .L80323A9C 91 li $at, 2 92 beql $v0, $at, .L80323A88 93 lh $v0, ($a0) 94 lb $v0, ($a0) 95 addiu $a0, $a0, 1 96 addiu $a1, $a1, 1 97 addiu $a2, $a2, -1 98 b .L80323AB8 99 sb $v0, -1($a1) 100 lh $v0, ($a0) 101 .L80323A88: 102 #endif 103 addiu $a0, $a0, 2 104 #ifdef VERSION_CN 105 sh $v0, ($a1) 106 addiu $a1, $a1, 2 107 b .L80323AB8 108 addiu $a2, $a2, -2 109 #else 110 addiu $a1, $a1, 2 111 addiu $a2, $a2, -2 112 b .L80323AB8 113 sh $v0, -2($a1) 114 #endif 115 .L80323A9C: 116 lb $v0, ($a0) 117 lh $v1, 1($a0) 118 addiu $a0, $a0, 3 119 #ifdef VERSION_CN 120 sb $v0, ($a1) 121 sh $v1, 1($a1) 122 #endif 123 addiu $a1, $a1, 3 124 addiu $a2, $a2, -3 125 #ifndef VERSION_CN 126 sb $v0, -3($a1) 127 sh $v1, -2($a1) 128 #endif 129 .L80323AB8: 130 slti $at, $a2, 0x20 131 #ifdef VERSION_CN 132 bnez $at, .L80323B14 133 nop 134 #else 135 bnezl $at, .L80323B18 136 slti $at, $a2, 0x10 137 #endif 138 lw $v0, ($a0) 139 lw $v1, 4($a0) 140 lw $t0, 8($a0) 141 lw $t1, 0xc($a0) 142 lw $t2, 0x10($a0) 143 lw $t3, 0x14($a0) 144 lw $t4, 0x18($a0) 145 lw $t5, 0x1c($a0) 146 addiu $a0, $a0, 0x20 147 #ifdef VERSION_CN 148 sw $v0, ($a1) 149 sw $v1, 4($a1) 150 sw $t0, 8($a1) 151 sw $t1, 0xc($a1) 152 sw $t2, 0x10($a1) 153 sw $t3, 0x14($a1) 154 sw $t4, 0x18($a1) 155 sw $t5, 0x1c($a1) 156 #endif 157 addiu $a1, $a1, 0x20 158 #ifndef VERSION_CN 159 addiu $a2, $a2, -0x20 160 sw $v0, -0x20($a1) 161 sw $v1, -0x1c($a1) 162 sw $t0, -0x18($a1) 163 sw $t1, -0x14($a1) 164 sw $t2, -0x10($a1) 165 sw $t3, -0xc($a1) 166 sw $t4, -8($a1) 167 #endif 168 b .L80323AB8 169 #ifdef VERSION_CN 170 addiu $a2, $a2, -0x20 171 #else 172 sw $t5, -4($a1) 173 #endif 174 .L80323B14: 175 slti $at, $a2, 0x10 176 .L80323B18: 177 #ifdef VERSION_CN 178 bnez $at, .L80323B50 179 nop 180 #else 181 bnezl $at, .L80323B54 182 slti $at, $a2, 4 183 #endif 184 lw $v0, ($a0) 185 lw $v1, 4($a0) 186 lw $t0, 8($a0) 187 lw $t1, 0xc($a0) 188 addiu $a0, $a0, 0x10 189 #ifdef VERSION_CN 190 sw $v0, ($a1) 191 sw $v1, 4($a1) 192 sw $t0, 8($a1) 193 sw $t1, 0xc($a1) 194 #endif 195 addiu $a1, $a1, 0x10 196 #ifndef VERSION_CN 197 addiu $a2, $a2, -0x10 198 sw $v0, -0x10($a1) 199 sw $v1, -0xc($a1) 200 sw $t0, -8($a1) 201 #endif 202 b .L80323B14 203 #ifdef VERSION_CN 204 addiu $a2, $a2, -0x10 205 #else 206 sw $t1, -4($a1) 207 #endif 208 .L80323B50: 209 slti $at, $a2, 4 210 .L80323B54: 211 bnez $at, .L80323A2C 212 nop 213 lw $v0, ($a0) 214 addiu $a0, $a0, 4 215 #ifdef VERSION_CN 216 sw $v0, ($a1) 217 #endif 218 addiu $a1, $a1, 4 219 #ifndef VERSION_CN 220 addiu $a2, $a2, -4 221 #endif 222 b .L80323B50 223 #ifdef VERSION_CN 224 addiu $a2, $a2, -4 225 #else 226 sw $v0, -4($a1) 227 slti $at, $a2, 0x10 228 #endif 229 .L80323B78: 230 add $a0, $a0, $a2 231 #ifdef VERSION_CN 232 add $a1, $a1, $a2 233 slti $at, $a2, 0x10 234 #endif 235 bnez $at, .L80323B94 236 #ifdef VERSION_CN 237 nop 238 #else 239 add $a1, $a1, $a2 240 #endif 241 andi $v0, $a0, 3 242 andi $v1, $a1, 3 243 beq $v0, $v1, .L80323BC4 244 nop 245 .L80323B94: 246 beqz $a2, .L80323A4C 247 nop 248 addiu $a0, $a0, -1 249 addiu $a1, $a1, -1 250 subu $v1, $a0, $a2 251 .L80323BA8: 252 lb $v0, ($a0) 253 addiu $a0, $a0, -1 254 #ifdef VERSION_CN 255 sb $v0, 0($a1) 256 #else 257 addiu $a1, $a1, -1 258 #endif 259 bne $a0, $v1, .L80323BA8 260 #ifdef VERSION_CN 261 addiu $a1, $a1, -1 262 #else 263 sb $v0, 1($a1) 264 #endif 265 jr $ra 266 move $v0, $a3 267 268 .L80323BC4: 269 beqz $v0, .L80323C28 270 #ifdef VERSION_CN 271 nop 272 #endif 273 li $at, 3 274 beq $v0, $at, .L80323C0C 275 #ifdef VERSION_CN 276 nop 277 #endif 278 li $at, 2 279 #ifdef VERSION_CN 280 beq $v0, $at, .L80323BF4 281 nop 282 #else 283 beql $v0, $at, .L80323BF8 284 lh $v0, -2($a0) 285 #endif 286 lb $v0, -1($a0) 287 addiu $a0, $a0, -1 288 #ifdef VERSION_CN 289 sb $v0, -1($a1) 290 #endif 291 addiu $a1, $a1, -1 292 #ifndef VERSION_CN 293 addiu $a2, $a2, -1 294 #endif 295 b .L80323C28 296 #ifdef VERSION_CN 297 addiu $a2, $a2, -1 298 #else 299 sb $v0, ($a1) 300 #endif 301 .L80323BF4: 302 lh $v0, -2($a0) 303 .L80323BF8: 304 addiu $a0, $a0, -2 305 #ifdef VERSION_CN 306 sh $v0, -2($a1) 307 #endif 308 addiu $a1, $a1, -2 309 #ifndef VERSION_CN 310 addiu $a2, $a2, -2 311 #endif 312 b .L80323C28 313 #ifdef VERSION_CN 314 addiu $a2, $a2, -2 315 #else 316 sh $v0, ($a1) 317 #endif 318 .L80323C0C: 319 lb $v0, -1($a0) 320 lh $v1, -3($a0) 321 addiu $a0, $a0, -3 322 #ifdef VERSION_CN 323 sb $v0, -1($a1) 324 sh $v1, -3($a1) 325 addiu $a1, $a1, -3 326 addiu $a2, $a2, -3 327 #else 328 addiu $a1, $a1, -3 329 addiu $a2, $a2, -3 330 sb $v0, 2($a1) 331 sh $v1, ($a1) 332 #endif 333 .L80323C28: 334 slti $at, $a2, 0x20 335 #ifdef VERSION_CN 336 bnez $at, .L80323C84 337 nop 338 #else 339 bnezl $at, .L80323C88 340 slti $at, $a2, 0x10 341 #endif 342 lw $v0, -4($a0) 343 lw $v1, -8($a0) 344 lw $t0, -0xc($a0) 345 lw $t1, -0x10($a0) 346 lw $t2, -0x14($a0) 347 lw $t3, -0x18($a0) 348 lw $t4, -0x1c($a0) 349 lw $t5, -0x20($a0) 350 addiu $a0, $a0, -0x20 351 #ifdef VERSION_CN 352 sw $v0, -4($a1) 353 sw $v1, -8($a1) 354 sw $t0, -0xc($a1) 355 sw $t1, -0x10($a1) 356 sw $t2, -0x14($a1) 357 sw $t3, -0x18($a1) 358 sw $t4, -0x1c($a1) 359 sw $t5, -0x20($a1) 360 addiu $a1, $a1, -0x20 361 #else 362 addiu $a1, $a1, -0x20 363 addiu $a2, $a2, -0x20 364 sw $v0, 0x1c($a1) 365 sw $v1, 0x18($a1) 366 sw $t0, 0x14($a1) 367 sw $t1, 0x10($a1) 368 sw $t2, 0xc($a1) 369 sw $t3, 8($a1) 370 sw $t4, 4($a1) 371 #endif 372 b .L80323C28 373 #ifdef VERSION_CN 374 addiu $a2, $a2, -0x20 375 #else 376 sw $t5, ($a1) 377 #endif 378 .L80323C84: 379 slti $at, $a2, 0x10 380 .L80323C88: 381 #ifdef VERSION_CN 382 bnez $at, .L80323CC0 383 nop 384 #else 385 bnezl $at, .L80323CC4 386 slti $at, $a2, 4 387 #endif 388 lw $v0, -4($a0) 389 lw $v1, -8($a0) 390 lw $t0, -0xc($a0) 391 lw $t1, -0x10($a0) 392 addiu $a0, $a0, -0x10 393 #ifdef VERSION_CN 394 sw $v0, -4($a1) 395 sw $v1, -8($a1) 396 sw $t0, -0xc($a1) 397 sw $t1, -0x10($a1) 398 addiu $a1, $a1, -0x10 399 #else 400 addiu $a1, $a1, -0x10 401 addiu $a2, $a2, -0x10 402 sw $v0, 0xc($a1) 403 sw $v1, 8($a1) 404 sw $t0, 4($a1) 405 #endif 406 b .L80323C84 407 #ifdef VERSION_CN 408 addiu $a2, $a2, -0x10 409 #else 410 sw $t1, ($a1) 411 #endif 412 .L80323CC0: 413 slti $at, $a2, 4 414 .L80323CC4: 415 bnez $at, .L80323B94 416 nop 417 lw $v0, -4($a0) 418 addiu $a0, $a0, -4 419 #ifdef VERSION_CN 420 sw $v0, -4($a1) 421 #endif 422 addiu $a1, $a1, -4 423 #ifndef VERSION_CN 424 addiu $a2, $a2, -4 425 #endif 426 b .L80323CC0 427 #ifdef VERSION_CN 428 addiu $a2, $a2, -4 429 #else 430 sw $v0, ($a1) 431 nop 432 nop 433 nop 434 #endif