DrvDbSetDriverFileMappedProperty

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

Referenced by:

DrvDbDispatchDriverFile