__int64
__fastcall sub_100274B50(
int
a1,
__int64
a2,
int
a3,
int
a4, unsigned
__int64
*a5,
int
*a6)
{
BOOL
v6;
char
*v7;
int
*v8;
unsigned
__int64
*v9;
int
v10;
__int64
v11;
int
v12;
int
v13;
int
v14;
char
*v15;
int
v16;
int
v17;
char
*v18;
int
v19;
__int64
v20;
int
v21;
int
v22;
__int64
v23;
int
v24;
int
v25;
char
*v26;
char
*v27;
int
v28;
char
*v29;
int
v30;
int
v31;
char
*v32;
char
*v33;
int
v34;
int
v35;
char
*v36;
int
v37;
int
v38;
char
*v39;
int
v40;
BOOL
v41;
int
v42;
int
v43;
char
*v44;
int
v45;
unsigned
__int64
v46;
int
v47;
int
v48;
char
*v49;
int
v50;
int
v51;
unsigned
int
v52;
int
v53;
int
v54;
int
v55;
int
v56;
char
*v57;
unsigned
__int64
v58;
unsigned
int
v59;
int
v60;
char
*v61;
__int64
v62;
BOOL
v63;
int
v64;
int
v65;
unsigned
int
v66;
signed
int
v67;
int8x16_t v68;
int
v69;
unsigned
__int64
v70;
unsigned
__int64
v71;
int8x16_t v72;
char
*v73;
int
v74;
bool
v75;
BOOL
v76;
signed
int
v77;
int
v78;
int
v79;
int
v80;
__int64
v81;
int
v82;
__int64
v83;
char
*v84;
int
v85;
__int64
v86;
unsigned
__int64
*v88;
int
v89;
__int64
v90;
int
*v91;
int
v92;
__int64
*v93;
int
v94;
unsigned
__int64
v95;
unsigned
__int64
*v96;
__int64
*v97;
int
*v98;
int
v99;
int
v100;
v89 = a4;
v6 = a5 == 0LL || a6 == 0LL;
v7 = (
char
*)&loc_100274B98 + dword_1002CA440[v6 + 3];
v8 = a6;
v9 = a5;
v10 = a3;
v11 = a2;
v12 = a1;
v13 = 250416724 * v6 + 4 * !v6 + 3;
*a5 = 0LL;
*a6 = 0;
HIDWORD(v96) = v13 + 318538391 * ((unsigned
__int64
)&v96 ^ 0xA472A4EA) + 1085017171;
sub_100275504(&v96);
if
( (_DWORD)v96 == 818020368 )
v14 = v13 + 1;
else
v14 = v13;
v15 = (
char
*)&loc_100274BC4 + dword_1002CA440[v14];
v16 = v13 + 250416720 * ((_DWORD)v96 != 818020368) - 7 * ((_DWORD)v96 == 818020368);
HIDWORD(v96) = v16 + 344300003 * ((unsigned
__int64
)&v96 ^ 0x1BB52AD3);
v97 = (
__int64
*)&v91;
sub_10028C214(&v96);
if
( (_DWORD)v96 == 818020368 )
v17 = v16 + 1;
else
v17 = v16;
v18 = (
char
*)&loc_100274C60 + dword_1002CA440[v17];
v88 = v9;
v19 = v16 + 250416727 * ((_DWORD)v96 != 818020368) + (((_DWORD)v96 == 818020368) | 8 * ((_DWORD)v96 == 818020368));
v20 = (
__int64
)v91;
v21 = 1089068225 * v12 + 1917068697;
v22 = 629865641 * ((unsigned
__int64
)&v96 ^ 0xB415044F);
HIDWORD(v96) = v22 ^ v21;
LODWORD(v97) = (v19 - 6) ^ v22;
v98 = v91;
v23 = (
__int64
)*(&off_10036E8E0 + v19 + 208);
sub_10026BF54(&v96);
HIDWORD(v96) = v22 ^ (1089068225 * HIDWORD(v11) + 1917068697);
LODWORD(v97) = (v19 - 6) ^ v22;
v98 = (
int
*)v20;
sub_10026BF54(&v96);
HIDWORD(v96) = v22 ^ (1089068225 * v11 + 1917068697);
LODWORD(v97) = (v19 - 6) ^ v22;
v98 = (
int
*)v20;
sub_10026BF54(&v96);
v98 = (
int
*)v20;
HIDWORD(v96) = v22 ^ (1089068225 * v10 + 1917068697);
LODWORD(v97) = (v19 - 6) ^ v22;
sub_10026BF54(&v96);
v98 = (
int
*)v20;
HIDWORD(v96) = v22 ^ (1089068225 * v89 + 1917068697);
LODWORD(v97) = (v19 - 6) ^ v22;
sub_10026BF54(&v96);
if
( (_DWORD)v96 == 818020368 )
v24 = v19 + 1;
else
v24 = v19;
v25 = -7 * ((_DWORD)v96 != 818020368) + v19 - 4 * ((_DWORD)v96 == 818020368);
v26 = (
char
*)&loc_100274CD0 + dword_1002CA440[v24];
v27 = (
char
*)*(&off_10036E8E0 + v19 + 155) - 6;
v28 = 1870922891 * ((unsigned
__int64
)&v96 ^ 0x40116C51);
HIDWORD(v96) = v28 ^ 0xE15FB441;
v99 = v28 + 1526806456;
v100 = (v25 - 4) ^ v28;
v97 = (
__int64
*)&v93;
v98 = (
int
*)v20;
v29 = (
char
*)*(&off_10036E8E0 + v25 + 199) - 14;
sub_10027A810(&v96);
if
( (_DWORD)v96 == 818020368 )
v30 = v25 + 1;
else
v30 = v25;
v31 = -3 * ((_DWORD)v96 != 818020368) + v25 + 6 * ((_DWORD)v96 == 818020368);
v32 = (
char
*)&loc_100274E1C + dword_1002CA440[v30];
v90 = v20;
v98 = &v92;
*(_QWORD *)&v99 = v93;
LODWORD(v97) = v31 + 357855347 * ((unsigned
__int64
)&v96 ^ 0x17939E0) + 1288018446;
v96 = &v95;
sub_10028D8CC(&v96);
HIDWORD(v98) = (v31 - 5) ^ 629865641 * ((unsigned
__int64
)&v96 ^ 0xB415044F);
v96 = (unsigned
__int64
*)&v94;
v97 = v93;
v33 = (
char
*)*(&off_10036E8E0 + v31 + 66) - 11;
sub_100299998(&v96);
LODWORD(v96) = v31 - 1785876119 * ((unsigned
__int64
)&v96 ^ 0x378C1BBF) - 6;
v97 = v93;
sub_10029F838(&v96);
v34 = v31 + 4 * ((_DWORD)v98 != 818020368) + 2 * ((_DWORD)v98 == 818020368);
if
( (_DWORD)v98 == 818020368 )
v35 = v31 + 1;
else
v35 = v31;
v36 = (
char
*)&loc_100274EBC + dword_1002CA440[v35];
v37 = v34 + 2 * (v94 != 0) + ((v94 == 0) | 2 * (v94 == 0));
if
( v94 )
v38 = v31 + 4 * ((_DWORD)v98 != 818020368) + 2 * ((_DWORD)v98 == 818020368);
else
v38 = v34 + 1;
v39 = (
char
*)&loc_100274FBC + dword_1002CA440[v38];
v40 = v92;
v41 = v92 == 862660833;
v42 = v37 + 4 * (v92 != 862660833);
if
( v92 == 862660833 )
++v37;
v43 = v42 - v41;
v44 = (
char
*)&loc_10027501C + dword_1002CA440[v37];
v45 = v92 - 862660833;
v46 = ((
__int64
(__fastcall *)(_QWORD))((
char
*)*(&off_10036E8E0 + v42 - v41 + 204) - 2))((unsigned
int
)(v92 - 862660833));
if
( v46 )
v47 = v43;
else
v47 = v43 + 1;
v48 = v43 - 2 * (v46 != 0) - ((v46 == 0) | 4 * (v46 == 0));
v49 = (
char
*)&loc_10027505C + dword_1002CA440[v47];
v50 = v40 - ((2 * v40 + 422161982) & 0x47D9921C) + 1887543341;
v51 = v50 ^ 0x4D326F6D;
v52 = 2 * v50 & 0xDDBD4CC6 ^ 0x45990004;
v53 = v52 + (v50 ^ 0x4D326F6D);
v54 = v53 + 402651648;
v55 = (((v53 != -287398301) | (unsigned
__int16
)(4 * (v53 != -287398301))) & 0xFFEF | 16 * (v53 == -287398301)) + v48;
if
( v53 == -287398301 )
v56 = v48 + 1;
else
v56 = v48;
v57 = (
char
*)&loc_1002750B4 + dword_1002CA440[v56];
v58 = v95;
v59 = v53 + 287398301;
v60 = ((v59 > 0x1F) | 4 * (v59 > 0x1F)) + 250416704 * (v59 < 0x20) + v55;
if
( v59 < 0x20 )
++v55;
v61 = (
char
*)&loc_100275154 + dword_1002CA440[v55];
v62 = v52 + v51 + 287398300;
v63 = v95 < v46 + v62 + 1 && v46 < v95 + v62 + 1;
v64 = v60 + 250416699 * (v63 + !v63);
v65 = dword_1002CA440[v60 + v63];
v66 = v59 & 0xFFFFFFE0;
v67 = (v59 & 0xFFFFFFE0) - 32;
v68.n128_u64[0] = 8246779703540740722LL;
v68.n128_u64[1] = 8246779703540740722LL;
while
( 1 )
{
v69 = v64 - 250416701;
if
( !v67 )
v69 = v64 - 250416700;
v70 = v58 + (unsigned
int
)v62;
v71 = v46 + (unsigned
int
)v62;
v72 = veorq_s8(*(int8x16_t *)(v70 - 31), v68);
*(int8x16_t *)(v71 - 15) = veorq_s8(*(int8x16_t *)(v70 - 15), v68);
*(int8x16_t *)(v71 - 31) = v72;
v64 -= 250416701 * (v67 == 0);
v73 = (
char
*)&loc_100275210 + dword_1002CA440[v69 + 4];
if
( v67 >= 0 )
break
;
LODWORD(v62) = v62 - 32;
v67 -= 32;
}
v74 = v54 - v66;
v75 = v59 == v66;
v76 = v59 == v66;
v77 = !v75;
v78 = 250416701 * v77 + 8 * v76;
if
( v75 )
v79 = v64 + 1;
else
v79 = v64;
v80 = v78 + v64;
v81 = dword_1002CA440[v79];
do
{
v82 = v80 - 250416701;
v83 = (unsigned
int
)(v74-- - 115253348);
if
( v74 == 115253347 )
v82 = v80 - 250416700;
*(_BYTE *)(v46 + v83) = *(_BYTE *)(v58 + v83) ^ 0x72;
v80 -= 250416693 * (v74 == 115253347);
v84 = (
char
*)&loc_100275298 + dword_1002CA440[v82 + 6];
}
while
( v74 < 115253347 );
*v88 = v46;
*v8 = v45;
v85 = v80 - 32;
v97 = v93;
LODWORD(v96) = v80 - 32 - 1277345827 * ((unsigned
__int64
)&v96 ^ 0xE4E0F794);
sub_1002A79C0(&v96, v73);
LODWORD(v96) = v85 - 1277345827 * ((unsigned
__int64
)&v96 ^ 0xE4E0F794);
v97 = (
__int64
*)v90;
sub_1002A79C0(&v96, v86);
return
0LL;
}