正文
*v3 = (int)&unk_3F3A68;
sub_30D130((int)&v40);
sub_30D130((int)&v39);
sub_30D130((int)&v38);
v4 = sub_74CD8(&v41, "src/", &v37);
v33 = 2;
v5 = 0;
do
{
v6 = sub_1219BC(v4);
buf = (*(int (**)(void))(*(_DWORD *)v6 + 16))();
if ( buf )
{
v7 = sub_656EC();
v8 = len;
if ( v7 )
{
sub_74CD8(&v45, "@", &v37);
v15 = sub_30E110(v34, buf, v8, v45); // 读取lua文件
sub_30D130((int)&v45);
if ( v15 )
v5 = 3;
}
else if ( len
{
sub_68908("load_lua", "can not get enough file data of %s", v41);
v5 = 5;
}
else
{
if ( !(dword_3E730C & 1) && sub_30D150(&dword_3E730C) )
{
byte_3E7310 = 0xE9u;
byte_3E7311 = 0x74;
byte_3E7313 = 0x92u;
byte_3E7314 = 0xCCu;
byte_3E7315 = 0x32;
byte_3E7316 = 0x2E;
byte_3E7319 = 0x2E;
byte_3E731A = 0x7C;
byte_3E731B = 0x34;
byte_3E731C = 0x51;
byte_3E731D = 0xD7u;
byte_3E7312 = 0x7D;
byte_3E7317 = 0x7D;
byte_3E731E = 0xB3u;
byte_3E7318 = 0x11;
byte_3E731F = 0x6A;
sub_30D160((int)&dword_3E730C);
}
v9 = len - 16;
out = 0;
v45 = 0;
v10 = aes_cbc_decrypt((int)&byte_3E7310, buf, buf + 16, len - 16, &out);// 第一个参数为key aes解密 IV为文件开头的16个字节
if ( v10 || (v10 = aes_cbc_decrypt((int)&byte_3E7310, buf, buf + 16, v9, &out)) != 0 )
{
zib_decompress(out, v10, (const void **)&v45);// 解压缩
v12 = v11;
if ( v11 || (zib_decompress(out, v10, (const void **)&v45), (v12 = v31) != 0) )
{
v13 = v45;
if ( v12 > 3 && *(_BYTE *)v45 == 0xEF && *(_BYTE *)(v45 + 1) == 0xBB && *(_BYTE *)(v45 + 2) == 0xBF )
{
v13 = v45 + 3;
v12 -= 3;
sub_688EE("load_lua", "%s with utf-8 bom", v37);
}
sub_74CD8(&v43, "@", &v37);