             crc32 = pointerData.uint32()
             let sizeOfSizeField: UInt64 = info.localHeader.zip64FieldsArePresent ? 8 : 4
             compSize = Int(truncatingIfNeeded: pointerData.uint64(count: sizeOfSizeField))
-            uncompSize = Int(truncatingIfNeeded: pointerData.uint64(count: sizeOfSizeField))
+            uncompSize = pointerData.uint64(count: sizeOfSizeField)
         }
 
         guard compSize == realCompSize && uncompSize == fileBytes.count


        // If file has data descriptor, then some values in local header are absent.
        // So we need to use values from CD entry.
        // TODO:
        var uncompSize = hasDataDescriptor ?
            Int(truncatingIfNeeded: info.cdEntry.uncompSize) :
            Int(truncatingIfNeeded: info.localHeader.uncompSize)
        var compSize = hasDataDescriptor ?
            Int(truncatingIfNeeded: info.cdEntry.compSize) :
            Int(truncatingIfNeeded: info.localHeader.compSize)

        pointerData.index = info.localHeader.dataOffset
        switch info.compressionMethod {
        case .copy:
            fileBytes = pointerData.bytes(count: Int(truncatingIfNeeded: uncompSize))
        case .deflate:
            let bitReader = BitReader(data: pointerData.data, bitOrder: .reversed)
            bitReader.index = pointerData.index
