sub_140A1BFE4
INT64 __fastcall sub_140A1BFE4(INT64 a1, INT64 a2, CHAR a3){
_BYTE *v3;
__int64 v5;
int v6;
__int64 v7;
unsigned __int8 CurrentIrql;
int v9;
unsigned int *v10;
unsigned __int64 v11;
__int64 v12;
int v13;
__int128 *v14;
__int64 v15;
__int64 v16;
__int64 v17;
unsigned int v18;
unsigned int v19;
unsigned int v20;
int v21;
_BYTE *v22;
int v23;
unsigned int v24;
__int64 v25;
int v26;
unsigned __int64 v27;
int v28;
int v29;
int v30;
__int64 v31;
_QWORD *v32;
__int64 v33;
unsigned __int64 v34;
unsigned __int64 i;
_QWORD *v36;
__int64 v37;
__int128 *v38;
char v39;
unsigned __int64 v40;
_BOOL8 v41;
_QWORD *v42;
unsigned __int64 v43;
int v44;
_DWORD *v45;
int v46;
__int16 v47;
char *v48;
int v49;
signed __int64 v50;
__int64 v51;
__int64 v52;
__int64 *v53;
unsigned int v54;
__int64 *v55;
__int64 v56;
__int64 v57;
__int64 v58;
__int64 v59;
char *v60;
int v61;
__int64 v62;
__int64 v63;
char *v64;
int v65;
__int64 v66;
__int64 v67;
bool v68;
unsigned int v69;
INT64 *v70;
unsigned int v71;
BOOL v72;
__int64 v73;
INT64 v74;
__int64 v75;
__int64 v76;
_BOOL8 v77;
unsigned __int64 v78;
unsigned int v79;
_DWORD *v80;
int v81;
int v82;
char *v83;
int v84;
__int16 v85;
char *v86;
int v87;
signed __int64 v88;
__int64 v89;
__int64 *v90;
unsigned int v91;
__int64 *v92;
__int64 v93;
__int64 v94;
__int64 v95;
char *v96;
int v97;
__int64 v98;
char *v99;
int v100;
signed __int64 v101;
__int64 v102;
unsigned int v103;
BOOL v104;
__int64 *v105;
int v106;
unsigned int *p_a3a;
unsigned __int64 v108;
__int64 v109;
__int64 v110;
__int64 v111;
__int64 v112;
char **v113;
unsigned int v114;
__int64 v115;
unsigned int v116;
INT64 v117;
char *v118;
char *v119;
char *v120;
int v121;
char *j;
__int64 v123;
unsigned __int64 v124;
__int64 v125;
__int64 v126;
unsigned __int64 v127;
unsigned __int64 v128;
unsigned __int64 v129;
INT64 v130;
char *v131;
__int64 v132;
_DWORD *v133;
_QWORD *v134;
char *v135;
int v136;
char *v137;
_QWORD *v138;
__int64 v139;
char v140;
int v141;
__int64 k;
__int64 v143;
__int64 v144;
bool v145;
__int64 v146;
INT64 v147;
int v148;
unsigned int v149;
INT64 v150;
int v151;
unsigned int v152;
__int64 v153;
int v154;
unsigned __int64 v155;
int v156;
int v157;
INT64 v159;
int v160;
_QWORD *v161;
__int64 v162;
_QWORD *v163;
int v164;
char *v165;
unsigned __int64 v166;
unsigned int v167;
__int64 v168;
__int64 v169;
unsigned __int128 v170;
unsigned int v171;
unsigned __int64 v172;
__int64 v173;
unsigned __int64 m;
int v175;
unsigned __int64 v176;
int v177;
__int64 v178;
INT64 v179;
unsigned int a3a;
unsigned int a3_4;
__int64 v182;
unsigned __int64 v183;
unsigned __int64 v184;
__int64 v185;
__int64 v186;
INT64 v187;
__int64 v188;
char **v189;
__int128 v190;
__int64 v191;
char *v192;
__int64 *v193;
char *v194;
char *v195;
char *v196;
__int64 *v197;
char *v198;
char *v199;
__int64 v200;
__int64 v201;
__int64 v202;
__int64 v203;
__int64 v204;
char v205[104];
INT64 v207;
int v209;
unsigned __int16 v210;
unsigned int v211;
unsigned __int64 v212;
int v213;
v207 = a2;
v3 = *(_BYTE **)a1;
v5 = (*(__int64(__fastcall **)(INT64))(*(_QWORD *)a1 + 504i64))(a2);
if( v5 )
{
LODWORD(v182) = (*((__int64(__fastcall **)(INT64))v3 + 85))(a2);
v210 = *(_WORD *)(v5 + 6);
if( v210 && *(_DWORD *)(v5 + 56) >= 0x1000u && (a2 & 0xFFF) == 0 )
{
v6 = -1073741275;
v7 = *((_QWORD *)v3 + 168);
a3_4 = *(_DWORD *)(v5 + 84);
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xFui64);
(*((void(__fastcall **)(__int64))v3 + 42))(v7);
v9 = 24;
v10 = (unsigned int *)**((_QWORD **)v3 + 194);
v11 = (unsigned __int64)(v10 + 4);
while( *(_QWORD *)(v11 + 8) != a2 )
{
v11 += 24i64;
if( v11 >= (unsigned __int64)&v10[6 * *v10 + 4] )
goto LABEL_10;
}
v6 = 0;
v12 = *(_QWORD *)(v11 + 16);
v190 = *(_OWORD *)v11;
v191 = v12;
LABEL_10:
(*((void(__fastcall **)(_QWORD))v3 + 50))(*((_QWORD *)v3 + 168));
__writecr8(CurrentIrql);
if( v6 >= 0 )
{
v16 = (unsigned int)v191;
}
else
{
v13 = 24;
v14 = &v190;
v15 = 3i64;
do
{
*(_QWORD *)v14 = 0i64;
v13 -= 8;
v14 = (__int128 *)((char *)v14 + 8);
--v15;
}
while( v15 );
for( ; v13; --v13 )
{
*(_BYTE *)v14 = 0;
v14 = (__int128 *)((char *)v14 + 1);
}
v16 = *(unsigned int *)(v5 + 80);
LODWORD(v191) = *(_DWORD *)(v5 + 80);
*((_QWORD *)&v190 + 1) = a2;
*(_QWORD *)&v190 = 1i64;
}
v17 = *((unsigned int *)v3 + 505);
v18 = *((_DWORD *)v3 + 585);
v184 = ((unsigned __int64)(a2 & 0xFFF) + 4095 + v16) >> 12;
v19 = 20 * v184;
v20 = 20 * v184 + v17 + 48;
v21 = ((_DWORD)v182 != 0) + 33;
v175 = v21;
if( v20 <= *((_DWORD *)v3 + 647) )
{
v22 = v3;
v187 = (INT64)v3;
*((_DWORD *)v3 + 505) = v20;
}
else
{
v187 = sub_140A0EB30(v3, v20, v18);
v22 = (_BYTE *)v187;
if( !v187 )
return 3221225626i64;
v23 = *((_DWORD *)v3 + 612);
if( (v23 & 4) == 0 )
{
v24 = *((_DWORD *)v3 + 505);
v25 = *((_QWORD *)v3 + 249);
v26 = (v23 & 0x20000000) != 0 ? *((_DWORD *)v3 + 585) : 0;
if( v24 >= 8 )
{
v27 = (unsigned __int64)v24 >> 3;
do
{
*(_QWORD *)v3 = 0i64;
v24 -= 8;
v3 += 8;
--v27;
}
while( v27 );
}
for( ; v24; --v24 )
*v3++ = 0;
v28 = *((_DWORD *)v22 + 585);
*((_DWORD *)v22 + 585) = v26;
if( v26 == 3 )
{
(*((void(__fastcall **)(__int64))v22 + 109))(v25);
}
else
{
v29 = 0;
if( (*((_DWORD *)v22 + 612) & 0x10000000) == 0 )
v29 = v26;
if( v29 )
(*((void(__fastcall **)(__int64, _QWORD))v22 + 69))(v25 - 8, *(_QWORD *)(v25 - 8));
else(*((void(__fastcall **)(__int64))v22 + 32))(v25);
}
*((_DWORD *)v22 + 585) = v28;
}
*((_DWORD *)v22 + 612) &= ~4u;
v21 = v175;
}
++*((_DWORD *)v22 + 515);
v30 = 48;
v31 = (__int64)&v22[v17];
v200 = v31;
v32 = (_QWORD *)v31;
v33 = 6i64;
do
{
*v32 = 0i64;
v30 -= 8;
++v32;
--v33;
}
while( v33 );
for( ; v30; --v30 )
{
*(_BYTE *)v32 = 0;
v32 = (_QWORD *)((char *)v32 + 1);
}
*(_DWORD *)v31 = v21;
*(_QWORD *)(v31 + 8) = 0i64;
*(_DWORD *)(v31 + 16) = 0;
v34 = *((_QWORD *)v22 + 259);
for( i = v34; ; LODWORD(v34) = i ^ v34 )
{
i >>= 31;
if( !i )
break;
}
v36 = (_QWORD *)(v31 + 24);
v201 = v31;
*(_DWORD *)(v31 + 20) = v34 & 0x7FFFFFFF;
v37 = 3i64;
v38 = &v190;
*(_QWORD *)a1 = v22;
do
{
v9 -= 8;
*v36 = *(_QWORD *)v38;
v38 = (__int128 *)((char *)v38 + 8);
++v36;
--v37;
}
while( v37 );
for( ; v9; --v9 )
{
v39 = *(_BYTE *)v38;
v38 = (__int128 *)((char *)v38 + 1);
*(_BYTE *)v36 = v39;
v36 = (_QWORD *)((char *)v36 + 1);
}
LOBYTE(v36) = 1;
v40 = (*((__int64(__fastcall **)(INT64, _QWORD *, __int64, unsigned int *))v22 + 62))(v207, v36, 12i64, &a3a);
v183 = v40;
a3a &= -(v40 != 0);
v209 = a3 & 1;
LODWORD(v41) = 0;
if( !v209 )
{
v40 = 0i64;
a3a = 0;
v183 = 0i64;
}
v188 = v31 + 48;
v178 = v31 + 48;
v185 = v31 + 48 + 20i64 * (unsigned int)v184;
v42 = (_QWORD *)(v31 + 48);
if( v19 >= 8 )
{
v43 = (unsigned __int64)v19 >> 3;
do
{
*v42 = -1i64;
v19 -= 8;
++v42;
--v43;
}
while( v43 );
}
for( ; v19; --v19 )
{
*(_BYTE *)v42 = -1;
v42 = (_QWORD *)((char *)v42 + 1);
}
v44 = 0;
v45 = (_DWORD *)(v5 + *(unsigned __int16 *)(v5 + 20) + 24i64);
v184 = (unsigned __int64)&v45[10 * v210];
if( (v45[9] & 0x2000000) != 0
|| (v46 = *v45, *v45 == 1414090313) && v45[1] == 1195525195
|| v46 == 1162297680 && ((v47 = *((_WORD *)v45 + 2), v47 == 30839) || v47 == 29303 || v47 == 30583)
|| v46 == 1095914053 && *((_WORD *)v45 + 2) == 16724 )
{
LABEL_81:
v44 = 1;
}
else
{
v48 = (char *)*((_QWORD *)v22 + 294);
v49 = 7;
v193 = (__int64 *)*((_QWORD *)v22 + 295);
v50 = (char *)v45 - v48;
v194 = (char *)*((_QWORD *)v22 + 296);
v195 = (char *)*((_QWORD *)v22 + 297);
v192 = v48;
while( 1 )
{
v51 = (unsigned __int8)v48[v50];
v52 = (unsigned __int8)*v48++;
if( v51 != v52 )
break;
if( !--v49 )
{
LABEL_80:
v40 = v183;
goto LABEL_81;
}
}
v53 = v193;
v54 = 8;
v55 = (__int64 *)v45;
while( 1 )
{
v56 = *v55++;
v57 = *v53++;
if( v56 != v57 )
break;
v54 -= 8;
if( v54 < 8 )
{
if( !v54 )
goto LABEL_80;
while( 1 )
{
v58 = *(unsigned __int8 *)v55;
v55 = (__int64 *)((char *)v55 + 1);
v59 = *(unsigned __int8 *)v53;
v53 = (__int64 *)((char *)v53 + 1);
if( v58 != v59 )
goto LABEL_73;
if( !--v54 )
goto LABEL_80;
}
}
}
LABEL_73:
v60 = v194;
v61 = 4;
while( 1 )
{
v62 = (unsigned __int8)v60[(char *)v45 - v194];
v63 = (unsigned __int8)*v60++;
if( v62 != v63 )
break;
if( !--v61 )
goto LABEL_80;
}
v64 = v195;
v65 = 6;
while( 1 )
{
v66 = (unsigned __int8)v64[(char *)v45 - v195];
v67 = (unsigned __int8)*v64++;
if( v66 != v67 )
break;
if( !--v65 )
goto LABEL_80;
}
v40 = v183;
}
if( (int)v45[9] < 0 )
v44 = 1;
v68 = v44 == 0;
if( v44 )
{
if( *v45 == 1414090313 && v45[1] == 1195525195 && (*((_DWORD *)v22 + 613) & 0x2000) != 0 )
v44 = 0;
v68 = v44 == 0;
}
v69 = v45[4];
LOBYTE(v41) = v68;
v70 = (INT64 *)(unsigned int)v45[3];
v211 = v45[3];
if( v69 <= v45[2] )
v69 = v45[2];
v71 = (v69 + (_DWORD)v70 + 4095) & 0xFFFFF000;
v72 = MmImageSectionPagable(v45, v70);
v74 = v207;
v75 = v178;
v76 = v185;
v77 = v72;
v78 = v207;
v176 = v207;
v79 = 0;
if( v178 != v185 )
{
v80 = v45 + 1;
while( 1 )
{
if( v79 < v211 )
{
if( v79 < a3_4 )
{
LABEL_141:
v105 = (__int64 *)&v183;
v106 = 0;
p_a3a = &a3a;
while( 1 )
{
v73 = *p_a3a;
v108 = *v105;
if( *p_a3a )
{
if( v176 >= v108 && v176 <= v108 + v73 - 1 )
break;
}
++v106;
++p_a3a;
++v105;
if( v106 )
{
if( v79 >= v211 && v77 )
{
v109 = v178;
}
else
{
v109 = v178;
*(_DWORD *)(v178 + 16) &= ~0x80000000;
}
*(_BYTE *)(v109 + 15) &= ~0x80u;
break;
}
}
v75 = v178;
v78 = v176;
v76 = v185;
}
}
else
{
if( v79 >= v71 )
{
if( v80 + 9 == (_DWORD *)v184 || v79 < v80[12] )
{
v78 = v176;
goto LABEL_153;
}
v81 = v80[18];
v80 += 10;
v82 = 0;
if( (v81 & 0x2000000) != 0
|| (v83 = (char *)(v80 - 1), v84 = *(v80 - 1), v84 == 1414090313) && *v80 == 1195525195
|| v84 == 1162297680
&& ((v85 = *(_WORD *)v80, v73 = 30839i64, *(_WORD *)v80 == 30839)
|| (v73 = 29303i64, v85 == 29303)
|| (v73 = 30583i64, v85 == 30583))
|| v84 == 1095914053 && *(_WORD *)v80 == 16724 )
{
v82 = 1;
}
else
{
v86 = (char *)*((_QWORD *)v22 + 294);
v87 = 7;
v197 = (__int64 *)*((_QWORD *)v22 + 295);
v88 = v83 - v86;
v198 = (char *)*((_QWORD *)v22 + 296);
v199 = (char *)*((_QWORD *)v22 + 297);
v196 = v86;
while( 1 )
{
v73 = (unsigned __int8)v86[v88];
v89 = (unsigned __int8)*v86++;
if( v73 != v89 )
break;
if( !--v87 )
{
LABEL_126:
v82 = 1;
goto LABEL_127;
}
}
v90 = v197;
v91 = 8;
v92 = (__int64 *)(v80 - 1);
while( 1 )
{
v93 = *v92++;
v94 = *v90++;
if( v93 != v94 )
break;
v91 -= 8;
if( v91 < 8 )
{
if( !v91 )
goto LABEL_126;
while( 1 )
{
v73 = *(unsigned __int8 *)v92;
v92 = (__int64 *)((char *)v92 + 1);
v95 = *(unsigned __int8 *)v90;
v90 = (__int64 *)((char *)v90 + 1);
if( v73 != v95 )
goto LABEL_119;
if( !--v91 )
goto LABEL_126;
}
}
}
LABEL_119:
v96 = v198;
v97 = 4;
while( 1 )
{
v73 = (unsigned __int8)v96[v83 - v198];
v98 = (unsigned __int8)*v96++;
if( v73 != v98 )
break;
if( !--v97 )
goto LABEL_126;
}
v99 = v199;
v100 = 6;
v101 = v83 - v199;
while( 1 )
{
v73 = (unsigned __int8)v99[v101];
v102 = (unsigned __int8)*v99++;
if( v73 != v102 )
break;
if( !--v100 )
goto LABEL_126;
}
}
LABEL_127:
if( (int)v80[8] < 0 )
v82 = 1;
if( v82 && *(v80 - 1) == 1414090313 && *v80 == 1195525195 && (*((_DWORD *)v22 + 613) & 0x2000) != 0 )
v82 = 0;
v103 = v80[3];
v41 = v82 == 0;
if( v103 <= v80[1] )
v103 = v80[1];
v71 = (v103 + 4095 + v80[2]) & 0xFFFFF000;
v104 = MmImageSectionPagable(v80 - 1, (INT64 *)v73);
v75 = v178;
v76 = v185;
v68 = !v104;
v78 = v176;
v77 = !v68;
}
if( v41 )
goto LABEL_141;
}
LABEL_153:
v78 += 4096i64;
v75 += 20i64;
v79 += 4096;
v176 = v78;
v178 = v75;
if( v75 == v76 )
{
v40 = v183;
v74 = v207;
break;
}
}
}
v110 = v188;
if( v188 != v76 )
{
do
{
LODWORD(v111) = 0;
if( v110 != v76 )
{
v112 = v110;
do
{
if( *(char *)(v112 + 15) < 0 )
break;
v111 = (unsigned int)(v111 + 1);
v112 = v110 + 20 * v111;
}
while( v112 != v76 );
v177 = v111;
if( (_DWORD)v111 )
{
v113 = (char **)*((_QWORD *)v22 + 337);
v114 = v111;
a3_4 = v111;
v189 = v113;
v184 = v110;
v179 = v74;
do
{
v115 = 8i64;
v116 = 0;
if( v114 < 8 )
v115 = v114;
v117 = v179;
v118 = v205;
do
{
v113[1] = (char *)4096;
v119 = (char *)(v117 + (v116 << 12));
*v113 = v119;
v120 = v119;
*((_DWORD *)v22 + 522) += 4096;
v121 = *((_DWORD *)v22 + 517);
v212 = *((_QWORD *)v22 + 259);
for( j = v119; j < v119 + 4096; j += 64 )
_mm_prefetchnta(j);
v123 = *((_QWORD *)v22 + 259);
v124 = v212;
v213 = 32;
do
{
v125 = 8i64;
do
{
v126 = *((_QWORD *)v120 + 1) ^ __ROL8__(*(_QWORD *)v120 ^ v124, v121);
v120 += 16;
v124 = __ROL8__(v126, v121);
--v125;
}
while( v125 );
v127 = __ROL8__(v123 ^ (v120 - v119), 17) ^ v123 ^ (v120 - v119);
v202 = (v127 * (unsigned __int128)0x7010008004002001ui64) >> 64;
v121 = ((unsigned __int8)(v202 ^ v127) ^ (unsigned __int8)v121) & 0x3F;
if( !v121 )
LOBYTE(v121) = 1;
--v213;
}
while( v213 );
v22 = (_BYTE *)v187;
v128 = v124;
v117 = v179;
while( 1 )
{
v128 >>= 31;
if( !v128 )
break;
LODWORD(v124) = v128 ^ v124;
}
++v116;
*(_DWORD *)v118 = v124 & 0x7FFFFFFF;
v113 += 6;
v118 += 4;
}
while( v116 < (unsigned int)v115 );
v129 = v184;
v130 = (INT64)v189;
sub_1403E933C((INT64)v22, (INT64)v189, (unsigned int)v115);
v131 = v205;
v132 = (unsigned int)v115;
v133 = (_DWORD *)(v129 + 16);
v134 = (_QWORD *)v129;
v135 = (char *)(v130 + 16);
do
{
v136 = 16;
v137 = v135;
v138 = v134;
v139 = 2i64;
do
{
v136 -= 8;
*v138 = *(_QWORD *)v137;
v137 += 8;
++v138;
--v139;
}
while( v139 );
for( ; v136; --v136 )
{
v140 = *v137++;
*(_BYTE *)v138 = v140;
v138 = (_QWORD *)((char *)v138 + 1);
}
v135 += 48;
v134 = (_QWORD *)((char *)v134 + 20);
v141 = (*(_DWORD *)v131 ^ *v133) & 0x7FFFFFFF;
v131 += 4;
*v133 ^= v141;
v133 += 5;
--v132;
}
while( v132 );
v22 = (_BYTE *)v187;
v113 = v189;
v179 += (unsigned int)((_DWORD)v115 << 12);
v114 = a3_4 - v115;
v184 = v129 + 20 * v115;
*(_DWORD *)(v187 + 2088) += (_DWORD)v115 << 15;
a3_4 = v114;
}
while( v114 );
LODWORD(v111) = v177;
v110 = v188;
v76 = v185;
}
}
for( k = 5i64 * (unsigned int)v111; ; k = 5 * v111 )
{
v143 = v110 + 4 * k;
if( v143 == v76 || *(char *)(v143 + 15) >= 0 )
break;
v111 = (unsigned int)(v111 + 1);
}
v74 = (unsigned int)((_DWORD)v111 << 12) + v207;
v207 = v74;
v110 += 20i64 * (unsigned int)v111;
v188 = v110;
}
while( v110 != v76 );
v40 = v183;
}
if( !v209 )
return 0i64;
v144 = a3a;
if( !a3a )
return 0i64;
v145 = (_DWORD)v182 != 0;
LODWORD(v182) = -(int)v182;
v146 = *((unsigned int *)v22 + 505);
v147 = *((unsigned int *)v22 + 585);
v203 = 0i64;
v148 = v145 + 13;
v149 = v146 + 48;
if( (unsigned int)(v146 + 48) <= *((_DWORD *)v22 + 647) )
{
v150 = (INT64)v22;
*((_DWORD *)v22 + 505) = v149;
LABEL_212:
++*(_DWORD *)(v150 + 2060);
v159 = v150 + v146;
v160 = 48;
v204 = v150 + v146;
v161 = (_QWORD *)(v150 + v146);
v162 = 6i64;
do
{
*v161 = 0i64;
v160 -= 8;
++v161;
--v162;
}
while( v162 );
for( ; v160; --v160 )
{
*(_BYTE *)v161 = 0;
v161 = (_QWORD *)((char *)v161 + 1);
}
*(_DWORD *)v159 = v148;
*(_QWORD *)(v159 + 8) = v40;
v163 = (_QWORD *)v40;
*(_DWORD *)(v159 + 16) = v144;
*(_DWORD *)(v150 + 2088) += v144;
v164 = *(_DWORD *)(v150 + 2068);
if( v40 < v40 + v144 )
{
v165 = (char *)v40;
do
{
_mm_prefetchnta(v165);
v165 += 64;
}
while( (unsigned __int64)v165 < v40 + v144 );
}
v166 = *(_QWORD *)(v150 + 2072);
v167 = (unsigned int)v144 >> 7;
if( (unsigned int)v144 >> 7 )
{
do
{
v168 = 8i64;
do
{
v169 = v163[1] ^ __ROL8__(*v163 ^ v166, v164);
v163 += 2;
v166 = __ROL8__(v169, v164);
--v168;
}
while( v168 );
v170 = (__ROL8__(*(_QWORD *)(v150 + 2072) ^ ((unsigned __int64)v163 - v40), 17) ^ *(_QWORD *)(v150 + 2072) ^ ((unsigned __int64)v163 - v40))
* (unsigned __int128)0x7010008004002001ui64;
v164 = ((unsigned __int8)v170 ^ (unsigned __int8)(BYTE8(v170) ^ v164)) & 0x3F;
if( !v164 )
LOBYTE(v164) = 1;
--v167;
}
while( v167 );
v159 = v150 + v146;
}
v171 = v144 & 0x7F;
if( v171 >= 8 )
{
v172 = (unsigned __int64)(v144 & 0x7F) >> 3;
do
{
v166 = __ROL8__(*v163++ ^ v166, v164);
v171 -= 8;
--v172;
}
while( v172 );
}
for( ; v171; --v171 )
{
v173 = *(unsigned __int8 *)v163;
v163 = (_QWORD *)((char *)v163 + 1);
v166 = __ROL8__(v173 ^ v166, v164);
}
for( m = v166; ; LODWORD(v166) = m ^ v166 )
{
m >>= 31;
if( !m )
break;
}
*(_DWORD *)(v159 + 20) = v166 & 0x7FFFFFFF;
*(_DWORD *)(v150 + 2088) += v144;
if( (*(_DWORD *)(v150 + 2448) & 0x40000000) != 0 )
{
if( (_DWORD)v144 )
sub_1403E92DC(v150, v40, (unsigned int)v144, v159 + 28);
}
*(_DWORD *)(v159 + 24) = 1;
*(_QWORD *)a1 = v150;
return 0i64;
}
v150 = sub_140A0EB30(v22, v149, v147);
if( v150 )
{
v151 = *((_DWORD *)v22 + 612);
if( (v151 & 4) == 0 )
{
v152 = *((_DWORD *)v22 + 505);
v153 = *((_QWORD *)v22 + 249);
v154 = (v151 & 0x20000000) != 0 ? *((_DWORD *)v22 + 585) : 0;
if( v152 >= 8 )
{
v155 = (unsigned __int64)v152 >> 3;
do
{
*(_QWORD *)v22 = 0i64;
v152 -= 8;
v22 += 8;
--v155;
}
while( v155 );
}
for( ; v152; --v152 )
*v22++ = 0;
v156 = *(_DWORD *)(v150 + 2340);
*(_DWORD *)(v150 + 2340) = v154;
if( v154 == 3 )
{
(*(void(__fastcall **)(__int64))(v150 + 872))(v153);
}
else
{
v157 = 0;
if( (*(_DWORD *)(v150 + 2448) & 0x10000000) == 0 )
v157 = v154;
if( v157 )
(*(void(__fastcall **)(__int64, _QWORD))(v150 + 552))(v153 - 8, *(_QWORD *)(v153 - 8));
else(*(void(__fastcall **)(__int64))(v150 + 256))(v153);
}
*(_DWORD *)(v150 + 2340) = v156;
}
*(_DWORD *)(v150 + 2448) &= ~4u;
goto LABEL_212;
}
return 3221225626i64;
}
if( (*((_DWORD *)v3 + 612) & 0x200000) == 0 )
{
LODWORD(v186) = -805294751;
KeBugCheckEx(__ROR4__(-805306349, 92), 0xAui64, a2, 4ui64, 0i64);
}
if( !*((_DWORD *)v3 + 574) )
{
*((_QWORD *)v3 + 289) = 0i64;
*((_QWORD *)v3 + 290) = 271i64;
*((_QWORD *)v3 + 288) = v3 - 0x5C5FC0A76E374B18i64;
*((_QWORD *)v3 + 291) = a2;
*((_DWORD *)v3 + 574) = 1;
__b8((__int64)v3, 0i64);
}
}
return 3221225595i64;
}Referenced by:
Argument1
sub_140A0C0FC