CmpFreezeHive

INT64 __fastcall CmpFreezeHive(INT64 a1, VOID *a2){
  __int64 v2; 
  int v5; 
  v2 = *(_QWORD *)(a1 + 32);
  CmpReferenceKeyControlBlockUnsafe((volatile INT64 *)a1);
  if( a2 && (v5 = CmpRecordUnloadEventForHive(v2, a2), v5 < 0) )
  {
    CmpDereferenceKeyControlBlockUnsafe((volatile INT64 *)a1);
  }
  else
  {
    CmpSearchForOpenSubKeys(a1, 2i64, 0i64);
    *(_WORD *)(a1 + 8) |= 0x20u;
    v5 = 0;
    *(_BYTE *)(v2 + 2936) = 1;
    *(_QWORD *)(v2 + 2928) = a1;
  }
  return(unsigned int)v5;
}

Referenced by:

CmpPerformUnloadKey