AslpFileLargeEnsureLargeFileMapping
INT64 __fastcall AslpFileLargeEnsureLargeFileMapping(INT64 a1, INT64 rdx0, INT64 a3){
_DWORD *v6;
int i;
int FileKind;
_QWORD *v9;
int ChecksumAttributes;
__int64 v11;
__int64 v12;
int v13;
_QWORD *a2;
if( *(_QWORD *)(rdx0 + 24) < 0x100000ui64 )
return 3221225712i64;
a2 = 0i64;
v6 = (_DWORD *)(a1 + 24);
for( i = 0; i < 33; ++i )
{
if( i < 0 || i > 19 && i != 22 && i != 24 && (unsigned int)(i - 26) > 5 )
*v6 |= 2u;
v6 += 8;
}
FileKind = AslpFileLargeMapCreate(&a2, rdx0 + 8, a3);
if( FileKind >= 0 )
{
v9 = a2;
ChecksumAttributes = AslpFileLargeGetChecksumAttributes(a1, a2);
if( ChecksumAttributes < 0 )
{
v13 = ChecksumAttributes;
AslLogCallPrintf(
1ui64,
"AslpFileLargeEnsureLargeFileMapping",
0xF8ui64,
"AslpFileLargeGetChecksumAttributes failed to get checksum attributes [%x]",
v13);
}
if( v9 )
{
*(_QWORD *)(rdx0 + 16) = v9[1];
*(_BYTE *)(rdx0 + 57) = 1;
v11 = v9[5];
v9[1] = 0i64;
*(_QWORD *)(rdx0 + 48) = v11;
v12 = v9[2];
v9[5] = 0i64;
*(_QWORD *)(rdx0 + 32) = v12;
*(_QWORD *)(rdx0 + 40) = v9[3];
*(_WORD *)(rdx0 + 58) = 1;
*(_DWORD *)(rdx0 + 84) = 1;
v9[2] = 0i64;
v9[3] = 0i64;
AslpFileLargeMapDelete(&a2);
FileKind = AslpFileMappingGetFileKind((_QWORD *)(rdx0 + 8), (int *)(rdx0 + 64));
}
else
{
FileKind = -1073741584;
}
}
AslpFileLargeMapDelete(&a2);
return(unsigned int)FileKind;
}Referenced by:
AslFileAllocAndGetAttributes