mirror of https://github.com/zeldaret/oot.git
95 lines
4.5 KiB
ArmAsm
95 lines
4.5 KiB
ArmAsm
glabel __osMallocR
|
|
/* B75624 800FE484 27BDFFB8 */ addiu $sp, $sp, -0x48
|
|
/* B75628 800FE488 AFB1001C */ sw $s1, 0x1c($sp)
|
|
/* B7562C 800FE48C AFBF0024 */ sw $ra, 0x24($sp)
|
|
/* B75630 800FE490 AFB20020 */ sw $s2, 0x20($sp)
|
|
/* B75634 800FE494 24B1000F */ addiu $s1, $a1, 0xf
|
|
/* B75638 800FE498 2401FFF0 */ li $at, -16
|
|
/* B7563C 800FE49C 00809025 */ move $s2, $a0
|
|
/* B75640 800FE4A0 AFB00018 */ sw $s0, 0x18($sp)
|
|
/* B75644 800FE4A4 AFA00034 */ sw $zero, 0x34($sp)
|
|
/* B75648 800FE4A8 0C03F70F */ jal ArenaImpl_Lock
|
|
/* B7564C 800FE4AC 02218824 */ and $s1, $s1, $at
|
|
/* B75650 800FE4B0 0C03F74F */ jal ArenaImpl_GetLastBlock
|
|
/* B75654 800FE4B4 02402025 */ move $a0, $s2
|
|
/* B75658 800FE4B8 10400041 */ beqz $v0, .L800FE5C0
|
|
/* B7565C 800FE4BC 00408025 */ move $s0, $v0
|
|
.L800FE4C0:
|
|
/* B75660 800FE4C0 844E0002 */ lh $t6, 2($v0)
|
|
/* B75664 800FE4C4 11C0003A */ beqz $t6, .L800FE5B0
|
|
/* B75668 800FE4C8 00000000 */ nop
|
|
/* B7566C 800FE4CC 8C4F0004 */ lw $t7, 4($v0)
|
|
/* B75670 800FE4D0 01F1082B */ sltu $at, $t7, $s1
|
|
/* B75674 800FE4D4 14200036 */ bnez $at, .L800FE5B0
|
|
/* B75678 800FE4D8 00000000 */ nop
|
|
/* B7567C 800FE4DC 92580022 */ lbu $t8, 0x22($s2)
|
|
/* B75680 800FE4E0 02402025 */ move $a0, $s2
|
|
/* B75684 800FE4E4 33190004 */ andi $t9, $t8, 4
|
|
/* B75688 800FE4E8 53200004 */ beql $t9, $zero, .L800FE4FC
|
|
/* B7568C 800FE4EC 8E020004 */ lw $v0, 4($s0)
|
|
/* B75690 800FE4F0 0C03F7D5 */ jal __osMalloc_FreeBlockTest
|
|
/* B75694 800FE4F4 02002825 */ move $a1, $s0
|
|
/* B75698 800FE4F8 8E020004 */ lw $v0, 4($s0)
|
|
.L800FE4FC:
|
|
/* B7569C 800FE4FC 2623000F */ addiu $v1, $s1, 0xf
|
|
/* B756A0 800FE500 2401FFF0 */ li $at, -16
|
|
/* B756A4 800FE504 00611824 */ and $v1, $v1, $at
|
|
/* B756A8 800FE508 24630030 */ addiu $v1, $v1, 0x30
|
|
/* B756AC 800FE50C 0062082B */ sltu $at, $v1, $v0
|
|
/* B756B0 800FE510 10200016 */ beqz $at, .L800FE56C
|
|
/* B756B4 800FE514 02024021 */ addu $t0, $s0, $v0
|
|
/* B756B8 800FE518 01112823 */ subu $a1, $t0, $s1
|
|
/* B756BC 800FE51C AFA50040 */ sw $a1, 0x40($sp)
|
|
/* B756C0 800FE520 02002025 */ move $a0, $s0
|
|
/* B756C4 800FE524 0C03F723 */ jal ArenaImpl_GetNextBlock
|
|
/* B756C8 800FE528 AFA3002C */ sw $v1, 0x2c($sp)
|
|
/* B756CC 800FE52C 8FA40040 */ lw $a0, 0x40($sp)
|
|
/* B756D0 800FE530 8FA3002C */ lw $v1, 0x2c($sp)
|
|
/* B756D4 800FE534 24097373 */ li $t1, 29555
|
|
/* B756D8 800FE538 AC820008 */ sw $v0, 8($a0)
|
|
/* B756DC 800FE53C AC90000C */ sw $s0, 0xc($a0)
|
|
/* B756E0 800FE540 AC910004 */ sw $s1, 4($a0)
|
|
/* B756E4 800FE544 A4890000 */ sh $t1, ($a0)
|
|
/* B756E8 800FE548 8E0A0004 */ lw $t2, 4($s0)
|
|
/* B756EC 800FE54C AE040008 */ sw $a0, 8($s0)
|
|
/* B756F0 800FE550 01435823 */ subu $t3, $t2, $v1
|
|
/* B756F4 800FE554 0C03F723 */ jal ArenaImpl_GetNextBlock
|
|
/* B756F8 800FE558 AE0B0004 */ sw $t3, 4($s0)
|
|
/* B756FC 800FE55C 10400002 */ beqz $v0, .L800FE568
|
|
/* B75700 800FE560 8FA50040 */ lw $a1, 0x40($sp)
|
|
/* B75704 800FE564 AC45000C */ sw $a1, 0xc($v0)
|
|
.L800FE568:
|
|
/* B75708 800FE568 00A08025 */ move $s0, $a1
|
|
.L800FE56C:
|
|
/* B7570C 800FE56C A6000002 */ sh $zero, 2($s0)
|
|
/* B75710 800FE570 02002025 */ move $a0, $s0
|
|
/* B75714 800FE574 00002825 */ move $a1, $zero
|
|
/* B75718 800FE578 00003025 */ move $a2, $zero
|
|
/* B7571C 800FE57C 0C03F6F0 */ jal ArenaImpl_SetDebugInfo
|
|
/* B75720 800FE580 02403825 */ move $a3, $s2
|
|
/* B75724 800FE584 26040030 */ addiu $a0, $s0, 0x30
|
|
/* B75728 800FE588 AFA40034 */ sw $a0, 0x34($sp)
|
|
/* B7572C 800FE58C 924C0022 */ lbu $t4, 0x22($s2)
|
|
/* B75730 800FE590 240500CD */ li $a1, 205
|
|
/* B75734 800FE594 318D0001 */ andi $t5, $t4, 1
|
|
/* B75738 800FE598 11A00009 */ beqz $t5, .L800FE5C0
|
|
/* B7573C 800FE59C 00000000 */ nop
|
|
/* B75740 800FE5A0 0C041A18 */ jal func_80106860
|
|
/* B75744 800FE5A4 02203025 */ move $a2, $s1
|
|
/* B75748 800FE5A8 10000005 */ b .L800FE5C0
|
|
/* B7574C 800FE5AC 00000000 */ nop
|
|
.L800FE5B0:
|
|
/* B75750 800FE5B0 0C03F739 */ jal ArenaImpl_GetPrevBlock
|
|
/* B75754 800FE5B4 02002025 */ move $a0, $s0
|
|
/* B75758 800FE5B8 1440FFC1 */ bnez $v0, .L800FE4C0
|
|
/* B7575C 800FE5BC 00408025 */ move $s0, $v0
|
|
.L800FE5C0:
|
|
/* B75760 800FE5C0 0C03F719 */ jal ArenaImpl_Unlock
|
|
/* B75764 800FE5C4 02402025 */ move $a0, $s2
|
|
/* B75768 800FE5C8 8FBF0024 */ lw $ra, 0x24($sp)
|
|
/* B7576C 800FE5CC 8FA20034 */ lw $v0, 0x34($sp)
|
|
/* B75770 800FE5D0 8FB00018 */ lw $s0, 0x18($sp)
|
|
/* B75774 800FE5D4 8FB1001C */ lw $s1, 0x1c($sp)
|
|
/* B75778 800FE5D8 8FB20020 */ lw $s2, 0x20($sp)
|
|
/* B7577C 800FE5DC 03E00008 */ jr $ra
|
|
/* B75780 800FE5E0 27BD0048 */ addiu $sp, $sp, 0x48 |