so, there's this RPF format used by all games made by Rockstar Games using this RAGE engine.
i'm trying to cover this format bit by bit so i wanted to take a look at the decryption methods that were present in GTA IV.
GTA IV had a lot of encrypted archives. what i want to do is to "crack" those encrypted archives into something readable. as in, how the game actually reads these archives.
since i wanted to focus on the RPF archives, i decided why not start there. and this is what i managed so far.
Code: Select all
putarray 0 0 0x30465052 # "RPF0"
putarray 0 1 0x31465052 # "RPF1"
putarray 0 2 0x32465052 # "RPF2"
putarray 0 3 0x33465052 # "RPF3"
get is_rpf long
math found = 0
for i = 0 < 4
getarray rpf_id 0 i
if is_rpf == rpf_id
math found = 1
endif
next i
if found = 0
cleanexit
endif
get header_size long
get entries long
get rpf_03 long
get rpf_04 long
math header_offset = 0x800
if rpf_04 != 0
callfunction init_dec 1
else
log MEMORY_FILE header_offset header_size
endif
goto 0 MEMORY_FILE
math headnum = -1
callfunction parse_rpf 1
startfunction parse_rpf
string reported_sig = is_rpf
if is_rpf == 0x30465052
# Rockstar Games Presents Table Tennis
xmath name_index_offset "entries * 16"
for i = 0 < entries
get e1 long headnum
get e2 long headnum
get e3 long headnum
get e4 long headnum
xmath e1_1 "(e1 >> 31) & 1"
xmath e1_2 "(e1 & 0x7fffffff) + name_index_offset"
putarray 0 i e1_1
putarray 1 i e1_2
putarray 2 i e2
putarray 3 i e3
putarray 4 i e4
next i
set directory_name string ""
set PATH string ""
math index = 0
math entries = 1
callfunction handle_rpf0_filesystem
else
print " unknown RPF signature - %reported_sig% "
cleanexit
endif
endfunction
startfunction handle_rpf0_filesystem
string PATH + directory_name
if index > 1
string PATH + /
endif
math files = files
math idx_limit = index
math idx_limit + entries
for i = index < idx_limit
getarray is_directory 0 i
getarray directory_name_offset 1 i
goto directory_name_offset headnum
get directory_name string headnum
if is_directory == 0
getarray file_offset 2 i
getarray compressed_file_size 3 i
getarray original_file_size 4 i
set file_name string PATH
string file_name + directory_name
if compressed_file_size == original_file_size
log file_name file_offset original_file_size
else
comtype deflate
clog file_name file_offset compressed_file_size original_file_size
endif
elif is_directory == 1
getarray index 2 i
getarray entries 3 i
getarray entries 4 i
callfunction handle_rpf0_filesystem
endif
next i
endfunction
startfunction init_dec
set MEMORY_FILE11 binary "\x1a\xb5\x6f\xed\x7e\xc3\xff\x01\x22\x7b\x69\x15\x33\x97\x5d\xce\x47\xd7\x69\x65\x3f\xf7\x75\x42\x6a\x96\xcd\x6d\x53\x07\x56\x5d" # decryption key
log MEMORY_FILE10 0 0x10000
goto MEMORY_FILE10
goto 0x1e0 MEMORY_FILE10
put 0xe long MEMORY_FILE10
math l1_m = 0
goto 0 MEMORY_FILE10
for l1 = 0 < 8
math l1_1 u= 0
for l2 = 0 < 4
if l2 = 0
math l2_b = 0
endif
goto l1_m MEMORY_FILE11
get l1_b2 byte MEMORY_FILE11
math l1_b2 << l2_b
math l1_1 |= l1_b2
math l1_m + 1
math l2_b + 8
next l2
put l1_1 long MEMORY_FILE10
next l1
math exp_key_pos = 0
callfunction expand_aes_key 1
goto 0 MEMORY_FILE10
get exp5_xor1 long MEMORY_FILE10
math result_exp5 ^ exp5_xor
math result_exp5 ^ 0x1000000
goto 4 MEMORY_FILE10
get exp5_xor2 long MEMORY_FILE10
xmath exp5_2 "exp5_xor2 ^ result_exp5"
goto 0x20 MEMORY_FILE10
put result_exp5 long MEMORY_FILE10
goto 8 MEMORY_FILE10
get exp5_xor3 long MEMORY_FILE10
xmath result_exp5 "exp5_xor3 ^ exp5_2"
goto 0x24 MEMORY_FILE10
put exp5_2 long MEMORY_FILE10
goto 0x28 MEMORY_FILE10
put result_exp5 long MEMORY_FILE10
goto 0xc MEMORY_FILE10
get exp5_xor4 long MEMORY_FILE10
xmath exp5_3 "exp5_xor4 ^ result_exp5"
goto 0x2c MEMORY_FILE10
put exp5_3 long MEMORY_FILE10
putarray 2 0 0x0000000
putarray 2 1 0x2000000
putarray 2 2 0x4000000
putarray 2 3 0x8000000
putarray 2 4 0x10000000
putarray 2 5 0x20000000
putarray 2 6 0x40000000
putarray 2 7 0x80000000
putarray 2 8 0x1b000000
math pv3_a1 = 1
getarray puvar3 2 pv3_a1
goto 0x30 MEMORY_FILE10
math puvar4 = 0x30
do
math exp_key_pos + 1
callfunction expand_aes_key 1
xmath pv4_p2 "puvar4 - 0x20"
goto pv4_p2 MEMORY_FILE10
get pv4_v2 long MEMORY_FILE10
math result_exp5 ^ pv4_v2
goto puvar4 MEMORY_FILE10
put result_exp5 long MEMORY_FILE10
xmath pv4_p1 "puvar4 - 0x1c"
goto pv4_p1 MEMORY_FILE10
get pv4_v1 long MEMORY_FILE10
xmath exp5_1 "pv4_v1 ^ result_exp5 ^ pv4_v2"
xmath pv4_p3 "puvar4 - 0x18"
goto pv4_p3 MEMORY_FILE10
get pv4_v3 long MEMORY_FILE10
xmath exp5_2 "pv4_v3 ^ exp5_1"
xmath pv4_wp1 "puvar4 + 4"
goto pv4_wp1 MEMORY_FILE10
put exp5_2 long MEMORY_FILE10
xmath pv4_wp2 "puvar4 + 8"
goto pv4_wp2 MEMORY_FILE10
put exp5_1 long MEMORY_FILE10
xmath pv4_wp3 "puvar4 + 0xc"
xmath pv4_p4 "puvar4 - 0x14"
goto pv4_p4 MEMORY_FILE10
get pv4_v4 long MEMORY_FILE10
xmath exp5_3 "pv4_v4 ^ exp5_2"
goto pv4_wp3 MEMORY_FILE10
put exp5_3 long MEMORY_FILE10
math exp_key_pos + 1
callfunction expand_aes_key 1
math pv3_a1 + 1
getarray puvar3 2 pv3_a1
math puvar6 == puvar3
xmath pv4_p2 "puvar4 - 0x10"
goto pv4_p2 MEMORY_FILE10
get pv4_v2 long MEMORY_FILE10
xmath exp5_2 "exp5_2 ^ pv4_v3 ^ puvar3"
xmath pv4_wp1 "puvar4 + 0x10"
goto pv4_wp1 MEMORY_FILE10
put exp5_2 long MEMORY_FILE10
xmath pv4_p1 "puvar4 - 0xc"
goto pv4_p1 MEMORY_FILE10
get pv4_v1 long MEMORY_FILE10
xmath exp5_2 "pv4_v1 ^ exp5_2"
xmath pv4_wp2 "puvar4 + 0x14"
goto pv4_wp2 MEMORY_FILE10
put exp5_2 long MEMORY_FILE10
xmath pv4_p3 "puvar4 - 8"
goto pv4_p3 MEMORY_FILE10
get pv4_v3 long MEMORY_FILE10
xmath exp5_2 "pv4_v3 ^ exp5_2"
xmath pv4_wp3 "puvar4 + 0x18"
goto pv4_wp3 MEMORY_FILE10
put exp5_2 long MEMORY_FILE10
xmath pv4_p4 "puvar4 - 4"
goto pv4_p4 MEMORY_FILE10
get pv4_v4 long MEMORY_FILE10
xmath exp5_3 "pv4_v4 ^ exp5_2"
xmath pv4_wp4 "puvar4 + 0x1c"
goto pv4_wp4 MEMORY_FILE10
put exp5_3 long MEMORY_FILE10
math puvar3 == puvar6
math puvar4 + 0x20
while puvar6 != 0x80000000
goto 0xe0 MEMORY_FILE10
get e1 long MEMORY_FILE10
goto 0xf0 MEMORY_FILE10
put e1 long MEMORY_FILE10
goto 0xe4 MEMORY_FILE10
get e2 long MEMORY_FILE10
goto 0xf4 MEMORY_FILE10
put e2 long MEMORY_FILE10
goto 0xe8 MEMORY_FILE10
get e3 long MEMORY_FILE10
goto 0xf8 MEMORY_FILE10
put e3 long MEMORY_FILE10
goto 0xec MEMORY_FILE10
get e4 long MEMORY_FILE10
goto 0xfc MEMORY_FILE10
put e4 long MEMORY_FILE10
math ivar5 = 1
math iv5_1 = 0xf0
math iv5_2 = 0xe0
math a3p_1 = 0
math a3p_2 = 0
if ivar5 < 0x1e0
do
if a3p_1 == 0x400
math a3p_1 = 0
endif
if a3p_2 == 0x100
math a3p_2 = 0
endif
math iv5_2 - 0x10
math iv5_1 + 0x10
callfunction aes_3 1
math a3p_1 + 1
math a3p_2 + 1
goto iv5_1 MEMORY_FILE10
put a3v_1 long MEMORY_FILE10
callfunction aes_3 1
math a3p_1 + 1
math a3p_2 + 1
math iv5_1 + 4
goto iv5_1 MEMORY_FILE10
put a3v_1 long MEMORY_FILE10
callfunction aes_3 1
math a3p_1 + 1
math a3p_2 + 1
math iv5_1 + 4
goto iv5_1 MEMORY_FILE10
put a3v_1 long MEMORY_FILE10
callfunction aes_3 1
math a3p_1 + 1
math a3p_2 + 1
math iv5_1 + 4
goto iv5_1 MEMORY_FILE10
put a3v_1 long MEMORY_FILE10
math ivar5 + 1
while ivar5 < 0x1e0
endif
endfunction
startfunction expand_aes_key
set MEMORY_FILE12 binary "\x63\x63\x63\x63\x7C\x7C\x7C\x7C\x77\x77\x77\x77\x7B\x7B\x7B\x7B\xF2\xF2\xF2\xF2\x6B\x6B\x6B\x6B\x6F\x6F\x6F\x6F\xC5\xC5\xC5\xC5\x30\x30\x30\x30\x01\x01\x01\x01\x67\x67\x67\x67\x2B\x2B\x2B\x2B\xFE\xFE\xFE\xFE\xD7\xD7\xD7\xD7\xAB\xAB\xAB\xAB\x76\x76\x76\x76\xCA\xCA\xCA\xCA\x82\x82\x82\x82\xC9\xC9\xC9\xC9\x7D\x7D\x7D\x7D\xFA\xFA\xFA\xFA\x59\x59\x59\x59\x47\x47\x47\x47\xF0\xF0\xF0\xF0\xAD\xAD\xAD\xAD\xD4\xD4\xD4\xD4\xA2\xA2\xA2\xA2\xAF\xAF\xAF\xAF\x9C\x9C\x9C\x9C\xA4\xA4\xA4\xA4\x72\x72\x72\x72\xC0\xC0\xC0\xC0\xB7\xB7\xB7\xB7\xFD\xFD\xFD\xFD\x93\x93\x93\x93\x26\x26\x26\x26\x36\x36\x36\x36\x3F\x3F\x3F\x3F\xF7\xF7\xF7\xF7\xCC\xCC\xCC\xCC\x34\x34\x34\x34\xA5\xA5\xA5\xA5\xE5\xE5\xE5\xE5\xF1\xF1\xF1\xF1\x71\x71\x71\x71\xD8\xD8\xD8\xD8\x31\x31\x31\x31\x15\x15\x15\x15\x04\x04\x04\x04\xC7\xC7\xC7\xC7\x23\x23\x23\x23\xC3\xC3\xC3\xC3\x18\x18\x18\x18\x96\x96\x96\x96\x05\x05\x05\x05\x9A\x9A\x9A\x9A\x07\x07\x07\x07\x12\x12\x12\x12\x80\x80\x80\x80\xE2\xE2\xE2\xE2\xEB\xEB\xEB\xEB\x27\x27\x27\x27\xB2\xB2\xB2\xB2\x75\x75\x75\x75\x09\x09\x09\x09\x83\x83\x83\x83\x2C\x2C\x2C\x2C\x1A\x1A\x1A\x1A\x1B\x1B\x1B\x1B\x6E\x6E\x6E\x6E\x5A\x5A\x5A\x5A\xA0\xA0\xA0\xA0\x52\x52\x52\x52\x3B\x3B\x3B\x3B\xD6\xD6\xD6\xD6\xB3\xB3\xB3\xB3\x29\x29\x29\x29\xE3\xE3\xE3\xE3\x2F\x2F\x2F\x2F\x84\x84\x84\x84\x53\x53\x53\x53\xD1\xD1\xD1\xD1\x00\x00\x00\x00\xED\xED\xED\xED\x20\x20\x20\x20\xFC\xFC\xFC\xFC\xB1\xB1\xB1\xB1\x5B\x5B\x5B\x5B\x6A\x6A\x6A\x6A\xCB\xCB\xCB\xCB\xBE\xBE\xBE\xBE\x39\x39\x39\x39\x4A\x4A\x4A\x4A\x4C\x4C\x4C\x4C\x58\x58\x58\x58\xCF\xCF\xCF\xCF\xD0\xD0\xD0\xD0\xEF\xEF\xEF\xEF\xAA\xAA\xAA\xAA\xFB\xFB\xFB\xFB\x43\x43\x43\x43\x4D\x4D\x4D\x4D\x33\x33\x33\x33\x85\x85\x85\x85\x45\x45\x45\x45\xF9\xF9\xF9\xF9\x02\x02\x02\x02\x7F\x7F\x7F\x7F\x50\x50\x50\x50\x3C\x3C\x3C\x3C\x9F\x9F\x9F\x9F\xA8\xA8\xA8\xA8\x51\x51\x51\x51\xA3\xA3\xA3\xA3\x40\x40\x40\x40\x8F\x8F\x8F\x8F\x92\x92\x92\x92\x9D\x9D\x9D\x9D\x38\x38\x38\x38\xF5\xF5\xF5\xF5\xBC\xBC\xBC\xBC\xB6\xB6\xB6\xB6\xDA\xDA\xDA\xDA\x21\x21\x21\x21\x10\x10\x10\x10\xFF\xFF\xFF\xFF\xF3\xF3\xF3\xF3\xD2\xD2\xD2\xD2\xCD\xCD\xCD\xCD\x0C\x0C\x0C\x0C\x13\x13\x13\x13\xEC\xEC\xEC\xEC\x5F\x5F\x5F\x5F\x97\x97\x97\x97\x44\x44\x44\x44\x17\x17\x17\x17\xC4\xC4\xC4\xC4\xA7\xA7\xA7\xA7\x7E\x7E\x7E\x7E\x3D\x3D\x3D\x3D\x64\x64\x64\x64\x5D\x5D\x5D\x5D\x19\x19\x19\x19\x73\x73\x73\x73\x60\x60\x60\x60\x81\x81\x81\x81\x4F\x4F\x4F\x4F\xDC\xDC\xDC\xDC\x22\x22\x22\x22\x2A\x2A\x2A\x2A\x90\x90\x90\x90\x88\x88\x88\x88\x46\x46\x46\x46\xEE\xEE\xEE\xEE\xB8\xB8\xB8\xB8\x14\x14\x14\x14\xDE\xDE\xDE\xDE\x5E\x5E\x5E\x5E\x0B\x0B\x0B\x0B\xDB\xDB\xDB\xDB\xE0\xE0\xE0\xE0\x32\x32\x32\x32\x3A\x3A\x3A\x3A\x0A\x0A\x0A\x0A\x49\x49\x49\x49\x06\x06\x06\x06\x24\x24\x24\x24\x5C\x5C\x5C\x5C\xC2\xC2\xC2\xC2\xD3\xD3\xD3\xD3\xAC\xAC\xAC\xAC\x62\x62\x62\x62\x91\x91\x91\x91\x95\x95\x95\x95\xE4\xE4\xE4\xE4\x79\x79\x79\x79\xE7\xE7\xE7\xE7\xC8\xC8\xC8\xC8\x37\x37\x37\x37\x6D\x6D\x6D\x6D\x8D\x8D\x8D\x8D\xD5\xD5\xD5\xD5\x4E\x4E\x4E\x4E\xA9\xA9\xA9\xA9\x6C\x6C\x6C\x6C\x56\x56\x56\x56\xF4\xF4\xF4\xF4\xEA\xEA\xEA\xEA\x65\x65\x65\x65\x7A\x7A\x7A\x7A\xAE\xAE\xAE\xAE\x08\x08\x08\x08\xBA\xBA\xBA\xBA\x78\x78\x78\x78\x25\x25\x25\x25\x2E\x2E\x2E\x2E\x1C\x1C\x1C\x1C\xA6\xA6\xA6\xA6\xB4\xB4\xB4\xB4\xC6\xC6\xC6\xC6\xE8\xE8\xE8\xE8\xDD\xDD\xDD\xDD\x74\x74\x74\x74\x1F\x1F\x1F\x1F\x4B\x4B\x4B\x4B\xBD\xBD\xBD\xBD\x8B\x8B\x8B\x8B\x8A\x8A\x8A\x8A\x70\x70\x70\x70\x3E\x3E\x3E\x3E\xB5\xB5\xB5\xB5\x66\x66\x66\x66\x48\x48\x48\x48\x03\x03\x03\x03\xF6\xF6\xF6\xF6\x0E\x0E\x0E\x0E\x61\x61\x61\x61\x35\x35\x35\x35\x57\x57\x57\x57\xB9\xB9\xB9\xB9\x86\x86\x86\x86\xC1\xC1\xC1\xC1\x1D\x1D\x1D\x1D\x9E\x9E\x9E\x9E\xE1\xE1\xE1\xE1\xF8\xF8\xF8\xF8\x98\x98\x98\x98\x11\x11\x11\x11\x69\x69\x69\x69\xD9\xD9\xD9\xD9\x8E\x8E\x8E\x8E\x94\x94\x94\x94\x9B\x9B\x9B\x9B\x1E\x1E\x1E\x1E\x87\x87\x87\x87\xE9\xE9\xE9\xE9\xCE\xCE\xCE\xCE\x55\x55\x55\x55\x28\x28\x28\x28\xDF\xDF\xDF\xDF\x8C\x8C\x8C\x8C\xA1\xA1\xA1\xA1\x89\x89\x89\x89\x0D\x0D\x0D\x0D\xBF\xBF\xBF\xBF\xE6\xE6\xE6\xE6\x42\x42\x42\x42\x68\x68\x68\x68\x41\x41\x41\x41\x99\x99\x99\x99\x2D\x2D\x2D\x2D\x0F\x0F\x0F\x0F\xB0\xB0\xB0\xB0\x54\x54\x54\x54\xBB\xBB\xBB\xBB\x16\x16\x16\x16"
math exp_key_pos * 4
goto exp_key_pos MEMORY_FILE12
get target_exp long MEMORY_FILE12
xmath result_exp1 "(target_exp >> 0x18) & 0xff"
xmath result_exp2 "((target_exp >> 0x10) & 0xff) & 0xff000000"
xmath result_exp3 "((target_exp >> 8) & 0xff) & 0xff0000"
xmath result_exp4 "(target_exp & 0xff) & 0xff00"
xmath result_exp5 "result_exp1 ^ result_exp2 ^ result_exp3 ^ result_exp4"
math exp_key_pos / 4
endfunction
startfunction aes_3
set MEMORY_FILE13 binary "\x50\xA7\xF4\x51\x53\x65\x41\x7E\xC3\xA4\x17\x1A\x96\x5E\x27\x3A\xCB\x6B\xAB\x3B\xF1\x45\x9D\x1F\xAB\x58\xFA\xAC\x93\x03\xE3\x4B\x55\xFA\x30\x20\xF6\x6D\x76\xAD\x91\x76\xCC\x88\x25\x4C\x02\xF5\xFC\xD7\xE5\x4F\xD7\xCB\x2A\xC5\x80\x44\x35\x26\x8F\xA3\x62\xB5\x49\x5A\xB1\xDE\x67\x1B\xBA\x25\x98\x0E\xEA\x45\xE1\xC0\xFE\x5D\x02\x75\x2F\xC3\x12\xF0\x4C\x81\xA3\x97\x46\x8D\xC6\xF9\xD3\x6B\xE7\x5F\x8F\x03\x95\x9C\x92\x15\xEB\x7A\x6D\xBF\xDA\x59\x52\x95\x2D\x83\xBE\xD4\xD3\x21\x74\x58\x29\x69\xE0\x49\x44\xC8\xC9\x8E\x6A\x89\xC2\x75\x78\x79\x8E\xF4\x6B\x3E\x58\x99\xDD\x71\xB9\x27\xB6\x4F\xE1\xBE\x17\xAD\x88\xF0\x66\xAC\x20\xC9\xB4\x3A\xCE\x7D\x18\x4A\xDF\x63\x82\x31\x1A\xE5\x60\x33\x51\x97\x45\x7F\x53\x62\xE0\x77\x64\xB1\x84\xAE\x6B\xBB\x1C\xA0\x81\xFE\x94\x2B\x08\xF9\x58\x68\x48\x70\x19\xFD\x45\x8F\x87\x6C\xDE\x94\xB7\xF8\x7B\x52\x23\xD3\x73\xAB\xE2\x02\x4B\x72\x57\x8F\x1F\xE3\x2A\xAB\x55\x66\x07\x28\xEB\xB2\x03\xC2\xB5\x2F\x9A\x7B\xC5\x86\xA5\x08\x37\xD3\xF2\x87\x28\x30\xB2\xA5\xBF\x23\xBA\x6A\x03\x02\x5C\x82\x16\xED\x2B\x1C\xCF\x8A\x92\xB4\x79\xA7\xF0\xF2\x07\xF3\xA1\xE2\x69\x4E\xCD\xF4\xDA\x65\xD5\xBE\x05\x06\x1F\x62\x34\xD1\x8A\xFE\xA6\xC4\x9D\x53\x2E\x34\xA0\x55\xF3\xA2\x32\xE1\x8A\x05\x75\xEB\xF6\xA4\x39\xEC\x83\x0B\xAA\xEF\x60\x40\x06\x9F\x71\x5E\x51\x10\x6E\xBD\xF9\x8A\x21\x3E\x3D\x06\xDD\x96\xAE\x05\x3E\xDD\x46\xBD\xE6\x4D\xB5\x8D\x54\x91\x05\x5D\xC4\x71\x6F\xD4\x06\x04\xFF\x15\x50\x60\x24\xFB\x98\x19\x97\xE9\xBD\xD6\xCC\x43\x40\x89\x77\x9E\xD9\x67\xBD\x42\xE8\xB0\x88\x8B\x89\x07\x38\x5B\x19\xE7\xDB\xEE\xC8\x79\x47\x0A\x7C\xA1\xE9\x0F\x42\x7C\xC9\x1E\x84\xF8\x00\x00\x00\x00\x83\x86\x80\x09\x48\xED\x2B\x32\xAC\x70\x11\x1E\x4E\x72\x5A\x6C\xFB\xFF\x0E\xFD\x56\x38\x85\x0F\x1E\xD5\xAE\x3D\x27\x39\x2D\x36\x64\xD9\x0F\x0A\x21\xA6\x5C\x68\xD1\x54\x5B\x9B\x3A\x2E\x36\x24\xB1\x67\x0A\x0C\x0F\xE7\x57\x93\xD2\x96\xEE\xB4\x9E\x91\x9B\x1B\x4F\xC5\xC0\x80\xA2\x20\xDC\x61\x69\x4B\x77\x5A\x16\x1A\x12\x1C\x0A\xBA\x93\xE2\xE5\x2A\xA0\xC0\x43\xE0\x22\x3C\x1D\x17\x1B\x12\x0B\x0D\x09\x0E\xAD\xC7\x8B\xF2\xB9\xA8\xB6\x2D\xC8\xA9\x1E\x14\x85\x19\xF1\x57\x4C\x07\x75\xAF\xBB\xDD\x99\xEE\xFD\x60\x7F\xA3\x9F\x26\x01\xF7\xBC\xF5\x72\x5C\xC5\x3B\x66\x44\x34\x7E\xFB\x5B\x76\x29\x43\x8B\xDC\xC6\x23\xCB\x68\xFC\xED\xB6\x63\xF1\xE4\xB8\xCA\xDC\x31\xD7\x10\x85\x63\x42\x40\x22\x97\x13\x20\x11\xC6\x84\x7D\x24\x4A\x85\xF8\x3D\xBB\xD2\x11\x32\xF9\xAE\x6D\xA1\x29\xC7\x4B\x2F\x9E\x1D\xF3\x30\xB2\xDC\xEC\x52\x86\x0D\xD0\xE3\xC1\x77\x6C\x16\xB3\x2B\x99\xB9\x70\xA9\xFA\x48\x94\x11\x22\x64\xE9\x47\xC4\x8C\xFC\xA8\x1A\x3F\xF0\xA0\xD8\x2C\x7D\x56\xEF\x90\x33\x22\xC7\x4E\x49\x87\xC1\xD1\x38\xD9\xFE\xA2\xCA\x8C\x36\x0B\xD4\x98\xCF\x81\xF5\xA6\x28\xDE\x7A\xA5\x26\x8E\xB7\xDA\xA4\xBF\xAD\x3F\xE4\x9D\x3A\x2C\x0D\x92\x78\x50\x9B\xCC\x5F\x6A\x62\x46\x7E\x54\xC2\x13\x8D\xF6\xE8\xB8\xD8\x90\x5E\xF7\x39\x2E\xF5\xAF\xC3\x82\xBE\x80\x5D\x9F\x7C\x93\xD0\x69\xA9\x2D\xD5\x6F\xB3\x12\x25\xCF\x3B\x99\xAC\xC8\xA7\x7D\x18\x10\x6E\x63\x9C\xE8\x7B\xBB\x3B\xDB\x09\x78\x26\xCD\xF4\x18\x59\x6E\x01\xB7\x9A\xEC\xA8\x9A\x4F\x83\x65\x6E\x95\xE6\x7E\xE6\xFF\xAA\x08\xCF\xBC\x21\xE6\xE8\x15\xEF\xD9\x9B\xE7\xBA\xCE\x36\x6F\x4A\xD4\x09\x9F\xEA\xD6\x7C\xB0\x29\xAF\xB2\xA4\x31\x31\x23\x3F\x2A\x30\x94\xA5\xC6\xC0\x66\xA2\x35\x37\xBC\x4E\x74\xA6\xCA\x82\xFC\xB0\xD0\x90\xE0\x15\xD8\xA7\x33\x4A\x98\x04\xF1\xF7\xDA\xEC\x41\x0E\x50\xCD\x7F\x2F\xF6\x91\x17\x8D\xD6\x4D\x76\x4D\xB0\xEF\x43\x54\x4D\xAA\xCC\xDF\x04\x96\xE4\xE3\xB5\xD1\x9E\x1B\x88\x6A\x4C\xB8\x1F\x2C\xC1\x7F\x51\x65\x46\x04\xEA\x5E\x9D\x5D\x35\x8C\x01\x73\x74\x87\xFA\x2E\x41\x0B\xFB\x5A\x1D\x67\xB3\x52\xD2\xDB\x92\x33\x56\x10\xE9\x13\x47\xD6\x6D\x8C\x61\xD7\x9A\x7A\x0C\xA1\x37\x8E\x14\xF8\x59\x89\x3C\x13\xEB\xEE\x27\xA9\xCE\x35\xC9\x61\xB7\xED\xE5\x1C\xE1\x3C\xB1\x47\x7A\x59\xDF\xD2\x9C\x3F\x73\xF2\x55\x79\xCE\x14\x18\xBF\x37\xC7\x73\xEA\xCD\xF7\x53\x5B\xAA\xFD\x5F\x14\x6F\x3D\xDF\x86\xDB\x44\x78\x81\xF3\xAF\xCA\x3E\xC4\x68\xB9\x2C\x34\x24\x38\x5F\x40\xA3\xC2\x72\xC3\x1D\x16\x0C\x25\xE2\xBC\x8B\x49\x3C\x28\x41\x95\x0D\xFF\x71\x01\xA8\x39\xDE\xB3\x0C\x08\x9C\xE4\xB4\xD8\x90\xC1\x56\x64\x61\x84\xCB\x7B\x70\xB6\x32\xD5\x74\x5C\x6C\x48\x42\x57\xB8\xD0\xA7\xF4\x51\x50\x65\x41\x7E\x53\xA4\x17\x1A\xC3\x5E\x27\x3A\x96\x6B\xAB\x3B\xCB\x45\x9D\x1F\xF1\x58\xFA\xAC\xAB\x03\xE3\x4B\x93\xFA\x30\x20\x55\x6D\x76\xAD\xF6\x76\xCC\x88\x91\x4C\x02\xF5\x25\xD7\xE5\x4F\xFC\xCB\x2A\xC5\xD7\x44\x35\x26\x80\xA3\x62\xB5\x8F\x5A\xB1\xDE\x49\x1B\xBA\x25\x67\x0E\xEA\x45\x98\xC0\xFE\x5D\xE1\x75\x2F\xC3\x02\xF0\x4C\x81\x12\x97\x46\x8D\xA3\xF9\xD3\x6B\xC6\x5F\x8F\x03\xE7\x9C\x92\x15\x95\x7A\x6D\xBF\xEB\x59\x52\x95\xDA\x83\xBE\xD4\x2D\x21\x74\x58\xD3\x69\xE0\x49\x29\xC8\xC9\x8E\x44\x89\xC2\x75\x6A\x79\x8E\xF4\x78\x3E\x58\x99\x6B\x71\xB9\x27\xDD\x4F\xE1\xBE\xB6\xAD\x88\xF0\x17\xAC\x20\xC9\x66\x3A\xCE\x7D\xB4\x4A\xDF\x63\x18\x31\x1A\xE5\x82\x33\x51\x97\x60\x7F\x53\x62\x45\x77\x64\xB1\xE0\xAE\x6B\xBB\x84\xA0\x81\xFE\x1C\x2B\x08\xF9\x94\x68\x48\x70\x58\xFD\x45\x8F\x19\x6C\xDE\x94\x87\xF8\x7B\x52\xB7\xD3\x73\xAB\x23\x02\x4B\x72\xE2\x8F\x1F\xE3\x57\xAB\x55\x66\x2A\x28\xEB\xB2\x07\xC2\xB5\x2F\x03\x7B\xC5\x86\x9A\x08\x37\xD3\xA5\x87\x28\x30\xF2\xA5\xBF\x23\xB2\x6A\x03\x02\xBA\x82\x16\xED\x5C\x1C\xCF\x8A\x2B\xB4\x79\xA7\x92\xF2\x07\xF3\xF0\xE2\x69\x4E\xA1\xF4\xDA\x65\xCD\xBE\x05\x06\xD5\x62\x34\xD1\x1F\xFE\xA6\xC4\x8A\x53\x2E\x34\x9D\x55\xF3\xA2\xA0\xE1\x8A\x05\x32\xEB\xF6\xA4\x75\xEC\x83\x0B\x39\xEF\x60\x40\xAA\x9F\x71\x5E\x06\x10\x6E\xBD\x51\x8A\x21\x3E\xF9\x06\xDD\x96\x3D\x05\x3E\xDD\xAE\xBD\xE6\x4D\x46\x8D\x54\x91\xB5\x5D\xC4\x71\x05\xD4\x06\x04\x6F\x15\x50\x60\xFF\xFB\x98\x19\x24\xE9\xBD\xD6\x97\x43\x40\x89\xCC\x9E\xD9\x67\x77\x42\xE8\xB0\xBD\x8B\x89\x07\x88\x5B\x19\xE7\x38\xEE\xC8\x79\xDB\x0A\x7C\xA1\x47\x0F\x42\x7C\xE9\x1E\x84\xF8\xC9\x00\x00\x00\x00\x86\x80\x09\x83\xED\x2B\x32\x48\x70\x11\x1E\xAC\x72\x5A\x6C\x4E\xFF\x0E\xFD\xFB\x38\x85\x0F\x56\xD5\xAE\x3D\x1E\x39\x2D\x36\x27\xD9\x0F\x0A\x64\xA6\x5C\x68\x21\x54\x5B\x9B\xD1\x2E\x36\x24\x3A\x67\x0A\x0C\xB1\xE7\x57\x93\x0F\x96\xEE\xB4\xD2\x91\x9B\x1B\x9E\xC5\xC0\x80\x4F\x20\xDC\x61\xA2\x4B\x77\x5A\x69\x1A\x12\x1C\x16\xBA\x93\xE2\x0A\x2A\xA0\xC0\xE5\xE0\x22\x3C\x43\x17\x1B\x12\x1D\x0D\x09\x0E\x0B\xC7\x8B\xF2\xAD\xA8\xB6\x2D\xB9\xA9\x1E\x14\xC8\x19\xF1\x57\x85\x07\x75\xAF\x4C\xDD\x99\xEE\xBB\x60\x7F\xA3\xFD\x26\x01\xF7\x9F\xF5\x72\x5C\xBC\x3B\x66\x44\xC5\x7E\xFB\x5B\x34\x29\x43\x8B\x76\xC6\x23\xCB\xDC\xFC\xED\xB6\x68\xF1\xE4\xB8\x63\xDC\x31\xD7\xCA\x85\x63\x42\x10\x22\x97\x13\x40\x11\xC6\x84\x20\x24\x4A\x85\x7D\x3D\xBB\xD2\xF8\x32\xF9\xAE\x11\xA1\x29\xC7\x6D\x2F\x9E\x1D\x4B\x30\xB2\xDC\xF3\x52\x86\x0D\xEC\xE3\xC1\x77\xD0\x16\xB3\x2B\x6C\xB9\x70\xA9\x99\x48\x94\x11\xFA\x64\xE9\x47\x22\x8C\xFC\xA8\xC4\x3F\xF0\xA0\x1A\x2C\x7D\x56\xD8\x90\x33\x22\xEF\x4E\x49\x87\xC7\xD1\x38\xD9\xC1\xA2\xCA\x8C\xFE\x0B\xD4\x98\x36\x81\xF5\xA6\xCF\xDE\x7A\xA5\x28\x8E\xB7\xDA\x26\xBF\xAD\x3F\xA4\x9D\x3A\x2C\xE4\x92\x78\x50\x0D\xCC\x5F\x6A\x9B\x46\x7E\x54\x62\x13\x8D\xF6\xC2\xB8\xD8\x90\xE8\xF7\x39\x2E\x5E\xAF\xC3\x82\xF5\x80\x5D\x9F\xBE\x93\xD0\x69\x7C\x2D\xD5\x6F\xA9\x12\x25\xCF\xB3\x99\xAC\xC8\x3B\x7D\x18\x10\xA7\x63\x9C\xE8\x6E\xBB\x3B\xDB\x7B\x78\x26\xCD\x09\x18\x59\x6E\xF4\xB7\x9A\xEC\x01\x9A\x4F\x83\xA8\x6E\x95\xE6\x65\xE6\xFF\xAA\x7E\xCF\xBC\x21\x08\xE8\x15\xEF\xE6\x9B\xE7\xBA\xD9\x36\x6F\x4A\xCE\x09\x9F\xEA\xD4\x7C\xB0\x29\xD6\xB2\xA4\x31\xAF\x23\x3F\x2A\x31\x94\xA5\xC6\x30\x66\xA2\x35\xC0\xBC\x4E\x74\x37\xCA\x82\xFC\xA6\xD0\x90\xE0\xB0\xD8\xA7\x33\x15\x98\x04\xF1\x4A\xDA\xEC\x41\xF7\x50\xCD\x7F\x0E\xF6\x91\x17\x2F\xD6\x4D\x76\x8D\xB0\xEF\x43\x4D\x4D\xAA\xCC\x54\x04\x96\xE4\xDF\xB5\xD1\x9E\xE3\x88\x6A\x4C\x1B\x1F\x2C\xC1\xB8\x51\x65\x46\x7F\xEA\x5E\x9D\x04\x35\x8C\x01\x5D\x74\x87\xFA\x73\x41\x0B\xFB\x2E\x1D\x67\xB3\x5A\xD2\xDB\x92\x52\x56\x10\xE9\x33\x47\xD6\x6D\x13\x61\xD7\x9A\x8C\x0C\xA1\x37\x7A\x14\xF8\x59\x8E\x3C\x13\xEB\x89\x27\xA9\xCE\xEE\xC9\x61\xB7\x35\xE5\x1C\xE1\xED\xB1\x47\x7A\x3C\xDF\xD2\x9C\x59\x73\xF2\x55\x3F\xCE\x14\x18\x79\x37\xC7\x73\xBF\xCD\xF7\x53\xEA\xAA\xFD\x5F\x5B\x6F\x3D\xDF\x14\xDB\x44\x78\x86\xF3\xAF\xCA\x81\xC4\x68\xB9\x3E\x34\x24\x38\x2C\x40\xA3\xC2\x5F\xC3\x1D\x16\x72\x25\xE2\xBC\x0C\x49\x3C\x28\x8B\x95\x0D\xFF\x41\x01\xA8\x39\x71\xB3\x0C\x08\xDE\xE4\xB4\xD8\x9C\xC1\x56\x64\x90\x84\xCB\x7B\x61\xB6\x32\xD5\x70\x5C\x6C\x48\x74\x57\xB8\xD0\x42\xF4\x51\x50\xA7\x41\x7E\x53\x65\x17\x1A\xC3\xA4\x27\x3A\x96\x5E\xAB\x3B\xCB\x6B\x9D\x1F\xF1\x45\xFA\xAC\xAB\x58\xE3\x4B\x93\x03\x30\x20\x55\xFA\x76\xAD\xF6\x6D\xCC\x88\x91\x76\x02\xF5\x25\x4C\xE5\x4F\xFC\xD7\x2A\xC5\xD7\xCB\x35\x26\x80\x44\x62\xB5\x8F\xA3\xB1\xDE\x49\x5A\xBA\x25\x67\x1B\xEA\x45\x98\x0E\xFE\x5D\xE1\xC0\x2F\xC3\x02\x75\x4C\x81\x12\xF0\x46\x8D\xA3\x97\xD3\x6B\xC6\xF9\x8F\x03\xE7\x5F\x92\x15\x95\x9C\x6D\xBF\xEB\x7A\x52\x95\xDA\x59\xBE\xD4\x2D\x83\x74\x58\xD3\x21\xE0\x49\x29\x69\xC9\x8E\x44\xC8\xC2\x75\x6A\x89\x8E\xF4\x78\x79\x58\x99\x6B\x3E\xB9\x27\xDD\x71\xE1\xBE\xB6\x4F\x88\xF0\x17\xAD\x20\xC9\x66\xAC\xCE\x7D\xB4\x3A\xDF\x63\x18\x4A\x1A\xE5\x82\x31\x51\x97\x60\x33\x53\x62\x45\x7F\x64\xB1\xE0\x77\x6B\xBB\x84\xAE\x81\xFE\x1C\xA0\x08\xF9\x94\x2B\x48\x70\x58\x68\x45\x8F\x19\xFD\xDE\x94\x87\x6C\x7B\x52\xB7\xF8\x73\xAB\x23\xD3\x4B\x72\xE2\x02\x1F\xE3\x57\x8F\x55\x66\x2A\xAB\xEB\xB2\x07\x28\xB5\x2F\x03\xC2\xC5\x86\x9A\x7B\x37\xD3\xA5\x08\x28\x30\xF2\x87\xBF\x23\xB2\xA5\x03\x02\xBA\x6A\x16\xED\x5C\x82\xCF\x8A\x2B\x1C\x79\xA7\x92\xB4\x07\xF3\xF0\xF2\x69\x4E\xA1\xE2\xDA\x65\xCD\xF4\x05\x06\xD5\xBE\x34\xD1\x1F\x62\xA6\xC4\x8A\xFE\x2E\x34\x9D\x53\xF3\xA2\xA0\x55\x8A\x05\x32\xE1\xF6\xA4\x75\xEB\x83\x0B\x39\xEC\x60\x40\xAA\xEF\x71\x5E\x06\x9F\x6E\xBD\x51\x10\x21\x3E\xF9\x8A\xDD\x96\x3D\x06\x3E\xDD\xAE\x05\xE6\x4D\x46\xBD\x54\x91\xB5\x8D\xC4\x71\x05\x5D\x06\x04\x6F\xD4\x50\x60\xFF\x15\x98\x19\x24\xFB\xBD\xD6\x97\xE9\x40\x89\xCC\x43\xD9\x67\x77\x9E\xE8\xB0\xBD\x42\x89\x07\x88\x8B\x19\xE7\x38\x5B\xC8\x79\xDB\xEE\x7C\xA1\x47\x0A\x42\x7C\xE9\x0F\x84\xF8\xC9\x1E\x00\x00\x00\x00\x80\x09\x83\x86\x2B\x32\x48\xED\x11\x1E\xAC\x70\x5A\x6C\x4E\x72\x0E\xFD\xFB\xFF\x85\x0F\x56\x38\xAE\x3D\x1E\xD5\x2D\x36\x27\x39\x0F\x0A\x64\xD9\x5C\x68\x21\xA6\x5B\x9B\xD1\x54\x36\x24\x3A\x2E\x0A\x0C\xB1\x67\x57\x93\x0F\xE7\xEE\xB4\xD2\x96\x9B\x1B\x9E\x91\xC0\x80\x4F\xC5\xDC\x61\xA2\x20\x77\x5A\x69\x4B\x12\x1C\x16\x1A\x93\xE2\x0A\xBA\xA0\xC0\xE5\x2A\x22\x3C\x43\xE0\x1B\x12\x1D\x17\x09\x0E\x0B\x0D\x8B\xF2\xAD\xC7\xB6\x2D\xB9\xA8\x1E\x14\xC8\xA9\xF1\x57\x85\x19\x75\xAF\x4C\x07\x99\xEE\xBB\xDD\x7F\xA3\xFD\x60\x01\xF7\x9F\x26\x72\x5C\xBC\xF5\x66\x44\xC5\x3B\xFB\x5B\x34\x7E\x43\x8B\x76\x29\x23\xCB\xDC\xC6\xED\xB6\x68\xFC\xE4\xB8\x63\xF1\x31\xD7\xCA\xDC\x63\x42\x10\x85\x97\x13\x40\x22\xC6\x84\x20\x11\x4A\x85\x7D\x24\xBB\xD2\xF8\x3D\xF9\xAE\x11\x32\x29\xC7\x6D\xA1\x9E\x1D\x4B\x2F\xB2\xDC\xF3\x30\x86\x0D\xEC\x52\xC1\x77\xD0\xE3\xB3\x2B\x6C\x16\x70\xA9\x99\xB9\x94\x11\xFA\x48\xE9\x47\x22\x64\xFC\xA8\xC4\x8C\xF0\xA0\x1A\x3F\x7D\x56\xD8\x2C\x33\x22\xEF\x90\x49\x87\xC7\x4E\x38\xD9\xC1\xD1\xCA\x8C\xFE\xA2\xD4\x98\x36\x0B\xF5\xA6\xCF\x81\x7A\xA5\x28\xDE\xB7\xDA\x26\x8E\xAD\x3F\xA4\xBF\x3A\x2C\xE4\x9D\x78\x50\x0D\x92\x5F\x6A\x9B\xCC\x7E\x54\x62\x46\x8D\xF6\xC2\x13\xD8\x90\xE8\xB8\x39\x2E\x5E\xF7\xC3\x82\xF5\xAF\x5D\x9F\xBE\x80\xD0\x69\x7C\x93\xD5\x6F\xA9\x2D\x25\xCF\xB3\x12\xAC\xC8\x3B\x99\x18\x10\xA7\x7D\x9C\xE8\x6E\x63\x3B\xDB\x7B\xBB\x26\xCD\x09\x78\x59\x6E\xF4\x18\x9A\xEC\x01\xB7\x4F\x83\xA8\x9A\x95\xE6\x65\x6E\xFF\xAA\x7E\xE6\xBC\x21\x08\xCF\x15\xEF\xE6\xE8\xE7\xBA\xD9\x9B\x6F\x4A\xCE\x36\x9F\xEA\xD4\x09\xB0\x29\xD6\x7C\xA4\x31\xAF\xB2\x3F\x2A\x31\x23\xA5\xC6\x30\x94\xA2\x35\xC0\x66\x4E\x74\x37\xBC\x82\xFC\xA6\xCA\x90\xE0\xB0\xD0\xA7\x33\x15\xD8\x04\xF1\x4A\x98\xEC\x41\xF7\xDA\xCD\x7F\x0E\x50\x91\x17\x2F\xF6\x4D\x76\x8D\xD6\xEF\x43\x4D\xB0\xAA\xCC\x54\x4D\x96\xE4\xDF\x04\xD1\x9E\xE3\xB5\x6A\x4C\x1B\x88\x2C\xC1\xB8\x1F\x65\x46\x7F\x51\x5E\x9D\x04\xEA\x8C\x01\x5D\x35\x87\xFA\x73\x74\x0B\xFB\x2E\x41\x67\xB3\x5A\x1D\xDB\x92\x52\xD2\x10\xE9\x33\x56\xD6\x6D\x13\x47\xD7\x9A\x8C\x61\xA1\x37\x7A\x0C\xF8\x59\x8E\x14\x13\xEB\x89\x3C\xA9\xCE\xEE\x27\x61\xB7\x35\xC9\x1C\xE1\xED\xE5\x47\x7A\x3C\xB1\xD2\x9C\x59\xDF\xF2\x55\x3F\x73\x14\x18\x79\xCE\xC7\x73\xBF\x37\xF7\x53\xEA\xCD\xFD\x5F\x5B\xAA\x3D\xDF\x14\x6F\x44\x78\x86\xDB\xAF\xCA\x81\xF3\x68\xB9\x3E\xC4\x24\x38\x2C\x34\xA3\xC2\x5F\x40\x1D\x16\x72\xC3\xE2\xBC\x0C\x25\x3C\x28\x8B\x49\x0D\xFF\x41\x95\xA8\x39\x71\x01\x0C\x08\xDE\xB3\xB4\xD8\x9C\xE4\x56\x64\x90\xC1\xCB\x7B\x61\x84\x32\xD5\x70\xB6\x6C\x48\x74\x5C\xB8\xD0\x42\x57\x51\x50\xA7\xF4\x7E\x53\x65\x41\x1A\xC3\xA4\x17\x3A\x96\x5E\x27\x3B\xCB\x6B\xAB\x1F\xF1\x45\x9D\xAC\xAB\x58\xFA\x4B\x93\x03\xE3\x20\x55\xFA\x30\xAD\xF6\x6D\x76\x88\x91\x76\xCC\xF5\x25\x4C\x02\x4F\xFC\xD7\xE5\xC5\xD7\xCB\x2A\x26\x80\x44\x35\xB5\x8F\xA3\x62\xDE\x49\x5A\xB1\x25\x67\x1B\xBA\x45\x98\x0E\xEA\x5D\xE1\xC0\xFE\xC3\x02\x75\x2F\x81\x12\xF0\x4C\x8D\xA3\x97\x46\x6B\xC6\xF9\xD3\x03\xE7\x5F\x8F\x15\x95\x9C\x92\xBF\xEB\x7A\x6D\x95\xDA\x59\x52\xD4\x2D\x83\xBE\x58\xD3\x21\x74\x49\x29\x69\xE0\x8E\x44\xC8\xC9\x75\x6A\x89\xC2\xF4\x78\x79\x8E\x99\x6B\x3E\x58\x27\xDD\x71\xB9\xBE\xB6\x4F\xE1\xF0\x17\xAD\x88\xC9\x66\xAC\x20\x7D\xB4\x3A\xCE\x63\x18\x4A\xDF\xE5\x82\x31\x1A\x97\x60\x33\x51\x62\x45\x7F\x53\xB1\xE0\x77\x64\xBB\x84\xAE\x6B\xFE\x1C\xA0\x81\xF9\x94\x2B\x08\x70\x58\x68\x48\x8F\x19\xFD\x45\x94\x87\x6C\xDE\x52\xB7\xF8\x7B\xAB\x23\xD3\x73\x72\xE2\x02\x4B\xE3\x57\x8F\x1F\x66\x2A\xAB\x55\xB2\x07\x28\xEB\x2F\x03\xC2\xB5\x86\x9A\x7B\xC5\xD3\xA5\x08\x37\x30\xF2\x87\x28\x23\xB2\xA5\xBF\x02\xBA\x6A\x03\xED\x5C\x82\x16\x8A\x2B\x1C\xCF\xA7\x92\xB4\x79\xF3\xF0\xF2\x07\x4E\xA1\xE2\x69\x65\xCD\xF4\xDA\x06\xD5\xBE\x05\xD1\x1F\x62\x34\xC4\x8A\xFE\xA6\x34\x9D\x53\x2E\xA2\xA0\x55\xF3\x05\x32\xE1\x8A\xA4\x75\xEB\xF6\x0B\x39\xEC\x83\x40\xAA\xEF\x60\x5E\x06\x9F\x71\xBD\x51\x10\x6E\x3E\xF9\x8A\x21\x96\x3D\x06\xDD\xDD\xAE\x05\x3E\x4D\x46\xBD\xE6\x91\xB5\x8D\x54\x71\x05\x5D\xC4\x04\x6F\xD4\x06\x60\xFF\x15\x50\x19\x24\xFB\x98\xD6\x97\xE9\xBD\x89\xCC\x43\x40\x67\x77\x9E\xD9\xB0\xBD\x42\xE8\x07\x88\x8B\x89\xE7\x38\x5B\x19\x79\xDB\xEE\xC8\xA1\x47\x0A\x7C\x7C\xE9\x0F\x42\xF8\xC9\x1E\x84\x00\x00\x00\x00\x09\x83\x86\x80\x32\x48\xED\x2B\x1E\xAC\x70\x11\x6C\x4E\x72\x5A\xFD\xFB\xFF\x0E\x0F\x56\x38\x85\x3D\x1E\xD5\xAE\x36\x27\x39\x2D\x0A\x64\xD9\x0F\x68\x21\xA6\x5C\x9B\xD1\x54\x5B\x24\x3A\x2E\x36\x0C\xB1\x67\x0A\x93\x0F\xE7\x57\xB4\xD2\x96\xEE\x1B\x9E\x91\x9B\x80\x4F\xC5\xC0\x61\xA2\x20\xDC\x5A\x69\x4B\x77\x1C\x16\x1A\x12\xE2\x0A\xBA\x93\xC0\xE5\x2A\xA0\x3C\x43\xE0\x22\x12\x1D\x17\x1B\x0E\x0B\x0D\x09\xF2\xAD\xC7\x8B\x2D\xB9\xA8\xB6\x14\xC8\xA9\x1E\x57\x85\x19\xF1\xAF\x4C\x07\x75\xEE\xBB\xDD\x99\xA3\xFD\x60\x7F\xF7\x9F\x26\x01\x5C\xBC\xF5\x72\x44\xC5\x3B\x66\x5B\x34\x7E\xFB\x8B\x76\x29\x43\xCB\xDC\xC6\x23\xB6\x68\xFC\xED\xB8\x63\xF1\xE4\xD7\xCA\xDC\x31\x42\x10\x85\x63\x13\x40\x22\x97\x84\x20\x11\xC6\x85\x7D\x24\x4A\xD2\xF8\x3D\xBB\xAE\x11\x32\xF9\xC7\x6D\xA1\x29\x1D\x4B\x2F\x9E\xDC\xF3\x30\xB2\x0D\xEC\x52\x86\x77\xD0\xE3\xC1\x2B\x6C\x16\xB3\xA9\x99\xB9\x70\x11\xFA\x48\x94\x47\x22\x64\xE9\xA8\xC4\x8C\xFC\xA0\x1A\x3F\xF0\x56\xD8\x2C\x7D\x22\xEF\x90\x33\x87\xC7\x4E\x49\xD9\xC1\xD1\x38\x8C\xFE\xA2\xCA\x98\x36\x0B\xD4\xA6\xCF\x81\xF5\xA5\x28\xDE\x7A\xDA\x26\x8E\xB7\x3F\xA4\xBF\xAD\x2C\xE4\x9D\x3A\x50\x0D\x92\x78\x6A\x9B\xCC\x5F\x54\x62\x46\x7E\xF6\xC2\x13\x8D\x90\xE8\xB8\xD8\x2E\x5E\xF7\x39\x82\xF5\xAF\xC3\x9F\xBE\x80\x5D\x69\x7C\x93\xD0\x6F\xA9\x2D\xD5\xCF\xB3\x12\x25\xC8\x3B\x99\xAC\x10\xA7\x7D\x18\xE8\x6E\x63\x9C\xDB\x7B\xBB\x3B\xCD\x09\x78\x26\x6E\xF4\x18\x59\xEC\x01\xB7\x9A\x83\xA8\x9A\x4F\xE6\x65\x6E\x95\xAA\x7E\xE6\xFF\x21\x08\xCF\xBC\xEF\xE6\xE8\x15\xBA\xD9\x9B\xE7\x4A\xCE\x36\x6F\xEA\xD4\x09\x9F\x29\xD6\x7C\xB0\x31\xAF\xB2\xA4\x2A\x31\x23\x3F\xC6\x30\x94\xA5\x35\xC0\x66\xA2\x74\x37\xBC\x4E\xFC\xA6\xCA\x82\xE0\xB0\xD0\x90\x33\x15\xD8\xA7\xF1\x4A\x98\x04\x41\xF7\xDA\xEC\x7F\x0E\x50\xCD\x17\x2F\xF6\x91\x76\x8D\xD6\x4D\x43\x4D\xB0\xEF\xCC\x54\x4D\xAA\xE4\xDF\x04\x96\x9E\xE3\xB5\xD1\x4C\x1B\x88\x6A\xC1\xB8\x1F\x2C\x46\x7F\x51\x65\x9D\x04\xEA\x5E\x01\x5D\x35\x8C\xFA\x73\x74\x87\xFB\x2E\x41\x0B\xB3\x5A\x1D\x67\x92\x52\xD2\xDB\xE9\x33\x56\x10\x6D\x13\x47\xD6\x9A\x8C\x61\xD7\x37\x7A\x0C\xA1\x59\x8E\x14\xF8\xEB\x89\x3C\x13\xCE\xEE\x27\xA9\xB7\x35\xC9\x61\xE1\xED\xE5\x1C\x7A\x3C\xB1\x47\x9C\x59\xDF\xD2\x55\x3F\x73\xF2\x18\x79\xCE\x14\x73\xBF\x37\xC7\x53\xEA\xCD\xF7\x5F\x5B\xAA\xFD\xDF\x14\x6F\x3D\x78\x86\xDB\x44\xCA\x81\xF3\xAF\xB9\x3E\xC4\x68\x38\x2C\x34\x24\xC2\x5F\x40\xA3\x16\x72\xC3\x1D\xBC\x0C\x25\xE2\x28\x8B\x49\x3C\xFF\x41\x95\x0D\x39\x71\x01\xA8\x08\xDE\xB3\x0C\xD8\x9C\xE4\xB4\x64\x90\xC1\x56\x7B\x61\x84\xCB\xD5\x70\xB6\x32\x48\x74\x5C\x6C\xD0\x42\x57\xB8"
set MEMORY_FILE14 binary "\x63\x63\x63\x63\x7C\x7C\x7C\x7C\x77\x77\x77\x77\x7B\x7B\x7B\x7B\xF2\xF2\xF2\xF2\x6B\x6B\x6B\x6B\x6F\x6F\x6F\x6F\xC5\xC5\xC5\xC5\x30\x30\x30\x30\x01\x01\x01\x01\x67\x67\x67\x67\x2B\x2B\x2B\x2B\xFE\xFE\xFE\xFE\xD7\xD7\xD7\xD7\xAB\xAB\xAB\xAB\x76\x76\x76\x76\xCA\xCA\xCA\xCA\x82\x82\x82\x82\xC9\xC9\xC9\xC9\x7D\x7D\x7D\x7D\xFA\xFA\xFA\xFA\x59\x59\x59\x59\x47\x47\x47\x47\xF0\xF0\xF0\xF0\xAD\xAD\xAD\xAD\xD4\xD4\xD4\xD4\xA2\xA2\xA2\xA2\xAF\xAF\xAF\xAF\x9C\x9C\x9C\x9C\xA4\xA4\xA4\xA4\x72\x72\x72\x72\xC0\xC0\xC0\xC0\xB7\xB7\xB7\xB7\xFD\xFD\xFD\xFD\x93\x93\x93\x93\x26\x26\x26\x26\x36\x36\x36\x36\x3F\x3F\x3F\x3F\xF7\xF7\xF7\xF7\xCC\xCC\xCC\xCC\x34\x34\x34\x34\xA5\xA5\xA5\xA5\xE5\xE5\xE5\xE5\xF1\xF1\xF1\xF1\x71\x71\x71\x71\xD8\xD8\xD8\xD8\x31\x31\x31\x31\x15\x15\x15\x15\x04\x04\x04\x04\xC7\xC7\xC7\xC7\x23\x23\x23\x23\xC3\xC3\xC3\xC3\x18\x18\x18\x18\x96\x96\x96\x96\x05\x05\x05\x05\x9A\x9A\x9A\x9A\x07\x07\x07\x07\x12\x12\x12\x12\x80\x80\x80\x80\xE2\xE2\xE2\xE2\xEB\xEB\xEB\xEB\x27\x27\x27\x27\xB2\xB2\xB2\xB2\x75\x75\x75\x75\x09\x09\x09\x09\x83\x83\x83\x83\x2C\x2C\x2C\x2C\x1A\x1A\x1A\x1A\x1B\x1B\x1B\x1B\x6E\x6E\x6E\x6E\x5A\x5A\x5A\x5A\xA0\xA0\xA0\xA0\x52\x52\x52\x52\x3B\x3B\x3B\x3B\xD6\xD6\xD6\xD6\xB3\xB3\xB3\xB3\x29\x29\x29\x29\xE3\xE3\xE3\xE3\x2F\x2F\x2F\x2F\x84\x84\x84\x84\x53\x53\x53\x53\xD1\xD1\xD1\xD1\x00\x00\x00\x00\xED\xED\xED\xED\x20\x20\x20\x20\xFC\xFC\xFC\xFC\xB1\xB1\xB1\xB1\x5B\x5B\x5B\x5B\x6A\x6A\x6A\x6A\xCB\xCB\xCB\xCB\xBE\xBE\xBE\xBE\x39\x39\x39\x39\x4A\x4A\x4A\x4A\x4C\x4C\x4C\x4C\x58\x58\x58\x58\xCF\xCF\xCF\xCF\xD0\xD0\xD0\xD0\xEF\xEF\xEF\xEF\xAA\xAA\xAA\xAA\xFB\xFB\xFB\xFB\x43\x43\x43\x43\x4D\x4D\x4D\x4D\x33\x33\x33\x33\x85\x85\x85\x85\x45\x45\x45\x45\xF9\xF9\xF9\xF9\x02\x02\x02\x02\x7F\x7F\x7F\x7F\x50\x50\x50\x50\x3C\x3C\x3C\x3C\x9F\x9F\x9F\x9F\xA8\xA8\xA8\xA8\x51\x51\x51\x51\xA3\xA3\xA3\xA3\x40\x40\x40\x40\x8F\x8F\x8F\x8F\x92\x92\x92\x92\x9D\x9D\x9D\x9D\x38\x38\x38\x38\xF5\xF5\xF5\xF5\xBC\xBC\xBC\xBC\xB6\xB6\xB6\xB6\xDA\xDA\xDA\xDA\x21\x21\x21\x21\x10\x10\x10\x10\xFF\xFF\xFF\xFF\xF3\xF3\xF3\xF3\xD2\xD2\xD2\xD2\xCD\xCD\xCD\xCD\x0C\x0C\x0C\x0C\x13\x13\x13\x13\xEC\xEC\xEC\xEC\x5F\x5F\x5F\x5F\x97\x97\x97\x97\x44\x44\x44\x44\x17\x17\x17\x17\xC4\xC4\xC4\xC4\xA7\xA7\xA7\xA7\x7E\x7E\x7E\x7E\x3D\x3D\x3D\x3D\x64\x64\x64\x64\x5D\x5D\x5D\x5D\x19\x19\x19\x19\x73\x73\x73\x73\x60\x60\x60\x60\x81\x81\x81\x81\x4F\x4F\x4F\x4F\xDC\xDC\xDC\xDC\x22\x22\x22\x22\x2A\x2A\x2A\x2A\x90\x90\x90\x90\x88\x88\x88\x88\x46\x46\x46\x46\xEE\xEE\xEE\xEE\xB8\xB8\xB8\xB8\x14\x14\x14\x14\xDE\xDE\xDE\xDE\x5E\x5E\x5E\x5E\x0B\x0B\x0B\x0B\xDB\xDB\xDB\xDB\xE0\xE0\xE0\xE0\x32\x32\x32\x32\x3A\x3A\x3A\x3A\x0A\x0A\x0A\x0A\x49\x49\x49\x49\x06\x06\x06\x06\x24\x24\x24\x24\x5C\x5C\x5C\x5C\xC2\xC2\xC2\xC2\xD3\xD3\xD3\xD3\xAC\xAC\xAC\xAC\x62\x62\x62\x62\x91\x91\x91\x91\x95\x95\x95\x95\xE4\xE4\xE4\xE4\x79\x79\x79\x79\xE7\xE7\xE7\xE7\xC8\xC8\xC8\xC8\x37\x37\x37\x37\x6D\x6D\x6D\x6D\x8D\x8D\x8D\x8D\xD5\xD5\xD5\xD5\x4E\x4E\x4E\x4E\xA9\xA9\xA9\xA9\x6C\x6C\x6C\x6C\x56\x56\x56\x56\xF4\xF4\xF4\xF4\xEA\xEA\xEA\xEA\x65\x65\x65\x65\x7A\x7A\x7A\x7A\xAE\xAE\xAE\xAE\x08\x08\x08\x08\xBA\xBA\xBA\xBA\x78\x78\x78\x78\x25\x25\x25\x25\x2E\x2E\x2E\x2E\x1C\x1C\x1C\x1C\xA6\xA6\xA6\xA6\xB4\xB4\xB4\xB4\xC6\xC6\xC6\xC6\xE8\xE8\xE8\xE8\xDD\xDD\xDD\xDD\x74\x74\x74\x74\x1F\x1F\x1F\x1F\x4B\x4B\x4B\x4B\xBD\xBD\xBD\xBD\x8B\x8B\x8B\x8B\x8A\x8A\x8A\x8A\x70\x70\x70\x70\x3E\x3E\x3E\x3E\xB5\xB5\xB5\xB5\x66\x66\x66\x66\x48\x48\x48\x48\x03\x03\x03\x03\xF6\xF6\xF6\xF6\x0E\x0E\x0E\x0E\x61\x61\x61\x61\x35\x35\x35\x35\x57\x57\x57\x57\xB9\xB9\xB9\xB9\x86\x86\x86\x86\xC1\xC1\xC1\xC1\x1D\x1D\x1D\x1D\x9E\x9E\x9E\x9E\xE1\xE1\xE1\xE1\xF8\xF8\xF8\xF8\x98\x98\x98\x98\x11\x11\x11\x11\x69\x69\x69\x69\xD9\xD9\xD9\xD9\x8E\x8E\x8E\x8E\x94\x94\x94\x94\x9B\x9B\x9B\x9B\x1E\x1E\x1E\x1E\x87\x87\x87\x87\xE9\xE9\xE9\xE9\xCE\xCE\xCE\xCE\x55\x55\x55\x55\x28\x28\x28\x28\xDF\xDF\xDF\xDF\x8C\x8C\x8C\x8C\xA1\xA1\xA1\xA1\x89\x89\x89\x89\x0D\x0D\x0D\x0D\xBF\xBF\xBF\xBF\xE6\xE6\xE6\xE6\x42\x42\x42\x42\x68\x68\x68\x68\x41\x41\x41\x41\x99\x99\x99\x99\x2D\x2D\x2D\x2D\x0F\x0F\x0F\x0F\xB0\xB0\xB0\xB0\x54\x54\x54\x54\xBB\xBB\xBB\xBB\x16\x16\x16\x16"
math a3p_1 * 4
goto a3p_1 MEMORY_FILE13
get a3b_1 long MEMORY_FILE13
math a3p_1 / 4
math a3p_2 * 4
goto a3p_2 MEMORY_FILE14
get a3b_2 long MEMORY_FILE14
math a3p_2 / 4
xmath a3v_1 "(a3b_1 + (((a3b_2 >> 0x10) & 0xff) >> 8)) | (a3b_1 + (((a3b_2 >> 0x10) & 0xff) >> 8)) | (a3b_1 + (((a3b_2 >> 0x10) & 0xff) >> 8)) | ((a3b_1 + ((((a3b_2 >> 0x10) & 0xff) & 0xff) << 0x18)) ^ (a3b_1 + ((((a3b_2 >> 8) & 0xff) & 0xff) << 0x10))) | (a3b_1 + (((a3b_2 >> 8) & 0xff) & 0xff) >> 0x10) ^ (a3b_1 + (((a3b_2 & 0xff) & 0xff) << 8)) | ((a3b_1 + (((a3b_2 & 0xff) & 0xff) >> 0x18)) ^ (a3b_1 + (((a3b_2 >> 0x18) & 0xff) & 0xff)))"
endfunction
to explain how this (messy) script works, you have the init_dec function which is supposed to be the "warm-up" function that prepares the whole decryption stuff needed to decode and later on read the header that is present in the beginning of all RPF files used by the game. the expand_aes_key and aes_3 functions are part of the init_dec function because they're part of the decryption algorithm used by the game.
so all i'm asking is if anyone can actually point me in the right direction as to what am i supposed to do to actually decrypt the header of an RPF file.
sample files are in the attachment below.