DrvDbSetDriverInfFileMappedProperty

__int64 __fastcall DrvDbSetDriverInfFileMappedProperty(
        __int64 *a1,
        __int64 a2,
        HANDLE a3,
        __int64 a4,
        int a5,
        int *a6,
        ULONG a7){
  int v8; 
  __int64 v11; 
  __int64(**i)[3]; 
  __int64(*v13)[3]; 
  __int64 v14; 
  __int64 v15; 
  __int64(**v16)[3]; 
  int v17; 
  int v18; 
  __int64 v20; 
  HANDLE Handle; 
  Handle = 0i64;
  v8 = *(_DWORD *)(a4 + 16);
  if( v8 == 2 )
  {
    v20 = *(_QWORD *)a4 - DEVPKEY_NODE;
    if( *(_QWORD *)a4 == DEVPKEY_NODE )
      v20 = *(_QWORD *)(a4 + 8) + 0x5008C7D4C8250077i64;
    if( !v20 )
      return(unsigned int)-1073741790;
  }
  v11 = 0i64;
  for( i = &off_140001C60; ; i += 5 )
  {
    v13 = *i;
    if( LODWORD((**i)[2]) == v8 )
    {
      v14 = (*v13)[0] - *(_QWORD *)a4;
      if( (*v13)[0] == *(_QWORD *)a4 )
        v14 = (*v13)[1] - *(_QWORD *)(a4 + 8);
      if( !v14 )
        break;
    }
    v11 = (unsigned int)(v11 + 1);
    if( (unsigned int)v11 >= 4 )
      return(unsigned int)-1073741802;
  }
  v15 = 5 * v11;
  v16 = &off_140001C60 + v15;
  if( !v16 )
    return(unsigned int)-1073741802;
  v17 = a5;
  if( a5 != *((_DWORD *)v16 + 2) && a5 )
    return(unsigned int)-1073741811;
  if( !a3 )
  {
    v18 = DrvDbOpenDriverInfFileRegKey(a1, a2, 2i64, 0, (INT64)&Handle, 0i64);
    if( v18 < 0 )
      goto LABEL_13;
    a3 = Handle;
  }
  v18 = DrvDbSetRegValueMappedProperty(v15, a3, (__int64)v16, v17, a6, a7);
LABEL_13:
  if( Handle )
    ZwClose(Handle);
  return(unsigned int)v18;
}

Referenced by:

DrvDbDispatchDriverInfFile