papermario/asm/nonmatchings/os/code_44380_len_4e0/osPfsInitPak.s
2020-09-23 23:16:13 -04:00

137 lines
7.0 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel osPfsInitPak
/* 44590 80069190 27BDFF90 */ addiu $sp, $sp, -0x70
/* 44594 80069194 AFB20060 */ sw $s2, 0x60($sp)
/* 44598 80069198 00809021 */ addu $s2, $a0, $zero
/* 4459C 8006919C AFB1005C */ sw $s1, 0x5c($sp)
/* 445A0 800691A0 00A08821 */ addu $s1, $a1, $zero
/* 445A4 800691A4 AFB30064 */ sw $s3, 0x64($sp)
/* 445A8 800691A8 00C09821 */ addu $s3, $a2, $zero
/* 445AC 800691AC AFBF0068 */ sw $ra, 0x68($sp)
/* 445B0 800691B0 0C019771 */ jal osSiGetAccess
/* 445B4 800691B4 AFB00058 */ sw $s0, 0x58($sp)
/* 445B8 800691B8 02402021 */ addu $a0, $s2, $zero
/* 445BC 800691BC 0C01A530 */ jal osPfsGetStatus
/* 445C0 800691C0 02602821 */ addu $a1, $s3, $zero
/* 445C4 800691C4 0C01978C */ jal osSiRelAccess
/* 445C8 800691C8 00408021 */ addu $s0, $v0, $zero
/* 445CC 800691CC 16000067 */ bnez $s0, .L8006936C
/* 445D0 800691D0 02001021 */ addu $v0, $s0, $zero
/* 445D4 800691D4 02202021 */ addu $a0, $s1, $zero
/* 445D8 800691D8 AE320004 */ sw $s2, 4($s1)
/* 445DC 800691DC AE330008 */ sw $s3, 8($s1)
/* 445E0 800691E0 0C01A4E2 */ jal osPfsCheckRamArea
/* 445E4 800691E4 AE200000 */ sw $zero, ($s1)
/* 445E8 800691E8 00408021 */ addu $s0, $v0, $zero
/* 445EC 800691EC 1600005F */ bnez $s0, .L8006936C
/* 445F0 800691F0 02202021 */ addu $a0, $s1, $zero
/* 445F4 800691F4 0C01A5B4 */ jal osPfsSelectBank
/* 445F8 800691F8 00002821 */ addu $a1, $zero, $zero
/* 445FC 800691FC 00408021 */ addu $s0, $v0, $zero
/* 44600 80069200 1600005A */ bnez $s0, .L8006936C
/* 44604 80069204 24060001 */ addiu $a2, $zero, 1
/* 44608 80069208 8E240004 */ lw $a0, 4($s1)
/* 4460C 8006920C 8E250008 */ lw $a1, 8($s1)
/* 44610 80069210 0C01A874 */ jal osContRamRead
/* 44614 80069214 27A70010 */ addiu $a3, $sp, 0x10
/* 44618 80069218 00408021 */ addu $s0, $v0, $zero
/* 4461C 8006921C 16000053 */ bnez $s0, .L8006936C
/* 44620 80069220 27A40010 */ addiu $a0, $sp, 0x10
/* 44624 80069224 27A50050 */ addiu $a1, $sp, 0x50
/* 44628 80069228 0C01A5DD */ jal osIdCheckSum
/* 4462C 8006922C 27A60052 */ addiu $a2, $sp, 0x52
/* 44630 80069230 97A3002C */ lhu $v1, 0x2c($sp)
/* 44634 80069234 97A20050 */ lhu $v0, 0x50($sp)
/* 44638 80069238 14620005 */ bne $v1, $v0, .L80069250
/* 4463C 8006923C 27B20010 */ addiu $s2, $sp, 0x10
/* 44640 80069240 97A3002E */ lhu $v1, 0x2e($sp)
/* 44644 80069244 97A20052 */ lhu $v0, 0x52($sp)
/* 44648 80069248 1062000B */ beq $v1, $v0, .L80069278
/* 4464C 8006924C 00000000 */ nop
.L80069250:
/* 44650 80069250 02202021 */ addu $a0, $s1, $zero
/* 44654 80069254 0C01A6A9 */ jal osCheckPackId
/* 44658 80069258 02402821 */ addu $a1, $s2, $zero
/* 4465C 8006925C 00408021 */ addu $s0, $v0, $zero
/* 44660 80069260 12000005 */ beqz $s0, .L80069278
/* 44664 80069264 00000000 */ nop
/* 44668 80069268 8E230000 */ lw $v1, ($s1)
/* 4466C 8006926C 34630004 */ ori $v1, $v1, 4
/* 44670 80069270 0801A4DB */ j .L8006936C
/* 44674 80069274 AE230000 */ sw $v1, ($s1)
.L80069278:
/* 44678 80069278 96420018 */ lhu $v0, 0x18($s2)
/* 4467C 8006927C 30420001 */ andi $v0, $v0, 1
/* 44680 80069280 14400015 */ bnez $v0, .L800692D8
/* 44684 80069284 02402021 */ addu $a0, $s2, $zero
/* 44688 80069288 02202021 */ addu $a0, $s1, $zero
/* 4468C 8006928C 02402821 */ addu $a1, $s2, $zero
/* 44690 80069290 27B20030 */ addiu $s2, $sp, 0x30
/* 44694 80069294 0C01A5EE */ jal osRepairPackId
/* 44698 80069298 02403021 */ addu $a2, $s2, $zero
/* 4469C 8006929C 00408021 */ addu $s0, $v0, $zero
/* 446A0 800692A0 12000007 */ beqz $s0, .L800692C0
/* 446A4 800692A4 2402000A */ addiu $v0, $zero, 0xa
/* 446A8 800692A8 16020030 */ bne $s0, $v0, .L8006936C
/* 446AC 800692AC 02001021 */ addu $v0, $s0, $zero
/* 446B0 800692B0 8E220000 */ lw $v0, ($s1)
/* 446B4 800692B4 34420004 */ ori $v0, $v0, 4
/* 446B8 800692B8 0801A4DA */ j .L80069368
/* 446BC 800692BC AE220000 */ sw $v0, ($s1)
.L800692C0:
/* 446C0 800692C0 97A20048 */ lhu $v0, 0x48($sp)
/* 446C4 800692C4 30420001 */ andi $v0, $v0, 1
/* 446C8 800692C8 14400003 */ bnez $v0, .L800692D8
/* 446CC 800692CC 02402021 */ addu $a0, $s2, $zero
/* 446D0 800692D0 0801A4DB */ j .L8006936C
/* 446D4 800692D4 2402000B */ addiu $v0, $zero, 0xb
.L800692D8:
/* 446D8 800692D8 2625000C */ addiu $a1, $s1, 0xc
/* 446DC 800692DC 0C019194 */ jal bcopy
/* 446E0 800692E0 24060020 */ addiu $a2, $zero, 0x20
/* 446E4 800692E4 8E240004 */ lw $a0, 4($s1)
/* 446E8 800692E8 8E250008 */ lw $a1, 8($s1)
/* 446EC 800692EC 9242001B */ lbu $v0, 0x1b($s2)
/* 446F0 800692F0 24060007 */ addiu $a2, $zero, 7
/* 446F4 800692F4 AE22004C */ sw $v0, 0x4c($s1)
/* 446F8 800692F8 9243001A */ lbu $v1, 0x1a($s2)
/* 446FC 800692FC 2627002C */ addiu $a3, $s1, 0x2c
/* 44700 80069300 24020010 */ addiu $v0, $zero, 0x10
/* 44704 80069304 AE220050 */ sw $v0, 0x50($s1)
/* 44708 80069308 24020008 */ addiu $v0, $zero, 8
/* 4470C 8006930C AE220054 */ sw $v0, 0x54($s1)
/* 44710 80069310 A2230064 */ sb $v1, 0x64($s1)
/* 44714 80069314 92220064 */ lbu $v0, 0x64($s1)
/* 44718 80069318 00031840 */ sll $v1, $v1, 1
/* 4471C 8006931C 24630003 */ addiu $v1, $v1, 3
/* 44720 80069320 AE230060 */ sw $v1, 0x60($s1)
/* 44724 80069324 92230064 */ lbu $v1, 0x64($s1)
/* 44728 80069328 24420001 */ addiu $v0, $v0, 1
/* 4472C 8006932C 000210C0 */ sll $v0, $v0, 3
/* 44730 80069330 000318C0 */ sll $v1, $v1, 3
/* 44734 80069334 AE220058 */ sw $v0, 0x58($s1)
/* 44738 80069338 00431021 */ addu $v0, $v0, $v1
/* 4473C 8006933C 0C01A874 */ jal osContRamRead
/* 44740 80069340 AE22005C */ sw $v0, 0x5c($s1)
/* 44744 80069344 00408021 */ addu $s0, $v0, $zero
/* 44748 80069348 16000008 */ bnez $s0, .L8006936C
/* 4474C 8006934C 02001021 */ addu $v0, $s0, $zero
/* 44750 80069350 0C01B308 */ jal osPfsChecker
/* 44754 80069354 02202021 */ addu $a0, $s1, $zero
/* 44758 80069358 8E230000 */ lw $v1, ($s1)
/* 4475C 8006935C 34630001 */ ori $v1, $v1, 1
/* 44760 80069360 0801A4DB */ j .L8006936C
/* 44764 80069364 AE230000 */ sw $v1, ($s1)
.L80069368:
/* 44768 80069368 02001021 */ addu $v0, $s0, $zero
.L8006936C:
/* 4476C 8006936C 8FBF0068 */ lw $ra, 0x68($sp)
/* 44770 80069370 8FB30064 */ lw $s3, 0x64($sp)
/* 44774 80069374 8FB20060 */ lw $s2, 0x60($sp)
/* 44778 80069378 8FB1005C */ lw $s1, 0x5c($sp)
/* 4477C 8006937C 8FB00058 */ lw $s0, 0x58($sp)
/* 44780 80069380 03E00008 */ jr $ra
/* 44784 80069384 27BD0070 */ addiu $sp, $sp, 0x70