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