#include <idc.idc>

static main(void)
{
auto	from,
	to,
	b2,
	b3,
	b4,
	b5,
	text,
	i;

for (i=0x800000; i<0x8FFFFF; i=i+1)
{
 b2 = Byte(i+1);
 b3 = Byte(i+2);
 b4 = Byte(i+3);
 b5 = Byte(i+4);

 if (b2 == 0x00)
 if (b3 == 0x00)
 if (b4 == 0x0F)
 if (b5 == 0xE1)
 {
 	text="boot_stack_init";
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function boot_stack_init found\n");
 }

 if (b2 == 0xD3)
 if (b3 == 0xF0)
 if (b4 == 0x21)
 if (b5 == 0xE3)
 {
 	text="dload_entry_32";
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function dload_entry_32 found\n");
 }


 if (b2 == 0x08)
 if (b3 == 0xC8)
 if (b4 == 0x10)
 if (b5 == 0xC9)
 if (Byte(i-13)==0x10)
 if (Byte(i-12)==0xB4)

 {
 	 text="memcmp";
 	 SetReg(i-13, "T", 1);
	 MakeName(i-13,text); 
	 MakeCode(i-13);
	 MakeFunction(i-13,BADADDR);
	 Message ("Function memcmp found\n");
 }

 if (b2 == 0x78)
 if (b3 == 0x47)
 if (b4 == 0x00)
 if (b5 == 0x00)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0x0C)
 if (b3 == 0x50)
 if (b4 == 0xA0)
 if (b5 == 0x28)
 if (Byte(i-19)==0x00)
 if (Byte(i-18)==0x40)

 {
 	 text="memset_w";
 	 SetReg(i-19, "T", 1);
	 MakeName(i-19,text); 
	 MakeCode(i-19);
	 MakeFunction(i-19,BADADDR);
	 Message ("Function memset_w found\n");
 }

 if (b2 == 0x01)
 if (b3 == 0xC0)
 if (b4 == 0xC0)
 if (b5 == 0x94)
 if (Byte(i-43)==0x03)
 if (Byte(i-42)==0x00)

 {
 	 text="rt_memcmp_";
 	 SetReg(i-43, "T", 1);
	 MakeName(i-43,text); 
	 MakeCode(i-43);
	 MakeFunction(i-43,BADADDR);
	 Message ("Function rt_memcmp found\n");
 }

 if (b2 == 0x10)
 if (b3 == 0x40)
 if (b4 == 0x2D)
 if (b5 == 0xE9)
 if (Byte(i+5)==0x20)
 if (Byte(i+6)==0x20)

 {
 	 text="rt_memcpy_w";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function rt_memcpy_w found\n");
 }

 if (b2 == 0x10)
 if (b3 == 0x4C)
 if (b4 == 0xE6)
 if (b5 == 0x01)
 {
 	 text="strncmp";
 	 SetReg(i-9, "T", 1);
	 MakeName(i-9,text); 
	 MakeCode(i-9);
	 MakeFunction(i-9,BADADDR);
	 Message ("Function strncmp found\n");
 }


 if (b2 == 0xB0)
 if (b3 == 0xB5)
 if (b4 == 0x08)
 if (b5 == 0x4D)
 if (Byte(i+5)==0x06)
 if (Byte(i+6)==0x4C)

 {
 	 text="crc16";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function crc16 found\n");
 }

 if (b2 == 0x30)
 if (b3 == 0xB5)
 if (b4 == 0x0C)
 if (b5 == 0x4D)
 if (Byte(i+5)==0x0A)
 if (Byte(i+6)==0x4A)

 {
 	 text="crc16_l_calc";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function crc16_l_calc found\n");
 }

 if (b2 == 0x00)
 if (b3 == 0x00)
 if (b4 == 0x89)
 if (b5 == 0x11)
 if (Byte(i+5)==0x12)
 if (Byte(i+6)==0x23)

 {
 	 text="crc16_l_table";
 	 //SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 //MakeCode(i+1);
	 //MakeFunction(i+1,BADADDR);
	 Message ("Table crc16_t_table found\n");
 }

 if (b2 == 0x30)
 if (b3 == 0xB5)
 if (b4 == 0xD2)
 if (b5 == 0x43)
 if (Byte(i+5)==0x12)
 if (Byte(i+6)==0x04)

 {
 	 text="crc16_step";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function crc16_step found\n");
 }

 if (b2 == 0xF8)
 if (b3 == 0xB5)
 if (b4 == 0x05)
 if (b5 == 0x24)
 if (Byte(i+5)==0x1A)
 if (Byte(i+6)==0x4B)

 {
 	 text="copy_mibib_forward";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function copy_mibib_forward found\n");
 }

 if (b2 == 0x80)
 if (b3 == 0xB5)
 if (b4 == 0x04)
 if (b5 == 0xF0)
 if (Byte(i+5)==0xC3)
 if (Byte(i+6)==0xF8)

 {
 	 text="writepage";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function writepage found\n");
 }

 if (b2 == 0xB0)
 if (b3 == 0xB5)
 if (b4 == 0x00)
 if (b5 == 0x25)
 if (Byte(i+5)==0x21)
 if (Byte(i+6)==0x69)

 {
 	 text="WindowFUnc";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function WindowFunc found\n");
 }

 if (b2 == 0x70)
 if (b3 == 0xB5)
 if (b4 == 0x0D)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x04)
 if (Byte(i+6)==0x1C)
 if (Byte(i+32)!=0x49)

 {
 	 text="Writeunsuccessful";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function WriteUnsuccessful found\n");
 }

 if (b2 == 0x80)
 if (b3 == 0xB5)
 if (b4 == 0x03)
 if (b5 == 0x49)
 if (Byte(i+5)==0x05)
 if (Byte(i+6)==0x20)
 if (Byte(i+7)==0x00)
 if (Byte(i+8)==0xF0)

 {
 	 text="Write";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function Write found\n");
 }

 if (b2 == 0x80)
 if (b3 == 0xB5)
 if (b4 == 0x03)
 if (b5 == 0x49)
 if (Byte(i+5)==0x05)
 if (Byte(i+6)==0x20)
 if (Byte(i+7)==0x01)
 if (Byte(i+8)==0xF0)

 {
 	 text="InvalidCommand";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function InvalidCommand found\n");
 }

 if (b2 == 0xFE)
 if (b3 == 0xB5)
 if (b4 == 0x05)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x00)
 if (Byte(i+6)==0x20)

 {
 	 text="Sha1_Final";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function Sha1Final found\n");
 }

 if (b2 == 0x10)
 if (b3 == 0xB5)
 if (b4 == 0x04)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x9C)
 if (Byte(i+6)==0x21)

 {
 	 text="sha1_init";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function sha1_init found\n");
 }

 if (b2 == 0xF0)
 if (b3 == 0xB5)
 if (b4 == 0x64)
 if (b5 == 0xC8)
 if (Byte(i+5)==0x0C)
 if (Byte(i+6)==0x38)

 {
 	 text="sha1_block";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function sha1_block found\n");
 }

 if (b2 == 0xF7)
 if (b3 == 0xB5)
 if (b4 == 0x17)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x02)
 if (Byte(i+6)==0x68)

 {
 	 text="SHA1_Update";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function SHA1_Update found\n");
 }

 if (b2 == 0xF8)
 if (b3 == 0xB5)
 if (b4 == 0x07)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x05)
 if (Byte(i+6)==0x1C)

 {
 	 text="prepare_this_block";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function prepare_this_block found\n");
 }

 if (b2 == 0xF8)
 if (b3 == 0xB5)
 if (b4 == 0x05)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x14)
 if (Byte(i+6)==0x48)

 {
 	 text="nand_probe";
 	 SetReg(i+1, "T", 1);
	 if (!MakeName(i+1,text)) MakeName (i+1,"nand_probe2"); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function samsung_probe found\n");
 }

 if (b2 == 0xF3)
 if (b3 == 0xB5)
 if (b4 == 0x81)
 if (b5 == 0xB0)
 if (Byte(i+5)==0x07)
 if (Byte(i+6)==0x1C)

 {
 	 text="write_current_page";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function write_current_page found\n");
 }

 if (b2 == 0x0B)
 if (b3 == 0x1C)
 if (b4 == 0x06)
 if (b5 == 0x49)
 if (Byte(i+5)==0x80)
 if (Byte(i+6)==0xB5)

 {
 	 text="write_magic_number_page";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function write_magic_number_page found\n");
 }

 if (b2 == 0x10)
 if (b3 == 0xB5)
 if (b4 == 0x04)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x01)
 if (Byte(i+6)==0x1C)
 if (Byte(i+7)==0x90)
 if (Byte(i+8)==0x31)

 {
 	 text="write_partial_page";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function write_partial_page found\n");
 }

 if (b2 == 0x0B)
 if (b3 == 0x1C)
 if (b4 == 0x06)
 if (b5 == 0x49)
 if (Byte(i+5)==0x80)
 if (Byte(i+6)==0xB5)

 {
 	 text="write_magic_number_page";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function write_magic_number_page found\n");
 }

 if (b2 == 0xF8)
 if (b3 == 0xB5)
 if (b4 == 0x21)
 if (b5 == 0x4F)
 if (Byte(i+5)==0x38)
 if (Byte(i+6)==0x68)

 {
 	 text="senddata";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function senddata found\n");
 }

 if (b2 == 0xF7)
 if (b3 == 0xB5)
 if (b4 == 0x04)
 if (b5 == 0x1C)
 if (Byte(i+5)==0x0D)
 if (Byte(i+6)==0x1C)
 if (Byte(i+7)==0x01)
 if (Byte(i+8)==0x69)


 {
 	 text="flash_nand_read_page";
 	 SetReg(i+1, "T", 1);
	 MakeName(i+1,text); 
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
	 Message ("Function flash_nand_read_page found\n");
 }


 if (b2 == 0xB0)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0xF8)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0x70)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0xF3)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0x80)
 if (b3 == 0x30)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0x10)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0x80)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (b2 == 0xF7)
 if (b3 == 0xB5)
 {
 	 SetReg(i+1, "T", 1);
	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }

 if (Byte(i) == 0xF4)
 if (b2 == 0x10)
 {
 	 MakeCode(i+1);
	 MakeFunction(i+1,BADADDR);
 }


  
}
}