mirror of
https://github.com/pmret/papermario.git
synced 2024-11-10 04:52:34 +01:00
129 lines
6.6 KiB
ArmAsm
129 lines
6.6 KiB
ArmAsm
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
|
|
glabel func_8005736C
|
|
/* 3276C 8005736C 27BDFFD0 */ addiu $sp, $sp, -0x30
|
|
/* 32770 80057370 AFB50024 */ sw $s5, 0x24($sp)
|
|
/* 32774 80057374 00C0A82D */ daddu $s5, $a2, $zero
|
|
/* 32778 80057378 AFB3001C */ sw $s3, 0x1c($sp)
|
|
/* 3277C 8005737C 00A0982D */ daddu $s3, $a1, $zero
|
|
/* 32780 80057380 AFB40020 */ sw $s4, 0x20($sp)
|
|
/* 32784 80057384 00E0A02D */ daddu $s4, $a3, $zero
|
|
/* 32788 80057388 308400FF */ andi $a0, $a0, 0xff
|
|
/* 3278C 8005738C 00041140 */ sll $v0, $a0, 5
|
|
/* 32790 80057390 00441023 */ subu $v0, $v0, $a0
|
|
/* 32794 80057394 3C038008 */ lui $v1, %hi(D_80078E54)
|
|
/* 32798 80057398 8C638E54 */ lw $v1, %lo(D_80078E54)($v1)
|
|
/* 3279C 8005739C 00021080 */ sll $v0, $v0, 2
|
|
/* 327A0 800573A0 AFBF0028 */ sw $ra, 0x28($sp)
|
|
/* 327A4 800573A4 AFB20018 */ sw $s2, 0x18($sp)
|
|
/* 327A8 800573A8 AFB10014 */ sw $s1, 0x14($sp)
|
|
/* 327AC 800573AC AFB00010 */ sw $s0, 0x10($sp)
|
|
/* 327B0 800573B0 8C63001C */ lw $v1, 0x1c($v1)
|
|
/* 327B4 800573B4 93B20043 */ lbu $s2, 0x43($sp)
|
|
/* 327B8 800573B8 00628021 */ addu $s0, $v1, $v0
|
|
/* 327BC 800573BC 8E050064 */ lw $a1, 0x64($s0)
|
|
/* 327C0 800573C0 8E030068 */ lw $v1, 0x68($s0)
|
|
/* 327C4 800573C4 00A3102A */ slt $v0, $a1, $v1
|
|
/* 327C8 800573C8 14400029 */ bnez $v0, .L80057470
|
|
/* 327CC 800573CC 26110048 */ addiu $s1, $s0, 0x48
|
|
/* 327D0 800573D0 3C028008 */ lui $v0, %hi(D_80078181)
|
|
/* 327D4 800573D4 24428181 */ addiu $v0, $v0, %lo(D_80078181)
|
|
/* 327D8 800573D8 90420000 */ lbu $v0, ($v0)
|
|
/* 327DC 800573DC 1440000E */ bnez $v0, .L80057418
|
|
/* 327E0 800573E0 AE030064 */ sw $v1, 0x64($s0)
|
|
/* 327E4 800573E4 3C048008 */ lui $a0, %hi(D_80078E60)
|
|
/* 327E8 800573E8 24848E60 */ addiu $a0, $a0, %lo(D_80078E60)
|
|
/* 327EC 800573EC 8603004E */ lh $v1, 0x4e($s0)
|
|
/* 327F0 800573F0 84820080 */ lh $v0, 0x80($a0)
|
|
/* 327F4 800573F4 00620018 */ mult $v1, $v0
|
|
/* 327F8 800573F8 00004012 */ mflo $t0
|
|
/* 327FC 800573FC 000813C3 */ sra $v0, $t0, 0xf
|
|
/* 32800 80057400 A6020050 */ sh $v0, 0x50($s0)
|
|
/* 32804 80057404 84820080 */ lh $v0, 0x80($a0)
|
|
/* 32808 80057408 00620018 */ mult $v1, $v0
|
|
/* 3280C 8005740C 00004012 */ mflo $t0
|
|
/* 32810 80057410 08015D26 */ j .L80057498
|
|
/* 32814 80057414 000813C3 */ sra $v0, $t0, 0xf
|
|
.L80057418:
|
|
/* 32818 80057418 8602004C */ lh $v0, 0x4c($s0)
|
|
/* 3281C 8005741C 8603004E */ lh $v1, 0x4e($s0)
|
|
/* 32820 80057420 00021040 */ sll $v0, $v0, 1
|
|
/* 32824 80057424 3C018008 */ lui $at, %hi(D_80078E60)
|
|
/* 32828 80057428 00220821 */ addu $at, $at, $v0
|
|
/* 3282C 8005742C 84228E60 */ lh $v0, %lo(D_80078E60)($at)
|
|
/* 32830 80057430 00620018 */ mult $v1, $v0
|
|
/* 32834 80057434 8603004C */ lh $v1, 0x4c($s0)
|
|
/* 32838 80057438 00004012 */ mflo $t0
|
|
/* 3283C 8005743C 000813C3 */ sra $v0, $t0, 0xf
|
|
/* 32840 80057440 A6020050 */ sh $v0, 0x50($s0)
|
|
/* 32844 80057444 2402007F */ addiu $v0, $zero, 0x7f
|
|
/* 32848 80057448 00431023 */ subu $v0, $v0, $v1
|
|
/* 3284C 8005744C 00021040 */ sll $v0, $v0, 1
|
|
/* 32850 80057450 8603004E */ lh $v1, 0x4e($s0)
|
|
/* 32854 80057454 3C018008 */ lui $at, %hi(D_80078E60)
|
|
/* 32858 80057458 00220821 */ addu $at, $at, $v0
|
|
/* 3285C 8005745C 84228E60 */ lh $v0, %lo(D_80078E60)($at)
|
|
/* 32860 80057460 00620018 */ mult $v1, $v0
|
|
/* 32864 80057464 00004012 */ mflo $t0
|
|
/* 32868 80057468 08015D26 */ j .L80057498
|
|
/* 3286C 8005746C 000813C3 */ sra $v0, $t0, 0xf
|
|
.L80057470:
|
|
/* 32870 80057470 86040050 */ lh $a0, 0x50($s0)
|
|
/* 32874 80057474 8606005A */ lh $a2, 0x5a($s0)
|
|
/* 32878 80057478 0C016001 */ jal func_80058004
|
|
/* 3287C 8005747C 96070058 */ lhu $a3, 0x58($s0)
|
|
/* 32880 80057480 86040052 */ lh $a0, 0x52($s0)
|
|
/* 32884 80057484 8E050064 */ lw $a1, 0x64($s0)
|
|
/* 32888 80057488 86060060 */ lh $a2, 0x60($s0)
|
|
/* 3288C 8005748C 9607005E */ lhu $a3, 0x5e($s0)
|
|
/* 32890 80057490 0C016001 */ jal func_80058004
|
|
/* 32894 80057494 A6020050 */ sh $v0, 0x50($s0)
|
|
.L80057498:
|
|
/* 32898 80057498 A6020052 */ sh $v0, 0x52($s0)
|
|
/* 3289C 8005749C 86220008 */ lh $v0, 8($s1)
|
|
/* 328A0 800574A0 14400002 */ bnez $v0, .L800574AC
|
|
/* 328A4 800574A4 24020001 */ addiu $v0, $zero, 1
|
|
/* 328A8 800574A8 A6220008 */ sh $v0, 8($s1)
|
|
.L800574AC:
|
|
/* 328AC 800574AC 8622000A */ lh $v0, 0xa($s1)
|
|
/* 328B0 800574B0 14400004 */ bnez $v0, .L800574C4
|
|
/* 328B4 800574B4 00131400 */ sll $v0, $s3, 0x10
|
|
/* 328B8 800574B8 24020001 */ addiu $v0, $zero, 1
|
|
/* 328BC 800574BC A622000A */ sh $v0, 0xa($s1)
|
|
/* 328C0 800574C0 00131400 */ sll $v0, $s3, 0x10
|
|
.L800574C4:
|
|
/* 328C4 800574C4 00021403 */ sra $v0, $v0, 0x10
|
|
/* 328C8 800574C8 00420018 */ mult $v0, $v0
|
|
/* 328CC 800574CC 328200FF */ andi $v0, $s4, 0xff
|
|
/* 328D0 800574D0 324300FF */ andi $v1, $s2, 0xff
|
|
/* 328D4 800574D4 AE20001C */ sw $zero, 0x1c($s1)
|
|
/* 328D8 800574D8 AE350020 */ sw $s5, 0x20($s1)
|
|
/* 328DC 800574DC A6220004 */ sh $v0, 4($s1)
|
|
/* 328E0 800574E0 00004012 */ mflo $t0
|
|
/* 328E4 800574E4 000813C3 */ sra $v0, $t0, 0xf
|
|
/* 328E8 800574E8 A6220006 */ sh $v0, 6($s1)
|
|
/* 328EC 800574EC 00031040 */ sll $v0, $v1, 1
|
|
/* 328F0 800574F0 3C018008 */ lui $at, %hi(D_80078E60)
|
|
/* 328F4 800574F4 00220821 */ addu $at, $at, $v0
|
|
/* 328F8 800574F8 94228E60 */ lhu $v0, %lo(D_80078E60)($at)
|
|
/* 328FC 800574FC A622000C */ sh $v0, 0xc($s1)
|
|
/* 32900 80057500 2402007F */ addiu $v0, $zero, 0x7f
|
|
/* 32904 80057504 00431023 */ subu $v0, $v0, $v1
|
|
/* 32908 80057508 00021040 */ sll $v0, $v0, 1
|
|
/* 3290C 8005750C 3C038008 */ lui $v1, %hi(D_80078E60)
|
|
/* 32910 80057510 00621821 */ addu $v1, $v1, $v0
|
|
/* 32914 80057514 94638E60 */ lhu $v1, %lo(D_80078E60)($v1)
|
|
/* 32918 80057518 24020001 */ addiu $v0, $zero, 1
|
|
/* 3291C 8005751C AE220024 */ sw $v0, 0x24($s1)
|
|
/* 32920 80057520 A623000E */ sh $v1, 0xe($s1)
|
|
/* 32924 80057524 8FBF0028 */ lw $ra, 0x28($sp)
|
|
/* 32928 80057528 8FB50024 */ lw $s5, 0x24($sp)
|
|
/* 3292C 8005752C 8FB40020 */ lw $s4, 0x20($sp)
|
|
/* 32930 80057530 8FB3001C */ lw $s3, 0x1c($sp)
|
|
/* 32934 80057534 8FB20018 */ lw $s2, 0x18($sp)
|
|
/* 32938 80057538 8FB10014 */ lw $s1, 0x14($sp)
|
|
/* 3293C 8005753C 8FB00010 */ lw $s0, 0x10($sp)
|
|
/* 32940 80057540 03E00008 */ jr $ra
|
|
/* 32944 80057544 27BD0030 */ addiu $sp, $sp, 0x30
|