AslpFileLargeGetCrcChecksum

INT64 __fastcall AslpFileLargeGetCrcChecksum(_DWORD *a1, _QWORD *a2){
  unsigned __int64 v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  UINT8 *v7; 
  __int64 v8; 
  UINT8 *v10; 
  unsigned int v11; 
  UINT64 v12; 
  __int64 v13; 
  *a1 = 0;
  v4 = *(_QWORD *)(*a2 + 16i64);
  if( v4 < 0x100000 )
    return 3221225485i64;
  v5 = a2[6];
  if( !v5 )
    return 3221225485i64;
  v6 = a2[7];
  if( v6 < 0x1000 )
    return 3221225485i64;
  v7 = (UINT8 *)a2[2];
  if( !v7 || a2[3] < 0x1000ui64 || a2[4] )
    return 3221225485i64;
  v8 = v4 - a2[8] - 4096;
  if( v4 - a2[8] <= v6 )
  {
    v10 = (UINT8 *)(v5 + v8);
    v11 = AslComputeCrc32(0i64, v7, 0x1000ui64);
    *a1 = AslComputeCrc32(v11, v10, v12);
    return 0i64;
  }
  else
  {
    AslLogCallPrintf(0i64, "AslpFileLargeGetCrcChecksum", 0x376ui64, "FileSize      : %I64u", v4);
    AslLogCallPrintf(
      0i64,
      "AslpFileLargeGetCrcChecksum",
      0x377ui64,
      "CrcFileStart  : %I64u",
      *(_QWORD *)(*a2 + 16i64) - 4096i64);
    AslLogCallPrintf(0i64, "AslpFileLargeGetCrcChecksum", 0x378ui64, "ViewFileOffset: %I64u", a2[8]);
    LODWORD(v13) = *((_DWORD *)a2 + 14);
    AslLogCallPrintf(0i64, "AslpFileLargeGetCrcChecksum", 0x379ui64, "ViewFileSize  : %u", v13);
    AslLogCallPrintf(0i64, "AslpFileLargeGetCrcChecksum", 0x37Aui64, "CrcViewOffset : %I64u", v8);
    AslLogCallPrintf(
      1ui64,
      "AslpFileLargeGetCrcChecksum",
      0x37Eui64,
      "Alignment error in the end of file view for CRC checksum");
    return 3221226016i64;
  }
}

Referenced by:

AslpFileLargeGetChecksumAttributes