AslpFileGetClrVersionAttribute

__int64 __fastcall AslpFileGetClrVersionAttribute(__int64 a1, __int64 a2){
  int FileKindDetailAttribute; 
  unsigned int v5; 
  const CHAR *v6; 
  UINT64 v7; 
  __int64 v8; 
  __int64 v9; 
  int v11; 
  WCHAR *UnicodeBuffer; 
  INT8 result[256]; 
  memset((INT64)result, 0i64);
  UnicodeBuffer = 0i64;
  FileKindDetailAttribute = AslFileMappingEnsure(a2);
  v5 = FileKindDetailAttribute;
  if( FileKindDetailAttribute >= 0 )
  {
    if( *(_DWORD *)(a2 + 64) != 6 )
      goto LABEL_5;
    if( (*(_DWORD *)(a1 + 920) & 1) == 0 )
    {
      FileKindDetailAttribute = AslpFileGetFileKindDetailAttribute(a1, a2);
      v5 = FileKindDetailAttribute;
      if( FileKindDetailAttribute < 0 )
      {
        v6 = "AslpFileGetFileKindDetailAttribute failed [%x]";
        v7 = 4070i64;
        goto LABEL_3;
      }
    }
    if( (unsigned int)(*(_DWORD *)(a1 + 912) - 12) <= 3 )
    {
      FileKindDetailAttribute = AslpFileGetClrVersion((BYTE *)result, a2);
      v5 = FileKindDetailAttribute;
      if( FileKindDetailAttribute < 0 )
      {
        v6 = "AslpFileGetClrVersion failed [%x]";
        v7 = 4089i64;
        goto LABEL_3;
      }
      FileKindDetailAttribute = AslStringAnsiToUnicode(&UnicodeBuffer, result);
      v5 = FileKindDetailAttribute;
      if( FileKindDetailAttribute < 0 )
      {
        v6 = "AslStringAnsiToUnicode failed [%x]";
        v7 = 4095i64;
        goto LABEL_3;
      }
      FileKindDetailAttribute = AslStringXmlSanitize(UnicodeBuffer);
      v5 = FileKindDetailAttribute;
      if( FileKindDetailAttribute < 0 )
      {
        v6 = "AslStringXmlSanitize failed [%x]";
        v7 = 4101i64;
        goto LABEL_3;
      }
      *(_DWORD *)(a1 + 864) = 4;
      v9 = -1i64;
      do
        ++v9;
      while( *(_WORD *)(v8 + 2 * v9) );
      *(_DWORD *)(a1 + 888) |= 5u;
      *(_QWORD *)(a1 + 872) = v9;
      *(_QWORD *)(a1 + 880) = v8;
    }
    else
    {
LABEL_5:
      *(_DWORD *)(a1 + 888) |= 2u;
    }
    return 0;
  }
  v6 = "AslFileMappingEnsure failed [%x]";
  v7 = 4053i64;
LABEL_3:
  v11 = FileKindDetailAttribute;
  AslLogCallPrintf(1ui64, "AslpFileGetClrVersionAttribute", v7, v6, v11);
  return v5;
}

Referenced by:

AslFileAllocAndGetAttributes