PnpGetServiceStartType

__int64 __fastcall PnpGetServiceStartType(const WCHAR *a1, VOID *a2, _DWORD *a3){
  int v6; 
  __int64 v8; 
  __int64 v9; 
  NTSTATUS v10; 
  __int64 v11; 
  __int64 v12; 
  NTSTATUS v13; 
  VOID *Handle; 
  int v15; 
  __int64 v16; 

  v15 = 0;
  Handle = 0i64;
  *a3 = 4;
  if( (*(&ExBootDevicesRemovedEvent + 1120) & 1) != 0 )
  {
    v8 = qword_140CF5110;
    if( qword_140CF5110 )
    {
      if( qword_140CF5110 == -1 )
        goto LABEL_2;
      v10 = 0;
    }
    else
    {
      if( *(&stru_140CF2E80 + 607) )
        v9 = *(_QWORD *)(*(&stru_140CF2E80 + 607) + 224i64);
      else
        v9 = 0i64;
      v10 = SysCtxRegOpenKey(
              v9,
              (VOID *)0x80000002i64,
              L"System\\CurrentControlSet\\Control\\ManufacturingMode\\Current\\Services\\",
              0,
              0x20019u,
              (VOID **)&qword_140CF5110);
      if( v10 == -1073741772 )
      {
        v8 = -1i64;
        qword_140CF5110 = -1i64;
      }
      else
      {
        v8 = qword_140CF5110;
      }
    }
    if( v10 >= 0 )
    {
      if( *(&stru_140CF2E80 + 607) )
        v11 = *(_QWORD *)(*(&stru_140CF2E80 + 607) + 224i64);
      else
        v11 = 0i64;
      if( SysCtxRegOpenKey(v11, (VOID *)v8, a1, 0, 0x20019u, &Handle) >= 0 )
      {
        LODWORD(v16) = 4;
        v6 = RegRtlQueryValue(Handle, L"Start", &v15, a3, (__int64)&v16);
        if( v6 >= 0 && v15 == 4 )
          goto LABEL_5;
      }
      v12 = (__int64)qword_140CF5118;
      if( qword_140CF5118 )
      {
        if( qword_140CF5118 == (VOID *)-1i64 )
          goto LABEL_2;
        v13 = 0;
      }
      else
      {
        if( *(&stru_140CF2E80 + 607) )
          v12 = *(_QWORD *)(*(&stru_140CF2E80 + 607) + 224i64);
        v13 = SysCtxRegOpenKey(v12, (VOID *)qword_140CF5110, L"*Driver", 0, 0x20019u, &qword_140CF5118);
        if( v13 == -1073741772 )
        {
          v12 = -1i64;
          qword_140CF5118 = (VOID *)-1i64;
        }
        else
        {
          v12 = (__int64)qword_140CF5118;
        }
      }
      if( v13 >= 0 )
      {
        LODWORD(v16) = 4;
        v6 = RegRtlQueryValue((VOID *)v12, L"Start", &v15, a3, (__int64)&v16);
        if( v6 >= 0 && v15 == 4 )
          goto LABEL_5;
      }
    }
  }
LABEL_2:
  LODWORD(v16) = 4;
  v6 = RegRtlQueryValue(a2, L"Start", &v15, a3, (__int64)&v16);
  if( v6 >= 0 && v15 != 4 )
  {
    v6 = -1073741772;
    *a3 = 4;
  }
LABEL_5:
  if( Handle )
    ZwClose((_HANDLE)Handle);
  return(unsigned int)v6;
}

Referenced by:

PipCallDriverAddDeviceQueryRoutine