Crackme challange

Post your FreeBASIC source, examples, tips and tricks here. Please don’t post code without including an explanation.
Post Reply
mrminecrafttnt
Posts: 131
Joined: Feb 11, 2013 12:23

Crackme challange

Post by mrminecrafttnt »

Hi guys i had worked very hard on this Crackme, can anyone hack my code?
Good look! :D

Code: Select all

#include "windows.bi" 
screen 0
width 80,10
color 15
locate ,,0

#define allow_cls

#define exitenabled

#define buildmode


#ifdef enable_debugger
declare sub debug_vm
Width 120,80
#define boot_debugger
#endif


dim shared exit_debugmodeflag as ushort
#ifdef buildmode
dim shared as ushort ram(3944)
dim shared as ushort r1,r2
dim shared as ubyte sram(2399)
dim shared as uinteger prgctr,exitflag,nextstradr,callretadr,calladr,raster_size=16
#else
dim shared as ushort ram(10024)
dim shared as ubyte r1,r2
dim shared as uinteger prgctr,exitflag,nextstradr,callretadr,calladr,raster_size=16
dim shared as ubyte sram(10024)

#endif

dim shared as uinteger ram_checksum,sram_checksum



function generate_checksum_ram (arrey() as ushort) as integer
    dim as integer tmp
    for i as integer = lbound(arrey) to ubound(arrey)
        tmp+=i*arrey(i)
    next
    return tmp
end function

function generate_checksum_sram (arrey() as ubyte) as integer
    dim as integer tmp
    for i as integer = lbound(arrey) to ubound(arrey)
        tmp+=i*arrey(i)
    next
    return tmp
end function

function check_ram (arrey_ram() as ushort,arrey_sram() as ubyte) as integer
    if generate_checksum_ram(arrey_ram()) = ram_checksum and generate_checksum_sram(arrey_sram())= sram_checksum and ram_checksum > 0 then return 1 else return 0
end function

dim shared as string u_str_input,vm_str_input
function encode_string(s as string) as string
    static as ubyte z
    dim as string p = space(len(s))
    for i as integer = 0 to len(s)-1
        p[i] = s[i] xor 9876554432 + i 
    next
    return p
end function




sub compile_message_special (title as string,message as string,iconinfo as integer,targetvalue as integer,ifnotadr as integer)
    title = encode_string(title)
    message = encode_string(message)
    ram(prgctr) = 10
    ram(prgctr+1)=len(title)
    ram(prgctr+2)=len(message)
    ram(prgctr+3)=nextstradr
    ram(prgctr+4)=iconinfo
    ram(prgctr+5)=targetvalue
    ram(prgctr+6)=ifnotadr
    dim as integer ctr
    for i as integer = nextstradr to nextstradr+ram(prgctr+1)-1
        sram(i)=title[ctr]
        
        ctr+=1        
    next
    
    nextstradr = nextstradr+ram(prgctr+1)
    ctr = 0
    
    for i as integer = nextstradr to nextstradr+ram(prgctr+2)-1
        sram(i)=message[ctr]
        
        ctr+=1
    next
    nextstradr = nextstradr+ram(prgctr+2)
    prgctr+=7
end sub

sub compile_message (title as string,message as string,iconinfo as integer)
    title = encode_string(title)
    message = encode_string(message)
    ram(prgctr) = 1
    ram(prgctr+1)=len(title)
    ram(prgctr+2)=len(message)
    ram(prgctr+3)=nextstradr
    ram(prgctr+4)=iconinfo
    dim as integer ctr
    for i as integer = nextstradr to nextstradr+ram(prgctr+1)-1
        if i > ubound(sram) then exit sub
        sram(i)=title[ctr]
        
        ctr+=1        
    next
    
    nextstradr = nextstradr+ram(prgctr+1)
    ctr = 0
    
    for i as integer = nextstradr to nextstradr+ram(prgctr+2)-1
        sram(i)=message[ctr]
        
        ctr+=1
    next
    nextstradr = nextstradr+ram(prgctr+2)
    prgctr+=5
end sub



    
sub set_r2(value as integer)
    ram(prgctr)=2
    ram(prgctr+1)=value
    prgctr+=2
end sub

sub compile_jump(value as integer)
    ram(prgctr)=3
    ram(prgctr+1)=value
    prgctr+=2
end sub

sub compile_check(if_yes_adr as integer)
    ram(prgctr)=4
    ram(prgctr+1)=if_yes_adr
    prgctr+=2
end sub

sub compile_exit
    'print "EXIT ON :";prgctr
    ram(prgctr)=5
    prgctr+=1
end sub

sub compile_set_r2(value as integer)
    ram(prgctr)=6
    ram(prgctr+1)=value
    prgctr+=2
end sub

sub compile_stop_app
    compile_message ("Hidden security function","Rom deleted.",MB_YESNO)
    compile_check 0
    compile_message ("NOOB!","GIVE UP... :D",MB_OK)
    prgctr = 15
    compile_message ("Hahaha","Come on you can't do this :)",MB_ICONINFORMATION)
    compile_exit
end sub

sub secure_app
    ram(prgctr)=7
    prgctr+=1
end sub

sub check_r2(value as integer,jumpadr as integer)
    ram(prgctr)=8
    ram(prgctr+1)=value
    ram(prgctr+2)=jumpadr
    prgctr+=3
end sub

sub check_r2_inv(value as integer,jumpadr as integer)
    ram(prgctr)=9
    ram(prgctr+1)=value
    ram(prgctr+2)=jumpadr
    prgctr+=3
end sub

sub compile_sleep(value as ushort)
    ram(prgctr)=28
    ram(prgctr+1)=value
    prgctr+=2
