PipUpdateSetupInProgress

INT64 __stdcall PipUpdateSetupInProgress(HANDLE KeyHandle){
  int v2; 
  int v3; 
  int v4; 
  INT64 result; 
  PVOID P; 
  P = 0i64;
  v2 = 0;
  v3 = 0;
  v4 = 0;
  if( IopGetRegistryValue(KeyHandle, (PWCHAR)L"SystemSetupInProgress", 0i64, (KEY_VALUE_FULL_INFORMATION **)&P) >= 0 )
  {
    if( *((_DWORD *)P + 1) == 4 && *((_DWORD *)P + 3) == 4 )
      v2 = *(_DWORD *)((char *)P + *((unsigned int *)P + 2));
    ExFreePoolWithTag(P, 0);
  }
  LODWORD(result) = IopGetRegistryValue(KeyHandle, (PWCHAR)L"OOBEInProgress", 0i64, (KEY_VALUE_FULL_INFORMATION **)&P);
  if( (int)result >= 0 )
  {
    if( *((_DWORD *)P + 1) == 4 && *((_DWORD *)P + 3) == 4 )
      v3 = *(_DWORD *)((char *)P + *((unsigned int *)P + 2));
    ExFreePoolWithTag(P, 0);
  }
  if( v2 )
    goto LABEL_15;
  if( !v3 )
    goto LABEL_13;
  LODWORD(result) = IopGetRegistryValue(
                      KeyHandle,
                      (PWCHAR)L"PnpSetupInProgress",
                      0i64,
                      (KEY_VALUE_FULL_INFORMATION **)&P);
  if( (int)result < 0 )
    goto LABEL_13;
  if( *((_DWORD *)P + 1) == 4 && *((_DWORD *)P + 3) == 4 )
    v4 = *(_DWORD *)((char *)P + *((unsigned int *)P + 2));
  ExFreePoolWithTag(P, 0);
  if( v4 )
LABEL_15:
    LOBYTE(result) = 1;
  else
LABEL_13:
    LOBYTE(result) = 0;
  PnpSetupOOBEInProgress = v3 != 0;
  PnpSetupInProgress = result;
  return result;
}

Referenced by:

IopInitializePlugPlayServices
PipUpdateSetupInProgressNotify