CmpQueryKeyData

INT64 __fastcall CmpQueryKeyData(INT64 a1, UINT64 a2, INT64 a3, UINT64 a4, UINT64 *a5, INT64 a6){
  unsigned int v6; 
  int v7; 
  unsigned int KeyDataFromNode; 
  INT64 v12; 
  UINT64 v13; 
  int v14[6]; 
  v14[0] = -1;
  v6 = a2;
  v14[1] = 0;
  v7 = a4;
  if( (_DWORD)a2 == 4 )
  {
    return(unsigned int)CmpQueryKeyDataFromCache(
                           (_CM_KEY_CONTROL_BLOCK *)a1,
                           KeyCachedInformation,
                           (VOID *)a3,
                           a4,
                           a5,
                           (_CM_TRANS *)a6);
  }
  else
  {
    v12 = (*(__int64(__fastcall **)(_QWORD, _QWORD, int *))(*(_QWORD *)(a1 + 32) + 8i64))(
            *(_QWORD *)(a1 + 32),
            *(unsigned int *)(a1 + 40),
            v14);
    if( v12 )
    {
      LODWORD(v13) = v7;
      KeyDataFromNode = CmpQueryKeyDataFromNode(*(_QWORD *)(a1 + 32), v12, v6, a3, v13, a5, (LIST_ENTRY *)a1, a6);
      (*(void(__fastcall **)(_QWORD, int *))(*(_QWORD *)(a1 + 32) + 16i64))(*(_QWORD *)(a1 + 32), v14);
    }
    else
    {
      return(unsigned int)-1073741670;
    }
  }
  return KeyDataFromNode;
}

Referenced by:

CmQueryKey