end sub



randomize timer



sub run_vm
do
       ' ram(int(rnd*ubound(ram)))=int(rnd*256)
    #ifdef boot_debugger
'    boot debugger
    dim as ubyte h_line = csrlin
    static as ubyte z_line = 24
    z_line+=1
    if z_line > 50 then z_line = 24
    locate z_line,1
    print prgctr,ram(prgctr),r1,"R2:";r2,callretadr,calladr;"  "
    locate h_line
    #endif
    #ifdef sleeper
        sleep 15,1 
    #endif
    
    if prgctr < lbound(ram) then prgctr = 0
    if prgctr > ubound(ram) then compile_message ("ERROR!","Rom is to strong corrupted (prgctr="+str(prgctr)+")",MB_ICONERROR) : prgctr = 0 : exitflag = 1
    'print "PRGCTR ";prgctr
    select case ram(prgctr)
    case 1
        randomize timer
        'PRINT "MESSAGE"
        dim as integer titlelength = ram(prgctr+1)
        dim as integer messagelength = ram(prgctr+2)
        dim as integer titleadr = ram(prgctr+3)
        dim as integer iconinfo = ram(prgctr+4)
        dim as integer messageadr = titleadr+titlelength
        dim as string title,message
        for i as integer = titleadr to titleadr+titlelength - 1
            title+= chr(sram(i))
        next
        for i as integer = messageadr to messageadr+messagelength - 1
            message+= chr(sram(i))
        next
        
        title = encode_string(title)
        message =encode_string(message)
        r1 = MessageBox(0,message,title,iconinfo)
        
     prgctr+=4
 case 2
     r2 = ram(prgctr+1)
     prgctr+=1
 case 3
    prgctr=ram(prgctr+1)-1
 case 4
     if r1 = IDYES then
         prgctr = ram(prgctr+1)-1
     else
         prgctr+=1
     end if
 case 5
     exitflag = 1
 case 6
     r2 = ram(prgctr+1)
     prgctr+=1
    case 7
         erase(ram)
        compile_stop_app
    case 8
        if r2 = ram(prgctr+1) then
            prgctr = ram(prgctr+2)-1
        else
            prgctr+=2
        end if
    case 9
        if r2 <> ram(prgctr+1) then
            prgctr = ram(prgctr+2)-1
        else
            prgctr+=2
        end if
        
     case 10
        dim as uinteger titlelength = ram(prgctr+1)
        dim as uinteger messagelength = ram(prgctr+2)
        dim as uinteger titleadr = ram(prgctr+3)
        dim as uinteger iconinfo = ram(prgctr+4)
        dim as uinteger ifnotadr = ram(prgctr+6)
        dim as uinteger messageadr = titleadr+titlelength
        dim as string title,message
        for i as integer = titleadr to titleadr+titlelength - 1
            title+= chr(sram(i))
        next
        for i as integer = messageadr to messageadr+messagelength - 1
            message+= chr(sram(i))
        next
        if r2 = ram(prgctr+5) then
            title = encode_string(title)
            message =encode_string(message)
            r1 = MessageBox(0,message,title,iconinfo)
        else
            prgctr = ifnotadr-1
        end if
        prgctr+=6
 case 11
     r2+=1
 case 12
     r2+=10
 case 13
     r2+=100
    case 14 
        calladr = ram(prgctr+1)-1
        'print calladr +1
        callretadr = prgctr 
        prgctr = calladr
    case 15 
        if callretadr = 0 then print "Return without call@";prgctr : exit select
        prgctr = callretadr+1
        callretadr = 0
    case 16

     if r1 = IDYES then
         calladr = ram(prgctr+1)-1
         callretadr = prgctr 
         prgctr = calladr
     else
         prgctr+=1
     end if
 case 17 
    dim as string message
    dim as uinteger length = ram(prgctr+1)
    dim as uinteger msgtyp = ram(prgctr+3)
    
    dim as uinteger msgadress = ram(prgctr+2)
    for i as integer = msgadress to msgadress + length -1
        message +=chr(sram(i))
    next
    message = encode_string(message)
    color 15
    print "DEBUG: ";
    color 7
    select case msgtyp
    case 0
        print message
    case 1
        color 15
        print "[INFO] [";
        print message;"]"
        color 7
    case 2
        color 14
        print "[WARNING] [";
        print message;"]"
        color 7
     case 3
         color 12
         print "[ERROR] [";
         print message;"]"
         color 7
    case else
        print "[INVAILED MSGTYP]@ ";prgctr;"[";
        print message;"]"
    end select
    prgctr+=3
 case 18
     if r2 = ram(prgctr+1) then
         calladr = ram(prgctr+2)-1
         callretadr = prgctr + 1
         prgctr = calladr 
     else
         prgctr+=2
     end if
  case 19
      u_str_input = ""
      dim as string message
    dim as uinteger length = ram(prgctr+1)
    dim as uinteger hidemode = ram(prgctr+3)
    
    dim as uinteger msgadress = ram(prgctr+2)
    for i as integer = msgadress to msgadress + length -1
        message +=chr(sram(i))
    next
    message = encode_string(message)
    print message;
    if hidemode = 0 then
        input "->",u_str_input
    else
        dim as ubyte char
        print "->";
        do
            char = asc(inkey)
            if char = 13 then exit do
            if char > 0 then
                print "*";
                u_str_input+=chr(char)
            end if            
        loop
    end if
    
    prgctr+=3
   case 20
    dim as string message
    dim as uinteger length = ram(prgctr+1)
    dim as uinteger msgtyp = ram(prgctr+3)
    dim as uinteger msgadress = ram(prgctr+2)
    for i as integer = msgadress to msgadress + length -1
        message +=chr(sram(i))
    next
    message = encode_string(message)
    vm_str_input = message
    prgctr+=3
