-
-
[旧帖] [求助]找出加密算法? 0.00雪花
-
发表于: 2009-12-17 03:51 1139
-
小弟最近在用HEX-RAYS反编译一个DLL,里面找到一函数,听说里面有加密算法,我实在找不到头绪,请大家帮我看看,DLL在最下面,代号如下:
int __cdecl M5(const char *a1, char a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28, int a29, int a30, int a31, int a32, int a33, int a34, int a35, int a36, int a37, int a38, int a39, int a40, int a41, int a42, int a43, int a44, int a45, int a46, int a47, int a48, int a49, int a50, int a51, int a52, int a53, int a54, int a55, int a56, int a57, int a58, int a59, int a60, int a61, int a62, int a63)
{
char ST04_1_0; // ST04_1@0
int ST08_4_0; // ST08_4@0
int ST0C_4_0; // ST0C_4@0
int ST10_4_0; // ST10_4@0
int ST14_4_0; // ST14_4@0
int ST18_4_0; // ST18_4@0
int ST1C_4_0; // ST1C_4@0
int ST20_4_0; // ST20_4@0
int ST24_4_0; // ST24_4@0
int ST28_4_0; // ST28_4@0
int ST2C_4_0; // ST2C_4@0
int ST30_4_0; // ST30_4@0
int ST34_4_0; // ST34_4@0
int ST38_4_0; // ST38_4@0
int ST3C_4_0; // ST3C_4@0
int ST40_4_0; // ST40_4@0
int ST44_4_0; // ST44_4@0
int ST48_4_0; // ST48_4@0
int ST4C_4_0; // ST4C_4@0
int ST50_4_0; // ST50_4@0
int ST54_4_0; // ST54_4@0
int ST58_4_0; // ST58_4@0
int ST5C_4_0; // ST5C_4@0
int ST60_4_0; // ST60_4@0
int ST64_4_0; // ST64_4@0
int ST68_4_0; // ST68_4@0
int ST6C_4_0; // ST6C_4@0
int ST70_4_0; // ST70_4@0
int ST74_4_0; // ST74_4@0
int ST78_4_0; // ST78_4@0
int ST7C_4_0; // ST7C_4@0
int ST80_4_0; // ST80_4@0
int ST84_4_0; // ST84_4@0
int ST88_4_0; // ST88_4@0
int ST8C_4_0; // ST8C_4@0
int ST90_4_0; // ST90_4@0
int ST94_4_0; // ST94_4@0
int ST98_4_0; // ST98_4@0
int ST9C_4_0; // ST9C_4@0
int STA0_4_0; // STA0_4@0
int STA4_4_0; // STA4_4@0
int STA8_4_0; // STA8_4@0
int STAC_4_0; // STAC_4@0
int STB0_4_0; // STB0_4@0
int STB4_4_0; // STB4_4@0
int STB8_4_0; // STB8_4@0
int STBC_4_0; // STBC_4@0
int STC0_4_0; // STC0_4@0
int STC4_4_0; // STC4_4@0
int STC8_4_0; // STC8_4@0
int STCC_4_0; // STCC_4@0
int STD0_4_0; // STD0_4@0
int STD4_4_0; // STD4_4@0
int STD8_4_0; // STD8_4@0
int STDC_4_0; // STDC_4@0
int STE0_4_0; // STE0_4@0
int STE4_4_0; // STE4_4@0
int STE8_4_0; // STE8_4@0
int STEC_4_0; // STEC_4@0
int STF0_4_0; // STF0_4@0
int STF4_4_0; // STF4_4@0
int STF8_4_0; // STF8_4@0
unsigned int v310; // edx@6
char *v311; // ecx@10
int v312; // edx@11
signed int v313; // eax@28
signed int *v314; // ecx@52
int v315; // edx@53
char *v316; // ecx@104
int v317; // edx@105
signed int *v318; // ecx@109
int v319; // edx@110
char *v320; // ST00_4@114
const char *v321; // ST04_4@114
char *v322; // ecx@124
int v323; // edx@125
signed int *v324; // ecx@129
int v325; // edx@130
int v326; // eax@141
char *v327; // ecx@147
int v328; // edx@148
signed int *v329; // ecx@152
int v330; // edx@153
char *v331; // ecx@158
int v332; // edx@159
signed int *v333; // ecx@163
int v334; // edx@164
char *v335; // ecx@169
int v336; // edx@170
signed int *v337; // ecx@174
int v338; // edx@175
char *v339; // ecx@180
int v340; // edx@181
signed int *v341; // ecx@185
int v342; // edx@186
char *v343; // ecx@227
int v344; // edx@228
size_t v345; // eax@232
char *v346; // ecx@234
int v347; // edx@235
char *v348; // ecx@240
int v349; // edx@241
char *v350; // ecx@246
int v351; // edx@247
char *v352; // ecx@252
int v353; // edx@253
char *v354; // ecx@258
int v355; // edx@259
char *v356; // ecx@268
int v357; // edx@269
int v358; // eax@11
size_t v359; // eax@37
size_t v360; // eax@37
size_t v361; // eax@37
size_t v362; // eax@47
int v363; // ST0C_4@47
unsigned int v364; // eax@48
size_t v365; // eax@52
size_t v366; // eax@52
size_t v367; // eax@52
size_t v368; // eax@52
size_t v369; // eax@52
signed int v370; // eax@53
size_t v371; // eax@66
unsigned int v372; // eax@81
size_t v373; // eax@84
size_t v374; // eax@84
size_t v375; // eax@84
int v376; // eax@105
signed int v377; // eax@110
unsigned int v378; // eax@118
int v379; // eax@125
signed int v380; // eax@130
unsigned int v381; // eax@137
int v382; // eax@148
signed int v383; // eax@153
int v384; // eax@159
signed int v385; // eax@164
int v386; // eax@170
signed int v387; // eax@175
int v388; // eax@181
signed int v389; // eax@186
unsigned int v390; // eax@193
unsigned int v391; // eax@202
unsigned int v392; // eax@211
unsigned int v393; // eax@220
int v394; // eax@228
int v395; // eax@235
int v396; // eax@241
int v397; // eax@247
int v398; // eax@253
int v399; // eax@259
int v400; // eax@269
int (__cdecl *v401)(int, int, int, int, int, int); // [sp+574h] [bp-7B4h]@1
int *v402; // [sp+578h] [bp-7B0h]@1
char v403; // [sp+D10h] [bp-18h]@1
char *v404; // [sp+57Ch] [bp-7ACh]@1
? v405; // [sp+580h] [bp-7A8h]@1
int v406; // [sp+0h] [bp-D28h]@1
int *v407; // [sp+584h] [bp-7A4h]@1
char v408; // [sp+55Ch] [bp-7CCh]@1
int v409; // [sp+558h] [bp-7D0h]@3
char v410; // [sp+D00h] [bp-28h]@6
char v411; // [sp+D01h] [bp-27h]@6
char v412; // [sp+D09h] [bp-1Fh]@6
char *v413; // [sp+3CCh] [bp-95Ch]@6
int v414; // [sp+4h] [bp-D24h]@7
signed int v415; // [sp+560h] [bp-7C8h]@8
char v416; // [sp+557h] [bp-7D1h]@8
char v417; // [sp+CF1h] [bp-37h]@8
char v418; // [sp+CF9h] [bp-2Fh]@8
signed int v419; // [sp+CF0h] [bp-38h]@8
char v420; // [sp+CF4h] [bp-34h]@8
char v421; // [sp+BF0h] [bp-138h]@8
char v422; // [sp+BF1h] [bp-137h]@8
char v423; // [sp+AF0h] [bp-238h]@8
char v424; // [sp+AF1h] [bp-237h]@8
int v425; // [sp+9A0h] [bp-388h]@15
char v426; // [sp+AD0h] [bp-258h]@15
const char *v427; // [sp+AB0h] [bp-278h]@26
const char *v428; // [sp+AC0h] [bp-268h]@26
char v429; // [sp+4BFh] [bp-869h]@26
char v430; // [sp+590h] [bp-798h]@26
char v431; // [sp+591h] [bp-797h]@26
signed int v432; // [sp+8A0h] [bp-488h]@26
int v433; // [sp+3F0h] [bp-938h]@38
int v434; // [sp+3E4h] [bp-944h]@39
int v435; // [sp+3D8h] [bp-950h]@40
const char *v436; // [sp+AE0h] [bp-248h]@47
char v437; // [sp+9B0h] [bp-378h]@47
char v438; // [sp+9B1h] [bp-377h]@47
int v439; // [sp+548h] [bp-7E0h]@47
unsigned int v440; // [sp+540h] [bp-7E8h]@48
unsigned int v441; // [sp+544h] [bp-7E4h]@48
int v442; // [sp+534h] [bp-7F4h]@50
int v443; // [sp+528h] [bp-800h]@51
_BYTE v444[248]; // [sp+8A8h] [bp-480h]@52
signed int v445; // [sp+8A4h] [bp-484h]@52
__int16 v446; // [sp+8AAh] [bp-47Eh]@52
int v447; // [sp+51Ch] [bp-80Ch]@58
int v448; // [sp+510h] [bp-818h]@59
int v449; // [sp+504h] [bp-824h]@60
char v450; // [sp+690h] [bp-698h]@66
char v451; // [sp+87Ch] [bp-4ACh]@66
char v452; // [sp+88Dh] [bp-49Bh]@66
int v453; // [sp+4D8h] [bp-850h]@67
int v454; // [sp+4CCh] [bp-85Ch]@68
int v455; // [sp+4C0h] [bp-868h]@69
int v456; // [sp+4F8h] [bp-830h]@80
unsigned int v457; // [sp+4F0h] [bp-838h]@81
unsigned int v458; // [sp+4F4h] [bp-834h]@81
int v459; // [sp+4E4h] [bp-844h]@83
int v460; // [sp+410h] [bp-918h]@117
unsigned int v461; // [sp+408h] [bp-920h]@118
unsigned int v462; // [sp+40Ch] [bp-91Ch]@118
int v463; // [sp+3FCh] [bp-92Ch]@120
int v464; // [sp+430h] [bp-8F8h]@136
unsigned int v465; // [sp+428h] [bp-900h]@137
unsigned int v466; // [sp+42Ch] [bp-8FCh]@137
int v467; // [sp+41Ch] [bp-90Ch]@139
int v468; // [sp+450h] [bp-8D8h]@192
unsigned int v469; // [sp+448h] [bp-8E0h]@193
unsigned int v470; // [sp+44Ch] [bp-8DCh]@193
int v471; // [sp+43Ch] [bp-8ECh]@195
int v472; // [sp+470h] [bp-8B8h]@201
unsigned int v473; // [sp+468h] [bp-8C0h]@202
unsigned int v474; // [sp+46Ch] [bp-8BCh]@202
int v475; // [sp+45Ch] [bp-8CCh]@204
int v476; // [sp+490h] [bp-898h]@210
unsigned int v477; // [sp+488h] [bp-8A0h]@211
unsigned int v478; // [sp+48Ch] [bp-89Ch]@211
int v479; // [sp+47Ch] [bp-8ACh]@213
int v480; // [sp+4B0h] [bp-878h]@219
unsigned int v481; // [sp+4A8h] [bp-880h]@220
unsigned int v482; // [sp+4ACh] [bp-87Ch]@220
int v483; // [sp+49Ch] [bp-88Ch]@222
v401 = sub_6774C900;
v402 = dword_6778C114;
v404 = &v403;
v405 = loc_677441E0;
v407 = &v406;
sub_67758690(&v408);
if ( strlen(a1) == 108 )
{
v409 = a245 & 0xF;
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 && strlen(a247) == 44 )
{
v310 = 0;
v410 = byte_6778F0EA;
memset(&v411, v409, 8u);
v412 = 0;
v413 = &v410;
do
{
*((_BYTE *)&v414 + v310) = *(&a2 + v310);
++v310;
}
while ( v310 < 0x3C8 );
v415 = -1;
M16(
a1,
ST04_1_0,
ST08_4_0,
ST0C_4_0,
ST10_4_0,
ST14_4_0,
ST18_4_0,
ST1C_4_0,
ST20_4_0,
ST24_4_0,
ST28_4_0,
ST2C_4_0,
ST30_4_0,
ST34_4_0,
ST38_4_0,
ST3C_4_0,
ST40_4_0,
ST44_4_0,
ST48_4_0,
ST4C_4_0,
ST50_4_0,
ST54_4_0,
ST58_4_0,
ST5C_4_0,
ST60_4_0,
ST64_4_0,
ST68_4_0,
ST6C_4_0,
ST70_4_0,
ST74_4_0,
ST78_4_0,
ST7C_4_0,
ST80_4_0,
ST84_4_0,
ST88_4_0,
ST8C_4_0,
ST90_4_0,
ST94_4_0,
ST98_4_0,
ST9C_4_0,
STA0_4_0,
STA4_4_0,
STA8_4_0,
STAC_4_0,
STB0_4_0,
STB4_4_0,
STB8_4_0,
STBC_4_0,
STC0_4_0,
STC4_4_0,
STC8_4_0,
STCC_4_0,
STD0_4_0,
STD4_4_0,
STD8_4_0,
STDC_4_0,
STE0_4_0,
STE4_4_0,
STE8_4_0,
STEC_4_0,
STF0_4_0,
STF4_4_0,
STF8_4_0);
v416 = byte_6778F0EA;
memset(&v417, 0, 8u);
v418 = 0;
v419 = 1918985570;
v420 = 0;
v421 = byte_6778F0EA;
memset(&v422, 0, 0xFEu);
v423 = v416;
memset(&v424, 0, 0xFEu);
if ( strlen(a1) == 108 )
{
if ( !strcmp(&v410, (const char *)&v419) )
{
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 )
{
if ( strlen(a247) == 44 )
{
strlen(a1);
strcmp(&v410, (const char *)&v419);
v415 = 84;
sub_6777C790(&v436, &unk_6778F20F, &v426);
v362 = strlen(a247);
v415 = 83;
sub_6777ACB0(&v436, a247, v362);
v415 = 82;
sub_6777C790(&v428, &unk_6778F20F, &v426);
v415 = 81;
sub_6777C790(&v427, &unk_6778F20F, &v426);
v437 = byte_6778F0EA;
memset(&v438, 0, 0xFEu);
v363 = *((_DWORD *)v436 - 3) >> 1;
v415 = 80;
sub_6777C960(&v425, &v436, 0, v363);
v415 = 79;
sub_6777B160(&v427, &v425);
v439 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 77;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v439);
}
v364 = *((_DWORD *)v436 - 3);
v440 = *((_DWORD *)v436 - 3);
v364 >>= 1;
v441 = v364;
if ( v440 < v364 )
{
v415 = 80;
sub_6774ECD0("basic_string::substr");
}
v415 = 80;
sub_6777C960(&v425, &v436, v441, v440);
v415 = 76;
sub_6777B160(&v428, &v425);
v442 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 74;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v442);
}
v415 = 80;
sub_6778B1E0(&v425);
v415 = 73;
sub_6777B160(&v436, &v425);
v443 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 71;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v443);
}
v415 = 80;
strcpy(&v437, v436);
v365 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v436, &unk_6778F20F, v365);
v366 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v428, &unk_6778F20F, v366);
v367 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v427, &unk_6778F20F, v367);
LOBYTE(v432) = byte_6778F0EA;
memset((char *)&v432 + 1, 0, 0xFEu);
v444[0] = 0;
v432 = 942420825;
v445 = 1480540268;
v368 = strlen((const char *)&v432);
*(signed int *)((char *)&v432 + v368) = 2067094910;
*((_BYTE *)&v446 + v368) = 0;
*(signed int *)((char *)&v445 + v368) = 1462644809;
*(_WORD *)&v444[v368] = 13884;
v369 = strlen((const char *)&v432);
*(signed int *)((char *)&v445 + v369) = 2830637;
v314 = &v432;
*(signed int *)((char *)&v432 + v369) = 695025246;
do
{
v370 = *v314;
++v314;
v315 = ~v370 & (v370 - 16843009) & 0x80808080;
}
while ( !v315 );
if ( !(v315 & 0x8080) )
{
v315 = (unsigned int)v315 >> 16;
v314 = (signed int *)((char *)v314 + 2);
}
if ( (char *)v314 + -__MKCADD__(v315, v315) - 3 - (char *)&v432 == 25 )
{
v450 = 0;
v451 = 0;
v452 = 0;
v415 = 80;
sub_6774B320(&v450, &v432, 16);
LOBYTE(v432) = 0;
v430 = byte_6778F0EA;
memset(&v431, 0, 0xFEu);
v356 = &v437;
do
{
v400 = *(_DWORD *)v356;
v356 += 4;
v357 = ~v400 & (v400 - 16843009) & 0x80808080;
}
while ( !v357 );
if ( !(v357 & 0x8080) )
{
v357 = (unsigned int)v357 >> 16;
v356 += 2;
}
if ( &v356[-__MKCADD__(v357, v357) - 3] - &v437 == 44 )
{
v415 = 80;
sub_67741270(&v437, &v430, 45);
sub_6774C130(&v450, &v430, &v423, 32, 0);
}
else
{
v437 = 0;
}
}
else
{
LOBYTE(v432) = 0;
}
v447 = (int)(v427 - 12);
if ( (_UNKNOWN *)(v427 - 12) != &unk_6778E1A0 )
{
v415 = 69;
if ( sub_6774F980(v427 - 4, -1) <= 0 )
sub_6777A5D0(v447);
}
v448 = (int)(v428 - 12);
if ( (_UNKNOWN *)(v428 - 12) != &unk_6778E1A0 )
{
v415 = 67;
if ( sub_6774F980(v428 - 4, -1) <= 0 )
sub_6777A5D0(v448);
}
v449 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 65;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v449);
}
}
}
}
}
}
if ( strlen(a1) == 108 )
{
v311 = &v423;
do
{
v358 = *(_DWORD *)v311;
v311 += 4;
v312 = ~v358 & (v358 - 16843009) & 0x80808080;
}
while ( !v312 );
if ( !(v312 & 0x8080) )
{
v312 = (unsigned int)v312 >> 16;
v311 += 2;
}
if ( &v311[-__MKCADD__(v312, v312) - 3] - &v423 == 25 )
{
if ( !strcmp(&v410, (const char *)&v419) )
{
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 )
{
v430 = byte_6778F0EA;
memset(&v431, 0, 0xFEu);
v450 = 0;
v451 = 0;
v452 = 0;
v415 = 64;
sub_6777C790(&v425, &unk_6778F20F, &v426);
v371 = strlen(&v423);
v415 = 63;
sub_6777ACB0(&v425, &v423, v371);
v415 = 62;
sub_6777C790(&v427, &unk_6778F20F, &v426);
v415 = 61;
sub_6777C790(&v428, &unk_6778F20F, &v426);
v423 = 0;
if ( *(_DWORD *)(v425 - 12) == 25 )
{
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 )
{
v415 = 60;
sub_6777C960(&v436, &v425, 0, 12);
v415 = 59;
sub_6777B160(&v427, &v436);
v456 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 57;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v456);
}
v372 = *(_DWORD *)(v425 - 12);
v457 = *(_DWORD *)(v425 - 12);
v372 >>= 1;
v458 = v372;
if ( v457 < v372 )
{
v415 = 60;
sub_6774ECD0("basic_string::substr");
}
v415 = 60;
sub_6777C960(&v436, &v425, v458, v457);
v415 = 56;
sub_6777B160(&v428, &v436);
v459 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 54;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v459);
}
v373 = strlen((const char *)&unk_6778F20F);
v415 = 60;
sub_6777B050(&v425, &unk_6778F20F, v373);
strcpy(&v423, v428);
*(_WORD *)(&v423 + strlen(&v423)) = 42;
strcat(&v423, v427);
v374 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v427, &unk_6778F20F, v374);
v375 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v428, &unk_6778F20F, v375);
sub_6774B320(&v450, &v423, 16);
v423 = 0;
sub_6774BA40(&v450, a244, &v430, a245, 0);
sub_67741180(&v430, &v421, a245);
}
}
}
v453 = (int)(v428 - 12);
if ( (_UNKNOWN *)(v428 - 12) != &unk_6778E1A0 )
{
v415 = 52;
if ( sub_6774F980(v428 - 4, -1) <= 0 )
sub_6777A5D0(v453);
}
v454 = (int)(v427 - 12);
if ( (_UNKNOWN *)(v427 - 12) != &unk_6778E1A0 )
{
v415 = 50;
if ( sub_6774F980(v427 - 4, -1) <= 0 )
sub_6777A5D0(v454);
}
v455 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 48;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v455);
}
}
}
}
}
}
v415 = 47;
sub_6777C790(&v425, &unk_6778F20F, &v426);
if ( strlen(a1) == 108 && !strcmp(&v410, (const char *)&v419) && v421 && !(a245 & 0xF) && *(_BYTE *)a244 )
{
if ( a245 == 16 )
{
v350 = &v421;
do
{
v397 = *(_DWORD *)v350;
v350 += 4;
v351 = ~v397 & (v397 - 16843009) & 0x80808080;
}
while ( !v351 );
if ( !(v351 & 0x8080) )
{
v351 = (unsigned int)v351 >> 16;
v350 += 2;
}
if ( &v350[-__MKCADD__(v351, v351) - 3] - &v421 == 24 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 32 )
{
v348 = &v421;
do
{
v396 = *(_DWORD *)v348;
v348 += 4;
v349 = ~v396 & (v396 - 16843009) & 0x80808080;
}
while ( !v349 );
if ( !(v349 & 0x8080) )
{
v349 = (unsigned int)v349 >> 16;
v348 += 2;
}
if ( &v348[-__MKCADD__(v349, v349) - 3] - &v421 == 44 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 48 )
{
v346 = &v421;
do
{
v395 = *(_DWORD *)v346;
v346 += 4;
v347 = ~v395 & (v395 - 16843009) & 0x80808080;
}
while ( !v347 );
if ( !(v347 & 0x8080) )
{
v347 = (unsigned int)v347 >> 16;
v346 += 2;
}
if ( &v346[-__MKCADD__(v347, v347) - 3] - &v421 == 64 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 64 )
{
v343 = &v421;
do
{
v394 = *(_DWORD *)v343;
v343 += 4;
v344 = ~v394 & (v394 - 16843009) & 0x80808080;
}
while ( !v344 );
if ( !(v344 & 0x8080) )
{
v344 = (unsigned int)v344 >> 16;
v343 += 2;
}
if ( &v343[-__MKCADD__(v344, v344) - 3] - &v421 == 88 )
{
v345 = strlen(&v421);
LABEL_233:
v415 = 46;
sub_6777ACB0(&v425, &v421, v345);
goto LABEL_26;
}
}
if ( a245 == 80 )
{
v354 = &v421;
do
{
v399 = *(_DWORD *)v354;
v354 += 4;
v355 = ~v399 & (v399 - 16843009) & 0x80808080;
}
while ( !v355 );
if ( !(v355 & 0x8080) )
{
v355 = (unsigned int)v355 >> 16;
v354 += 2;
}
if ( &v354[-__MKCADD__(v355, v355) - 3] - &v421 == 108 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 160 )
{
v352 = &v421;
do
{
v398 = *(_DWORD *)v352;
v352 += 4;
v353 = ~v398 & (v398 - 16843009) & 0x80808080;
}
while ( !v353 );
if ( !(v353 & 0x8080) )
{
v353 = (unsigned int)v353 >> 16;
v352 += 2;
}
if ( &v352[-__MKCADD__(v353, v353) - 3] - &v421 == 216 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
}
LABEL_26:
v415 = 45;
sub_6777C790(&v427, &unk_6778F20F, &v426);
v415 = 44;
sub_6777C790(&v428, &unk_6778F20F, &v426);
v429 = byte_6778F0EA;
v430 = byte_6778F0EA;
memset(&v431, 0, 0xFEu);
LOBYTE(v432) = v429;
memset((char *)&v432 + 1, 0, 0xFEu);
if ( strlen(a1) == 108 )
{
if ( !strcmp(&v410, (const char *)&v419) )
{
v313 = *(_DWORD *)(v425 - 12);
if ( v313 )
{
if ( !(a245 & 0xF) && *(_BYTE *)a244 )
{
if ( a245 == 16 && v313 == 24 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 12);
v415 = 42;
sub_6777B160(&v427, &v436);
v480 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 40;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v480);
}
v393 = *(_DWORD *)(v425 - 12);
v481 = *(_DWORD *)(v425 - 12);
v393 >>= 1;
v482 = v393;
if ( v481 < v393 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v482, v481);
v415 = 39;
sub_6777B160(&v428, &v436);
v483 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 37, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v483;
goto LABEL_142;
}
if ( a245 == 32 && *(_DWORD *)(v425 - 12) == 44 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 22);
v415 = 36;
sub_6777B160(&v427, &v436);
v476 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 34;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v476);
}
v392 = *(_DWORD *)(v425 - 12);
v477 = *(_DWORD *)(v425 - 12);
v392 >>= 1;
v478 = v392;
if ( v477 < v392 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v478, v477);
v415 = 33;
sub_6777B160(&v428, &v436);
v479 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 31, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v479;
goto LABEL_142;
}
if ( a245 == 48 && *(_DWORD *)(v425 - 12) == 64 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 32);
v415 = 30;
sub_6777B160(&v427, &v436);
v472 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 28;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v472);
}
v391 = *(_DWORD *)(v425 - 12);
v473 = *(_DWORD *)(v425 - 12);
v391 >>= 1;
v474 = v391;
if ( v473 < v391 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v474, v473);
v415 = 27;
sub_6777B160(&v428, &v436);
v475 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 25, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v475;
goto LABEL_142;
}
if ( a245 == 64 && *(_DWORD *)(v425 - 12) == 88 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 44);
v415 = 24;
sub_6777B160(&v427, &v436);
v468 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 22;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v468);
}
v390 = *(_DWORD *)(v425 - 12);
v469 = *(_DWORD *)(v425 - 12);
v390 >>= 1;
v470 = v390;
if ( v469 < v390 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v470, v469);
v415 = 21;
sub_6777B160(&v428, &v436);
v471 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 19, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v471;
goto LABEL_142;
}
if ( a245 == 80 && *(_DWORD *)(v425 - 12) == 108 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 54);
v415 = 18;
sub_6777B160(&v427, &v436);
v464 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 16;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v464);
}
v381 = *(_DWORD *)(v425 - 12);
v465 = *(_DWORD *)(v425 - 12);
v381 >>= 1;
v466 = v381;
if ( v465 < v381 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v466, v465);
v415 = 15;
sub_6777B160(&v428, &v436);
v467 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 13, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v467;
goto LABEL_142;
}
if ( a245 == 160 && *(_DWORD *)(v425 - 12) == 216 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 108);
v415 = 12;
sub_6777B160(&v427, &v436);
v460 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 10;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v460);
}
v378 = *(_DWORD *)(v425 - 12);
v461 = *(_DWORD *)(v425 - 12);
v378 >>= 1;
v462 = v378;
if ( v461 < v378 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v462, v461);
v415 = 9;
sub_6777B160(&v428, &v436);
v463 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 7, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v463;
LABEL_142:
sub_6777A5D0(v326);
LABEL_121:
v415 = 43;
strcpy(&v430, v427);
strcpy((char *)&v432, v428);
goto LABEL_37;
}
}
}
}
}
LABEL_37:
v359 = strlen((const char *)&unk_6778F20F);
v415 = 43;
sub_6777B050(&v425, &unk_6778F20F, v359);
v360 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v427, &unk_6778F20F, v360);
v361 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v428, &unk_6778F20F, v361);
if ( strlen(a1) != 108
|| strcmp(&v410, (const char *)&v419)
|| !v430
|| !(_BYTE)v432
|| a245 & 0xF
|| !*(_BYTE *)a244 )
goto LABEL_38;
if ( a245 == 16 )
{
v339 = &v430;
do
{
v388 = *(_DWORD *)v339;
v339 += 4;
v340 = ~v388 & (v388 - 16843009) & 0x80808080;
}
while ( !v340 );
if ( !(v340 & 0x8080) )
{
v340 = (unsigned int)v340 >> 16;
v339 += 2;
}
if ( &v339[-__MKCADD__(v340, v340) - 3] - &v430 == 12 )
{
v341 = &v432;
do
{
v389 = *v341;
++v341;
v342 = ~v389 & (v389 - 16843009) & 0x80808080;
}
while ( !v342 );
if ( !(v342 & 0x8080) )
{
v342 = (unsigned int)v342 >> 16;
v341 = (signed int *)((char *)v341 + 2);
}
if ( (char *)v341 + -__MKCADD__(v342, v342) - 3 - (char *)&v432 == 12 )
goto LABEL_157;
}
}
if ( a245 == 32 )
{
v335 = &v430;
do
{
v386 = *(_DWORD *)v335;
v335 += 4;
v336 = ~v386 & (v386 - 16843009) & 0x80808080;
}
while ( !v336 );
if ( !(v336 & 0x8080) )
{
v336 = (unsigned int)v336 >> 16;
v335 += 2;
}
if ( &v335[-__MKCADD__(v336, v336) - 3] - &v430 == 22 )
{
v337 = &v432;
do
{
v387 = *v337;
++v337;
v338 = ~v387 & (v387 - 16843009) & 0x80808080;
}
while ( !v338 );
if ( !(v338 & 0x8080) )
{
v338 = (unsigned int)v338 >> 16;
v337 = (signed int *)((char *)v337 + 2);
}
if ( (char *)v337 + -__MKCADD__(v338, v338) - 3 - (char *)&v432 == 22 )
goto LABEL_134;
}
}
if ( a245 != 48 )
goto LABEL_281;
v331 = &v430;
do
{
v384 = *(_DWORD *)v331;
v331 += 4;
v332 = ~v384 & (v384 - 16843009) & 0x80808080;
}
while ( !v332 );
if ( !(v332 & 0x8080) )
{
v332 = (unsigned int)v332 >> 16;
v331 += 2;
}
if ( &v331[-__MKCADD__(v332, v332) - 3] - &v430 != 32 )
goto LABEL_281;
v333 = &v432;
do
{
v385 = *v333;
++v333;
v334 = ~v385 & (v385 - 16843009) & 0x80808080;
}
while ( !v334 );
if ( !(v334 & 0x8080) )
{
v334 = (unsigned int)v334 >> 16;
v333 = (signed int *)((char *)v333 + 2);
}
if ( (char *)v333 + -__MKCADD__(v334, v334) - 3 - (char *)&v432 != 32 )
{
LABEL_281:
if ( a245 == 64 )
{
v327 = &v430;
do
{
v382 = *(_DWORD *)v327;
v327 += 4;
v328 = ~v382 & (v382 - 16843009) & 0x80808080;
}
while ( !v328 );
if ( !(v328 & 0x8080) )
{
v328 = (unsigned int)v328 >> 16;
v327 += 2;
}
if ( &v327[-__MKCADD__(v328, v328) - 3] - &v430 == 44 )
{
v329 = &v432;
do
{
v383 = *v329;
++v329;
v330 = ~v383 & (v383 - 16843009) & 0x80808080;
}
while ( !v330 );
if ( !(v330 & 0x8080) )
{
v330 = (unsigned int)v330 >> 16;
v329 = (signed int *)((char *)v329 + 2);
}
if ( (char *)v329 + -__MKCADD__(v330, v330) - 3 - (char *)&v432 == 44 )
{
LABEL_157:
v415 = 43;
strcpy(a246, (const char *)&v432);
v321 = &v430;
v320 = a246;
goto LABEL_115;
}
}
}
if ( a245 == 80 )
{
v322 = &v430;
do
{
v379 = *(_DWORD *)v322;
v322 += 4;
v323 = ~v379 & (v379 - 16843009) & 0x80808080;
}
while ( !v323 );
if ( !(v323 & 0x8080) )
{
v323 = (unsigned int)v323 >> 16;
v322 += 2;
}
if ( &v322[-__MKCADD__(v323, v323) - 3] - &v430 == 54 )
{
v324 = &v432;
do
{
v380 = *v324;
++v324;
v325 = ~v380 & (v380 - 16843009) & 0x80808080;
}
while ( !v325 );
if ( !(v325 & 0x8080) )
{
v325 = (unsigned int)v325 >> 16;
v324 = (signed int *)((char *)v324 + 2);
}
if ( (char *)v324 + -__MKCADD__(v325, v325) - 3 - (char *)&v432 == 54 )
{
LABEL_134:
v415 = 43;
strcpy(a246, (const char *)&v432);
v321 = &v430;
v320 = a246;
goto LABEL_115;
}
}
}
if ( a245 != 160 )
goto LABEL_38;
v316 = &v430;
do
{
v376 = *(_DWORD *)v316;
v316 += 4;
v317 = ~v376 & (v376 - 16843009) & 0x80808080;
}
while ( !v317 );
if ( !(v317 & 0x8080) )
{
v317 = (unsigned int)v317 >> 16;
v316 += 2;
}
if ( &v316[-__MKCADD__(v317, v317) - 3] - &v430 != 108 )
goto LABEL_38;
v318 = &v432;
do
{
v377 = *v318;
++v318;
v319 = ~v377 & (v377 - 16843009) & 0x80808080;
}
while ( !v319 );
if ( !(v319 & 0x8080) )
{
v319 = (unsigned int)v319 >> 16;
v318 = (signed int *)((char *)v318 + 2);
}
if ( (char *)v318 + -__MKCADD__(v319, v319) - 3 - (char *)&v432 != 108 )
goto LABEL_38;
}
v415 = 43;
strcpy(a246, (const char *)&v432);
v321 = &v430;
v320 = a246;
LABEL_115:
strcat(v320, v321);
LABEL_38:
v430 = 0;
LOBYTE(v432) = 0;
v410 = 0;
LOBYTE(v419) = 0;
v433 = (int)(v428 - 12);
if ( (_UNKNOWN *)(v428 - 12) != &unk_6778E1A0 )
{
v415 = 5;
if ( sub_6774F980(v428 - 4, -1) <= 0 )
sub_6777A5D0(v433);
}
v434 = (int)(v427 - 12);
if ( (_UNKNOWN *)(v427 - 12) != &unk_6778E1A0 )
{
v415 = 3;
if ( sub_6774F980(v427 - 4, -1) <= 0 )
sub_6777A5D0(v434);
}
v435 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 1;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v435);
}
return sub_67758770(&v408);
}
}
}
return sub_67758770(&v408);
}
int __cdecl M5(const char *a1, char a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28, int a29, int a30, int a31, int a32, int a33, int a34, int a35, int a36, int a37, int a38, int a39, int a40, int a41, int a42, int a43, int a44, int a45, int a46, int a47, int a48, int a49, int a50, int a51, int a52, int a53, int a54, int a55, int a56, int a57, int a58, int a59, int a60, int a61, int a62, int a63)
{
char ST04_1_0; // ST04_1@0
int ST08_4_0; // ST08_4@0
int ST0C_4_0; // ST0C_4@0
int ST10_4_0; // ST10_4@0
int ST14_4_0; // ST14_4@0
int ST18_4_0; // ST18_4@0
int ST1C_4_0; // ST1C_4@0
int ST20_4_0; // ST20_4@0
int ST24_4_0; // ST24_4@0
int ST28_4_0; // ST28_4@0
int ST2C_4_0; // ST2C_4@0
int ST30_4_0; // ST30_4@0
int ST34_4_0; // ST34_4@0
int ST38_4_0; // ST38_4@0
int ST3C_4_0; // ST3C_4@0
int ST40_4_0; // ST40_4@0
int ST44_4_0; // ST44_4@0
int ST48_4_0; // ST48_4@0
int ST4C_4_0; // ST4C_4@0
int ST50_4_0; // ST50_4@0
int ST54_4_0; // ST54_4@0
int ST58_4_0; // ST58_4@0
int ST5C_4_0; // ST5C_4@0
int ST60_4_0; // ST60_4@0
int ST64_4_0; // ST64_4@0
int ST68_4_0; // ST68_4@0
int ST6C_4_0; // ST6C_4@0
int ST70_4_0; // ST70_4@0
int ST74_4_0; // ST74_4@0
int ST78_4_0; // ST78_4@0
int ST7C_4_0; // ST7C_4@0
int ST80_4_0; // ST80_4@0
int ST84_4_0; // ST84_4@0
int ST88_4_0; // ST88_4@0
int ST8C_4_0; // ST8C_4@0
int ST90_4_0; // ST90_4@0
int ST94_4_0; // ST94_4@0
int ST98_4_0; // ST98_4@0
int ST9C_4_0; // ST9C_4@0
int STA0_4_0; // STA0_4@0
int STA4_4_0; // STA4_4@0
int STA8_4_0; // STA8_4@0
int STAC_4_0; // STAC_4@0
int STB0_4_0; // STB0_4@0
int STB4_4_0; // STB4_4@0
int STB8_4_0; // STB8_4@0
int STBC_4_0; // STBC_4@0
int STC0_4_0; // STC0_4@0
int STC4_4_0; // STC4_4@0
int STC8_4_0; // STC8_4@0
int STCC_4_0; // STCC_4@0
int STD0_4_0; // STD0_4@0
int STD4_4_0; // STD4_4@0
int STD8_4_0; // STD8_4@0
int STDC_4_0; // STDC_4@0
int STE0_4_0; // STE0_4@0
int STE4_4_0; // STE4_4@0
int STE8_4_0; // STE8_4@0
int STEC_4_0; // STEC_4@0
int STF0_4_0; // STF0_4@0
int STF4_4_0; // STF4_4@0
int STF8_4_0; // STF8_4@0
unsigned int v310; // edx@6
char *v311; // ecx@10
int v312; // edx@11
signed int v313; // eax@28
signed int *v314; // ecx@52
int v315; // edx@53
char *v316; // ecx@104
int v317; // edx@105
signed int *v318; // ecx@109
int v319; // edx@110
char *v320; // ST00_4@114
const char *v321; // ST04_4@114
char *v322; // ecx@124
int v323; // edx@125
signed int *v324; // ecx@129
int v325; // edx@130
int v326; // eax@141
char *v327; // ecx@147
int v328; // edx@148
signed int *v329; // ecx@152
int v330; // edx@153
char *v331; // ecx@158
int v332; // edx@159
signed int *v333; // ecx@163
int v334; // edx@164
char *v335; // ecx@169
int v336; // edx@170
signed int *v337; // ecx@174
int v338; // edx@175
char *v339; // ecx@180
int v340; // edx@181
signed int *v341; // ecx@185
int v342; // edx@186
char *v343; // ecx@227
int v344; // edx@228
size_t v345; // eax@232
char *v346; // ecx@234
int v347; // edx@235
char *v348; // ecx@240
int v349; // edx@241
char *v350; // ecx@246
int v351; // edx@247
char *v352; // ecx@252
int v353; // edx@253
char *v354; // ecx@258
int v355; // edx@259
char *v356; // ecx@268
int v357; // edx@269
int v358; // eax@11
size_t v359; // eax@37
size_t v360; // eax@37
size_t v361; // eax@37
size_t v362; // eax@47
int v363; // ST0C_4@47
unsigned int v364; // eax@48
size_t v365; // eax@52
size_t v366; // eax@52
size_t v367; // eax@52
size_t v368; // eax@52
size_t v369; // eax@52
signed int v370; // eax@53
size_t v371; // eax@66
unsigned int v372; // eax@81
size_t v373; // eax@84
size_t v374; // eax@84
size_t v375; // eax@84
int v376; // eax@105
signed int v377; // eax@110
unsigned int v378; // eax@118
int v379; // eax@125
signed int v380; // eax@130
unsigned int v381; // eax@137
int v382; // eax@148
signed int v383; // eax@153
int v384; // eax@159
signed int v385; // eax@164
int v386; // eax@170
signed int v387; // eax@175
int v388; // eax@181
signed int v389; // eax@186
unsigned int v390; // eax@193
unsigned int v391; // eax@202
unsigned int v392; // eax@211
unsigned int v393; // eax@220
int v394; // eax@228
int v395; // eax@235
int v396; // eax@241
int v397; // eax@247
int v398; // eax@253
int v399; // eax@259
int v400; // eax@269
int (__cdecl *v401)(int, int, int, int, int, int); // [sp+574h] [bp-7B4h]@1
int *v402; // [sp+578h] [bp-7B0h]@1
char v403; // [sp+D10h] [bp-18h]@1
char *v404; // [sp+57Ch] [bp-7ACh]@1
? v405; // [sp+580h] [bp-7A8h]@1
int v406; // [sp+0h] [bp-D28h]@1
int *v407; // [sp+584h] [bp-7A4h]@1
char v408; // [sp+55Ch] [bp-7CCh]@1
int v409; // [sp+558h] [bp-7D0h]@3
char v410; // [sp+D00h] [bp-28h]@6
char v411; // [sp+D01h] [bp-27h]@6
char v412; // [sp+D09h] [bp-1Fh]@6
char *v413; // [sp+3CCh] [bp-95Ch]@6
int v414; // [sp+4h] [bp-D24h]@7
signed int v415; // [sp+560h] [bp-7C8h]@8
char v416; // [sp+557h] [bp-7D1h]@8
char v417; // [sp+CF1h] [bp-37h]@8
char v418; // [sp+CF9h] [bp-2Fh]@8
signed int v419; // [sp+CF0h] [bp-38h]@8
char v420; // [sp+CF4h] [bp-34h]@8
char v421; // [sp+BF0h] [bp-138h]@8
char v422; // [sp+BF1h] [bp-137h]@8
char v423; // [sp+AF0h] [bp-238h]@8
char v424; // [sp+AF1h] [bp-237h]@8
int v425; // [sp+9A0h] [bp-388h]@15
char v426; // [sp+AD0h] [bp-258h]@15
const char *v427; // [sp+AB0h] [bp-278h]@26
const char *v428; // [sp+AC0h] [bp-268h]@26
char v429; // [sp+4BFh] [bp-869h]@26
char v430; // [sp+590h] [bp-798h]@26
char v431; // [sp+591h] [bp-797h]@26
signed int v432; // [sp+8A0h] [bp-488h]@26
int v433; // [sp+3F0h] [bp-938h]@38
int v434; // [sp+3E4h] [bp-944h]@39
int v435; // [sp+3D8h] [bp-950h]@40
const char *v436; // [sp+AE0h] [bp-248h]@47
char v437; // [sp+9B0h] [bp-378h]@47
char v438; // [sp+9B1h] [bp-377h]@47
int v439; // [sp+548h] [bp-7E0h]@47
unsigned int v440; // [sp+540h] [bp-7E8h]@48
unsigned int v441; // [sp+544h] [bp-7E4h]@48
int v442; // [sp+534h] [bp-7F4h]@50
int v443; // [sp+528h] [bp-800h]@51
_BYTE v444[248]; // [sp+8A8h] [bp-480h]@52
signed int v445; // [sp+8A4h] [bp-484h]@52
__int16 v446; // [sp+8AAh] [bp-47Eh]@52
int v447; // [sp+51Ch] [bp-80Ch]@58
int v448; // [sp+510h] [bp-818h]@59
int v449; // [sp+504h] [bp-824h]@60
char v450; // [sp+690h] [bp-698h]@66
char v451; // [sp+87Ch] [bp-4ACh]@66
char v452; // [sp+88Dh] [bp-49Bh]@66
int v453; // [sp+4D8h] [bp-850h]@67
int v454; // [sp+4CCh] [bp-85Ch]@68
int v455; // [sp+4C0h] [bp-868h]@69
int v456; // [sp+4F8h] [bp-830h]@80
unsigned int v457; // [sp+4F0h] [bp-838h]@81
unsigned int v458; // [sp+4F4h] [bp-834h]@81
int v459; // [sp+4E4h] [bp-844h]@83
int v460; // [sp+410h] [bp-918h]@117
unsigned int v461; // [sp+408h] [bp-920h]@118
unsigned int v462; // [sp+40Ch] [bp-91Ch]@118
int v463; // [sp+3FCh] [bp-92Ch]@120
int v464; // [sp+430h] [bp-8F8h]@136
unsigned int v465; // [sp+428h] [bp-900h]@137
unsigned int v466; // [sp+42Ch] [bp-8FCh]@137
int v467; // [sp+41Ch] [bp-90Ch]@139
int v468; // [sp+450h] [bp-8D8h]@192
unsigned int v469; // [sp+448h] [bp-8E0h]@193
unsigned int v470; // [sp+44Ch] [bp-8DCh]@193
int v471; // [sp+43Ch] [bp-8ECh]@195
int v472; // [sp+470h] [bp-8B8h]@201
unsigned int v473; // [sp+468h] [bp-8C0h]@202
unsigned int v474; // [sp+46Ch] [bp-8BCh]@202
int v475; // [sp+45Ch] [bp-8CCh]@204
int v476; // [sp+490h] [bp-898h]@210
unsigned int v477; // [sp+488h] [bp-8A0h]@211
unsigned int v478; // [sp+48Ch] [bp-89Ch]@211
int v479; // [sp+47Ch] [bp-8ACh]@213
int v480; // [sp+4B0h] [bp-878h]@219
unsigned int v481; // [sp+4A8h] [bp-880h]@220
unsigned int v482; // [sp+4ACh] [bp-87Ch]@220
int v483; // [sp+49Ch] [bp-88Ch]@222
v401 = sub_6774C900;
v402 = dword_6778C114;
v404 = &v403;
v405 = loc_677441E0;
v407 = &v406;
sub_67758690(&v408);
if ( strlen(a1) == 108 )
{
v409 = a245 & 0xF;
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 && strlen(a247) == 44 )
{
v310 = 0;
v410 = byte_6778F0EA;
memset(&v411, v409, 8u);
v412 = 0;
v413 = &v410;
do
{
*((_BYTE *)&v414 + v310) = *(&a2 + v310);
++v310;
}
while ( v310 < 0x3C8 );
v415 = -1;
M16(
a1,
ST04_1_0,
ST08_4_0,
ST0C_4_0,
ST10_4_0,
ST14_4_0,
ST18_4_0,
ST1C_4_0,
ST20_4_0,
ST24_4_0,
ST28_4_0,
ST2C_4_0,
ST30_4_0,
ST34_4_0,
ST38_4_0,
ST3C_4_0,
ST40_4_0,
ST44_4_0,
ST48_4_0,
ST4C_4_0,
ST50_4_0,
ST54_4_0,
ST58_4_0,
ST5C_4_0,
ST60_4_0,
ST64_4_0,
ST68_4_0,
ST6C_4_0,
ST70_4_0,
ST74_4_0,
ST78_4_0,
ST7C_4_0,
ST80_4_0,
ST84_4_0,
ST88_4_0,
ST8C_4_0,
ST90_4_0,
ST94_4_0,
ST98_4_0,
ST9C_4_0,
STA0_4_0,
STA4_4_0,
STA8_4_0,
STAC_4_0,
STB0_4_0,
STB4_4_0,
STB8_4_0,
STBC_4_0,
STC0_4_0,
STC4_4_0,
STC8_4_0,
STCC_4_0,
STD0_4_0,
STD4_4_0,
STD8_4_0,
STDC_4_0,
STE0_4_0,
STE4_4_0,
STE8_4_0,
STEC_4_0,
STF0_4_0,
STF4_4_0,
STF8_4_0);
v416 = byte_6778F0EA;
memset(&v417, 0, 8u);
v418 = 0;
v419 = 1918985570;
v420 = 0;
v421 = byte_6778F0EA;
memset(&v422, 0, 0xFEu);
v423 = v416;
memset(&v424, 0, 0xFEu);
if ( strlen(a1) == 108 )
{
if ( !strcmp(&v410, (const char *)&v419) )
{
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 )
{
if ( strlen(a247) == 44 )
{
strlen(a1);
strcmp(&v410, (const char *)&v419);
v415 = 84;
sub_6777C790(&v436, &unk_6778F20F, &v426);
v362 = strlen(a247);
v415 = 83;
sub_6777ACB0(&v436, a247, v362);
v415 = 82;
sub_6777C790(&v428, &unk_6778F20F, &v426);
v415 = 81;
sub_6777C790(&v427, &unk_6778F20F, &v426);
v437 = byte_6778F0EA;
memset(&v438, 0, 0xFEu);
v363 = *((_DWORD *)v436 - 3) >> 1;
v415 = 80;
sub_6777C960(&v425, &v436, 0, v363);
v415 = 79;
sub_6777B160(&v427, &v425);
v439 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 77;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v439);
}
v364 = *((_DWORD *)v436 - 3);
v440 = *((_DWORD *)v436 - 3);
v364 >>= 1;
v441 = v364;
if ( v440 < v364 )
{
v415 = 80;
sub_6774ECD0("basic_string::substr");
}
v415 = 80;
sub_6777C960(&v425, &v436, v441, v440);
v415 = 76;
sub_6777B160(&v428, &v425);
v442 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 74;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v442);
}
v415 = 80;
sub_6778B1E0(&v425);
v415 = 73;
sub_6777B160(&v436, &v425);
v443 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 71;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v443);
}
v415 = 80;
strcpy(&v437, v436);
v365 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v436, &unk_6778F20F, v365);
v366 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v428, &unk_6778F20F, v366);
v367 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v427, &unk_6778F20F, v367);
LOBYTE(v432) = byte_6778F0EA;
memset((char *)&v432 + 1, 0, 0xFEu);
v444[0] = 0;
v432 = 942420825;
v445 = 1480540268;
v368 = strlen((const char *)&v432);
*(signed int *)((char *)&v432 + v368) = 2067094910;
*((_BYTE *)&v446 + v368) = 0;
*(signed int *)((char *)&v445 + v368) = 1462644809;
*(_WORD *)&v444[v368] = 13884;
v369 = strlen((const char *)&v432);
*(signed int *)((char *)&v445 + v369) = 2830637;
v314 = &v432;
*(signed int *)((char *)&v432 + v369) = 695025246;
do
{
v370 = *v314;
++v314;
v315 = ~v370 & (v370 - 16843009) & 0x80808080;
}
while ( !v315 );
if ( !(v315 & 0x8080) )
{
v315 = (unsigned int)v315 >> 16;
v314 = (signed int *)((char *)v314 + 2);
}
if ( (char *)v314 + -__MKCADD__(v315, v315) - 3 - (char *)&v432 == 25 )
{
v450 = 0;
v451 = 0;
v452 = 0;
v415 = 80;
sub_6774B320(&v450, &v432, 16);
LOBYTE(v432) = 0;
v430 = byte_6778F0EA;
memset(&v431, 0, 0xFEu);
v356 = &v437;
do
{
v400 = *(_DWORD *)v356;
v356 += 4;
v357 = ~v400 & (v400 - 16843009) & 0x80808080;
}
while ( !v357 );
if ( !(v357 & 0x8080) )
{
v357 = (unsigned int)v357 >> 16;
v356 += 2;
}
if ( &v356[-__MKCADD__(v357, v357) - 3] - &v437 == 44 )
{
v415 = 80;
sub_67741270(&v437, &v430, 45);
sub_6774C130(&v450, &v430, &v423, 32, 0);
}
else
{
v437 = 0;
}
}
else
{
LOBYTE(v432) = 0;
}
v447 = (int)(v427 - 12);
if ( (_UNKNOWN *)(v427 - 12) != &unk_6778E1A0 )
{
v415 = 69;
if ( sub_6774F980(v427 - 4, -1) <= 0 )
sub_6777A5D0(v447);
}
v448 = (int)(v428 - 12);
if ( (_UNKNOWN *)(v428 - 12) != &unk_6778E1A0 )
{
v415 = 67;
if ( sub_6774F980(v428 - 4, -1) <= 0 )
sub_6777A5D0(v448);
}
v449 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 65;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v449);
}
}
}
}
}
}
if ( strlen(a1) == 108 )
{
v311 = &v423;
do
{
v358 = *(_DWORD *)v311;
v311 += 4;
v312 = ~v358 & (v358 - 16843009) & 0x80808080;
}
while ( !v312 );
if ( !(v312 & 0x8080) )
{
v312 = (unsigned int)v312 >> 16;
v311 += 2;
}
if ( &v311[-__MKCADD__(v312, v312) - 3] - &v423 == 25 )
{
if ( !strcmp(&v410, (const char *)&v419) )
{
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 )
{
v430 = byte_6778F0EA;
memset(&v431, 0, 0xFEu);
v450 = 0;
v451 = 0;
v452 = 0;
v415 = 64;
sub_6777C790(&v425, &unk_6778F20F, &v426);
v371 = strlen(&v423);
v415 = 63;
sub_6777ACB0(&v425, &v423, v371);
v415 = 62;
sub_6777C790(&v427, &unk_6778F20F, &v426);
v415 = 61;
sub_6777C790(&v428, &unk_6778F20F, &v426);
v423 = 0;
if ( *(_DWORD *)(v425 - 12) == 25 )
{
if ( !(a245 & 0xF) )
{
if ( *(_BYTE *)a244 )
{
v415 = 60;
sub_6777C960(&v436, &v425, 0, 12);
v415 = 59;
sub_6777B160(&v427, &v436);
v456 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 57;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v456);
}
v372 = *(_DWORD *)(v425 - 12);
v457 = *(_DWORD *)(v425 - 12);
v372 >>= 1;
v458 = v372;
if ( v457 < v372 )
{
v415 = 60;
sub_6774ECD0("basic_string::substr");
}
v415 = 60;
sub_6777C960(&v436, &v425, v458, v457);
v415 = 56;
sub_6777B160(&v428, &v436);
v459 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 54;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v459);
}
v373 = strlen((const char *)&unk_6778F20F);
v415 = 60;
sub_6777B050(&v425, &unk_6778F20F, v373);
strcpy(&v423, v428);
*(_WORD *)(&v423 + strlen(&v423)) = 42;
strcat(&v423, v427);
v374 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v427, &unk_6778F20F, v374);
v375 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v428, &unk_6778F20F, v375);
sub_6774B320(&v450, &v423, 16);
v423 = 0;
sub_6774BA40(&v450, a244, &v430, a245, 0);
sub_67741180(&v430, &v421, a245);
}
}
}
v453 = (int)(v428 - 12);
if ( (_UNKNOWN *)(v428 - 12) != &unk_6778E1A0 )
{
v415 = 52;
if ( sub_6774F980(v428 - 4, -1) <= 0 )
sub_6777A5D0(v453);
}
v454 = (int)(v427 - 12);
if ( (_UNKNOWN *)(v427 - 12) != &unk_6778E1A0 )
{
v415 = 50;
if ( sub_6774F980(v427 - 4, -1) <= 0 )
sub_6777A5D0(v454);
}
v455 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 48;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v455);
}
}
}
}
}
}
v415 = 47;
sub_6777C790(&v425, &unk_6778F20F, &v426);
if ( strlen(a1) == 108 && !strcmp(&v410, (const char *)&v419) && v421 && !(a245 & 0xF) && *(_BYTE *)a244 )
{
if ( a245 == 16 )
{
v350 = &v421;
do
{
v397 = *(_DWORD *)v350;
v350 += 4;
v351 = ~v397 & (v397 - 16843009) & 0x80808080;
}
while ( !v351 );
if ( !(v351 & 0x8080) )
{
v351 = (unsigned int)v351 >> 16;
v350 += 2;
}
if ( &v350[-__MKCADD__(v351, v351) - 3] - &v421 == 24 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 32 )
{
v348 = &v421;
do
{
v396 = *(_DWORD *)v348;
v348 += 4;
v349 = ~v396 & (v396 - 16843009) & 0x80808080;
}
while ( !v349 );
if ( !(v349 & 0x8080) )
{
v349 = (unsigned int)v349 >> 16;
v348 += 2;
}
if ( &v348[-__MKCADD__(v349, v349) - 3] - &v421 == 44 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 48 )
{
v346 = &v421;
do
{
v395 = *(_DWORD *)v346;
v346 += 4;
v347 = ~v395 & (v395 - 16843009) & 0x80808080;
}
while ( !v347 );
if ( !(v347 & 0x8080) )
{
v347 = (unsigned int)v347 >> 16;
v346 += 2;
}
if ( &v346[-__MKCADD__(v347, v347) - 3] - &v421 == 64 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 64 )
{
v343 = &v421;
do
{
v394 = *(_DWORD *)v343;
v343 += 4;
v344 = ~v394 & (v394 - 16843009) & 0x80808080;
}
while ( !v344 );
if ( !(v344 & 0x8080) )
{
v344 = (unsigned int)v344 >> 16;
v343 += 2;
}
if ( &v343[-__MKCADD__(v344, v344) - 3] - &v421 == 88 )
{
v345 = strlen(&v421);
LABEL_233:
v415 = 46;
sub_6777ACB0(&v425, &v421, v345);
goto LABEL_26;
}
}
if ( a245 == 80 )
{
v354 = &v421;
do
{
v399 = *(_DWORD *)v354;
v354 += 4;
v355 = ~v399 & (v399 - 16843009) & 0x80808080;
}
while ( !v355 );
if ( !(v355 & 0x8080) )
{
v355 = (unsigned int)v355 >> 16;
v354 += 2;
}
if ( &v354[-__MKCADD__(v355, v355) - 3] - &v421 == 108 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
if ( a245 == 160 )
{
v352 = &v421;
do
{
v398 = *(_DWORD *)v352;
v352 += 4;
v353 = ~v398 & (v398 - 16843009) & 0x80808080;
}
while ( !v353 );
if ( !(v353 & 0x8080) )
{
v353 = (unsigned int)v353 >> 16;
v352 += 2;
}
if ( &v352[-__MKCADD__(v353, v353) - 3] - &v421 == 216 )
{
v345 = strlen(&v421);
goto LABEL_233;
}
}
}
LABEL_26:
v415 = 45;
sub_6777C790(&v427, &unk_6778F20F, &v426);
v415 = 44;
sub_6777C790(&v428, &unk_6778F20F, &v426);
v429 = byte_6778F0EA;
v430 = byte_6778F0EA;
memset(&v431, 0, 0xFEu);
LOBYTE(v432) = v429;
memset((char *)&v432 + 1, 0, 0xFEu);
if ( strlen(a1) == 108 )
{
if ( !strcmp(&v410, (const char *)&v419) )
{
v313 = *(_DWORD *)(v425 - 12);
if ( v313 )
{
if ( !(a245 & 0xF) && *(_BYTE *)a244 )
{
if ( a245 == 16 && v313 == 24 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 12);
v415 = 42;
sub_6777B160(&v427, &v436);
v480 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 40;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v480);
}
v393 = *(_DWORD *)(v425 - 12);
v481 = *(_DWORD *)(v425 - 12);
v393 >>= 1;
v482 = v393;
if ( v481 < v393 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v482, v481);
v415 = 39;
sub_6777B160(&v428, &v436);
v483 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 37, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v483;
goto LABEL_142;
}
if ( a245 == 32 && *(_DWORD *)(v425 - 12) == 44 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 22);
v415 = 36;
sub_6777B160(&v427, &v436);
v476 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 34;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v476);
}
v392 = *(_DWORD *)(v425 - 12);
v477 = *(_DWORD *)(v425 - 12);
v392 >>= 1;
v478 = v392;
if ( v477 < v392 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v478, v477);
v415 = 33;
sub_6777B160(&v428, &v436);
v479 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 31, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v479;
goto LABEL_142;
}
if ( a245 == 48 && *(_DWORD *)(v425 - 12) == 64 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 32);
v415 = 30;
sub_6777B160(&v427, &v436);
v472 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 28;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v472);
}
v391 = *(_DWORD *)(v425 - 12);
v473 = *(_DWORD *)(v425 - 12);
v391 >>= 1;
v474 = v391;
if ( v473 < v391 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v474, v473);
v415 = 27;
sub_6777B160(&v428, &v436);
v475 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 25, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v475;
goto LABEL_142;
}
if ( a245 == 64 && *(_DWORD *)(v425 - 12) == 88 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 44);
v415 = 24;
sub_6777B160(&v427, &v436);
v468 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 22;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v468);
}
v390 = *(_DWORD *)(v425 - 12);
v469 = *(_DWORD *)(v425 - 12);
v390 >>= 1;
v470 = v390;
if ( v469 < v390 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v470, v469);
v415 = 21;
sub_6777B160(&v428, &v436);
v471 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 19, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v471;
goto LABEL_142;
}
if ( a245 == 80 && *(_DWORD *)(v425 - 12) == 108 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 54);
v415 = 18;
sub_6777B160(&v427, &v436);
v464 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 16;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v464);
}
v381 = *(_DWORD *)(v425 - 12);
v465 = *(_DWORD *)(v425 - 12);
v381 >>= 1;
v466 = v381;
if ( v465 < v381 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v466, v465);
v415 = 15;
sub_6777B160(&v428, &v436);
v467 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 13, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v467;
goto LABEL_142;
}
if ( a245 == 160 && *(_DWORD *)(v425 - 12) == 216 )
{
v415 = 43;
sub_6777C960(&v436, &v425, 0, 108);
v415 = 12;
sub_6777B160(&v427, &v436);
v460 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) != &unk_6778E1A0 )
{
v415 = 10;
if ( sub_6774F980(v436 - 4, -1) <= 0 )
sub_6777A5D0(v460);
}
v378 = *(_DWORD *)(v425 - 12);
v461 = *(_DWORD *)(v425 - 12);
v378 >>= 1;
v462 = v378;
if ( v461 < v378 )
{
v415 = 43;
sub_6774ECD0("basic_string::substr");
}
v415 = 43;
sub_6777C960(&v436, &v425, v462, v461);
v415 = 9;
sub_6777B160(&v428, &v436);
v463 = (int)(v436 - 12);
if ( (_UNKNOWN *)(v436 - 12) == &unk_6778E1A0 || (v415 = 7, sub_6774F980(v436 - 4, -1) > 0) )
goto LABEL_121;
v326 = v463;
LABEL_142:
sub_6777A5D0(v326);
LABEL_121:
v415 = 43;
strcpy(&v430, v427);
strcpy((char *)&v432, v428);
goto LABEL_37;
}
}
}
}
}
LABEL_37:
v359 = strlen((const char *)&unk_6778F20F);
v415 = 43;
sub_6777B050(&v425, &unk_6778F20F, v359);
v360 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v427, &unk_6778F20F, v360);
v361 = strlen((const char *)&unk_6778F20F);
sub_6777B050(&v428, &unk_6778F20F, v361);
if ( strlen(a1) != 108
|| strcmp(&v410, (const char *)&v419)
|| !v430
|| !(_BYTE)v432
|| a245 & 0xF
|| !*(_BYTE *)a244 )
goto LABEL_38;
if ( a245 == 16 )
{
v339 = &v430;
do
{
v388 = *(_DWORD *)v339;
v339 += 4;
v340 = ~v388 & (v388 - 16843009) & 0x80808080;
}
while ( !v340 );
if ( !(v340 & 0x8080) )
{
v340 = (unsigned int)v340 >> 16;
v339 += 2;
}
if ( &v339[-__MKCADD__(v340, v340) - 3] - &v430 == 12 )
{
v341 = &v432;
do
{
v389 = *v341;
++v341;
v342 = ~v389 & (v389 - 16843009) & 0x80808080;
}
while ( !v342 );
if ( !(v342 & 0x8080) )
{
v342 = (unsigned int)v342 >> 16;
v341 = (signed int *)((char *)v341 + 2);
}
if ( (char *)v341 + -__MKCADD__(v342, v342) - 3 - (char *)&v432 == 12 )
goto LABEL_157;
}
}
if ( a245 == 32 )
{
v335 = &v430;
do
{
v386 = *(_DWORD *)v335;
v335 += 4;
v336 = ~v386 & (v386 - 16843009) & 0x80808080;
}
while ( !v336 );
if ( !(v336 & 0x8080) )
{
v336 = (unsigned int)v336 >> 16;
v335 += 2;
}
if ( &v335[-__MKCADD__(v336, v336) - 3] - &v430 == 22 )
{
v337 = &v432;
do
{
v387 = *v337;
++v337;
v338 = ~v387 & (v387 - 16843009) & 0x80808080;
}
while ( !v338 );
if ( !(v338 & 0x8080) )
{
v338 = (unsigned int)v338 >> 16;
v337 = (signed int *)((char *)v337 + 2);
}
if ( (char *)v337 + -__MKCADD__(v338, v338) - 3 - (char *)&v432 == 22 )
goto LABEL_134;
}
}
if ( a245 != 48 )
goto LABEL_281;
v331 = &v430;
do
{
v384 = *(_DWORD *)v331;
v331 += 4;
v332 = ~v384 & (v384 - 16843009) & 0x80808080;
}
while ( !v332 );
if ( !(v332 & 0x8080) )
{
v332 = (unsigned int)v332 >> 16;
v331 += 2;
}
if ( &v331[-__MKCADD__(v332, v332) - 3] - &v430 != 32 )
goto LABEL_281;
v333 = &v432;
do
{
v385 = *v333;
++v333;
v334 = ~v385 & (v385 - 16843009) & 0x80808080;
}
while ( !v334 );
if ( !(v334 & 0x8080) )
{
v334 = (unsigned int)v334 >> 16;
v333 = (signed int *)((char *)v333 + 2);
}
if ( (char *)v333 + -__MKCADD__(v334, v334) - 3 - (char *)&v432 != 32 )
{
LABEL_281:
if ( a245 == 64 )
{
v327 = &v430;
do
{
v382 = *(_DWORD *)v327;
v327 += 4;
v328 = ~v382 & (v382 - 16843009) & 0x80808080;
}
while ( !v328 );
if ( !(v328 & 0x8080) )
{
v328 = (unsigned int)v328 >> 16;
v327 += 2;
}
if ( &v327[-__MKCADD__(v328, v328) - 3] - &v430 == 44 )
{
v329 = &v432;
do
{
v383 = *v329;
++v329;
v330 = ~v383 & (v383 - 16843009) & 0x80808080;
}
while ( !v330 );
if ( !(v330 & 0x8080) )
{
v330 = (unsigned int)v330 >> 16;
v329 = (signed int *)((char *)v329 + 2);
}
if ( (char *)v329 + -__MKCADD__(v330, v330) - 3 - (char *)&v432 == 44 )
{
LABEL_157:
v415 = 43;
strcpy(a246, (const char *)&v432);
v321 = &v430;
v320 = a246;
goto LABEL_115;
}
}
}
if ( a245 == 80 )
{
v322 = &v430;
do
{
v379 = *(_DWORD *)v322;
v322 += 4;
v323 = ~v379 & (v379 - 16843009) & 0x80808080;
}
while ( !v323 );
if ( !(v323 & 0x8080) )
{
v323 = (unsigned int)v323 >> 16;
v322 += 2;
}
if ( &v322[-__MKCADD__(v323, v323) - 3] - &v430 == 54 )
{
v324 = &v432;
do
{
v380 = *v324;
++v324;
v325 = ~v380 & (v380 - 16843009) & 0x80808080;
}
while ( !v325 );
if ( !(v325 & 0x8080) )
{
v325 = (unsigned int)v325 >> 16;
v324 = (signed int *)((char *)v324 + 2);
}
if ( (char *)v324 + -__MKCADD__(v325, v325) - 3 - (char *)&v432 == 54 )
{
LABEL_134:
v415 = 43;
strcpy(a246, (const char *)&v432);
v321 = &v430;
v320 = a246;
goto LABEL_115;
}
}
}
if ( a245 != 160 )
goto LABEL_38;
v316 = &v430;
do
{
v376 = *(_DWORD *)v316;
v316 += 4;
v317 = ~v376 & (v376 - 16843009) & 0x80808080;
}
while ( !v317 );
if ( !(v317 & 0x8080) )
{
v317 = (unsigned int)v317 >> 16;
v316 += 2;
}
if ( &v316[-__MKCADD__(v317, v317) - 3] - &v430 != 108 )
goto LABEL_38;
v318 = &v432;
do
{
v377 = *v318;
++v318;
v319 = ~v377 & (v377 - 16843009) & 0x80808080;
}
while ( !v319 );
if ( !(v319 & 0x8080) )
{
v319 = (unsigned int)v319 >> 16;
v318 = (signed int *)((char *)v318 + 2);
}
if ( (char *)v318 + -__MKCADD__(v319, v319) - 3 - (char *)&v432 != 108 )
goto LABEL_38;
}
v415 = 43;
strcpy(a246, (const char *)&v432);
v321 = &v430;
v320 = a246;
LABEL_115:
strcat(v320, v321);
LABEL_38:
v430 = 0;
LOBYTE(v432) = 0;
v410 = 0;
LOBYTE(v419) = 0;
v433 = (int)(v428 - 12);
if ( (_UNKNOWN *)(v428 - 12) != &unk_6778E1A0 )
{
v415 = 5;
if ( sub_6774F980(v428 - 4, -1) <= 0 )
sub_6777A5D0(v433);
}
v434 = (int)(v427 - 12);
if ( (_UNKNOWN *)(v427 - 12) != &unk_6778E1A0 )
{
v415 = 3;
if ( sub_6774F980(v427 - 4, -1) <= 0 )
sub_6777A5D0(v434);
}
v435 = v425 - 12;
if ( v425 - 12 != (_DWORD)&unk_6778E1A0 )
{
v415 = 1;
if ( sub_6774F980(v425 - 4, -1) <= 0 )
sub_6777A5D0(v435);
}
return sub_67758770(&v408);
}
}
}
return sub_67758770(&v408);
}
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
他的文章
- [求助]找出加密算法? 1140
- [求助]汇编 读出栈的内容 1399
- exe里面找出密钥,帮我看看,谢谢,所需库已添加 1293
看原图
赞赏
雪币:
留言: