DbgkpLkmdSnapObject

NTSTATUS __stdcall DbgkpLkmdSnapObject(_DUMP_FILE_DESCRIPTOR *DumpFile, VOID *Object, UINT64 ObjectType){
  _QWORD *v3; 
  _QWORD *v5; 
  int v6; 
  __int64 v7; 
  NTSTATUS result; 
  int v9; 
  __int64 v10; 
  __int64 v11; 

  v3 = 0i64;
  v5 = 0i64;
  v6 = ObjectType;
  if( (_DWORD)ObjectType == 3 )
  {
    if( *(_WORD *)Object != 3 )
      return -1073741819;
    v7 = *((unsigned __int16 *)Object + 1);
  }
  else
  {
    if( (_DWORD)ObjectType != 4 )
    {
      if( (_DWORD)ObjectType == 5 )
      {
        v3 = Object;
        if( *(_WORD *)Object == 5 )
        {
          v7 = 216i64;
          goto LABEL_11;
        }
      }
      return -1073741819;
    }
    v5 = Object;
    if( *(_WORD *)Object != 4 )
      return -1073741819;
    v7 = 336i64;
  }
LABEL_11:
  result = (*((__int64(__fastcall **)(_DUMP_FILE_DESCRIPTOR *, VOID *, __int64, _QWORD, _QWORD, _QWORD))DumpFile + 1288))(
             DumpFile + 2560,
             Object,
             v7,
             0i64,
             0i64,
             0i64);
  if( result < 0 )
    return result;
  v9 = v6 - 4;
  if( v9 )
  {
    if( v9 != 1 )
      return result;
    v10 = *((unsigned __int16 *)v3 + 45);
    v11 = v3[12];
  }
  else
  {
    v10 = *((unsigned __int16 *)v5 + 29);
    v11 = v5[8];
  }
  return(*((__int64(__fastcall **)(_DUMP_FILE_DESCRIPTOR *, __int64, __int64, _QWORD, _QWORD, _QWORD))DumpFile + 1288))(
           DumpFile + 2560,
           v11,
           v10,
           0i64,
           0i64,
           0i64);
}

Referenced by:

DbgkpLkmdSnapPendingIrps