DbgkpLkmdSnapObject

INT64 __fastcall DbgkpLkmdSnapObject(INT64 a1, _WORD *a2, INT64 a3){
  _WORD *v3; 
  _WORD *v5; 
  int v6; 
  __int64 v7; 
  INT64 result; 
  int v9; 
  __int64 v10; 
  __int64 v11; 
  v3 = 0i64;
  v5 = 0i64;
  v6 = a3;
  if( (_DWORD)a3 == 3 )
  {
    if( *a2 != 3 )
      return 3221225477i64;
    v7 = (unsigned __int16)a2[1];
  }
  else
  {
    if( (_DWORD)a3 != 4 )
    {
      if( (_DWORD)a3 == 5 )
      {
        v3 = a2;
        if( *a2 == 5 )
        {
          v7 = 216i64;
          goto LABEL_11;
        }
      }
      return 3221225477i64;
    }
    v5 = a2;
    if( *a2 != 4 )
      return 3221225477i64;
    v7 = 336i64;
  }
LABEL_11:
  result = (*(__int64(__fastcall **)(INT64, _WORD *, __int64, _QWORD, _QWORD, _QWORD))(a1 + 10304))(
             a1 + 10240,
             a2,
             v7,
             0i64,
             0i64,
             0i64);
  if( (int)result < 0 )
    return result;
  v9 = v6 - 4;
  if( v9 )
  {
    if( v9 != 1 )
      return result;
    v10 = (unsigned __int16)v3[45];
    v11 = *((_QWORD *)v3 + 12);
  }
  else
  {
    v10 = (unsigned __int16)v5[29];
    v11 = *((_QWORD *)v5 + 8);
  }
  return(*(__int64(__fastcall **)(INT64, __int64, __int64, _QWORD, _QWORD, _QWORD))(a1 + 10304))(
           a1 + 10240,
           v11,
           v10,
           0i64,
           0i64,
           0i64);
}

Referenced by:

DbgkpLkmdSnapPendingIrps