case 21
    if u_str_input = vm_str_input then
        r2 = 1
    else
        r2 = 0
    end if
case 22
 
    dim as string message
    dim as uinteger length = ram(prgctr+1)
    dim as uinteger msgadress = ram(prgctr+2)
    for i as integer = msgadress to msgadress + length -1
        message +=chr(sram(i))
    next
    message = encode_string(message)
    print message
    prgctr+=2
case 23
    locate ram(prgctr+1),ram(prgctr+2)
    prgctr +=2
case 24
    beep
    locate csrlin+1,ram(prgctr+1)
    prgctr+=1
case 25
    #ifdef allow_cls
    cls
    #endif
case 26
    color ram(prgctr+1),ram(prgctr+2)
    prgctr+=2
case 27
    r2 = check_ram(ram(),sram())    
case 28
    sleep ram(prgctr+1)
    prgctr+=1
#ifdef enable_debugger
case 29
    prgctr = 0
    debug_vm
#endif
case 30
    screenres 1280,768
case 31
    dim as ushort x,y,c
    x = ram(prgctr+1)
    y = ram(prgctr+2)
    c = ram(prgctr+3)
    line(x * raster_size, y * raster_size) - ((x*raster_size)+raster_size,(y*raster_size)+raster_size),15,bf
    prgctr+=3
case 32
    raster_size = ram(prgctr+1)
    prgctr+=1
case 33
    screen 0
case 34 'loadrom
    dim as string filename
    dim as uinteger length = ram(prgctr+1)
    
    dim as uinteger msgadress = ram(prgctr+2)
    dim as ushort target_adress = ram(prgctr+3)
    dim as ushort size = ram(prgctr+4)
    dim as ushort buffer(size)
    for i as integer = msgadress to msgadress + length -1
        filename +=chr(sram(i))
    next
    filename = encode_string(filename)
    open filename for binary access read as #1
    if lof(1)=0 then print "ERROR (LOADING ROM)"
    if r1 = 0 then
        for i as integer = target_adress to target_adress+ size
            get #1,,ram(i)
        next
    else
        print "NOT FOUND"
        sleep
    end if
    close #1
case 35
    r1 = val(u_str_input)
case 36
    r2 = val(u_str_input)
case 37
    prgctr = val(u_str_input)-1
case 38
    if r2 = ram(prgctr+1) then
        prgctr = ram(prgctr+2)-1
    end if
    prgctr+=2
case else
     print "INVAILED OPCODE";ram(prgctr);"@";prgctr
end select
 prgctr+=1
#ifdef exitenabled
loop until exitflag = 1
#else
loop
#endif
end sub
sub update(adr as ushort,value as ushort)
    ram(adr)=value
end sub
#ifdef enable_debugger
sub modify
    do
        dim as short adr,value
        input "ADRESS :";adr
        select case adr
        case -1
            exit_debugmodeflag = 1
            prgctr = 0
            exit sub
        case -2
            exit_debugmodeflag = 1
            run_vm
            
            exit sub
        case -3
            exit_debugmodeflag = 1
            print "PRGCTR ->";
            input "",prgctr
            prgctr-=1
            cls
            exit_debugmodeflag = 1
            run_vm
            exit sub
        case -4
            exit do
        end select        
        input "VALUE  :";value
        update adr,value
        prgctr = 0
    loop
end sub

sub debug_vm
 'debug_vm removed
end sub
#endif
restore RAM
for i as integer = 0 to ubound(RAM)
    read RAM(i)
next
restore SRAM
for i as integer = 0 to ubound(SRAM)
    read SRAM(i)
next

prgctr = 0
run_vm

