C52 Free

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

00044600: 3c028001 lui r2,0x8001
00044604: 8c420010 lw r2,0x0010(r2)			#some LBA pointer, pointer for file to live in ram?
00044608: 00000000 nop
0004460c: 00822023 subu r4,r4,r2			#input - LBA pointer
00044610: 000422c2 srl r4,r4,0x0b			#reduces pointer to 6 digits, capped at 0x001fffff
00044614: 3c018005 lui r1,0x8005
00044618: 00240821 addu r1,r1,r4			#0x80050000 + pointer >> 0xb
0004461c: 9025e9d4 lbu r5,-0x162c(r1)			#related to LBA?
00044620: 3c018005 lui r1,0x8005
00044624: 00240821 addu r1,r1,r4
00044628: 9022e9d3 lbu r2,-0x162d(r1)			#
0004462c: 2c830001 sltiu r3,r4,0x0001			#if pointer >> 0xb is 0, set to 1, otherwise 0?
00044630: 00a21026 xor r2,r5,r2			#0xe9d4 XOR 0xe9d3
00044634: 0002102b sltu r2,r0,r2			#if discrepancy exists, 1?
00044638: 00621825 or r3,r3,r2
0004463c: 1060000a beq r3,r0,0x00044668		#branch if any errors occur
00044640: 00001021 addu r2,r0,r0			#r2 = fail
00044644: 3c028005 lui r2,0x8005
00044648: 2442e9d4 addiu r2,r2,0xe9d4			#
0004464c: 00821821 addu r3,r4,r2			#
00044650: a0600000 sb r0,0x0000(r3)			#delete byte
00044654: 24630001 addiu r3,r3,0x0001
00044658: 90620000 lbu r2,0x0000(r3)			#load next byte
0004465c: 00000000 nop
00044660: 1045fffb beq r2,r5,0x00044650		#loop if equals 0xe9d4?
00044664: 34020001 ori r2,r0,0x0001			#return 1 if got this far. I am concerned with how far the above could reach into ram deleting bytes if anything was wrong...
00044668: 03e00008 jr r31
0004466c: 00000000 nop