VrpShouldOperateOnCall
NTSTATUS __fastcall VrpShouldOperateOnCall(int a1, _QWORD *a2, _QWORD *a3, _VRP_JOB_CONTEXT **a4){
_VRP_JOB_CONTEXT **v4;
__int64 v7;
int v8;
__int64 v9;
NTSTATUS result;
_QWORD *v11;
_QWORD *v12;
_QWORD *v13;
int v14;
int v15;
_VRP_JOB_CONTEXT *v16;
__int64 v17;
__int64 v18;
__int64 v19;
_VRP_JOB_CONTEXT *JobContext;
v4 = 0i64;
v18 = 0i64;
v19 = 0i64;
JobContext = 0i64;
VrpGetContextsForNotifyInfo(a1, a2, &v18, &v19);
v9 = v18;
if( v18 )
{
*a3 = v18;
*a4 = *(_VRP_JOB_CONTEXT **)(v9 + 40);
return 1;
}
if( v19 )
{
v16 = *(_VRP_JOB_CONTEXT **)(v19 + 8);
*a3 = 0i64;
*a4 = v16;
return 1;
}
if( v8 == 32 )
{
result = VRegEnabledInJob(&JobContext);
if( result )
{
*a4 = JobContext;
goto LABEL_6;
}
LABEL_5:
*a4 = 0i64;
result = 0;
LABEL_6:
*a3 = 0i64;
return result;
}
if( ((v8 - 27) & 0xFFFFFFFD) != 0 )
goto LABEL_5;
v11 = 0i64;
v12 = *(_QWORD **)(*(_QWORD *)(v7 + 8) + 16i64);
v13 = (_QWORD *)*v12;
if( (_QWORD *)*v12 == v12 )
{
LABEL_8:
v14 = -1073741772;
}
else
{
while( 1 )
{
v17 = v13[2] - VRP_ORIGINAL_KEY_NAME_PARAMETER_GUID;
if( !v17 )
v17 = v13[3] - *((_QWORD *)&VRP_ORIGINAL_KEY_NAME_PARAMETER_GUID + 1);
if( !v17 )
break;
v13 = (_QWORD *)*v13;
if( v13 == v12 )
goto LABEL_8;
}
v11 = v13;
v14 = 0;
}
v15 = v14;
if( v14 >= 0 )
v15 = 0;
if( v15 < 0 )
goto LABEL_5;
*a3 = 0i64;
result = 1;
if( v14 >= 0 )
v4 = (_VRP_JOB_CONTEXT **)(v11 + 6);
*a4 = *v4;
return result;
}Referenced by:
VrpRegistryCallback