MiReferenceExistingControlArea

NTSTATUS __stdcall MiReferenceExistingControlArea(INT64 a1){
  __int64 v1; 
  _CONTROL_AREA *v3; 
  INT64 *p_ControlAreaLock; 
  int v5; 
  _CONTROL_AREA *v6; 
  _MI_CONTROL_AREA_WAIT_BLOCK *v7; 
  UINT8 OldIrql; 

  v1 = *(_QWORD *)(a1 + 48);
  OldIrql = 0;
  v3 = MiLockSectionControlArea(*(_MI_SECTION_OBJECT_POINTERS **)(v1 + 40), (*(_BYTE *)(a1 + 19) & 1) == 0, &OldIrql);
  if( !v3 )
    return -1073741823;
  p_ControlAreaLock = (INT64 *)&v3->ControlAreaLock;
  if( (v3->u.LongFlags & 3) != 0 )
  {
    ExReleaseSpinLockExclusiveFromDpcLevel(p_ControlAreaLock);
    __writecr8(OldIrql);
    return -1073741823;
  }
  v5 = MiValidateControlAreaPartition(a1, (INT64)v3);
  if( v5 < 0 )
  {
    ExReleaseSpinLockExclusiveFromDpcLevel(p_ControlAreaLock);
    __writecr8(OldIrql);
    return v5;
  }
  else
  {
    v7 = MiReferenceActiveControlArea((_DWORD *)a1, v6);
    ExReleaseSpinLockExclusiveFromDpcLevel(p_ControlAreaLock);
    __writecr8(OldIrql);
    MiReleaseControlAreaWaiters(v7);
    return 0;
  }
}

Referenced by:

MiCreateImageOrDataSection