AslpFileGetHeaderAttributesPE

__int64 __fastcall AslpFileGetHeaderAttributesPE(__int64 a1, __int64 a2){
  int v4; 
  unsigned int v5; 
  int NtHeaderAttributes; 
  int v7; 
  int v8; 
  int v9; 
  int v10; 
  int v11; 
  int v12; 
  int v13; 
  int v14; 
  int v15; 
  int v16; 
  int v17; 
  int v19; 
  __int16 v20[2]; 
  unsigned int v21; 
  unsigned int v22; 
  unsigned int v23; 
  int v24[4]; 
  unsigned __int16 v25; 
  unsigned __int16 v26; 
  v25 = 0;
  v26 = 0;
  v20[0] = 0;
  v21 = 0;
  v22 = 0;
  v23 = 0;
  v24[0] = 0;
  v4 = AslFileMappingEnsure(a2);
  v5 = v4;
  if( v4 >= 0 )
  {
    if( *(_DWORD *)(a2 + 64) == 6 )
    {
      *(_DWORD *)(a1 + 664) |= 2u;
      *(_DWORD *)(a1 + 696) |= 2u;
      NtHeaderAttributes = AslpFileGetNtHeaderAttributes(&v21, &v22, &v23, v24, &v25, &v26, v20, a2);
      v7 = *(_DWORD *)(a1 + 600);
      v8 = *(_DWORD *)(a1 + 632);
      v9 = *(_DWORD *)(a1 + 728);
      v10 = *(_DWORD *)(a1 + 56);
      v11 = *(_DWORD *)(a1 + 952);
      if( NtHeaderAttributes < 0 )
      {
        v13 = v7 | 2;
        v14 = v8 | 2;
        v15 = v9 | 2;
        v16 = v10 | 2;
        v17 = v11 | 2;
        v12 = 2;
      }
      else
      {
        *(_QWORD *)(a1 + 592) = v21;
        *(_QWORD *)(a1 + 624) = v22;
        v12 = 1;
        *(_QWORD *)(a1 + 720) = v23;
        v13 = v7 | 1;
        v14 = v8 | 1;
        *(_QWORD *)(a1 + 48) = (unsigned int)v24[0];
        v15 = v9 | 1;
        v16 = v10 | 1;
        *(_QWORD *)(a1 + 944) = v25;
        v17 = v11 | 1;
        *(_QWORD *)(a1 + 976) = v26;
        *(_QWORD *)(a1 + 1008) = (unsigned __int16)v20[0];
        *(_DWORD *)(a1 + 576) = 2;
        *(_QWORD *)(a1 + 584) = 4i64;
        *(_DWORD *)(a1 + 608) = 2;
        *(_QWORD *)(a1 + 616) = 4i64;
        *(_DWORD *)(a1 + 704) = 2;
        *(_QWORD *)(a1 + 712) = 4i64;
        *(_DWORD *)(a1 + 32) = 2;
        *(_QWORD *)(a1 + 40) = 4i64;
        *(_DWORD *)(a1 + 928) = 1;
        *(_QWORD *)(a1 + 936) = 2i64;
        *(_DWORD *)(a1 + 960) = 1;
        *(_QWORD *)(a1 + 968) = 2i64;
        *(_DWORD *)(a1 + 992) = 1;
        *(_QWORD *)(a1 + 1000) = 2i64;
      }
      *(_DWORD *)(a1 + 984) |= v12;
      *(_DWORD *)(a1 + 1016) |= v12;
      *(_DWORD *)(a1 + 600) = v13;
      *(_DWORD *)(a1 + 952) = v17;
      *(_DWORD *)(a1 + 56) = v16;
      *(_DWORD *)(a1 + 728) = v15;
      *(_DWORD *)(a1 + 632) = v14;
    }
    else
    {
      *(_DWORD *)(a1 + 600) |= 2u;
      *(_DWORD *)(a1 + 632) |= 2u;
      *(_DWORD *)(a1 + 728) |= 2u;
      *(_DWORD *)(a1 + 56) |= 2u;
      *(_DWORD *)(a1 + 1016) |= 2u;
      *(_DWORD *)(a1 + 952) |= 2u;
      *(_DWORD *)(a1 + 984) |= 2u;
    }
    return 0;
  }
  else
  {
    v19 = v4;
    AslLogCallPrintf(1ui64, "AslpFileGetHeaderAttributesPE", 0x9AAui64, "AslFileMappingEnsure failed [%x]", v19);
  }
  return v5;
}

Referenced by:

AslFileAllocAndGetAttributes