CmpSetupLoggingState

INT64 __fastcall CmpSetupLoggingState(INT64 a1, UINT64 *a2){
  INT64 result; 
  unsigned int v3; 
  int v4; 

  result = *(unsigned int *)a2;
  if( (result & 1) != 0 && (result & 4) == 0 )
  {
    *(_BYTE *)(a1 + 190) = 0;
    v3 = *(_DWORD *)a2;
    if( (*(_DWORD *)a2 & 2) != 0 )
    {
      v4 = *(_DWORD *)a2 & 0x38;
      *(_DWORD *)(a1 + 164) = 5 - (v4 != 32);
      *(_BYTE *)(a1 + 188) = v4 == 32;
      *(_BYTE *)(a1 + 189) = v4 != 32;
      *(_DWORD *)(a1 + 180) = *((_DWORD *)a2 + 3);
      *(_DWORD *)(a1 + 168) = *((_DWORD *)a2 + 2);
      result = *((unsigned int *)a2 + 3);
      *(_QWORD *)(a1 + 172) = (unsigned int)result;
    }
    else
    {
      *(_WORD *)(a1 + 188) = 257;
      *(_DWORD *)(a1 + 164) = (v3 >> 3) & 7;
      *(_DWORD *)(a1 + 180) = *((_DWORD *)a2 + 3);
      *(_DWORD *)(a1 + 168) = *((_DWORD *)a2 + 2);
      *(_DWORD *)(a1 + 172) = *((_DWORD *)a2 + 3);
      result = *((unsigned int *)a2 + 4);
      *(_DWORD *)(a1 + 176) = result;
    }
  }
  return result;
}

Referenced by:

CmpInitializePreloadedHive
CmpInitializeSystemHive