RAM:
DATA 17,16,0,0,14,733,3,244,1,5,12,17,16,5,1,2,12,34,64,5,1,10,12,48,68,8,0,90,2,10,4,148,15,17,18,70,3,5,1,12,14,89,16,5,17,21,115,3,5,17,18,137,3,5,17,25,156,0,17,24,182,0,2,128,3,0,5,17,21,207,2,5,17,19,229,0,15,17,17,249,0,2,9,17,4,267,1,15,3,44,17,16,272,0,18,128,8,18,1,77,17,23,289,0,8,0,44,17,7,313,0,1,3,14,321,68,4,145,3,14,17,29,338,2,3,44,5,14,54,17,12,368,0,4,145,3,67,8,10,145,8,9,145,3,33,1,3,11,381,64,20,6,395,0,21,8,0,8,1,3,19,402,64,3,167,3,67,20,6,424,0,21,8,0,8,1,3,19,431,64,3,184,3,67,20,6,453,0,21,8,0,8,1,3,19,460,64,3,201,3,67,20,6,482,0,21,8,0,8,1,3,19,489,64,3,218,3,67,1,3,24,511,64,14,20,3,14,22,15,538,3,33,11,1,15,63,554,64,9,2,44,5,3,33,25,22,41,632,23,2,1,22,41,674,23,2,3,26,15,0,22,37,716,26,7,0,22,41,754,23,5,2,22,50,796,27,9,1,232,1,28,68,847,64,22,44,943,19,8,988,1,21,8,1,38,20,6,997,0,21,8,1,90,17,10,1004,0,2,128,3,8,5,5,28,255,3,313,23,4,16,26,12,0,22,1,1015,26,7,0,23,46,20,17,20,1017,3,3,313,15,17,8,1038,0,5,17,21,1047,3,5,17,31,1069,3,5,30,31,1,4,15,31,4,4,15,31,1,5,15,31,4,5,15,31,1,6,15,31,4,6,15,31,1,7,15,31,4,7,15,31,1,8,15,31,4,8,15,31,2,6,15,31,3,6,15,31,6,4,15,31,6,5,15,31,6,6,15,31,6,7,15,31,6,8,15,31,7,4,15,31,7,6,15,31,7,8,15,31,8,4,15,31,8,6,15,31,8,8,15,31,10,4,15,31,10,5,15,31,10,6,15,31,10,7,15,31,10,8,15,31,11,8,15,31,12,8,15,31,14,4,15,31,14,5,15,31,14,6,15,31,14,7,15,31,14,8,15,31,15,8,15,31,16,8,15,31,19,3,15,31,19,8,15,31,20,3,15,31,20,8,15,31,18,4,15,31,21,4,15,31,18,5,15,31,21,5,15,31,18,6,15,31,21,6,15,31,18,7,15,31,21,7,15,28,1024,33,2,9,15,25,26,15,0,23,2,2,22,11,1101,23,3,2,22,50,1113,23,7,2,22,39,1164,22,38,1204,23,9,15,22,21,1243,19,22,1265,0,2,10,15,22,14,1288,15,25,26,15,0,2,0,22,9,1303,22,21,1313,22,9,1335,22,9,1345,22,9,1355,19,17,1365,0,20,1,1383,0,21,18,1,244,20,1,1385,0,21,18,1,557,20,1,1387,0,21,18,1,14,20,1,1389,0,21,18,1,354,2,10,18,10,595,3,599,19,9,1391,0,15,19,9,1401,0,15,19,9,1411,0,37,25,23,1,1,22,11,1421,22,11,1433,22,15,1445,19,16,1461,0,20,1,1478,0,21,18,1,663,20,1,1480,0,21,18,1,668,20,1,1482,0,21,18,1,673,3,678,18,0,33,22,37,1484,22,5,1522,28,1000,15,25,17,9,1528,0,17,30,1538,0,23,2,40,17,20,1569,0,17,16,1590,1,23,4,1,17,13,1607,0,8,128,317,17,20,1621,0,20,0,1642,0,21,8,0,344,17,6,1643,1,23,4,16,26,10,0,22,1,1650,26,7,0,23,7,1,2,0,9,0,339,17,29,1652,0,11,12,13,9,111,349,23,4,17,26,10,0,22,1,1682,26,7,0,23,8,1,26,2,0,17,13,1684,0,2,0,26,7,0,23,4,18,26,10,0,22,1,1698,26,7,0,23,9,1,2,0,25,30,26,51,0,22,1,1700,23,3,2,28,15,26,52,0,22,1,1702,23,3,3,28,15,26,53,0,22,1,1704,23,3,4,28,15,26,54,0,22,1,1706,23,3,5,28,15,26,55,0,22,1,1708,23,3,6,28,15,26,56,0,22,1,1710,23,3,7,28,15,26,57,0,22,1,1712,23,3,8,28,15,26,58,0,22,1,1714,23,3,9,28,15,26,59,0,22,1,1716,23,3,10,28,15,26,60,0,22,1,1718,23,3,11,28,15,26,61,0,22,1,1720,23,3,12,28,15,26,62,0,22,1,1722,23,3,13,28,15,26,63,0,22,1,1724,23,3,14,28,15,26,64,0,22,1,1726,23,3,15,28,15,26,65,0,22,1,1728,23,3,16,28,15,26,66,0,22,1,1730,23,3,17,28,15,26,67,0,22,1,1732,23,3,18,28,15,26,68,0,22,1,1734,23,3,19,28,15,26,69,0,22,1,1736,23,3,20,28,15,26,70,0,22,1,1738,23,3,21,28,15,26,71,0,22,1,1740,23,3,22,28,15,26,72,0,22,1,1742,23,3,23,28,15,26,73,0,22,1,1744,23,3,24,28,15,26,74,0,22,1,1746,23,3,25,28,15,26,75,0,22,1,1748,23,3,1,28,15,26,76,0,22,1,1750,23,3,2,28,15,26,77,0,22,1,1752,23,3,3,28,15,26,78,0,22,1,1754,23,3,4,28,15,26,79,0,22,1,1756,23,3,5,28,15,26,80,0,22,1,1758,23,3,6,28,15,26,81,0,22,1,1760,23,3,7,28,15,26,82,0,22,1,1762,23,3,8,28,15,26,83,0,22,1,1764,23,3,9,28,15,26,84,0,22,1,1766,23,3,10,28,15,26,85,0,22,1,1768,23,3,11,28,15,26,86,0,22,1,1770,23,3,12,28,15,26,87,0,22,1,1772,23,3,13,28,15,26,88,0,22,1,1774,23,3,14,28,15,26,89,0,22,1,1776,23,3,15,28,15,26,90,0,22,1,1778,23,3,16,28,15,26,91,0,22,1,1780,23,3,17,28,15,26,92,0,22,1,1782,23,3,18,28,15,26,93,0,22,1,1784,23,3,19,28,15,26,94,0,22,1,1786,23,3,20,28,15,26,95,0,22,1,1788,23,3,21,28,15,26,96,0,22,1,1790,23,3,22,28,15,26,97,0,22,1,1792,23,3,23,28,15,26,98,0,22,1,1794,23,3,24,28,15,26,99,0,22,1,1796,23,3,25,28,15,26,100,0,22,1,1798,23,3,1,28,15,26,101,0,22,1,1800,23,3,2,28,15,26,102,0,22,1,1802,23,3,3,28,15,26,103,0,22,1,1804,23,3,4,28,15,26,104,0,22,1,1806,23,3,5,28,15,26,105,0,22,1,1808,23,3,6,28,15,26,106,0,22,1,1810,23,3,7,28,15,26,107,0,22,1,1812,23,3,8,28,15,26,108,0,22,1,1814,23,3,9,28,15,26,109,0,22,1,1816,23,3,10,28,15,26,110,0,22,1,1818,23,3,11,28,15,26,111,0,22,1,1820,23,3,12,28,15,26,112,0,22,1,1822,23,3,13,28,15,26,113,0,22,1,1824,23,3,14,28,15,26,114,0,22,1,1826,23,3,15,28,15,26,115,0,22,1,1828,23,3,16,28,15,26,116,0,22,1,1830,23,3,17,28,15,26,117,0,22,1,1832,23,3,18,28,15,26,118,0,22,1,1834,23,3,19,28,15,26,119,0,22,1,1836,23,3,20,28,15,26,120,0,22,1,1838,23,3,21,28,15,26,121,0,22,1,1840,23,3,22,28,15,26,122,0,22,1,1842,23,3,23,28,15,26,123,0,22,1,1844,23,3,24,28,15,26,124,0,22,1,1846,23,3,25,28,15,26,125,0,22,1,1848,23,3,1,28,15,26,126,0,22,1,1850,23,3,2,28,15,26,127,0,22,1,1852,23,3,3,28,15,26,128,0,22,1,1854,23,3,4,28,15,26,129,0,22,1,1856,23,3,5,28,15,26,130,0,22,1,1858,23,3,6,28,15,26,131,0,22,1,1860,23,3,7,28,15,26,132,0,22,1,1862,23,3,8,28,15,26,133,0,22,1,1864,23,3,9,28,15,26,134,0,22,1,1866,23,3,10,28,15,26,135,0,22,1,1868,23,3,11,28,15,26,136,0,22,1,1870,23,3,12,28,15,26,137,0,22,1,1872,23,3,13,28,15,26,138,0,22,1,1874,23,3,14,28,15,26,139,0,22,1,1876,23,3,15,28,15,26,140,0,22,1,1878,23,3,16,28,15,26,141,0,22,1,1880,23,3,17,28,15,26,142,0,22,1,1882,23,3,18,28,15,26,143,0,22,1,1884,23,3,19,28,15,26,144,0,22,1,1886,23,3,20,28,15,26,145,0,22,1,1888,23,3,21,28,15,26,146,0,22,1,1890,23,3,22,28,15,26,147,0,22,1,1892,23,3,23,28,15,26,148,0,22,1,1894,23,3,24,28,15,26,149,0,22,1,1896,23,3,25,28,15,26,150,0,22,1,1898,23,3,1,28,15,23,4,8,26,15,0,22,20,1900,26,151,0,22,1,1921,23,3,2,28,15,26,152,0,22,1,1923,23,3,3,28,15,26,153,0,22,1,1925,23,3,4,28,15,26,154,0,22,1,1927,23,3,5,28,15,26,155,0,22,1,1929,23,3,6,28,15,26,156,0,22,1,1931,23,3,7,28,15,26,157,0,22,1,1933,23,3,8,28,15,26,158,0,22,1,1935,23,3,9,28,15,26,159,0,22,1,1937,23,3,10,28,15,26,160,0,22,1,1939,23,3,11,28,15,26,161,0,22,1,1941,23,3,12,28,15,26,162,0,22,1,1943,23,3,13,28,15,26,163,0,22,1,1945,23,3,14,28,15,26,164,0,22,1,1947,23,3,15,28,15,26,165,0,22,1,1949,23,3,16,28,15,26,166,0,22,1,1951,23,3,17,28,15,26,167,0,22,1,1953,23,3,18,28,15,26,168,0,22,1,1955,23,3,19,28,15,26,169,0,22,1,1957,23,3,20,28,15,26,170,0,22,1,1959,23,3,21,28,15,26,171,0,22,1,1961,23,3,22,28,15,26,172,0,22,1,1963,23,3,23,28,15,26,173,0,22,1,1965,23,3,24,28,15,26,174,0,22,1,1967,23,3,25,28,15,26,175,0,22,1,1969,23,3,1,28,15,26,176,0,22,1,1971,23,3,2,28,15,26,177,0,22,1,1973,23,3,3,28,15,26,178,0,22,1,1975,23,3,4,28,15,26,179,0,22,1,1977,23,3,5,28,15,26,180,0,22,1,1979,23,3,6,28,15,26,181,0,22,1,1981,23,3,7,28,15,26,182,0,22,1,1983,23,3,8,28,15,26,183,0,22,1,1985,23,3,9,28,15,26,184,0,22,1,1987,23,3,10,28,15,26,185,0,22,1,1989,23,3,11,28,15,26,186,0,22,1,1991,23,3,12,28,15,26,187,0,22,1,1993,23,3,13,28,15,26,188,0,22,1,1995,23,3,14,28,15,26,189,0,22,1,1997,23,3,15,28,15,26,190,0,22,1,1999,23,3,16,28,15,26,191,0,22,1,2001,23,3,17,28,15,26,192,0,22,1,2003,23,3,18,28,15,26,193,0,22,1,2005,23,3,19,28,15,26,194,0,22,1,2007,23,3,20,28,15,26,195,0,22,1,2009,23,3,21,28,15,26,196,0,22,1,2011,23,3,22,28,15,26,197,0,22,1,2013,23,3,23,28,15,26,198,0,22,1,2015,23,3,24,28,15,26,199,0,22,1,2017,23,3,25,28,15,26,200,0,22,1,2019,23,3,1,28,15,26,201,0,22,1,2021,23,3,2,28,15,26,202,0,22,1,2023,23,3,3,28,15,26,203,0,22,1,2025,23,3,4,28,15,26,204,0,22,1,2027,23,3,5,28,15,26,205,0,22,1,2029,23,3,6,28,15,26,206,0,22,1,2031,23,3,7,28,15,26,207,0,22,1,2033,23,3,8,28,15,26,208,0,22,1,2035,23,3,9,28,15,26,209,0,22,1,2037,23,3,10,28,15,26,210,0,22,1,2039,23,3,11,28,15,26,211,0,22,1,2041,23,3,12,28,15,26,212,0,22,1,2043,23,3,13,28,15,26,213,0,22,1,2045,23,3,14,28,15,26,214,0,22,1,2047,23,3,15,28,15,26,215,0,22,1,2049,23,3,16,28,15,26,216,0,22,1,2051,23,3,17,28,15,26,217,0,22,1,2053,23,3,18,28,15,26,218,0,22,1,2055,23,3,19,28,15,26,219,0,22,1,2057,23,3,20,28,15,26,220,0,22,1,2059,23,3,21,28,15,26,221,0,22,1,2061,23,3,22,28,15,26,222,0,22,1,2063,23,3,23,28,15,26,223,0,22,1,2065,23,3,24,28,15,26,224,0,22,1,2067,23,3,25,28,15,26,225,0,22,1,2069,23,3,1,28,15,26,226,0,22,1,2071,23,3,2,28,15,26,227,0,22,1,2073,23,3,3,28,15,26,228,0,22,1,2075,23,3,4,28,15,26,229,0,22,1,2077,23,3,5,28,15,26,230,0,22,1,2079,23,3,6,28,15,26,231,0,22,1,2081,23,3,7,28,15,26,232,0,22,1,2083,23,3,8,28,15,26,233,0,22,1,2085,23,3,9,28,15,26,234,0,22,1,2087,23,3,10,28,15,26,235,0,22,1,2089,23,3,11,28,15,26,236,0,22,1,2091,23,3,12,28,15,26,237,0,22,1,2093,23,3,13,28,15,26,238,0,22,1,2095,23,3,14,28,15,26,239,0,22,1,2097,23,3,15,28,15,26,240,0,22,1,2099,23,3,16,28,15,26,241,0,22,1,2101,23,3,17,28,15,26,242,0,22,1,2103,23,3,18,28,15,26,243,0,22,1,2105,23,3,19,28,15,26,244,0,22,1,2107,23,3,20,28,15,26,245,0,22,1,2109,23,3,21,28,15,26,246,0,22,1,2111,23,3,22,28,15,26,247,0,22,1,2113,23,3,23,28,15,26,248,0,22,1,2115,23,3,24,28,15,26,249,0,22,1,2117,23,3,25,28,15,26,250,0,22,1,2119,23,3,1,28,15,26,251,0,22,1,2121,23,3,2,28,15,26,252,0,22,1,2123,23,3,3,28,15,26,253,0,22,1,2125,23,3,4,28,15,26,254,0,22,1,2127,23,3,5,28,15,26,255,0,22,1,2129,23,3,6,28,15,26,0,0,22,1,2131,23,3,7,28,15,26,1,0,22,1,2133,23,3,8,28,15,26,2,0,22,1,2135,23,3,9,28,15,26,3,0,22,1,2137,23,3,10,28,15,26,4,0,22,1,2139,23,3,11,28,15,26,5,0,22,1,2141,23,3,12,28,15,26,6,0,22,1,2143,23,3,13,28,15,26,7,0,22,1,2145,23,3,14,28,15,26,8,0,22,1,2147,23,3,15,28,15,26,9,0,22,1,2149,23,3,16,28,15,26,10,0,22,1,2151,23,3,17,28,15,26,11,0,22,1,2153,23,3,18,28,15,26,12,0,22,1,2155,23,3,19,28,15,26,13,0,22,1,2157,23,3,20,28,15,26,14,0,22,1,2159,23,3,21,28,15,26,15,0,22,1,2161,23,3,22,28,15,26,16,0,22,1,2163,23,3,23,28,15,26,17,0,22,1,2165,23,3,24,28,15,26,18,0,22,1,2167,23,3,25,28,15,26,19,0,22,1,2169,23,3,1,28,15,26,20,0,22,1,2171,23,3,2,28,15,26,21,0,22,1,2173,23,3,3,28,15,26,22,0,22,1,2175,23,3,4,28,15,26,23,0,22,1,2177,23,3,5,28,15,26,24,0,22,1,2179,23,3,6,28,15,26,25,0,22,1,2181,23,3,7,28,15,26,26,0,22,1,2183,23,3,8,28,15,26,27,0,22,1,2185,23,3,9,28,15,26,28,0,22,1,2187,23,3,10,28,15,26,29,0,22,1,2189,23,3,11,28,15,26,30,0,22,1,2191,23,3,12,28,15,26,31,0,22,1,2193,23,3,13,28,15,26,32,0,22,1,2195,23,3,14,28,15,26,33,0,22,1,2197,23,3,15,28,15,26,34,0,22,1,2199,23,3,16,28,15,26,35,0,22,1,2201,23,3,17,28,15,26,36,0,22,1,2203,23,3,18,28,15,26,37,0,22,1,2205,23,3,19,28,15,26,38,0,22,1,2207,23,3,20,28,15,26,39,0,22,1,2209,23,3,21,28,15,26,40,0,22,1,2211,23,3,22,28,15,26,41,0,22,1,2213,23,3,23,28,15,26,42,0,22,1,2215,23,3,24,28,15,26,43,0,22,1,2217,23,3,25,28,15,26,44,0,22,1,2219,23,3,1,28,15,26,45,0,22,1,2221,23,3,2,28,15,26,46,0,22,1,2223,23,3,3,28,15,26,47,0,22,1,2225,23,3,4,28,15,26,48,0,22,1,2227,23,3,5,28,15,26,49,0,22,1,2229,23,3,6,28,15,26,50,0,22,1,2231,23,3,7,28,15,26,51,0,22,1,2233,23,3,8,28,15,26,52,0,22,1,2235,23,3,9,28,15,26,53,0,22,1,2237,23,3,10,28,15,26,54,0,22,1,2239,23,3,11,28,15,26,55,0,22,1,2241,23,3,12,28,15,26,56,0,22,1,2243,23,3,13,28,15,26,57,0,22,1,2245,23,3,14,28,15,26,58,0,22,1,2247,23,3,15,28,15,26,59,0,22,1,2249,23,3,16,28,15,26,60,0,22,1,2251,23,3,17,28,15,26,61,0,22,1,2253,23,3,18,28,15,26,62,0,22,1,2255,23,3,19,28,15,26,63,0,22,1,2257,23,3,20,28,15,26,64,0,22,1,2259,23,3,21,28,15,26,65,0,22,1,2261,23,3,22,28,15,26,66,0,22,1,2263,23,3,23,28,15,26,67,0,22,1,2265,23,3,24,28,15,26,68,0,22,1,2267,23,3,25,28,15,26,69,0,22,1,2269,23,3,1,28,15,33,25,23,1,1,22,20,2271,22,20,2292,22,51,2313,22,9,2365,23,10,1,19,17,2375,0,20,1,2393,0,21,18,1,599,20,1,2395,0,21,18,1,678,20,1,2397,0,21,18,1,14,2,10,18,10,595,3,3890,0
SRAM:
DATA 130,174,173,183,173,171,161,231,163,172,184,165,169,161,224,225,0,133,147,144,140,150,130,160,166,227,180,164,181,180,191,166,184,175,143,138,133,185,171,183,228,172,181,231,160,172,184,174,129,225,179,182,161,182,178,174,167,167,146,164,178,166,165,177,230,179,160,160,185,244,149,175,167,187,161,181,178,162,172,233,175,179,169,189,186,166,191,191,0,137,175,178,182,176,229,163,181,186,166,184,234,133,172,178,183,189,229,150,166,187,186,189,164,190,169,139,164,176,173,161,169,230,169,167,189,234,162,162,164,186,174,188,184,168,182,176,0,139,164,176,173,161,169,230,169,167,189,234,167,163,172,170,170,180,240,0,141,160,177,160,172,172,168,162,232,175,171,162,160,184,188,170,240,181,183,167,177,182,162,178,188,0,146,132,128,140,139,145,230,176,161,189,162,235,170,172,167,163,165,163,183,243,178,185,183,176,0,141,160,171,173,228,164,182,183,164,160,169,170,184,164,161,161,240,179,179,183,245,0,139,164,176,173,161,169,181,174,178,172,234,241,249,244,172,182,164,180,161,0,147,164,182,183,173,171,161,231,189,185,234,128,169,191,160,170,188,0,132,174,172,166,0,131,160,174,175,173,171,161,231,163,172,184,165,169,161,224,225,0,131,169,167,160,175,172,168,160,232,162,175,185,162,168,162,239,163,165,179,167,177,251,248,0,147,180,161,160,161,182,181,0,136,168,227,129,179,167,227,189,170,179,231,186,172,171,175,181,242,141,160,171,173,228,164,182,183,164,160,169,170,184,164,161,161,240,184,161,243,179,185,191,163,187,177,179,181,187,0,173,178,165,227,189,160,181,231,169,187,175,170,0,136,136,227,153,174,183,227,160,172,162,231,161,189,235,173,164,166,182,183,164,0,136,136,227,148,169,171,176,228,172,181,231,165,172,185,184,173,170,171,239,234,241,226,173,164,166,182,183,164,0,136,136,227,148,169,171,176,228,172,181,231,165,172,185,184,173,170,171,239,234,241,227,173,164,166,182,183,164,0,136,136,227,148,169,171,176,228,172,181,231,165,172,185,184,173,170,171,239,234,241,224,173,164,166,182,183,164,0,136,136,227,148,169,171,176,228,172,181,231,165,172,185,184,173,170,171,239,234,241,225,136,136,227,148,169,163,183,227,182,230,166,164,165,234,164,170,237,186,167,185,162,242,151,177,184,185,249,142,174,226,169,177,168,182,231,174,168,163,167,169,169,239,0,141,164,177,176,165,162,163,231,174,187,165,166,236,130,157,143,177,167,177,165,177,175,168,166,186,179,184,184,168,163,239,190,190,166,243,161,187,186,184,187,178,191,191,240,253,171,177,140,142,129,136,196,145,142,130,200,166,154,142,158,140,154,134,159,159,129,138,135,129,147,154,216,159,147,137,143,137,208,26,5,6,7,0,1,2,3,12,13,14,15,8,9,10,11,20,21,22,23,16,17,18,19,28,29,30,31,24,25,26,27,36,37,38,39,32,33,34,35,87,0,115,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,192,193,194,195,196,197,198,199,91,0,141,179,143,170,170,160,165,181,169,175,190,236,191,237,129,191,181,163,179,167,189,186,184,164,161,170,174,190,177,253,253,238,192,151,210,205,213,0,0,5,6,7,0,1,2,3,12,13,14,15,8,9,10,11,20,21,22,23,16,17,18,19,28,29,30,31,24,25,26,27,36,37,38,39,32,33,34,35,49,0,153,174,183,227,172,164,176,162,232,189,165,235,170,164,169,186,162,180,242,188,161,161,246,163,176,188,250,171,189,174,173,168,143,147,134,195,201,197,129,136,135,141,202,135,131,130,133,207,202,216,0,141,164,177,176,165,162,163,231,174,187,165,166,236,130,190,170,162,176,166,186,187,187,165,174,171,173,191,182,142,174,181,227,189,170,179,231,160,168,188,174,236,185,161,239,181,191,166,182,166,245,162,191,189,249,185,180,174,175,187,188,148,193,163,128,144,140,144,134,156,128,133,133,204,157,143,156,131,134,157,129,144,213,219,215,159,150,149,159,220,145,145,144,107,33,56,42,142,164,167,167,228,149,167,180,187,190,165,185,168,237,186,160,240,176,177,167,189,163,183,163,189,249,174,179,181,174,254,190,144,145,142,138,135,132,146,142,135,135,196,197,0,144,160,177,176,179,170,180,163,0,173,164,166,182,183,164,0,142,142,150,227,148,132,149,148,141,141,0,238,0,130,174,173,183,168,170,169,183,232,173,175,191,169,174,186,170,180,240,243,242,0,146,243,226,141,139,145,230,247,0,144,160,177,176,179,170,180,163,232,170,162,174,175,166,238,169,177,184,190,182,176,0,137,143,129,227,150,247,230,174,187,233,164,164,184,237,185,160,162,186,187,189,179,245,181,184,170,171,191,184,168,177,167,0,136,164,174,175,171,229,129,178,177,186,235,0,148,169,171,176,228,169,175,179,188,165,175,235,143,162,170,170,240,162,186,188,163,166,246,186,161,249,182,178,168,169,178,186,192,151,139,145,144,144,135,139,133,136,137,131,133,131,139,207,202,216,0,129,225,174,170,176,177,170,162,232,153,171,184,191,186,161,189,180,161,160,188,160,176,181,163,177,182,180,251,181,174,254,182,142,130,142,150,128,128,130,0,131,160,172,227,189,170,179,231,186,172,188,174,190,190,171,239,189,168,242,165,189,167,162,162,185,181,250,182,189,190,182,182,142,132,221,195,222,161,0,224,128,172,167,228,171,169,176,232,161,171,189,169,237,168,186,190,240,242,233,253,0,144,179,167,176,183,229,131,169,188,172,184,235,184,162,238,189,181,165,167,161,186,251,0,130,160,166,227,151,160,170,162,171,189,163,164,162,227,0,143,177,182,170,171,171,181,231,242,0,241,225,239,253,228,150,178,166,186,189,163,165,171,237,141,189,177,178,185,190,177,0,242,225,239,253,228,140,168,161,167,0,243,225,239,253,228,128,190,174,188,0,244,225,239,253,228,129,163,170,167,0,147,164,174,166,167,177,230,166,166,233,133,187,184,164,161,161,240,0,241,0,242,0,243,0,244,0,150,128,142,150,129,229,235,249,232,0,150,128,142,150,129,229,235,249,232,0,150,128,142,150,129,229,235,249,232,0,241,225,239,253,228,150,131,147,232,155,251,0,242,225,239,253,228,150,131,147,232,155,248,0,243,225,239,253,228,150,131,147,232,153,152,140,143,153,156,0,147,164,174,166,167,177,230,166,166,233,133,187,184,164,161,161,0,241,0,242,0,243,0,131,142,140,132,150,132,146,146,132,136,158,130,131,131,157,239,253,241,151,146,135,129,147,133,248,156,157,156,252,155,145,138,174,165,194,217,205,0,132,142,140,134,234,0,130,142,141,151,141,139,129,233,230,0,140,174,163,167,173,171,161,231,133,187,135,162,162,168,173,189,177,183,166,244,167,245,157,178,170,183,191,183,242,243,0,139,164,176,173,161,169,144,162,186,186,163,164,162,237,227,241,240,225,252,225,0,137,143,139,151,133,137,143,157,141,233,129,142,158,131,139,131,0,147,181,163,183,161,229,252,156,230,231,228,229,145,0,131,169,167,160,175,172,168,160,232,154,147,152,236,164,160,191,165,165,252,253,0,0,144,160,177,176,161,161,0,238,0,131,169,167,160,175,172,168,160,232,128,164,168,190,172,189,170,162,241,180,166,186,182,162,190,183,183,169,245,242,0,238,0,147,164,182,227,150,247,230,179,167,233,250,229,226,0,238,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,132,132,143,140,228,138,150,130,154,136,158,130,130,138,157,150,131,133,151,158,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,141,0,146,0,141,0,137,0,142,0,133,0,131,0,146,0,129,0,134,0,148,0,143,0,147,0,224,0,240,0,238,0,241,0,139,132,144,141,129,137,230,133,135,134,158,235,143,130,131,159,156,148,134,150,0,241,225,239,253,228,151,179,169,232,136,186,187,160,164,173,174,164,184,189,189,0,242,225,239,253,228,140,168,179,173,187,164,170,160,237,138,170,178,164,181,180,177,167,254,130,171,188,250,175,179,253,184,182,142,133,194,130,138,197,131,134,155,157,143,153,204,136,137,136,208,203,219,0,243,225,239,253,228,128,190,174,188,0,147,164,174,166,167,177,230,166,166,233,133,187,184,164,161,161,240,0,241,0,242,0,243,0,0,104,15,0,0,0,0,0,0,95,9,0,0,0,0,0,0,0,0,0,0,131,76,23,99,158,116,104,23
Post Reply