AslpFileQuery16BitDescription

__int64 __fastcall AslpFileQuery16BitDescription(void *a1, __int64 a2){
  unsigned int v3; 
  __int64 v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  UINT64 v9; 
  UINT64 v10; 
  v3 = 0;
  *(_BYTE *)a1 = 0;
  if( *(_DWORD *)(a2 + 64) == 5 )
  {
    v4 = *(_QWORD *)(a2 + 32);
    v5 = *(int *)(v4 + 60);
    v6 = *(_QWORD *)(a2 + 24);
    if( v6 < v5 + 64 || (v7 = *(int *)(v5 + v4 + 44), v6 < v7 + 1) )
    {
      v10 = 3449i64;
    }
    else
    {
      v8 = *(unsigned __int8 *)(v7 + v4);
      if( *(_BYTE *)(v7 + v4) && (unsigned int)(v8 + 1) <= 0x100 )
      {
        v9 = *(unsigned __int8 *)(v7 + v4);
        if( v6 >= v8 + v7 + 1 )
        {
          memmove((UINT8 *)a1, (UINT8 *)(v7 + v4 + 1), v9);
          *((_BYTE *)a1 + v9) = 0;
          return v3;
        }
        v10 = 3464i64;
      }
      else
      {
        v10 = 3458i64;
      }
    }
    v3 = -1073741701;
    AslLogCallPrintf(1ui64, "AslpFileQuery16BitDescription", v10, "File mapping invalid");
    return v3;
  }
  return(unsigned int)-1073741637;
}

Referenced by:

AslpFileGet16BitDescription