oot/asm/non_matchings/code/__osMalloc/__osRealloc.s

247 lines
12 KiB
ArmAsm

.rdata
glabel D_8014ADEC
.asciz "__osRealloc(%08x, %d)\n"
.balign 4
glabel D_8014AE04
.asciz "\n" #Does nothing because the memory block size does not change
.balign 4
glabel D_8014AE38
.asciz "\n" #Merge because there is a free block after the current memory block
.balign 4
glabel D_8014AE74
.asciz "\n" #Allocate a new memory block and move the contents
.balign 4
glabel D_8014AEA4
.asciz "\n" #Increased free block behind current memory block
.balign 4
glabel D_8014AEDC
.asciz "\n" #Generated because there is no free block after the current memory block
.balign 4
glabel D_8014AF18
.asciz "\n" #There is no room to generate free blocks
.balign 4
.text
glabel __osRealloc
/* B75C10 800FEA70 27BDFF78 */ addiu $sp, $sp, -0x88
/* B75C14 800FEA74 AFB00018 */ sw $s0, 0x18($sp)
/* B75C18 800FEA78 AFA40088 */ sw $a0, 0x88($sp)
/* B75C1C 800FEA7C 24D0000F */ addiu $s0, $a2, 0xf
/* B75C20 800FEA80 2401FFF0 */ li $at, -16
/* B75C24 800FEA84 AFBF001C */ sw $ra, 0x1c($sp)
/* B75C28 800FEA88 02018024 */ and $s0, $s0, $at
/* B75C2C 800FEA8C 3C048015 */ lui $a0, %hi(D_8014ADEC) # $a0, 0x8015
/* B75C30 800FEA90 AFA5008C */ sw $a1, 0x8c($sp)
/* B75C34 800FEA94 2484ADEC */ addiu $a0, %lo(D_8014ADEC) # addiu $a0, $a0, -0x5214
/* B75C38 800FEA98 0C00084C */ jal osSyncPrintf
/* B75C3C 800FEA9C 02003025 */ move $a2, $s0
/* B75C40 800FEAA0 0C03F70F */ jal ArenaImpl_Lock
/* B75C44 800FEAA4 8FA40088 */ lw $a0, 0x88($sp)
/* B75C48 800FEAA8 8FAE008C */ lw $t6, 0x8c($sp)
/* B75C4C 800FEAAC 8FA40088 */ lw $a0, 0x88($sp)
/* B75C50 800FEAB0 15C00005 */ bnez $t6, .L800FEAC8
/* B75C54 800FEAB4 00000000 */ nop
/* B75C58 800FEAB8 0C03F8BF */ jal __osMalloc_NoLock
/* B75C5C 800FEABC 02002825 */ move $a1, $s0
/* B75C60 800FEAC0 100000AF */ b .L800FED80
/* B75C64 800FEAC4 AFA2008C */ sw $v0, 0x8c($sp)
.L800FEAC8:
/* B75C68 800FEAC8 16000006 */ bnez $s0, .L800FEAE4
/* B75C6C 800FEACC 8FA7008C */ lw $a3, 0x8c($sp)
/* B75C70 800FEAD0 8FA40088 */ lw $a0, 0x88($sp)
/* B75C74 800FEAD4 0C03F979 */ jal __osFree_NoLock
/* B75C78 800FEAD8 8FA5008C */ lw $a1, 0x8c($sp)
/* B75C7C 800FEADC 100000A8 */ b .L800FED80
/* B75C80 800FEAE0 AFA0008C */ sw $zero, 0x8c($sp)
.L800FEAE4:
/* B75C84 800FEAE4 8CE3FFD4 */ lw $v1, -0x2c($a3)
/* B75C88 800FEAE8 24E7FFD0 */ addiu $a3, $a3, -0x30
/* B75C8C 800FEAEC 3C048015 */ lui $a0, %hi(D_8014AE04) # $a0, 0x8015
/* B75C90 800FEAF0 16030005 */ bne $s0, $v1, .L800FEB08
/* B75C94 800FEAF4 0070082B */ sltu $at, $v1, $s0
/* B75C98 800FEAF8 0C00084C */ jal osSyncPrintf
/* B75C9C 800FEAFC 2484AE04 */ addiu $a0, %lo(D_8014AE04) # addiu $a0, $a0, -0x51fc
/* B75CA0 800FEB00 1000009F */ b .L800FED80
/* B75CA4 800FEB04 00000000 */ nop
.L800FEB08:
/* B75CA8 800FEB08 1020003C */ beqz $at, .L800FEBFC
/* B75CAC 800FEB0C 00E02025 */ move $a0, $a3
/* B75CB0 800FEB10 0C03F723 */ jal ArenaImpl_GetNextBlock
/* B75CB4 800FEB14 AFA70024 */ sw $a3, 0x24($sp)
/* B75CB8 800FEB18 8FA70024 */ lw $a3, 0x24($sp)
/* B75CBC 800FEB1C 3C048015 */ lui $a0, %hi(D_8014AE74) # $a0, 0x8015
/* B75CC0 800FEB20 2484AE74 */ addiu $a0, %lo(D_8014AE74) # addiu $a0, $a0, -0x518c
/* B75CC4 800FEB24 8CE30004 */ lw $v1, 4($a3)
/* B75CC8 800FEB28 00E37821 */ addu $t7, $a3, $v1
/* B75CCC 800FEB2C 25F80030 */ addiu $t8, $t7, 0x30
/* B75CD0 800FEB30 14580021 */ bne $v0, $t8, .L800FEBB8
/* B75CD4 800FEB34 02034023 */ subu $t0, $s0, $v1
/* B75CD8 800FEB38 84590002 */ lh $t9, 2($v0)
/* B75CDC 800FEB3C 1320001E */ beqz $t9, .L800FEBB8
/* B75CE0 800FEB40 00000000 */ nop
/* B75CE4 800FEB44 8C490004 */ lw $t1, 4($v0)
/* B75CE8 800FEB48 0128082B */ sltu $at, $t1, $t0
/* B75CEC 800FEB4C 1420001A */ bnez $at, .L800FEBB8
/* B75CF0 800FEB50 00000000 */ nop
/* B75CF4 800FEB54 3C048015 */ lui $a0, %hi(D_8014AE38) # $a0, 0x8015
/* B75CF8 800FEB58 2484AE38 */ addiu $a0, %lo(D_8014AE38) # addiu $a0, $a0, -0x51c8
/* B75CFC 800FEB5C AFA2007C */ sw $v0, 0x7c($sp)
/* B75D00 800FEB60 AFA70024 */ sw $a3, 0x24($sp)
/* B75D04 800FEB64 0C00084C */ jal osSyncPrintf
/* B75D08 800FEB68 AFA80068 */ sw $t0, 0x68($sp)
/* B75D0C 800FEB6C 8FA4007C */ lw $a0, 0x7c($sp)
/* B75D10 800FEB70 8FA80068 */ lw $t0, 0x68($sp)
/* B75D14 800FEB74 8C8A0004 */ lw $t2, 4($a0)
/* B75D18 800FEB78 01485823 */ subu $t3, $t2, $t0
/* B75D1C 800FEB7C 0C03F723 */ jal ArenaImpl_GetNextBlock
/* B75D20 800FEB80 AC8B0004 */ sw $t3, 4($a0)
/* B75D24 800FEB84 8FA5007C */ lw $a1, 0x7c($sp)
/* B75D28 800FEB88 8FA70024 */ lw $a3, 0x24($sp)
/* B75D2C 800FEB8C 10400003 */ beqz $v0, .L800FEB9C
/* B75D30 800FEB90 8FA80068 */ lw $t0, 0x68($sp)
/* B75D34 800FEB94 00A86021 */ addu $t4, $a1, $t0
/* B75D38 800FEB98 AC4C000C */ sw $t4, 0xc($v0)
.L800FEB9C:
/* B75D3C 800FEB9C 00A82021 */ addu $a0, $a1, $t0
/* B75D40 800FEBA0 ACE40008 */ sw $a0, 8($a3)
/* B75D44 800FEBA4 ACF00004 */ sw $s0, 4($a3)
/* B75D48 800FEBA8 0C041A2C */ jal func_801068B0
/* B75D4C 800FEBAC 24060030 */ li $a2, 48
/* B75D50 800FEBB0 10000073 */ b .L800FED80
/* B75D54 800FEBB4 00000000 */ nop
.L800FEBB8:
/* B75D58 800FEBB8 0C00084C */ jal osSyncPrintf
/* B75D5C 800FEBBC AFA70024 */ sw $a3, 0x24($sp)
/* B75D60 800FEBC0 8FA40088 */ lw $a0, 0x88($sp)
/* B75D64 800FEBC4 0C03F8BF */ jal __osMalloc_NoLock
/* B75D68 800FEBC8 02002825 */ move $a1, $s0
/* B75D6C 800FEBCC 8FA70024 */ lw $a3, 0x24($sp)
/* B75D70 800FEBD0 10400008 */ beqz $v0, .L800FEBF4
/* B75D74 800FEBD4 00408025 */ move $s0, $v0
/* B75D78 800FEBD8 8FA4008C */ lw $a0, 0x8c($sp)
/* B75D7C 800FEBDC 00402825 */ move $a1, $v0
/* B75D80 800FEBE0 0C001BC4 */ jal bcopy
/* B75D84 800FEBE4 8CE60004 */ lw $a2, 4($a3)
/* B75D88 800FEBE8 8FA40088 */ lw $a0, 0x88($sp)
/* B75D8C 800FEBEC 0C03F979 */ jal __osFree_NoLock
/* B75D90 800FEBF0 8FA5008C */ lw $a1, 0x8c($sp)
.L800FEBF4:
/* B75D94 800FEBF4 10000062 */ b .L800FED80
/* B75D98 800FEBF8 AFB0008C */ sw $s0, 0x8c($sp)
.L800FEBFC:
/* B75D9C 800FEBFC 0203082B */ sltu $at, $s0, $v1
/* B75DA0 800FEC00 1020005F */ beqz $at, .L800FED80
/* B75DA4 800FEC04 00E02025 */ move $a0, $a3
/* B75DA8 800FEC08 0C03F723 */ jal ArenaImpl_GetNextBlock
/* B75DAC 800FEC0C AFA70024 */ sw $a3, 0x24($sp)
/* B75DB0 800FEC10 10400035 */ beqz $v0, .L800FECE8
/* B75DB4 800FEC14 8FA70024 */ lw $a3, 0x24($sp)
/* B75DB8 800FEC18 844D0002 */ lh $t5, 2($v0)
/* B75DBC 800FEC1C 3C048015 */ lui $a0, %hi(D_8014AEA4) # $a0, 0x8015
/* B75DC0 800FEC20 2484AEA4 */ addiu $a0, %lo(D_8014AEA4) # addiu $a0, $a0, -0x515c
/* B75DC4 800FEC24 51A00031 */ beql $t5, $zero, .L800FECEC
/* B75DC8 800FEC28 8CF90004 */ lw $t9, 4($a3)
/* B75DCC 800FEC2C AFA2006C */ sw $v0, 0x6c($sp)
/* B75DD0 800FEC30 0C00084C */ jal osSyncPrintf
/* B75DD4 800FEC34 AFA70024 */ sw $a3, 0x24($sp)
/* B75DD8 800FEC38 8FB8006C */ lw $t8, 0x6c($sp)
/* B75DDC 800FEC3C 27A20030 */ addiu $v0, $sp, 0x30
/* B75DE0 800FEC40 8FA70024 */ lw $a3, 0x24($sp)
/* B75DE4 800FEC44 0040C825 */ move $t9, $v0
/* B75DE8 800FEC48 27090030 */ addiu $t1, $t8, 0x30
.L800FEC4C:
/* B75DEC 800FEC4C 8F0F0000 */ lw $t7, ($t8)
/* B75DF0 800FEC50 2718000C */ addiu $t8, $t8, 0xc
/* B75DF4 800FEC54 2739000C */ addiu $t9, $t9, 0xc
/* B75DF8 800FEC58 AF2FFFF4 */ sw $t7, -0xc($t9)
/* B75DFC 800FEC5C 8F0EFFF8 */ lw $t6, -8($t8)
/* B75E00 800FEC60 AF2EFFF8 */ sw $t6, -8($t9)
/* B75E04 800FEC64 8F0FFFFC */ lw $t7, -4($t8)
/* B75E08 800FEC68 1709FFF8 */ bne $t8, $t1, .L800FEC4C
/* B75E0C 800FEC6C AF2FFFFC */ sw $t7, -4($t9)
/* B75E10 800FEC70 260A000F */ addiu $t2, $s0, 0xf
/* B75E14 800FEC74 2401FFF0 */ li $at, -16
/* B75E18 800FEC78 01415824 */ and $t3, $t2, $at
/* B75E1C 800FEC7C 00EB2021 */ addu $a0, $a3, $t3
/* B75E20 800FEC80 24840030 */ addiu $a0, $a0, 0x30
/* B75E24 800FEC84 0080C025 */ move $t8, $a0
/* B75E28 800FEC88 00404825 */ move $t1, $v0
/* B75E2C 800FEC8C 24590030 */ addiu $t9, $v0, 0x30
.L800FEC90:
/* B75E30 800FEC90 8D2D0000 */ lw $t5, ($t1)
/* B75E34 800FEC94 2529000C */ addiu $t1, $t1, 0xc
/* B75E38 800FEC98 2718000C */ addiu $t8, $t8, 0xc
/* B75E3C 800FEC9C AF0DFFF4 */ sw $t5, -0xc($t8)
/* B75E40 800FECA0 8D2CFFF8 */ lw $t4, -8($t1)
/* B75E44 800FECA4 AF0CFFF8 */ sw $t4, -8($t8)
/* B75E48 800FECA8 8D2DFFFC */ lw $t5, -4($t1)
/* B75E4C 800FECAC 1539FFF8 */ bne $t1, $t9, .L800FEC90
/* B75E50 800FECB0 AF0DFFFC */ sw $t5, -4($t8)
/* B75E54 800FECB4 8C8E0004 */ lw $t6, 4($a0)
/* B75E58 800FECB8 8CEF0004 */ lw $t7, 4($a3)
/* B75E5C 800FECBC 01CF5021 */ addu $t2, $t6, $t7
/* B75E60 800FECC0 01505823 */ subu $t3, $t2, $s0
/* B75E64 800FECC4 AC8B0004 */ sw $t3, 4($a0)
/* B75E68 800FECC8 ACE40008 */ sw $a0, 8($a3)
/* B75E6C 800FECCC ACF00004 */ sw $s0, 4($a3)
/* B75E70 800FECD0 0C03F723 */ jal ArenaImpl_GetNextBlock
/* B75E74 800FECD4 AFA40020 */ sw $a0, 0x20($sp)
/* B75E78 800FECD8 10400029 */ beqz $v0, .L800FED80
/* B75E7C 800FECDC 8FA40020 */ lw $a0, 0x20($sp)
/* B75E80 800FECE0 10000027 */ b .L800FED80
/* B75E84 800FECE4 AC44000C */ sw $a0, 0xc($v0)
.L800FECE8:
/* B75E88 800FECE8 8CF90004 */ lw $t9, 4($a3)
.L800FECEC:
/* B75E8C 800FECEC 26090030 */ addiu $t1, $s0, 0x30
/* B75E90 800FECF0 3C048015 */ lui $a0, %hi(D_8014AF18)
/* B75E94 800FECF4 0139082B */ sltu $at, $t1, $t9
/* B75E98 800FECF8 1020001E */ beqz $at, .L800FED74
/* B75E9C 800FECFC 00000000 */ nop
/* B75EA0 800FED00 3C048015 */ lui $a0, %hi(D_8014AEDC) # $a0, 0x8015
/* B75EA4 800FED04 2484AEDC */ addiu $a0, %lo(D_8014AEDC) # addiu $a0, $a0, -0x5124
/* B75EA8 800FED08 0C00084C */ jal osSyncPrintf
/* B75EAC 800FED0C AFA70024 */ sw $a3, 0x24($sp)
/* B75EB0 800FED10 0C03F723 */ jal ArenaImpl_GetNextBlock
/* B75EB4 800FED14 8FA40024 */ lw $a0, 0x24($sp)
/* B75EB8 800FED18 8FA70024 */ lw $a3, 0x24($sp)
/* B75EBC 800FED1C 2603000F */ addiu $v1, $s0, 0xf
/* B75EC0 800FED20 2401FFF0 */ li $at, -16
/* B75EC4 800FED24 00611824 */ and $v1, $v1, $at
/* B75EC8 800FED28 24630030 */ addiu $v1, $v1, 0x30
/* B75ECC 800FED2C 00E32021 */ addu $a0, $a3, $v1
/* B75ED0 800FED30 AC820008 */ sw $v0, 8($a0)
/* B75ED4 800FED34 AC87000C */ sw $a3, 0xc($a0)
/* B75ED8 800FED38 8CF80004 */ lw $t8, 4($a3)
/* B75EDC 800FED3C 240D0001 */ li $t5, 1
/* B75EE0 800FED40 240E7373 */ li $t6, 29555
/* B75EE4 800FED44 03036023 */ subu $t4, $t8, $v1
/* B75EE8 800FED48 AC8C0004 */ sw $t4, 4($a0)
/* B75EEC 800FED4C A48D0002 */ sh $t5, 2($a0)
/* B75EF0 800FED50 A48E0000 */ sh $t6, ($a0)
/* B75EF4 800FED54 ACE40008 */ sw $a0, 8($a3)
/* B75EF8 800FED58 ACF00004 */ sw $s0, 4($a3)
/* B75EFC 800FED5C 0C03F723 */ jal ArenaImpl_GetNextBlock
/* B75F00 800FED60 AFA40020 */ sw $a0, 0x20($sp)
/* B75F04 800FED64 10400006 */ beqz $v0, .L800FED80
/* B75F08 800FED68 8FA40020 */ lw $a0, 0x20($sp)
/* B75F0C 800FED6C 10000004 */ b .L800FED80
/* B75F10 800FED70 AC44000C */ sw $a0, 0xc($v0)
.L800FED74:
/* B75F14 800FED74 0C00084C */ jal osSyncPrintf
/* B75F18 800FED78 2484AF18 */ addiu $a0, %lo(D_8014AF18)
/* B75F1C 800FED7C AFA0008C */ sw $zero, 0x8c($sp)
.L800FED80:
/* B75F20 800FED80 0C03F719 */ jal ArenaImpl_Unlock
/* B75F24 800FED84 8FA40088 */ lw $a0, 0x88($sp)
/* B75F28 800FED88 8FBF001C */ lw $ra, 0x1c($sp)
/* B75F2C 800FED8C 8FA2008C */ lw $v0, 0x8c($sp)
/* B75F30 800FED90 8FB00018 */ lw $s0, 0x18($sp)
/* B75F34 800FED94 03E00008 */ jr $ra
/* B75F38 800FED98 27BD0088 */ addiu $sp, $sp, 0x88