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

234 lines
12 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel osPfsRWInode
/* 4528C 80069E8C 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 45290 80069E90 AFB20030 */ sw $s2, 0x30($sp)
/* 45294 80069E94 00809021 */ addu $s2, $a0, $zero
/* 45298 80069E98 AFB40038 */ sw $s4, 0x38($sp)
/* 4529C 80069E9C 00A0A021 */ addu $s4, $a1, $zero
/* 452A0 80069EA0 AFB60040 */ sw $s6, 0x40($sp)
/* 452A4 80069EA4 00C0B021 */ addu $s6, $a2, $zero
/* 452A8 80069EA8 AFB70044 */ sw $s7, 0x44($sp)
/* 452AC 80069EAC 00E0B821 */ addu $s7, $a3, $zero
/* 452B0 80069EB0 32C200FF */ andi $v0, $s6, 0xff
/* 452B4 80069EB4 AFBF004C */ sw $ra, 0x4c($sp)
/* 452B8 80069EB8 AFBE0048 */ sw $fp, 0x48($sp)
/* 452BC 80069EBC AFB5003C */ sw $s5, 0x3c($sp)
/* 452C0 80069EC0 AFB30034 */ sw $s3, 0x34($sp)
/* 452C4 80069EC4 AFB1002C */ sw $s1, 0x2c($sp)
/* 452C8 80069EC8 14400011 */ bnez $v0, .L80069F10
/* 452CC 80069ECC AFB00028 */ sw $s0, 0x28($sp)
/* 452D0 80069ED0 3C038009 */ lui $v1, 0x8009
/* 452D4 80069ED4 906358D4 */ lbu $v1, 0x58d4($v1)
/* 452D8 80069ED8 32E200FF */ andi $v0, $s7, 0xff
/* 452DC 80069EDC 1443000C */ bne $v0, $v1, .L80069F10
/* 452E0 80069EE0 00000000 */ nop
/* 452E4 80069EE4 8E430008 */ lw $v1, 8($s2)
/* 452E8 80069EE8 3C028009 */ lui $v0, 0x8009
/* 452EC 80069EEC 8C4258D0 */ lw $v0, 0x58d0($v0)
/* 452F0 80069EF0 14620007 */ bne $v1, $v0, .L80069F10
/* 452F4 80069EF4 00000000 */ nop
/* 452F8 80069EF8 3C04800E */ lui $a0, 0x800e
/* 452FC 80069EFC 24849680 */ addiu $a0, $a0, -0x6980
/* 45300 80069F00 0C019194 */ jal bcopy
/* 45304 80069F04 24060100 */ addiu $a2, $zero, 0x100
/* 45308 80069F08 0801A865 */ j .L8006A194
/* 4530C 80069F0C 00001021 */ addu $v0, $zero, $zero
.L80069F10:
/* 45310 80069F10 92420065 */ lbu $v0, 0x65($s2)
/* 45314 80069F14 10400006 */ beqz $v0, .L80069F30
/* 45318 80069F18 02402021 */ addu $a0, $s2, $zero
/* 4531C 80069F1C 0C01A5B4 */ jal osPfsSelectBank
/* 45320 80069F20 00002821 */ addu $a1, $zero, $zero
/* 45324 80069F24 00401821 */ addu $v1, $v0, $zero
/* 45328 80069F28 1460009A */ bnez $v1, .L8006A194
/* 4532C 80069F2C 00000000 */ nop
.L80069F30:
/* 45330 80069F30 32E200FF */ andi $v0, $s7, 0xff
/* 45334 80069F34 14400002 */ bnez $v0, .L80069F40
/* 45338 80069F38 24150001 */ addiu $s5, $zero, 1
/* 4533C 80069F3C 8E550060 */ lw $s5, 0x60($s2)
.L80069F40:
/* 45340 80069F40 32C300FF */ andi $v1, $s6, 0xff
/* 45344 80069F44 24020001 */ addiu $v0, $zero, 1
/* 45348 80069F48 14620011 */ bne $v1, $v0, .L80069F90
/* 4534C 80069F4C 00008021 */ addu $s0, $zero, $zero
/* 45350 80069F50 00151040 */ sll $v0, $s5, 1
/* 45354 80069F54 00542821 */ addu $a1, $v0, $s4
/* 45358 80069F58 00002021 */ addu $a0, $zero, $zero
/* 4535C 80069F5C 24020080 */ addiu $v0, $zero, 0x80
/* 45360 80069F60 00551023 */ subu $v0, $v0, $s5
/* 45364 80069F64 00023040 */ sll $a2, $v0, 1
/* 45368 80069F68 18C00007 */ blez $a2, .L80069F88
/* 4536C 80069F6C 00001821 */ addu $v1, $zero, $zero
.L80069F70:
/* 45370 80069F70 90A20000 */ lbu $v0, ($a1)
/* 45374 80069F74 24840001 */ addiu $a0, $a0, 1
/* 45378 80069F78 00621821 */ addu $v1, $v1, $v0
/* 4537C 80069F7C 0086102A */ slt $v0, $a0, $a2
/* 45380 80069F80 1440FFFB */ bnez $v0, .L80069F70
/* 45384 80069F84 24A50001 */ addiu $a1, $a1, 1
.L80069F88:
/* 45388 80069F88 A2830001 */ sb $v1, 1($s4)
/* 4538C 80069F8C 00008021 */ addu $s0, $zero, $zero
.L80069F90:
/* 45390 80069F90 32DE00FF */ andi $fp, $s6, 0xff
/* 45394 80069F94 32E200FF */ andi $v0, $s7, 0xff
/* 45398 80069F98 000298C0 */ sll $s3, $v0, 3
/* 4539C 80069F9C 00101140 */ sll $v0, $s0, 5
.L80069FA0:
/* 453A0 80069FA0 24080001 */ addiu $t0, $zero, 1
/* 453A4 80069FA4 17C80015 */ bne $fp, $t0, .L80069FFC
/* 453A8 80069FA8 02828821 */ addu $s1, $s4, $v0
/* 453AC 80069FAC 8E460054 */ lw $a2, 0x54($s2)
/* 453B0 80069FB0 AFA00010 */ sw $zero, 0x10($sp)
/* 453B4 80069FB4 8E440004 */ lw $a0, 4($s2)
/* 453B8 80069FB8 8E450008 */ lw $a1, 8($s2)
/* 453BC 80069FBC 02203821 */ addu $a3, $s1, $zero
/* 453C0 80069FC0 00D33021 */ addu $a2, $a2, $s3
/* 453C4 80069FC4 00D03021 */ addu $a2, $a2, $s0
/* 453C8 80069FC8 0C01A8F0 */ jal osContRamWrite
/* 453CC 80069FCC 30C6FFFF */ andi $a2, $a2, 0xffff
/* 453D0 80069FD0 8E460058 */ lw $a2, 0x58($s2)
/* 453D4 80069FD4 AFA00010 */ sw $zero, 0x10($sp)
/* 453D8 80069FD8 8E440004 */ lw $a0, 4($s2)
/* 453DC 80069FDC 8E450008 */ lw $a1, 8($s2)
/* 453E0 80069FE0 02203821 */ addu $a3, $s1, $zero
/* 453E4 80069FE4 00D33021 */ addu $a2, $a2, $s3
/* 453E8 80069FE8 00D03021 */ addu $a2, $a2, $s0
/* 453EC 80069FEC 0C01A8F0 */ jal osContRamWrite
/* 453F0 80069FF0 30C6FFFF */ andi $a2, $a2, 0xffff
/* 453F4 80069FF4 0801A808 */ j .L8006A020
/* 453F8 80069FF8 00401821 */ addu $v1, $v0, $zero
.L80069FFC:
/* 453FC 80069FFC 8E440004 */ lw $a0, 4($s2)
/* 45400 8006A000 8E460054 */ lw $a2, 0x54($s2)
/* 45404 8006A004 8E450008 */ lw $a1, 8($s2)
/* 45408 8006A008 02203821 */ addu $a3, $s1, $zero
/* 4540C 8006A00C 00D33021 */ addu $a2, $a2, $s3
/* 45410 8006A010 00D03021 */ addu $a2, $a2, $s0
/* 45414 8006A014 0C01A874 */ jal osContRamRead
/* 45418 8006A018 30C6FFFF */ andi $a2, $a2, 0xffff
/* 4541C 8006A01C 00401821 */ addu $v1, $v0, $zero
.L8006A020:
/* 45420 8006A020 1460003D */ bnez $v1, .L8006A118
/* 45424 8006A024 26100001 */ addiu $s0, $s0, 1
/* 45428 8006A028 2A020008 */ slti $v0, $s0, 8
/* 4542C 8006A02C 1440FFDC */ bnez $v0, .L80069FA0
/* 45430 8006A030 00101140 */ sll $v0, $s0, 5
/* 45434 8006A034 32C200FF */ andi $v0, $s6, 0xff
/* 45438 8006A038 5440004C */ bnel $v0, $zero, .L8006A16C
/* 4543C 8006A03C 02802021 */ addu $a0, $s4, $zero
/* 45440 8006A040 00003821 */ addu $a3, $zero, $zero
/* 45444 8006A044 00151040 */ sll $v0, $s5, 1
/* 45448 8006A048 00542821 */ addu $a1, $v0, $s4
/* 4544C 8006A04C 24020080 */ addiu $v0, $zero, 0x80
/* 45450 8006A050 00551023 */ subu $v0, $v0, $s5
/* 45454 8006A054 00023040 */ sll $a2, $v0, 1
/* 45458 8006A058 0066102A */ slt $v0, $v1, $a2
/* 4545C 8006A05C 10400007 */ beqz $v0, .L8006A07C
/* 45460 8006A060 00002021 */ addu $a0, $zero, $zero
.L8006A064:
/* 45464 8006A064 90A20000 */ lbu $v0, ($a1)
/* 45468 8006A068 24840001 */ addiu $a0, $a0, 1
/* 4546C 8006A06C 00E23821 */ addu $a3, $a3, $v0
/* 45470 8006A070 0086102A */ slt $v0, $a0, $a2
/* 45474 8006A074 1440FFFB */ bnez $v0, .L8006A064
/* 45478 8006A078 24A50001 */ addiu $a1, $a1, 1
.L8006A07C:
/* 4547C 8006A07C 92830001 */ lbu $v1, 1($s4)
/* 45480 8006A080 30E200FF */ andi $v0, $a3, 0xff
/* 45484 8006A084 10430038 */ beq $v0, $v1, .L8006A168
/* 45488 8006A088 32E200FF */ andi $v0, $s7, 0xff
/* 4548C 8006A08C 00008021 */ addu $s0, $zero, $zero
/* 45490 8006A090 000298C0 */ sll $s3, $v0, 3
/* 45494 8006A094 02808821 */ addu $s1, $s4, $zero
.L8006A098:
/* 45498 8006A098 8E440004 */ lw $a0, 4($s2)
/* 4549C 8006A09C 8E450008 */ lw $a1, 8($s2)
/* 454A0 8006A0A0 8E460058 */ lw $a2, 0x58($s2)
/* 454A4 8006A0A4 02203821 */ addu $a3, $s1, $zero
/* 454A8 8006A0A8 26310020 */ addiu $s1, $s1, 0x20
/* 454AC 8006A0AC 00D33021 */ addu $a2, $a2, $s3
/* 454B0 8006A0B0 00D03021 */ addu $a2, $a2, $s0
/* 454B4 8006A0B4 0C01A874 */ jal osContRamRead
/* 454B8 8006A0B8 30C6FFFF */ andi $a2, $a2, 0xffff
/* 454BC 8006A0BC 26100001 */ addiu $s0, $s0, 1
/* 454C0 8006A0C0 2A020008 */ slti $v0, $s0, 8
/* 454C4 8006A0C4 1440FFF4 */ bnez $v0, .L8006A098
/* 454C8 8006A0C8 24030080 */ addiu $v1, $zero, 0x80
/* 454CC 8006A0CC 00151040 */ sll $v0, $s5, 1
/* 454D0 8006A0D0 00543021 */ addu $a2, $v0, $s4
/* 454D4 8006A0D4 00002021 */ addu $a0, $zero, $zero
/* 454D8 8006A0D8 00751823 */ subu $v1, $v1, $s5
/* 454DC 8006A0DC 00031840 */ sll $v1, $v1, 1
/* 454E0 8006A0E0 18600007 */ blez $v1, .L8006A100
/* 454E4 8006A0E4 00002821 */ addu $a1, $zero, $zero
.L8006A0E8:
/* 454E8 8006A0E8 90C20000 */ lbu $v0, ($a2)
/* 454EC 8006A0EC 24840001 */ addiu $a0, $a0, 1
/* 454F0 8006A0F0 00A22821 */ addu $a1, $a1, $v0
/* 454F4 8006A0F4 0083102A */ slt $v0, $a0, $v1
/* 454F8 8006A0F8 1440FFFB */ bnez $v0, .L8006A0E8
/* 454FC 8006A0FC 24C60001 */ addiu $a2, $a2, 1
.L8006A100:
/* 45500 8006A100 92830001 */ lbu $v1, 1($s4)
/* 45504 8006A104 30A200FF */ andi $v0, $a1, 0xff
/* 45508 8006A108 10430005 */ beq $v0, $v1, .L8006A120
/* 4550C 8006A10C 24020003 */ addiu $v0, $zero, 3
/* 45510 8006A110 0801A865 */ j .L8006A194
/* 45514 8006A114 00000000 */ nop
.L8006A118:
/* 45518 8006A118 0801A865 */ j .L8006A194
/* 4551C 8006A11C 00601021 */ addu $v0, $v1, $zero
.L8006A120:
/* 45520 8006A120 00008021 */ addu $s0, $zero, $zero
/* 45524 8006A124 32E200FF */ andi $v0, $s7, 0xff
/* 45528 8006A128 000298C0 */ sll $s3, $v0, 3
/* 4552C 8006A12C 02808821 */ addu $s1, $s4, $zero
.L8006A130:
/* 45530 8006A130 8E460054 */ lw $a2, 0x54($s2)
/* 45534 8006A134 AFA00010 */ sw $zero, 0x10($sp)
/* 45538 8006A138 8E440004 */ lw $a0, 4($s2)
/* 4553C 8006A13C 8E450008 */ lw $a1, 8($s2)
/* 45540 8006A140 02203821 */ addu $a3, $s1, $zero
/* 45544 8006A144 26310020 */ addiu $s1, $s1, 0x20
/* 45548 8006A148 00D33021 */ addu $a2, $a2, $s3
/* 4554C 8006A14C 00D03021 */ addu $a2, $a2, $s0
/* 45550 8006A150 0C01A8F0 */ jal osContRamWrite
/* 45554 8006A154 30C6FFFF */ andi $a2, $a2, 0xffff
/* 45558 8006A158 26100001 */ addiu $s0, $s0, 1
/* 4555C 8006A15C 2A020008 */ slti $v0, $s0, 8
/* 45560 8006A160 1440FFF3 */ bnez $v0, .L8006A130
/* 45564 8006A164 00000000 */ nop
.L8006A168:
/* 45568 8006A168 02802021 */ addu $a0, $s4, $zero
.L8006A16C:
/* 4556C 8006A16C 3C05800E */ lui $a1, 0x800e
/* 45570 8006A170 24A59680 */ addiu $a1, $a1, -0x6980
/* 45574 8006A174 3C018009 */ lui $at, 0x8009
/* 45578 8006A178 A03758D4 */ sb $s7, 0x58d4($at)
/* 4557C 8006A17C 0C019194 */ jal bcopy
/* 45580 8006A180 24060100 */ addiu $a2, $zero, 0x100
/* 45584 8006A184 8E430008 */ lw $v1, 8($s2)
/* 45588 8006A188 00001021 */ addu $v0, $zero, $zero
/* 4558C 8006A18C 3C018009 */ lui $at, 0x8009
/* 45590 8006A190 AC2358D0 */ sw $v1, 0x58d0($at)
.L8006A194:
/* 45594 8006A194 8FBF004C */ lw $ra, 0x4c($sp)
/* 45598 8006A198 8FBE0048 */ lw $fp, 0x48($sp)
/* 4559C 8006A19C 8FB70044 */ lw $s7, 0x44($sp)
/* 455A0 8006A1A0 8FB60040 */ lw $s6, 0x40($sp)
/* 455A4 8006A1A4 8FB5003C */ lw $s5, 0x3c($sp)
/* 455A8 8006A1A8 8FB40038 */ lw $s4, 0x38($sp)
/* 455AC 8006A1AC 8FB30034 */ lw $s3, 0x34($sp)
/* 455B0 8006A1B0 8FB20030 */ lw $s2, 0x30($sp)
/* 455B4 8006A1B4 8FB1002C */ lw $s1, 0x2c($sp)
/* 455B8 8006A1B8 8FB00028 */ lw $s0, 0x28($sp)
/* 455BC 8006A1BC 03E00008 */ jr $ra
/* 455C0 8006A1C0 27BD0050 */ addiu $sp, $sp, 0x50
/* 455C4 8006A1C4 00000000 */ nop
/* 455C8 8006A1C8 00000000 */ nop
/* 455CC 8006A1CC 00000000 */ nop