CmpPopulateKeyBasicInformation

INT64 __fastcall CmpPopulateKeyBasicInformation(INT64 a1, INT64 a2, INT64 a3, UINT64 a4, UINT64 *a5){
  unsigned int v6; 
  unsigned __int16 v8; 
  unsigned int v9; 
  unsigned int v10; 
  WCHAR *v12; 
  int v13; 
  UINT64 v14; 
  v6 = a4;
  v8 = 2 * *(_WORD *)(a2 + 72);
  if( (*(_BYTE *)(a2 + 2) & 0x20) == 0 )
    v8 = *(_WORD *)(a2 + 72);
  v9 = v8;
  v10 = v8 + 16;
  *(_DWORD *)a5 = v10;
  if( (unsigned int)a4 < 0x10 )
    return 3221225507i64;
  v12 = (WCHAR *)(a3 + 16);
  *(_QWORD *)a3 = *(_QWORD *)a1;
  v13 = *(_DWORD *)(a1 + 8);
  v14 = (unsigned int)(a4 - 16);
  *(_DWORD *)(a3 + 8) = v13;
  *(_DWORD *)(a3 + 12) = v9;
  if( (*(_BYTE *)(a2 + 2) & 0x20) != 0 )
  {
    CmpCopyCompressedName(v12, v14, (PWCHAR)(a2 + 76), *(unsigned __int16 *)(a2 + 72));
  }
  else
  {
    if( (unsigned int)v14 <= v9 )
      v9 = a4 - 16;
    memmove((UINT8 *)v12, (UINT8 *)(a2 + 76), v9);
  }
  return v6 < v10 ? 0x80000005 : 0;
}

Referenced by:

CmpQueryKeyDataFromKeyNodeStack