AslRegistryEnumKey

INT64 __fastcall AslRegistryEnumKey(UINT8 *dst, INT64 a2, VOID *a3, UINT64 a4){
  NTSTATUS v5; 
  unsigned __int64 v6; 
  UINT64 Length; 
  UINT64 ResultLength[2]; 
  char KeyInformation[12]; 
  size_t Size[64]; 
  LODWORD(Length) = 524;
  LODWORD(ResultLength[0]) = 0;
  v5 = ZwEnumerateKey(a3, (unsigned int)a4, KeyBasicInformation, KeyInformation, Length, ResultLength);
  if( v5 >= 0 )
  {
    v6 = (unsigned __int64)LODWORD(Size[0]) >> 1;
    if( v6 + 1 < 0x104 )
    {
      memmove(dst, (UINT8 *)Size + 4, LODWORD(Size[0]));
      *(_WORD *)&dst[2 * v6] = 0;
    }
    else
    {
      return(unsigned int)-1073741789;
    }
  }
  return(unsigned int)v5;
}

Referenced by:

AslpProcessMatchRegNode