RtlpHpSegPageRangeHandleCommit
NTSTATUS __stdcall RtlpHpSegPageRangeHandleCommit(UINT16 *a1, UINT64 a2){
int *v2;
_DWORD *v3;
_DWORD *v4;
int v5;
unsigned int v6;
NTSTATUS v7;
char v8;
unsigned __int64 v9;
unsigned __int64 v10;
UINT64 v11;
unsigned int v12;
unsigned __int64 v13;
int v14;
UINT64 v15;
unsigned int v16;
int v17;
int v18;
unsigned int v19;
unsigned int v21;
int v22;
int v23;
unsigned int v24;
unsigned int v25;
unsigned int v26;
unsigned int v27;
int v28;
int v29;
int *v30;
int v31;
v30 = v2;
v4 = v3;
v5 = 0;
v6 = 1 << *((_BYTE *)a1 + 9);
v7 = 0;
v8 = *((_BYTE *)a1 + 9);
v9 = (unsigned __int64)(unsigned int)*v2 >> v8;
v10 = v9 << v8;
v11 = a2 + 32 * v9;
v12 = *v2 & (v6 - 1);
v13 = (unsigned __int64)(v12 + *v4 - 1) >> v8;
v14 = -1;
v15 = v11 + 32 * v13;
v16 = ((v12 + *v4 - 1) & (v6 - 1)) + 1;
v17 = -1;
if( v12 )
{
v25 = *(unsigned __int8 *)(v11 + 25);
v26 = v6;
if( v11 == v15 )
v26 = ((v12 + *v4 - 1) & (v6 - 1)) + 1;
if( v31 > 1 || v25 >= v26 )
{
if( v31 != 2 || v25 <= v12 )
{
LABEL_34:
v11 += 32i64;
LODWORD(v10) = v6 + v10;
goto LABEL_2;
}
v27 = v12;
v26 = *(unsigned __int8 *)(v11 + 25);
}
else
{
v27 = v26;
v12 = *(unsigned __int8 *)(v11 + 25);
}
v7 = v27 - v25;
v14 = v10 + v26;
v17 = v10 + v12;
if( v7 && v31 >= 1 )
*(_BYTE *)(v11 + 25) = v7 + v25;
goto LABEL_34;
}
LABEL_2:
if( v11 < v15 )
{
while( 1 )
{
v21 = *(unsigned __int8 *)(v11 + 25);
v22 = v17;
v23 = 0;
if( v21 < v6 && v31 <= 1 )
break;
if( v31 == 2 && *(_BYTE *)(v11 + 25) )
{
v28 = v10;
v23 = -v21;
if( v17 != -1 )
v28 = v17;
v17 = v28;
v24 = *(unsigned __int8 *)(v11 + 25);
goto LABEL_19;
}
LABEL_22:
v7 += v23;
v11 += 32i64;
LODWORD(v10) = v6 + v10;
if( v11 >= v15 )
goto LABEL_3;
}
v17 = v21 + v10;
v23 = v6 - v21;
v24 = v6;
if( v22 != -1 )
v17 = v22;
LABEL_19:
v14 = v10 + v24;
if( v23 && v31 >= 1 )
*(_BYTE *)(v11 + 25) = v23 + v21;
goto LABEL_22;
}
LABEL_3:
v18 = v17;
if( v11 != v15 )
goto LABEL_12;
v19 = *(unsigned __int8 *)(v11 + 25);
if( v31 <= 1 && v19 < v16 )
{
v17 = v10 + v19;
v5 = v16 - v19;
if( v18 != -1 )
v17 = v18;
LABEL_8:
v14 = v10 + v16;
if( v5 && v31 >= 1 )
*(_BYTE *)(v11 + 25) = v5 + v19;
goto LABEL_11;
}
if( v31 == 2 && *(_BYTE *)(v11 + 25) )
{
v29 = v10;
v5 = -v19;
v16 = *(unsigned __int8 *)(v11 + 25);
if( v17 != -1 )
v29 = v17;
v17 = v29;
goto LABEL_8;
}
LABEL_11:
v7 += v5;
LABEL_12:
if( v7 )
{
*v4 = v14 - v17;
*v30 = v17;
}
return v7;
}Referenced by:
RtlpHpSegPageRangeCommit