PnprRecopyMirrorPages
__int64 PnprRecopyMirrorPages(){
__int64 Number;
__int64 v1;
__int64 v2;
int v3;
__int64 result;
int v5;
__int64 v6;
int v7;
int v8;
int v9;
__int64 v10;
int v11;
int v12;
Number = KeGetPcr()->Prcb.Number;
PnprGetStackLimits((_QWORD *)(PnprContext + 216 + 8 * Number), (UINT64 *)(PnprContext + 10456 + 8 * Number));
v1 = PnprContext;
v2 = 0i64;
if( *(_DWORD *)(PnprContext + 176) )
{
while( 1 )
{
v3 = PnprRecopyAddress(
*(_QWORD *)(v1 + 8 * v2 + 216),
*(_DWORD *)(v1 + 8 * v2 + 10456) - (unsigned int)*(_QWORD *)(v1 + 8 * v2 + 216));
if( v3 < 0 )
break;
if( (_DWORD)v2 != *(_DWORD *)(PnprContext + 180) )
{
v3 = PnprRecopyMappingReserve((__int64 *)(*(_QWORD *)(PnprContext + 144) + 24 * v2));
if( v3 < 0 )
{
v9 = 5613;
goto LABEL_17;
}
v3 = PnprRecopyMappingReserve((__int64 *)(*(_QWORD *)(PnprContext + 136) + 24 * v2));
if( v3 < 0 )
{
v9 = 5621;
goto LABEL_17;
}
}
v1 = PnprContext;
v2 = (unsigned int)(v2 + 1);
if( (unsigned int)v2 >= *(_DWORD *)(PnprContext + 176) )
goto LABEL_7;
}
v9 = 5597;
LABEL_17:
v10 = PnprContext;
v11 = *(_DWORD *)(PnprContext + 20984);
if( !v11 )
v11 = v9;
*(_DWORD *)(PnprContext + 20984) = v11;
v12 = *(_DWORD *)(v10 + 20988);
if( !v12 )
v12 = 1;
*(_DWORD *)(v10 + 20988) = v12;
return(unsigned int)v3;
}
else
{
LABEL_7:
result = PnprRecopyAddress(v1, 0x5238u);
if( (int)result >= 0 )
{
result = PnprCopyReservedMapping();
if( (int)result >= 0 )
return 0i64;
v5 = 5645;
}
else
{
v5 = 5633;
}
v6 = PnprContext;
v7 = *(_DWORD *)(PnprContext + 20984);
if( !v7 )
v7 = v5;
*(_DWORD *)(PnprContext + 20984) = v7;
v8 = *(_DWORD *)(v6 + 20988);
if( !v8 )
v8 = 1;
*(_DWORD *)(v6 + 20988) = v8;
}
return result;
}Referenced by:
PnprSwapFinalize